diff --git a/res/layout/preferences_dialog.xml b/res/layout/preferences_dialog.xml new file mode 100644 index 00000000..6af60c8b --- /dev/null +++ b/res/layout/preferences_dialog.xml @@ -0,0 +1,33 @@ + + + + + + + + + diff --git a/res/menu/menu_toolbar.xml b/res/menu/menu_toolbar.xml index 56839b45..8b9117ce 100644 --- a/res/menu/menu_toolbar.xml +++ b/res/menu/menu_toolbar.xml @@ -5,22 +5,10 @@ android:id="@+id/menu_refresh" android:icon="@drawable/ic_menu_refresh" android:title="@string/menu_refresh" - app:showAsAction="always" /> + app:showAsAction="ifRoom" /> - - Reboot Refresh + Preferences Auto updates check Delete updates when installed Delete diff --git a/src/org/lineageos/updater/UpdatesActivity.java b/src/org/lineageos/updater/UpdatesActivity.java index b81f1127..6fcf975c 100644 --- a/src/org/lineageos/updater/UpdatesActivity.java +++ b/src/org/lineageos/updater/UpdatesActivity.java @@ -31,18 +31,21 @@ import android.support.design.widget.AppBarLayout; import android.support.design.widget.CollapsingToolbarLayout; import android.support.design.widget.Snackbar; import android.support.v4.content.LocalBroadcastManager; +import android.support.v7.app.AlertDialog; import android.support.v7.preference.PreferenceManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SimpleItemAnimator; import android.support.v7.widget.Toolbar; import android.util.Log; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.animation.Animation; import android.view.animation.LinearInterpolator; import android.view.animation.RotateAnimation; +import android.widget.Switch; import android.widget.TextView; import org.json.JSONException; @@ -183,14 +186,6 @@ public class UpdatesActivity extends UpdatesListActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_toolbar, menu); - SharedPreferences preferences = - PreferenceManager.getDefaultSharedPreferences(this); - menu.findItem(R.id.menu_auto_updates_check) - .setChecked(preferences.getBoolean(Constants.PREF_AUTO_UPDATES_CHECK, true)); - menu.findItem(R.id.menu_auto_delete_updates) - .setChecked(preferences.getBoolean(Constants.PREF_AUTO_DELETE_UPDATES, false)); - menu.findItem(R.id.menu_mobile_data_warning) - .setChecked(preferences.getBoolean(Constants.PREF_MOBILE_DATA_WARNING, true)); return super.onCreateOptionsMenu(menu); } @@ -201,37 +196,8 @@ public class UpdatesActivity extends UpdatesListActivity { downloadUpdatesList(true); return true; } - case R.id.menu_auto_updates_check: { - boolean enable = !item.isChecked(); - item.setChecked(enable); - PreferenceManager.getDefaultSharedPreferences(UpdatesActivity.this) - .edit() - .putBoolean(Constants.PREF_AUTO_UPDATES_CHECK, enable) - .apply(); - if (enable) { - UpdatesCheckReceiver.scheduleRepeatingUpdatesCheck(this); - } else { - UpdatesCheckReceiver.cancelRepeatingUpdatesCheck(this); - UpdatesCheckReceiver.cancelUpdatesCheck(this); - } - return true; - } - case R.id.menu_auto_delete_updates: { - boolean enable = !item.isChecked(); - item.setChecked(enable); - PreferenceManager.getDefaultSharedPreferences(UpdatesActivity.this) - .edit() - .putBoolean(Constants.PREF_AUTO_DELETE_UPDATES, enable) - .apply(); - return true; - } - case R.id.menu_mobile_data_warning: { - boolean enable = !item.isChecked(); - item.setChecked(enable); - PreferenceManager.getDefaultSharedPreferences(UpdatesActivity.this) - .edit() - .putBoolean(Constants.PREF_MOBILE_DATA_WARNING, enable) - .apply(); + case R.id.menu_preferences: { + showPreferencesDialog(); return true; } case R.id.menu_show_changelog: { @@ -447,4 +413,38 @@ public class UpdatesActivity extends UpdatesListActivity { mRefreshIconView.setEnabled(true); } } + + private void showPreferencesDialog() { + View view = LayoutInflater.from(this).inflate(R.layout.preferences_dialog, null); + Switch autoCheck = (Switch) view.findViewById(R.id.preferences_auto_updates_check); + Switch autoDelete = (Switch) view.findViewById(R.id.preferences_auto_delete_updates); + Switch dataWarning = (Switch) view.findViewById(R.id.preferences_mobile_data_warning); + + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + autoCheck.setChecked(prefs.getBoolean(Constants.PREF_AUTO_UPDATES_CHECK, true)); + autoDelete.setChecked(prefs.getBoolean(Constants.PREF_AUTO_DELETE_UPDATES, false)); + dataWarning.setChecked(prefs.getBoolean(Constants.PREF_MOBILE_DATA_WARNING, true)); + + new AlertDialog.Builder(this) + .setTitle(R.string.menu_preferences) + .setView(view) + .setOnDismissListener(dialogInterface -> { + prefs.edit() + .putBoolean(Constants.PREF_AUTO_UPDATES_CHECK, + autoCheck.isChecked()) + .putBoolean(Constants.PREF_AUTO_DELETE_UPDATES, + autoDelete.isChecked()) + .putBoolean(Constants.PREF_MOBILE_DATA_WARNING, + dataWarning.isChecked()) + .apply(); + + if (autoCheck.isChecked()) { + UpdatesCheckReceiver.scheduleRepeatingUpdatesCheck(this); + } else { + UpdatesCheckReceiver.cancelRepeatingUpdatesCheck(this); + UpdatesCheckReceiver.cancelUpdatesCheck(this); + } + }) + .show(); + } }