From e856ad2f97f05a524b0a295bccf1d7c3ca6972a0 Mon Sep 17 00:00:00 2001 From: tom79 Date: Mon, 11 Nov 2019 13:18:35 +0100 Subject: [PATCH] Restart the app when changes --- .../android/activities/BaseMainActivity.java | 1 - .../android/activities/MainApplication.java | 4 -- .../android/activities/SettingsActivity.java | 70 ++++++++++++++++--- .../android/drawers/StatusListAdapter.java | 1 - .../fragments/ColorSettingsFragment.java | 33 +++++++-- .../fragments/ContentSettingsFragment.java | 2 - app/src/main/res/values/strings.xml | 3 + 7 files changed, 92 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java index 5d9e87b5c..a4fdcc114 100644 --- a/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/BaseMainActivity.java @@ -59,7 +59,6 @@ import androidx.appcompat.widget.PopupMenu; import androidx.appcompat.widget.SearchView; import androidx.appcompat.widget.Toolbar; -import android.util.Log; import android.util.Patterns; import android.view.LayoutInflater; import android.view.Menu; diff --git a/app/src/main/java/app/fedilab/android/activities/MainApplication.java b/app/src/main/java/app/fedilab/android/activities/MainApplication.java index e60a73f43..a5095dd48 100644 --- a/app/src/main/java/app/fedilab/android/activities/MainApplication.java +++ b/app/src/main/java/app/fedilab/android/activities/MainApplication.java @@ -19,7 +19,6 @@ import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.StrictMode; -import android.util.Log; import androidx.multidex.MultiDex; import androidx.multidex.MultiDexApplication; @@ -105,9 +104,6 @@ public class MainApplication extends MultiDexApplication { if( pref_color_background != -1){ Cyanea.getInstance().edit().background(pref_color_background).apply(); } - Log.v(Helper.TAG,"primary: " + primary); - Log.v(Helper.TAG,"accent: " + accent); - Log.v(Helper.TAG,"pref_color_background: " + pref_color_background); Cyanea.getInstance().edit().shouldTintNavBar(pref_color_navigation_bar).apply(); diff --git a/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java b/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java index 3fc9d522a..9ee1c0c02 100644 --- a/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/SettingsActivity.java @@ -15,6 +15,11 @@ package app.fedilab.android.activities; +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; @@ -25,14 +30,17 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; +import androidx.preference.PreferenceManager; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; import com.google.android.material.tabs.TabLayout; +import com.jaredrummler.cyanea.Cyanea; import org.jetbrains.annotations.NotNull; import app.fedilab.android.R; @@ -47,10 +55,13 @@ import app.fedilab.android.helper.Helper; public class SettingsActivity extends BaseActivity { + public static boolean needRestart; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + needRestart = false; SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE); int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); switch (theme) { @@ -80,7 +91,12 @@ public class SettingsActivity extends BaseActivity { toolbar_close.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - finish(); + if( needRestart){ + showDialog(); + }else{ + finish(); + } + } }); toolbar_title.setText(R.string.settings); @@ -194,18 +210,52 @@ public class SettingsActivity extends BaseActivity { } - @Override - public void onDestroy() { - super.onDestroy(); + private void showDialog(){ + SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(SettingsActivity.this); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); + int style; + if (theme == Helper.THEME_DARK) { + style = R.style.DialogDark; + } else if (theme == Helper.THEME_BLACK) { + style = R.style.DialogBlack; + } else { + style = R.style.Dialog; + } + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(SettingsActivity.this, style); + dialogBuilder.setMessage(R.string.restart_message); + dialogBuilder.setTitle(R.string.apply_changes); + dialogBuilder.setPositiveButton(R.string.restart, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + Intent mStartActivity = new Intent(getApplicationContext(), MainActivity.class); + int mPendingIntentId = 123456; + PendingIntent mPendingIntent = PendingIntent.getActivity(getApplicationContext(), mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT); + AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); + assert mgr != null; + mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent); + System.exit(0); + } + }); + dialogBuilder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + dialog.dismiss(); + } + }); + AlertDialog alertDialog = dialogBuilder.create(); + alertDialog.setCancelable(false); + alertDialog.show(); + + needRestart = false; } - @Override - public void onResume() { - super.onResume(); - + public void onBackPressed() { + if( needRestart){ + showDialog(); + }else{ + super.onBackPressed(); + } } - - } diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index da24f4a17..a5140c04a 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -58,7 +58,6 @@ import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.text.style.ForegroundColorSpan; import android.text.style.URLSpan; -import android.util.Log; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.MenuItem; diff --git a/app/src/main/java/app/fedilab/android/fragments/ColorSettingsFragment.java b/app/src/main/java/app/fedilab/android/fragments/ColorSettingsFragment.java index 03dd9b49b..40eb4df76 100644 --- a/app/src/main/java/app/fedilab/android/fragments/ColorSettingsFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/ColorSettingsFragment.java @@ -9,18 +9,19 @@ import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceManager; -import com.jaredrummler.cyanea.Cyanea; -import com.jaredrummler.cyanea.prefs.CyaneaTheme; -import java.util.List; +import java.util.HashMap; import app.fedilab.android.R; +import app.fedilab.android.activities.SettingsActivity; import app.fedilab.android.helper.Helper; -public class ColorSettingsFragment extends PreferenceFragmentCompat { +public class ColorSettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { + private HashMap initialPref; + @Override public void onCreatePreferences(Bundle bundle, String s) { addPreferencesFromResource(R.xml.fragment_settings_color); @@ -37,6 +38,8 @@ public class ColorSettingsFragment extends PreferenceFragmentCompat { } else { style = R.style.Dialog; } + initialPref = new HashMap<>(); + PreferenceFragmentCompat preferenceFragmentCompat = this; button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override @@ -77,4 +80,26 @@ public class ColorSettingsFragment extends PreferenceFragmentCompat { }); } + + + @Override + public void onResume() { + super.onResume(); + + getPreferenceScreen().getSharedPreferences() + .registerOnSharedPreferenceChangeListener(this); + } + + @Override + public void onPause() { + super.onPause(); + + getPreferenceScreen().getSharedPreferences() + .unregisterOnSharedPreferenceChangeListener(this); + } + + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + SettingsActivity.needRestart = true; + } } \ No newline at end of file diff --git a/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java b/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java index 405f4f228..8ac7fdd25 100644 --- a/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java @@ -37,7 +37,6 @@ import android.provider.MediaStore; import android.provider.Settings; import android.text.Editable; import android.text.TextWatcher; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -1795,7 +1794,6 @@ public class ContentSettingsFragment extends Fragment implements OnRetrieveRemot editor.apply(); break; } - Log.v(Helper.TAG,"count3"); if (getActivity() != null) getActivity().recreate(); Intent intent = new Intent(context, MainActivity.class); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5b3f1bd3d..861be700e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1270,5 +1270,8 @@ Change the theme Text color Change the text color in pots + Apply changes + You need to restart the application to apply changes + Restart \ No newline at end of file