cleaner implementation for restarting on key preference changes
This commit is contained in:
parent
bc2cef9630
commit
14849b3eb4
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user