Skip to content

Commit 00e0754

Browse files
authored
added option to select/unselect all website categories (#576)
1 parent a358731 commit 00e0754

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

app/src/main/java/org/openobservatory/ooniprobe/common/PreferenceManager.java

+9
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class PreferenceManager {
3939
public static final String AUTORUN_COUNT = "autorun_count";
4040
public static final String AUTORUN_DATE = "autorun_last_date";
4141
public static final int IGNORE_OPTIMIZATION_REQUEST = 15;
42+
public static final int COUNT_WEBSITE_CATEGORIES = 31;
4243
public static final int ASK_UPDATE_APP = 16;
4344

4445
private final SharedPreferences sp;
@@ -264,6 +265,14 @@ public Integer countEnabledCategory() {
264265
return count;
265266
}
266267

268+
public void updateAllWebsiteCategories(boolean value) {
269+
SharedPreferences.Editor ed = sp.edit();
270+
for (String key : r.getStringArray(R.array.CategoryCodes)){
271+
ed.putBoolean(key,value);
272+
}
273+
ed.apply();
274+
}
275+
267276
public boolean canCallDeleteJson(){
268277
long lastCalled = sp.getLong(DELETE_JSON_KEY, 0);
269278

app/src/main/java/org/openobservatory/ooniprobe/fragment/PreferenceFragment.java

+48
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.openobservatory.ooniprobe.fragment;
22

3+
import static org.openobservatory.ooniprobe.common.PreferenceManager.COUNT_WEBSITE_CATEGORIES;
4+
35
import android.app.Activity;
46
import android.content.Context;
57
import android.content.Intent;
@@ -10,9 +12,13 @@
1012
import android.os.PowerManager;
1113
import android.provider.Settings;
1214
import android.text.TextUtils;
15+
import android.view.Menu;
16+
import android.view.MenuInflater;
17+
import android.view.MenuItem;
1318
import android.widget.Toast;
1419

1520
import androidx.annotation.IdRes;
21+
import androidx.annotation.NonNull;
1622
import androidx.annotation.Nullable;
1723
import androidx.annotation.XmlRes;
1824
import androidx.preference.EditTextPreference;
@@ -33,6 +39,8 @@
3339

3440
import java.util.Arrays;
3541

42+
import javax.inject.Inject;
43+
3644
import localhost.toolkit.app.fragment.MessageDialogFragment;
3745
import localhost.toolkit.preference.ExtendedPreferenceFragment;
3846

@@ -54,6 +62,7 @@ public static PreferenceFragment newInstance(@XmlRes int preferencesResId, @IdRe
5462
@Override
5563
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
5664
this.rootKey = rootKey;
65+
setHasOptionsMenu(true);
5766
}
5867

5968
@Override
@@ -226,4 +235,43 @@ public void onActivityResult(int requestCode, int resultCode, @Nullable Intent d
226235
}
227236
}
228237
}
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+
}
229277
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<menu xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item
4+
android:id="@+id/selectAll"
5+
android:title="@string/Settings_Websites_Categories_Selection_All" />
6+
<item
7+
android:id="@+id/selectNone"
8+
android:title="@string/Settings_Websites_Categories_Selection_None" />
9+
</menu>

0 commit comments

Comments
 (0)