1
1
package org .openobservatory .ooniprobe .fragment ;
2
2
3
+ import static org .openobservatory .ooniprobe .common .PreferenceManager .COUNT_WEBSITE_CATEGORIES ;
4
+
3
5
import android .app .Activity ;
4
6
import android .content .Context ;
5
7
import android .content .Intent ;
10
12
import android .os .PowerManager ;
11
13
import android .provider .Settings ;
12
14
import android .text .TextUtils ;
15
+ import android .view .Menu ;
16
+ import android .view .MenuInflater ;
17
+ import android .view .MenuItem ;
13
18
import android .widget .Toast ;
14
19
15
20
import androidx .annotation .IdRes ;
21
+ import androidx .annotation .NonNull ;
16
22
import androidx .annotation .Nullable ;
17
23
import androidx .annotation .XmlRes ;
18
24
import androidx .preference .EditTextPreference ;
33
39
34
40
import java .util .Arrays ;
35
41
42
+ import javax .inject .Inject ;
43
+
36
44
import localhost .toolkit .app .fragment .MessageDialogFragment ;
37
45
import localhost .toolkit .preference .ExtendedPreferenceFragment ;
38
46
@@ -54,6 +62,7 @@ public static PreferenceFragment newInstance(@XmlRes int preferencesResId, @IdRe
54
62
@ Override
55
63
public void onCreatePreferences (Bundle savedInstanceState , String rootKey ) {
56
64
this .rootKey = rootKey ;
65
+ setHasOptionsMenu (true );
57
66
}
58
67
59
68
@ Override
@@ -226,4 +235,43 @@ public void onActivityResult(int requestCode, int resultCode, @Nullable Intent d
226
235
}
227
236
}
228
237
}
238
+
239
+ @ Override
240
+ public void onCreateOptionsMenu (@ NonNull Menu menu , @ NonNull MenuInflater inflater ) {
241
+ PreferenceScreen ourPreferenceScreen = findPreference (getString (R .string .Settings_Websites_Categories_Label ));
242
+ if (getPreferenceScreen ().equals (ourPreferenceScreen )) {
243
+ inflater .inflate (R .menu .website_categories , menu );
244
+ }
245
+ int enabledCategories = ((Application ) getActivity ().getApplication ()).getPreferenceManager ().countEnabledCategory ();
246
+
247
+ if (enabledCategories >=COUNT_WEBSITE_CATEGORIES ){
248
+ MenuItem item = menu .findItem (R .id .selectAll );
249
+ if (item != null ) {
250
+ item .setVisible (false );
251
+ }
252
+ } else if (enabledCategories <=0 ){
253
+ MenuItem item = menu .findItem (R .id .selectNone );
254
+ if (item != null ) {
255
+ item .setVisible (false );
256
+ }
257
+ }
258
+
259
+ super .onCreateOptionsMenu (menu , inflater );
260
+ }
261
+
262
+ @ Override
263
+ public boolean onOptionsItemSelected (MenuItem item ) {
264
+ PreferenceManager preferenceManager = ((Application ) getActivity ().getApplication ()).getPreferenceManager ();
265
+ int itemId = item .getItemId ();
266
+ if (itemId == R .id .selectAll ) {
267
+ preferenceManager .updateAllWebsiteCategories (true );
268
+ getActivity ().recreate ();
269
+ return true ;
270
+ } else if (itemId == R .id .selectNone ) {
271
+ preferenceManager .updateAllWebsiteCategories (false );
272
+ getActivity ().recreate ();
273
+ return true ;
274
+ }
275
+ return super .onOptionsItemSelected (item );
276
+ }
229
277
}
0 commit comments