Added menu to restore default advanced settings

This commit is contained in:
M66B 2019-01-15 10:38:53 +00:00
parent 711e887619
commit 822eb2aac1
3 changed files with 102 additions and 40 deletions

View File

@ -32,6 +32,9 @@ import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
@ -47,6 +50,7 @@ import androidx.annotation.Nullable;
import androidx.appcompat.widget.SwitchCompat;
import androidx.constraintlayout.widget.Group;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentTransaction;
import static android.app.Activity.RESULT_OK;
@ -86,6 +90,15 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
private Group grpNotification;
private final static String[] ADVANCED_OPTIONS = new String[]{
"enabled", "updates",
"metered", "download",
"unified", "threading", "compact", "avatars", "identicons", "preview", "addresses",
"pull", "swipe", "actionbar", "autoclose", "autonext",
"autoread", "collapse", "automove", "confirm", "sender", "autoresize", "autosend",
"light", "sound", "debug"
};
@Override
@Nullable
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@ -134,7 +147,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
swEnabled.setChecked(prefs.getBoolean("enabled", true));
swEnabled.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -143,16 +155,13 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swUpdates.setChecked(prefs.getBoolean("updates", true));
swUpdates.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("updates", checked).apply();
}
});
swUpdates.setVisibility(Helper.isPlayStoreInstall(getContext()) ? View.GONE : View.VISIBLE);
swMetered.setChecked(prefs.getBoolean("metered", true));
swMetered.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -161,16 +170,10 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
int download = prefs.getInt("download", 32768);
final int[] values = getResources().getIntArray(R.array.downloadValues);
for (int i = 0; i < values.length; i++)
if (values[i] == download) {
spDownload.setSelection(i);
break;
}
spDownload.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
int[] values = getResources().getIntArray(R.array.downloadValues);
prefs.edit().putInt("download", values[position]).apply();
}
@ -180,7 +183,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swUnified.setChecked(prefs.getBoolean("unified", true));
swUnified.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -188,7 +190,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swThreading.setChecked(prefs.getBoolean("threading", true));
swThreading.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -196,7 +197,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swCompact.setChecked(prefs.getBoolean("compact", false));
swCompact.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -205,7 +205,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swAvatars.setChecked(prefs.getBoolean("avatars", true));
swAvatars.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -213,7 +212,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swIdenticons.setChecked(prefs.getBoolean("identicons", false));
swIdenticons.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -221,7 +219,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swPreview.setChecked(prefs.getBoolean("preview", false));
swPreview.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -261,7 +258,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swAddresses.setChecked(prefs.getBoolean("addresses", true));
swAddresses.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -269,7 +265,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swPull.setChecked(prefs.getBoolean("pull", true));
swPull.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -277,7 +272,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swSwipe.setChecked(prefs.getBoolean("swipe", true));
swSwipe.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -285,7 +279,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swActionbar.setChecked(prefs.getBoolean("actionbar", true));
swActionbar.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -293,7 +286,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swAutoClose.setChecked(prefs.getBoolean("autoclose", true));
swAutoClose.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -302,16 +294,13 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swAutoNext.setChecked(prefs.getBoolean("autonext", false));
swAutoNext.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("autonext", checked).apply();
}
});
swAutoNext.setEnabled(!swAutoClose.isChecked());
swAutoRead.setChecked(prefs.getBoolean("autoread", false));
swAutoRead.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -319,7 +308,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swCollapse.setChecked(prefs.getBoolean("collapse", false));
swCollapse.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -327,7 +315,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swAutoMove.setChecked(!prefs.getBoolean("automove", false));
swAutoMove.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -335,7 +322,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swConfirm.setChecked(prefs.getBoolean("confirm", false));
swConfirm.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -343,7 +329,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swSender.setChecked(prefs.getBoolean("sender", false));
swSender.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -351,7 +336,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swAutoResize.setChecked(prefs.getBoolean("autoresize", true));
swAutoResize.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -359,7 +343,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swAutoSend.setChecked(!prefs.getBoolean("autosend", false));
swAutoSend.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -367,7 +350,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swLight.setChecked(prefs.getBoolean("light", false));
swLight.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -389,7 +371,6 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
swDebug.setChecked(prefs.getBoolean("debug", false));
swDebug.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
@ -398,7 +379,7 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
}
});
grpNotification.setVisibility(BuildConfig.DEBUG || Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O ? View.VISIBLE : View.GONE);
setOptions();
PreferenceManager.getDefaultSharedPreferences(getContext()).registerOnSharedPreferenceChangeListener(this);
@ -423,6 +404,84 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
super.onPause();
}
@Override
public void onDestroyView() {
PreferenceManager.getDefaultSharedPreferences(getContext()).unregisterOnSharedPreferenceChangeListener(this);
super.onDestroyView();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_options, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_default:
onMenuDefault();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void onMenuDefault() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
SharedPreferences.Editor editor = prefs.edit();
for (String option : ADVANCED_OPTIONS)
editor.remove(option);
editor.apply();
setOptions();
}
private void setOptions() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
swEnabled.setChecked(prefs.getBoolean("enabled", true));
swUpdates.setChecked(prefs.getBoolean("updates", true));
swUpdates.setVisibility(Helper.isPlayStoreInstall(getContext()) ? View.GONE : View.VISIBLE);
swMetered.setChecked(prefs.getBoolean("metered", true));
int download = prefs.getInt("download", 32768);
int[] values = getResources().getIntArray(R.array.downloadValues);
for (int i = 0; i < values.length; i++)
if (values[i] == download) {
spDownload.setSelection(i);
break;
}
swUnified.setChecked(prefs.getBoolean("unified", true));
swThreading.setChecked(prefs.getBoolean("threading", true));
swCompact.setChecked(prefs.getBoolean("compact", false));
swAvatars.setChecked(prefs.getBoolean("avatars", true));
swIdenticons.setChecked(prefs.getBoolean("identicons", false));
swPreview.setChecked(prefs.getBoolean("preview", false));
swAddresses.setChecked(prefs.getBoolean("addresses", true));
swPull.setChecked(prefs.getBoolean("pull", true));
swSwipe.setChecked(prefs.getBoolean("swipe", true));
swActionbar.setChecked(prefs.getBoolean("actionbar", true));
swAutoClose.setChecked(prefs.getBoolean("autoclose", true));
swAutoNext.setChecked(prefs.getBoolean("autonext", false));
swAutoNext.setEnabled(!swAutoClose.isChecked());
swAutoRead.setChecked(prefs.getBoolean("autoread", false));
swCollapse.setChecked(prefs.getBoolean("collapse", false));
swAutoMove.setChecked(!prefs.getBoolean("automove", false));
swConfirm.setChecked(prefs.getBoolean("confirm", false));
swSender.setChecked(prefs.getBoolean("sender", false));
swAutoResize.setChecked(prefs.getBoolean("autoresize", true));
swAutoSend.setChecked(!prefs.getBoolean("autosend", false));
swLight.setChecked(prefs.getBoolean("light", false));
swDebug.setChecked(prefs.getBoolean("debug", false));
grpNotification.setVisibility(BuildConfig.DEBUG || Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.O ? View.VISIBLE : View.GONE);
}
private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
@ -480,10 +539,4 @@ public class FragmentOptions extends FragmentEx implements SharedPreferences.OnS
if ("enabled".equals(key))
swEnabled.setChecked(prefs.getBoolean(key, true));
}
@Override
public void onDestroyView() {
PreferenceManager.getDefaultSharedPreferences(getContext()).unregisterOnSharedPreferenceChangeListener(this);
super.onDestroyView();
}
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_default"
android:title="@string/title_setup_defaults"
app:showAsAction="never" />
</menu>

View File

@ -112,6 +112,7 @@
<string name="title_setup_light_theme">Light theme</string>
<string name="title_setup_dark_theme">Dark theme</string>
<string name="title_setup_black_theme">Black theme</string>
<string name="title_setup_defaults">Restore defaults</string>
<string name="title_advanced">Advanced options</string>