Skip to content

Commit

Permalink
final
Browse files Browse the repository at this point in the history
  • Loading branch information
Siddhesh2377 committed Dec 17, 2024
1 parent 5a028cb commit 3fee6cb
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 38 deletions.
4 changes: 2 additions & 2 deletions .idea/deploymentTargetSelector.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>

<application
Expand Down
97 changes: 62 additions & 35 deletions app/src/main/java/com/dark/weatherapp/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import android.annotation.SuppressLint;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
Expand Down Expand Up @@ -182,54 +184,67 @@ private List<City> parseCities() {
private void fetchWeather(String name) {
WeatherFetcher fetcher = new WeatherFetcher();

// Show a loading message initially
binding.weatherTypeText.setText("Loading...");
binding.temp.setText("Loading...");
binding.valFeelTemp.setText("-");
binding.valHumidity.setText("-");
binding.valPressure.setText("-");
binding.valWind.setText("-");
binding.valVisibility.setText("-");
binding.valSunset.setText("-");

fetcher.fetchWeather(name, new WeatherCallback() {
@Override
public void onSuccess(WeatherData data) {
runOnUiThread(() -> {
closeSearch();

// Add the city to recentCities if not already present
if (!recentCities.contains(name)) {
recentCities.add(name);
currentCityIndex = recentCities.size() - 1; // Set current index to the newly added city
}

// Update UI with the fetched data
updateWeatherUI(name, data);
// Update UI with fetched weather data
binding.cityName.setText(name);
binding.temp.setText(data.getTemperature() + "°C");
binding.valFeelTemp.setText(data.getFeelsLike() + "°C");
binding.valHumidity.setText(data.getHumidity() + "%");
binding.valPressure.setText(data.getPressure() + " hPa");
binding.valWind.setText(data.getWindSpeed() + " km/h");
binding.valVisibility.setText(data.getVisibility() + " M");
binding.valSunset.setText(new java.text.SimpleDateFormat("HH:mm")
.format(new java.util.Date(data.getSunset() * 1000)));
binding.weatherTypeText.setText(data.getCondition() + "\n" + data.getDescription());
});
}

@Override
public void onFailure(String errorMessage) {
runOnUiThread(() -> Log.e("WeatherFetcher", "Error: " + errorMessage));
runOnUiThread(() -> {
closeSearch();

// Clear weather info and display specific error
binding.cityName.setText("Error");
binding.temp.setText("N/A");
binding.valFeelTemp.setText("N/A");
binding.valHumidity.setText("N/A");
binding.valPressure.setText("N/A");
binding.valWind.setText("N/A");
binding.valVisibility.setText("N/A");
binding.valSunset.setText("N/A");

if (isInternetAvailable()) {
if ("Response not successful".contains(errorMessage)) {
binding.weatherTypeText.setText("City not found.");
} else {
binding.weatherTypeText.setText(errorMessage);
}
} else {
binding.weatherTypeText.setText("Check your Internet Connection..");
}

// Check for specific error messages

Log.e("Main", errorMessage);
});
}
});

//
// fetcher.fetchWeather(name, new WeatherCallback() {
// @Override
// public void onSuccess(WeatherData data) {
// runOnUiThread(() -> {
// closeSearch();
//
// // Update UI with the fetched data
// binding.cityName.setText(name);
// binding.temp.setText(data.getTemperature() + "°C");
// binding.valFeelTemp.setText(data.getFeelsLike() + "°C");
// binding.valHumidity.setText(data.getHumidity() + "%");
// binding.valPressure.setText(data.getPressure() + " hPa");
// binding.valWind.setText(data.getWindSpeed() + " km/h");
// binding.valVisibility.setText(data.getVisibility() + " M");
// binding.valSunset.setText(new java.text.SimpleDateFormat("HH:mm").format(new java.util.Date(data.getSunset() * 1000)));
// binding.weatherTypeText.setText(data.getCondition() + "\n Feels Like " + data.getDescription());
// });
// }
//
// @Override
// public void onFailure(String errorMessage) {
// runOnUiThread(() -> Log.e("WeatherFetcher", "Error: " + errorMessage));
// }
// });
}

private void nextorPrv() {
Expand Down Expand Up @@ -268,5 +283,17 @@ private void updateWeatherUI(String name, WeatherData data) {
binding.weatherTypeText.setText(data.getCondition() + "\nFeels Like " + data.getDescription());
}

private boolean isInternetAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

if (connectivityManager != null) {
// For Android Marshmallow and above
NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
return networkCapabilities != null &&
(networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR));
}
return false;
}

}
4 changes: 3 additions & 1 deletion app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,13 @@

<AutoCompleteTextView
android:id="@+id/search_txt"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toStartOf="@+id/search_icon"
android:background="@android:color/transparent"
android:hint="@string/search_city"
android:singleLine="true"
android:textColor="@color/textColor"
android:textColorHint="@color/hintColor"
android:textSize="18sp" />
Expand Down

0 comments on commit 3fee6cb

Please sign in to comment.