cleaner implementation for restarting on key preference changes

This commit is contained in:
Andrew Dolgov 2015-06-11 12:36:09 +03:00
parent bc2cef9630
commit 14849b3eb4
2 changed files with 14 additions and 64 deletions

View File

@ -4,7 +4,6 @@ package org.fox.ttrss;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.graphics.Point;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBarActivity;
@ -14,7 +13,9 @@ import android.widget.Toast;
import org.fox.ttrss.util.DatabaseHelper; import org.fox.ttrss.util.DatabaseHelper;
public class CommonActivity extends ActionBarActivity { import java.util.Arrays;
public class CommonActivity extends ActionBarActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
private final String TAG = this.getClass().getSimpleName(); private final String TAG = this.getClass().getSimpleName();
public final static String FRAG_HEADLINES = "headlines"; public final static String FRAG_HEADLINES = "headlines";
@ -38,22 +39,10 @@ public class CommonActivity extends ActionBarActivity {
private boolean m_smallScreenMode = true; private boolean m_smallScreenMode = true;
private String m_theme; private String m_theme;
private boolean m_needRestart;
protected SharedPreferences m_prefs; protected SharedPreferences m_prefs;
/* protected void enableHttpCaching() {
// enable resource caching
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
try {
File httpCacheDir = new File(getApplicationContext().getCacheDir(), "http");
long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
HttpResponseCache.install(httpCacheDir, httpCacheSize);
} catch (IOException e) {
e.printStackTrace();
}
}
} */
protected void setSmallScreen(boolean smallScreen) { protected void setSmallScreen(boolean smallScreen) {
Log.d(TAG, "m_smallScreenMode=" + smallScreen); Log.d(TAG, "m_smallScreenMode=" + smallScreen);
m_smallScreenMode = smallScreen; m_smallScreenMode = smallScreen;
@ -96,9 +85,8 @@ public class CommonActivity extends ActionBarActivity {
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
if (!m_theme.equals(m_prefs.getString("theme", CommonActivity.THEME_DEFAULT))) { if (m_needRestart) {
Log.d(TAG, "restart requested");
Log.d(TAG, "theme changed, restarting");
finish(); finish();
startActivity(getIntent()); startActivity(getIntent());
@ -117,6 +105,8 @@ public class CommonActivity extends ActionBarActivity {
m_prefs = PreferenceManager m_prefs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext()); .getDefaultSharedPreferences(getApplicationContext());
m_prefs.registerOnSharedPreferenceChangeListener(this);
if (savedInstanceState != null) { if (savedInstanceState != null) {
m_theme = savedInstanceState.getString("theme"); m_theme = savedInstanceState.getString("theme");
} else { } else {
@ -126,11 +116,6 @@ public class CommonActivity extends ActionBarActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
} }
public int dpToPx(int dp) {
float density = getResources().getDisplayMetrics().density;
return Math.round((float)dp * density);
}
@Override @Override
public void onSaveInstanceState(Bundle out) { public void onSaveInstanceState(Bundle out) {
super.onSaveInstanceState(out); super.onSaveInstanceState(out);
@ -167,48 +152,23 @@ public class CommonActivity extends ActionBarActivity {
toast.show(); toast.show();
} }
/* public boolean isDarkTheme() {
String theme = m_prefs.getString("theme", THEME_DEFAULT);
return theme.equals(THEME_DARK); || theme.equals(THEME_AMBER);
} */
protected void setAppTheme(SharedPreferences prefs) { protected void setAppTheme(SharedPreferences prefs) {
String theme = prefs.getString("theme", CommonActivity.THEME_DEFAULT); String theme = prefs.getString("theme", CommonActivity.THEME_DEFAULT);
if (theme.equals(THEME_DARK)) { if (theme.equals(THEME_DARK)) {
setTheme(R.style.DarkTheme); setTheme(R.style.DarkTheme);
/* } else if (theme.equals(THEME_AMBER)) {
setTheme(R.style.AmberTheme);
} else if (theme.equals(THEME_SEPIA)) {
setTheme(R.style.SepiaTheme); */
} else { } else {
setTheme(R.style.LightTheme); setTheme(R.style.LightTheme);
} }
} }
/* protected void setDarkAppTheme(SharedPreferences prefs) { @Override
String theme = prefs.getString("theme", CommonActivity.THEME_DEFAULT); public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.d(TAG, "onSharedPreferenceChanged:" + key);
if (theme.equals(THEME_AMBER)) { String[] filter = new String[] { "theme", "enable_cats", "headline_mode" };
setTheme(R.style.AmberTheme);
} else {
setTheme(R.style.DarkTheme);
}
} */
@SuppressWarnings("deprecation") m_needRestart = Arrays.asList(filter).indexOf(key) != -1;
@SuppressLint("NewApi")
protected int getScreenWidthInPixel() {
Display display = getWindowManager().getDefaultDisplay();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB_MR2) {
Point size = new Point();
display.getSize(size);
int width = size.x;
return width;
} else {
return display.getWidth();
}
} }
} }

View File

@ -40,7 +40,6 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
private boolean m_feedIsSelected = false; private boolean m_feedIsSelected = false;
private boolean m_userFeedSelected = false; private boolean m_userFeedSelected = false;
private boolean m_catsEnabled = false;
private ActionBarDrawerToggle m_drawerToggle; private ActionBarDrawerToggle m_drawerToggle;
private DrawerLayout m_drawerLayout; private DrawerLayout m_drawerLayout;
@ -62,8 +61,6 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar); setSupportActionBar(toolbar);
m_catsEnabled = m_prefs.getBoolean("enable_cats", false);
Application.getInstance().load(savedInstanceState); Application.getInstance().load(savedInstanceState);
m_drawerLayout = (DrawerLayout) findViewById(R.id.headlines_drawer); m_drawerLayout = (DrawerLayout) findViewById(R.id.headlines_drawer);
@ -413,13 +410,6 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList
super.onResume(); super.onResume();
invalidateOptionsMenu(); invalidateOptionsMenu();
if (!m_catsEnabled == m_prefs.getBoolean("enable_cats", false)) {
Log.d(TAG, "root view settings changed, restarting");
finish();
startActivity(getIntent());
}
} }
@Override @Override