From ccb08fcc535a0e89696f01a35b7de6f41d9bcce7 Mon Sep 17 00:00:00 2001 From: Pranshul Date: Wed, 4 Dec 2024 13:02:02 +0530 Subject: [PATCH] fix widget click issues --- app/src/main/assets/modules/widgets.js | 6 +- .../weathermaster/WeatherWidgetProvider.java | 3 + .../weathermaster/WidgetProviderPill.java | 3 + .../weathermaster/WidgetProviderRound.java | 4 + .../weathermaster/WidgetProviderSquare.java | 9 +- .../weathermaster/WidgetProviderSquareV2.java | 158 ++++++++++++ .../res/layout/widget_weather_square_v2.xml | 233 ++++++++++++++++++ .../res/layout/widgets_weather_square.xml | 154 ++++++------ app/src/main/res/xml/widget_info.xml | 11 +- app/src/main/res/xml/widget_info_square.xml | 11 +- .../main/res/xml/widget_info_square_v2.xml | 11 + 11 files changed, 510 insertions(+), 93 deletions(-) create mode 100644 app/src/main/java/com/example/weathermaster/WidgetProviderSquareV2.java create mode 100644 app/src/main/res/layout/widget_weather_square_v2.xml create mode 100644 app/src/main/res/xml/widget_info_square_v2.xml diff --git a/app/src/main/assets/modules/widgets.js b/app/src/main/assets/modules/widgets.js index d2afe6f69..fcbe3ef22 100644 --- a/app/src/main/assets/modules/widgets.js +++ b/app/src/main/assets/modules/widgets.js @@ -131,7 +131,7 @@ const DefaultLocation = JSON.parse(localStorage.getItem('DefaultLocation')); let conditionMain; - conditionMain = getWeatherLabelWidgetLang(weatherData.current.weather_code, localStorage.getItem('AppLanguageCode')); + conditionMain = getWeatherLabelWidgetLang(weatherData.current.weather_code, 'en'); // ---------- @@ -492,9 +492,9 @@ function GetWeatherLabelWidget(iconCode, isDay) { } function getWeatherLabelWidgetLang(iconCode, isDay, langCode) { - const translationKey = GetWeatherLabelWidget(iconCode, isDay); + const translationKey = GetWeatherLabelNoAnim(iconCode, isDay); - const translatedLabel = getTranslationByLang(langCode, translationKey); + const translatedLabel = getTranslationByLang(langCode, translationKey); return translatedLabel || "Unknown weather"; } diff --git a/app/src/main/java/com/example/weathermaster/WeatherWidgetProvider.java b/app/src/main/java/com/example/weathermaster/WeatherWidgetProvider.java index 543a06faa..c92134058 100644 --- a/app/src/main/java/com/example/weathermaster/WeatherWidgetProvider.java +++ b/app/src/main/java/com/example/weathermaster/WeatherWidgetProvider.java @@ -150,6 +150,9 @@ public class WeatherWidgetProvider extends AppWidgetProvider { views.setImageViewResource(R.id.weather_icon_hour3, iconResIdHour3); views.setTextViewText(R.id.hour_3_time, hour_3_time); + Intent intent = new Intent(context, MainActivity.class); + PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + views.setOnClickPendingIntent(R.id.widget_layout, pendingIntent); appWidgetManager.updateAppWidget(widgetId, views); } diff --git a/app/src/main/java/com/example/weathermaster/WidgetProviderPill.java b/app/src/main/java/com/example/weathermaster/WidgetProviderPill.java index 925c26226..d37183b0f 100644 --- a/app/src/main/java/com/example/weathermaster/WidgetProviderPill.java +++ b/app/src/main/java/com/example/weathermaster/WidgetProviderPill.java @@ -68,6 +68,9 @@ public class WidgetProviderPill extends AppWidgetProvider { views.setImageViewResource(R.id.weather_icon_pill, iconResId); views.setTextViewText(R.id.temp_text_pill, mainTemp); + Intent intent = new Intent(context, MainActivity.class); + PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + views.setOnClickPendingIntent(R.id.widget_layout_pill, pendingIntent); appWidgetManager.updateAppWidget(widgetId, views); } diff --git a/app/src/main/java/com/example/weathermaster/WidgetProviderRound.java b/app/src/main/java/com/example/weathermaster/WidgetProviderRound.java index 430c2aa67..9ba2dc705 100644 --- a/app/src/main/java/com/example/weathermaster/WidgetProviderRound.java +++ b/app/src/main/java/com/example/weathermaster/WidgetProviderRound.java @@ -67,6 +67,10 @@ public class WidgetProviderRound extends AppWidgetProvider { views.setImageViewResource(R.id.weather_icon_round, iconResId); views.setTextViewText(R.id.temp_text_round, mainTemp); + Intent intent = new Intent(context, MainActivity.class); + PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + views.setOnClickPendingIntent(R.id.widget_layout_round, pendingIntent); + appWidgetManager.updateAppWidget(widgetId, views); } diff --git a/app/src/main/java/com/example/weathermaster/WidgetProviderSquare.java b/app/src/main/java/com/example/weathermaster/WidgetProviderSquare.java index f0781e071..a2479b82b 100644 --- a/app/src/main/java/com/example/weathermaster/WidgetProviderSquare.java +++ b/app/src/main/java/com/example/weathermaster/WidgetProviderSquare.java @@ -22,6 +22,7 @@ public class WidgetProviderSquare extends AppWidgetProvider { String mainTemp = prefs.getString("mainTemp", "--°"); String iconData = prefs.getString("iconData", "cloudy"); String highLow = prefs.getString("highLow", "--"); + String LocationName = prefs.getString("locationWeather", "--"); for (int appWidgetId : appWidgetIds) { RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgets_weather_square); @@ -33,7 +34,7 @@ public class WidgetProviderSquare extends AppWidgetProvider { views.setImageViewResource(R.id.weather_icon_square, iconResId); views.setTextViewText(R.id.temp_text_square, mainTemp); views.setTextViewText(R.id.high_temp_text_square, highLow); - + views.setTextViewText(R.id.locationName_square, locationWeather); Intent intent = new Intent(context, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); @@ -57,6 +58,7 @@ public class WidgetProviderSquare extends AppWidgetProvider { editor.putString("mainTemp", mainTemp); editor.putString("iconData", iconData); editor.putString("highLow", highLow); + editor.putString("locationWeather", locationWeather); editor.apply(); @@ -74,6 +76,11 @@ public class WidgetProviderSquare extends AppWidgetProvider { views.setImageViewResource(R.id.weather_icon_square, iconResId); views.setTextViewText(R.id.temp_text_square, mainTemp); views.setTextViewText(R.id.high_temp_text_square, highLow); + views.setTextViewText(R.id.locationName_square, locationWeather); + + Intent intent = new Intent(context, MainActivity.class); + PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + views.setOnClickPendingIntent(R.id.widget_layout_square, pendingIntent); appWidgetManager.updateAppWidget(widgetId, views); } diff --git a/app/src/main/java/com/example/weathermaster/WidgetProviderSquareV2.java b/app/src/main/java/com/example/weathermaster/WidgetProviderSquareV2.java new file mode 100644 index 000000000..7fa33e554 --- /dev/null +++ b/app/src/main/java/com/example/weathermaster/WidgetProviderSquareV2.java @@ -0,0 +1,158 @@ +package com.example.weathermaster; + +import android.app.PendingIntent; +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.widget.RemoteViews; + +public class WidgetProviderSquareV2 extends AppWidgetProvider { + + private static final String PREFS_NAME = "WeatherWidgetPrefsSquareV2"; + + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + + // Retrieve persisted data + String condition = prefs.getString("condition", "--"); + String locationWeather = prefs.getString("locationWeather", "--"); + String mainTemp = prefs.getString("mainTemp", "--°"); + String iconData = prefs.getString("iconData", "cloudy"); + String highLow = prefs.getString("highLow", "--"); + + String hour_0_temp = prefs.getString("hour_0_temp", "--"); + String hour_0_icon = prefs.getString("hour_0_icon", "cloudy"); + String hour_0_time = prefs.getString("hour_0_time", "--"); + + String hour_1_temp = prefs.getString("hour_1_temp", "--"); + String hour_1_icon = prefs.getString("hour_1_icon", "cloudy"); + String hour_1_time = prefs.getString("hour_1_time", "--"); + + String hour_2_temp = prefs.getString("hour_2_temp", "--"); + String hour_2_icon = prefs.getString("hour_2_icon", "cloudy"); + String hour_2_time = prefs.getString("hour_2_time", "--"); + + String hour_3_temp = prefs.getString("hour_3_temp", "--"); + String hour_3_icon = prefs.getString("hour_3_icon", "cloudy"); + String hour_3_time = prefs.getString("hour_3_time", "--"); + + for (int appWidgetId : appWidgetIds) { + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_weather_square_v2); + + // Set widget data + int iconResId = context.getResources().getIdentifier(iconData, "drawable", context.getPackageName()); + int iconResIdHour0 = context.getResources().getIdentifier(hour_0_icon, "drawable", context.getPackageName()); + int iconResIdHour1 = context.getResources().getIdentifier(hour_1_icon, "drawable", context.getPackageName()); + int iconResIdHour2 = context.getResources().getIdentifier(hour_2_icon, "drawable", context.getPackageName()); + int iconResIdHour3 = context.getResources().getIdentifier(hour_3_icon, "drawable", context.getPackageName()); + + views.setTextViewText(R.id.weather_condition_square_v2, condition); + views.setImageViewResource(R.id.weather_icon_square_v2, iconResId); + views.setTextViewText(R.id.temp_text_square_v2, mainTemp); + views.setTextViewText(R.id.high_temp_text_square_v2, highLow); + + views.setTextViewText(R.id.hour_0_temp_square_v2, hour_0_temp); + views.setImageViewResource(R.id.weather_icon_hour0_square_v2, iconResIdHour0); + views.setTextViewText(R.id.hour_0_time_square_v2, hour_0_time); + + views.setTextViewText(R.id.hour_1_temp_square_v2, hour_1_temp); + views.setImageViewResource(R.id.weather_icon_hour1_square_v2, iconResIdHour1); + views.setTextViewText(R.id.hour_1_time_square_v2, hour_1_time); + + views.setTextViewText(R.id.hour_2_temp_square_v2, hour_2_temp); + views.setImageViewResource(R.id.weather_icon_hour2_square_v2, iconResIdHour2); + views.setTextViewText(R.id.hour_2_time_square_v2, hour_2_time); + + views.setTextViewText(R.id.hour_3_temp_square_v2, hour_3_temp); + views.setImageViewResource(R.id.weather_icon_hour3_square_v2, iconResIdHour3); + views.setTextViewText(R.id.hour_3_time_square_v2, hour_3_time); + + // Add click listener to open MainActivity + Intent intent = new Intent(context, MainActivity.class); + PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + views.setOnClickPendingIntent(R.id.widget_layout_square_v2, pendingIntent); + + appWidgetManager.updateAppWidget(appWidgetId, views); + } + } + + public static void updateWeatherWidgetSquareV2(Context context, String condition, String locationWeather, String mainTemp, String iconData, String highLow, + String hour_0_temp, String hour_0_icon, String hour_0_time, + String hour_1_temp, String hour_1_icon, String hour_1_time, + String hour_2_temp, String hour_2_icon, String hour_2_time, + String hour_3_temp, String hour_3_icon, String hour_3_time) { + + // Save data to SharedPreferences + SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = prefs.edit(); + + editor.putString("condition", condition); + editor.putString("locationWeather", locationWeather); + editor.putString("mainTemp", mainTemp); + editor.putString("iconData", iconData); + editor.putString("highLow", highLow); + + editor.putString("hour_0_temp", hour_0_temp); + editor.putString("hour_0_icon", hour_0_icon); + editor.putString("hour_0_time", hour_0_time); + + editor.putString("hour_1_temp", hour_1_temp); + editor.putString("hour_1_icon", hour_1_icon); + editor.putString("hour_1_time", hour_1_time); + + editor.putString("hour_2_temp", hour_2_temp); + editor.putString("hour_2_icon", hour_2_icon); + editor.putString("hour_2_time", hour_2_time); + + editor.putString("hour_3_temp", hour_3_temp); + editor.putString("hour_3_icon", hour_3_icon); + editor.putString("hour_3_time", hour_3_time); + editor.apply(); + + // Update widget views + AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); + ComponentName widgetComponent = new ComponentName(context, WidgetProviderSquareV2.class); + int[] widgetIds = appWidgetManager.getAppWidgetIds(widgetComponent); + + for (int widgetId : widgetIds) { + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_weather_square_v2); + + int iconResId = context.getResources().getIdentifier(iconData, "drawable", context.getPackageName()); + int iconResIdHour0 = context.getResources().getIdentifier(hour_0_icon, "drawable", context.getPackageName()); + int iconResIdHour1 = context.getResources().getIdentifier(hour_1_icon, "drawable", context.getPackageName()); + int iconResIdHour2 = context.getResources().getIdentifier(hour_2_icon, "drawable", context.getPackageName()); + int iconResIdHour3 = context.getResources().getIdentifier(hour_3_icon, "drawable", context.getPackageName()); + + views.setTextViewText(R.id.weather_condition_square_v2, condition); + views.setImageViewResource(R.id.weather_icon_square_v2, iconResId); + views.setTextViewText(R.id.temp_text_square_v2, mainTemp); + views.setTextViewText(R.id.high_temp_text_square_v2, highLow); + + views.setTextViewText(R.id.hour_0_temp_square_v2, hour_0_temp); + views.setImageViewResource(R.id.weather_icon_hour0_square_v2, iconResIdHour0); + views.setTextViewText(R.id.hour_0_time_square_v2, hour_0_time); + + views.setTextViewText(R.id.hour_1_temp_square_v2, hour_1_temp); + views.setImageViewResource(R.id.weather_icon_hour1_square_v2, iconResIdHour1); + views.setTextViewText(R.id.hour_1_time_square_v2, hour_1_time); + + views.setTextViewText(R.id.hour_2_temp_square_v2, hour_2_temp); + views.setImageViewResource(R.id.weather_icon_hour2_square_v2, iconResIdHour2); + views.setTextViewText(R.id.hour_2_time_square_v2, hour_2_time); + + views.setTextViewText(R.id.hour_3_temp_square_v2, hour_3_temp); + views.setImageViewResource(R.id.weather_icon_hour3_square_v2, iconResIdHour3); + views.setTextViewText(R.id.hour_3_time_square_v2, hour_3_time); + + Intent intent = new Intent(context, MainActivity.class); + PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); + views.setOnClickPendingIntent(R.id.widget_layout_square_v2, pendingIntent); + + appWidgetManager.updateAppWidget(widgetId, views); + } + } +} diff --git a/app/src/main/res/layout/widget_weather_square_v2.xml b/app/src/main/res/layout/widget_weather_square_v2.xml new file mode 100644 index 000000000..95f5afe09 --- /dev/null +++ b/app/src/main/res/layout/widget_weather_square_v2.xml @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/widgets_weather_square.xml b/app/src/main/res/layout/widgets_weather_square.xml index ef66c3312..11e7e2dc4 100644 --- a/app/src/main/res/layout/widgets_weather_square.xml +++ b/app/src/main/res/layout/widgets_weather_square.xml @@ -1,107 +1,109 @@ + + android:paddingBottom="5dp"> - + + + + + + + + + + android:paddingBottom="0dp"> + + + + + android:text="--" + android:textColor="@color/colorOnSurfaceVariant" + android:textSize="16.7sp" /> + + + + + - - - - - - - - - - - - - - - - + + + diff --git a/app/src/main/res/xml/widget_info.xml b/app/src/main/res/xml/widget_info.xml index dc3662a53..4b74c51cf 100644 --- a/app/src/main/res/xml/widget_info.xml +++ b/app/src/main/res/xml/widget_info.xml @@ -2,13 +2,12 @@ \ No newline at end of file diff --git a/app/src/main/res/xml/widget_info_square.xml b/app/src/main/res/xml/widget_info_square.xml index f4c5c8d73..cc61fd9e5 100644 --- a/app/src/main/res/xml/widget_info_square.xml +++ b/app/src/main/res/xml/widget_info_square.xml @@ -2,13 +2,10 @@ \ No newline at end of file diff --git a/app/src/main/res/xml/widget_info_square_v2.xml b/app/src/main/res/xml/widget_info_square_v2.xml new file mode 100644 index 000000000..77d7e71e4 --- /dev/null +++ b/app/src/main/res/xml/widget_info_square_v2.xml @@ -0,0 +1,11 @@ + + \ No newline at end of file