diff --git a/app/src/main/java/com/example/weathermaster/WidgetProviderPill.java b/app/src/main/java/com/example/weathermaster/WidgetProviderPill.java new file mode 100644 index 000000000..11bcc0f27 --- /dev/null +++ b/app/src/main/java/com/example/weathermaster/WidgetProviderPill.java @@ -0,0 +1,75 @@ +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 WidgetProviderPill extends AppWidgetProvider { + + private static final String PREFS_NAME = "WeatherWidgetPrefsPill"; + + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + + // Retrieve persisted data + String mainTemp = prefs.getString("mainTemp", "--°"); + String iconData = prefs.getString("iconData", "cloudy"); + + + for (int appWidgetId : appWidgetIds) { + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_weather_pill); + + // Set widget data + int iconResId = context.getResources().getIdentifier(iconData, "drawable", context.getPackageName()); + + + views.setImageViewResource(R.id.weather_icon_pill, iconResId); + views.setTextViewText(R.id.temp_text_pill, mainTemp); + + + // Add click listener to open MainActivity + Intent intent = new Intent(context, MainActivity.class); + PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE); + views.setOnClickPendingIntent(R.id.widget_layout_pill, pendingIntent); + + appWidgetManager.updateAppWidget(appWidgetId, views); + } + } + + public static void updateWeatherWidgetPill(Context context, String mainTemp, String iconData) { + + // Save data to SharedPreferences + SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = prefs.edit(); + + editor.putString("mainTemp", mainTemp); + editor.putString("iconData", iconData); + + + editor.apply(); + + // Update widget views + AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); + ComponentName widgetComponent = new ComponentName(context, WidgetProviderPill.class); + int[] widgetIds = appWidgetManager.getAppWidgetIds(widgetComponent); + + for (int widgetId : widgetIds) { + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_weather_pill); + + int iconResId = context.getResources().getIdentifier(iconData, "drawable", context.getPackageName()); + + + views.setImageViewResource(R.id.weather_icon_pill, iconResId); + views.setTextViewText(R.id.temp_text_pill, mainTemp); + + + 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 new file mode 100644 index 000000000..dc2d27504 --- /dev/null +++ b/app/src/main/java/com/example/weathermaster/WidgetProviderRound.java @@ -0,0 +1,74 @@ +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 WidgetProviderRound extends AppWidgetProvider { + + private static final String PREFS_NAME = "WeatherWidgetPrefsRound"; + + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + + // Retrieve persisted data + String mainTemp = prefs.getString("mainTemp", "--°"); + String iconData = prefs.getString("iconData", "cloudy"); + + + for (int appWidgetId : appWidgetIds) { + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_weather_round); + + // Set widget data + int iconResId = context.getResources().getIdentifier(iconData, "drawable", context.getPackageName()); + + + views.setImageViewResource(R.id.weather_icon_round, iconResId); + views.setTextViewText(R.id.temp_text_round, mainTemp); + + + // Add click listener to open MainActivity + Intent intent = new Intent(context, MainActivity.class); + PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE); + views.setOnClickPendingIntent(R.id.widget_layout_round, pendingIntent); + + appWidgetManager.updateAppWidget(appWidgetId, views); + } + } + + public static void updateWeatherWidgetRound(Context context, String mainTemp, String iconData) { + + SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = prefs.edit(); + + editor.putString("mainTemp", mainTemp); + editor.putString("iconData", iconData); + + + editor.apply(); + + // Update widget views + AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); + ComponentName widgetComponent = new ComponentName(context, WidgetProviderRound.class); + int[] widgetIds = appWidgetManager.getAppWidgetIds(widgetComponent); + + for (int widgetId : widgetIds) { + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_weather_round); + + int iconResId = context.getResources().getIdentifier(iconData, "drawable", context.getPackageName()); + + + views.setImageViewResource(R.id.weather_icon_round, iconResId); + views.setTextViewText(R.id.temp_text_round, mainTemp); + + + 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 new file mode 100644 index 000000000..74712544b --- /dev/null +++ b/app/src/main/java/com/example/weathermaster/WidgetProviderSquare.java @@ -0,0 +1,81 @@ +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 WidgetProviderSquare extends AppWidgetProvider { + private static final String PREFS_NAME = "WeatherWidgetPrefsSquare"; + + @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", "--"); + + for (int appWidgetId : appWidgetIds) { + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgets_weather_square); + + // Set widget data + int iconResId = context.getResources().getIdentifier(iconData, "drawable", context.getPackageName()); + + views.setTextViewText(R.id.weather_condition_square, condition); + 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); + + // Add click listener to open MainActivity + Intent intent = new Intent(context, MainActivity.class); + PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE); + views.setOnClickPendingIntent(R.id.widget_layout_square, pendingIntent); + + appWidgetManager.updateAppWidget(appWidgetId, views); + } + } + + public static void updateWeatherWidgetSquare(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("mainTemp", mainTemp); + editor.putString("iconData", iconData); + editor.putString("highLow", highLow); + + editor.apply(); + + // Update widget views + AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); + ComponentName widgetComponent = new ComponentName(context, WidgetProviderSquare.class); + int[] widgetIds = appWidgetManager.getAppWidgetIds(widgetComponent); + + for (int widgetId : widgetIds) { + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgets_weather_square); + + int iconResId = context.getResources().getIdentifier(iconData, "drawable", context.getPackageName()); + + views.setTextViewText(R.id.weather_condition_square, condition); + 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); + + appWidgetManager.updateAppWidget(widgetId, views); + } + } +}