1313import android .content .ComponentName ;
1414import android .content .Context ;
1515import android .content .Intent ;
16- import android .content .SharedPreferences ;
1716import android .net .Uri ;
17+ import android .view .View ;
1818import android .widget .RemoteViews ;
1919
2020import androidx .work .ExistingPeriodicWorkPolicy ;
@@ -47,7 +47,7 @@ public void onDisabled(Context context) {
4747 @ Override
4848 public void onUpdate (Context context , AppWidgetManager appWidgetManager , int [] appWidgetIds ) {
4949 for (int appWidgetId : appWidgetIds ) {
50- RemoteViews views = new RemoteViews (context .getPackageName (), R .layout .widget_layout );
50+ var views = new RemoteViews (context .getPackageName (), R .layout .widget_layout );
5151
5252 // Load the last known value from SharedPreferences
5353 var prefs = context .getSharedPreferences (PREFS_NAME , Context .MODE_PRIVATE );
@@ -64,6 +64,7 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] a
6464 refreshIntent .setAction (ACTION_REFRESH );
6565 var refreshPendingIntent = PendingIntent .getBroadcast (context , 0 , refreshIntent , FLAG_UPDATE_CURRENT | FLAG_IMMUTABLE );
6666 views .setOnClickPendingIntent (R .id .refresh_icon , refreshPendingIntent );
67+ views .setViewVisibility (R .id .refresh_icon , View .VISIBLE );
6768
6869 // Set up text click to open browser
6970 var clickUrlString = prefs .getString ("clickUrl" , "https://app.airgradient.com" );
@@ -79,6 +80,13 @@ public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] a
7980 public void onReceive (Context context , Intent intent ) {
8081 super .onReceive (context , intent );
8182 if (ACTION_REFRESH .equals (intent .getAction ())) {
83+ var views = new RemoteViews (context .getPackageName (), com .github .kdejaeger .valuefromjsonwidget .R .layout .widget_layout );
84+ views .setViewVisibility (R .id .refresh_icon , View .INVISIBLE );
85+
86+ var appWidgetManager = AppWidgetManager .getInstance (context );
87+ var widget = new ComponentName (context , ValueFromJsonWidget .class );
88+ appWidgetManager .updateAppWidget (widget , views );
89+
8290 // Manual refresh: trigger a one-time work request to fetch new data
8391 var workRequest = new OneTimeWorkRequest .Builder (FetchDataWorker .class ).build ();
8492 WorkManager .getInstance (context ).enqueue (workRequest );
@@ -88,9 +96,10 @@ public void onReceive(Context context, Intent intent) {
8896 public static void updateWidget (Context context , String value ) {
8997 var prefs = context .getSharedPreferences (PREFS_NAME , Context .MODE_PRIVATE );
9098
91- RemoteViews views = new RemoteViews (context .getPackageName (), com .github .kdejaeger .valuefromjsonwidget .R .layout .widget_layout );
99+ var views = new RemoteViews (context .getPackageName (), com .github .kdejaeger .valuefromjsonwidget .R .layout .widget_layout );
92100 views .setTextViewText (R .id .widget_text_small , prefs .getString ("json_key" , "pm02" ));
93101 views .setTextViewText (R .id .widget_text , value );
102+ views .setViewVisibility (R .id .refresh_icon , View .VISIBLE );
94103
95104 // Reapply the click listeners:
96105 var refreshIntent = new Intent (context , ValueFromJsonWidget .class );
@@ -104,7 +113,7 @@ public static void updateWidget(Context context, String value) {
104113 views .setOnClickPendingIntent (R .id .widget_text , browserPendingIntent );
105114
106115 var appWidgetManager = AppWidgetManager .getInstance (context );
107- ComponentName widget = new ComponentName (context , ValueFromJsonWidget .class );
116+ var widget = new ComponentName (context , ValueFromJsonWidget .class );
108117 appWidgetManager .updateAppWidget (widget , views );
109118 }
110119
0 commit comments