Fixed prefrenced + finishing activity after returning from the settings activity

This commit is contained in:
Rashiq Ahmad 2013-12-12 21:25:14 +01:00
parent 413e4c2ee1
commit 2ca47f228a
5 changed files with 105 additions and 70 deletions

View File

@ -21,10 +21,10 @@
android:defaultValue="false" android:defaultValue="false"
android:summary="@string/pref_nightmode_summary"/> android:summary="@string/pref_nightmode_summary"/>
<CheckBoxPreference <CheckBoxPreference
android:key="pref_backtotop" android:key="pref_back_to_top"
android:title="@string/pref_backtotop" android:title="@string/pref_backtotop"
android:summary="@string/pref_backtotop_summary" android:summary="@string/pref_backtotop_summary"
android:defaultValue="false"/> android:defaultValue="true"/>
</PreferenceCategory> </PreferenceCategory>

View File

@ -30,9 +30,13 @@ import android.widget.HorizontalScrollView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Spinner; import android.widget.Spinner;
import java.util.ArrayList;
public class KiwixMobileActivity extends FragmentActivity implements ActionBar.TabListener, public class KiwixMobileActivity extends FragmentActivity implements ActionBar.TabListener,
View.OnLongClickListener, View.OnDragListener, KiwixMobileFragment.FragmentCommunicator { View.OnLongClickListener, View.OnDragListener, KiwixMobileFragment.FragmentCommunicator {
public static ArrayList<State> mPrefState;
private int NUM_ITEMS = 0; private int NUM_ITEMS = 0;
private ViewPagerAdapter mViewPagerAdapter; private ViewPagerAdapter mViewPagerAdapter;
@ -64,6 +68,8 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
mPrefState = new ArrayList<State>();
mActionBar = getActionBar(); mActionBar = getActionBar();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
@ -262,8 +268,9 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
} }
@Override @Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { public void onTabSelected(final ActionBar.Tab tab, FragmentTransaction ft) {
mViewPager.setCurrentItem(tab.getPosition(), true); final int position = tab.getPosition();
mViewPager.setCurrentItem(position, true);
mCurrentFragment = getCurrentVisibleFragment(); mCurrentFragment = getCurrentVisibleFragment();
@ -286,6 +293,11 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
if (mActionBar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS) { if (mActionBar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS) {
getActionBar().getSelectedTab().setText(title); getActionBar().getSelectedTab().setText(title);
} }
if (mPrefState.size() != 0) {
if (mPrefState.get(position).hasToBeRefreshed()) {
mCurrentFragment.loadPrefs();
}
}
} }
}); });
} }
@ -445,6 +457,8 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
NUM_ITEMS = NUM_ITEMS + 1; NUM_ITEMS = NUM_ITEMS + 1;
mViewPagerAdapter.notifyDataSetChanged(); mViewPagerAdapter.notifyDataSetChanged();
mPrefState.add(NUM_ITEMS - 1, new State(false));
if (mActionBar.getTabCount() > 1) { if (mActionBar.getTabCount() > 1) {
mActionBar.setTitle(ZimContentProvider.getZimFileTitle()); mActionBar.setTitle(ZimContentProvider.getZimFileTitle());
mActionBar.setSubtitle(null); mActionBar.setSubtitle(null);
@ -545,6 +559,23 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
return false; return false;
} }
public class State {
private boolean hasToBeRefreshed;
private State(boolean hasToBeRefreshed) {
this.hasToBeRefreshed = hasToBeRefreshed;
}
public boolean hasToBeRefreshed() {
return hasToBeRefreshed;
}
public void setHasToBeRefreshed(boolean hasToBeRefreshed) {
this.hasToBeRefreshed = hasToBeRefreshed;
}
}
public class ViewPagerAdapter extends FragmentStatePagerAdapter { public class ViewPagerAdapter extends FragmentStatePagerAdapter {
// Keep track of the active Fragments // Keep track of the active Fragments

View File

@ -80,7 +80,9 @@ public class KiwixMobileFragment extends Fragment {
private static final String PREF_ZOOM_ENABLED = "pref_zoom_enabled"; private static final String PREF_ZOOM_ENABLED = "pref_zoom_enabled";
private static final String PREFS_KIWIX_MOBILE = "kiwix-mobile"; private static final String PREF_KIWIX_MOBILE = "kiwix-mobile";
private static final String PREF_BACK_TO_TOP = "pref_back_to_top";
private static final String AUTOMATIC = "automatic"; private static final String AUTOMATIC = "automatic";
@ -114,9 +116,9 @@ public class KiwixMobileFragment extends Fragment {
protected int requestWebReloadOnFinished; protected int requestWebReloadOnFinished;
private SharedPreferences mySharedPreferences; private boolean isButtonEnabled;
private boolean isButtonEnabled = true; private SharedPreferences mySharedPreferences;
private ArrayAdapter<String> adapter; private ArrayAdapter<String> adapter;
@ -137,6 +139,7 @@ public class KiwixMobileFragment extends Fragment {
requestWebReloadOnFinished = 0; requestWebReloadOnFinished = 0;
requestInitAllMenuItems = false; requestInitAllMenuItems = false;
nightMode = false; nightMode = false;
isButtonEnabled = true;
isFullscreenOpened = false; isFullscreenOpened = false;
} }
@ -175,7 +178,7 @@ public class KiwixMobileFragment extends Fragment {
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
SharedPreferences settings = getActivity().getSharedPreferences(PREFS_KIWIX_MOBILE, 0); SharedPreferences settings = getActivity().getSharedPreferences(PREF_KIWIX_MOBILE, 0);
SharedPreferences.Editor editor = settings.edit(); SharedPreferences.Editor editor = settings.edit();
editor.putString(TAG_CURRENTZIMFILE, ZimContentProvider.getZimFile()); editor.putString(TAG_CURRENTZIMFILE, ZimContentProvider.getZimFile());
@ -222,7 +225,7 @@ public class KiwixMobileFragment extends Fragment {
+ " times after restoring state"); + " times after restoring state");
} else { } else {
SharedPreferences settings = getActivity().getSharedPreferences(PREFS_KIWIX_MOBILE, 0); SharedPreferences settings = getActivity().getSharedPreferences(PREF_KIWIX_MOBILE, 0);
String zimFile = settings.getString(TAG_CURRENTZIMFILE, null); String zimFile = settings.getString(TAG_CURRENTZIMFILE, null);
if (zimFile != null) { if (zimFile != null) {
Log.d(TAG_KIWIX, " Kiwix normal start, zimFile loaded last time -> Open last used zimFile " Log.d(TAG_KIWIX, " Kiwix normal start, zimFile loaded last time -> Open last used zimFile "
@ -598,8 +601,10 @@ public class KiwixMobileFragment extends Fragment {
break; break;
case PREFERENCES_REQUEST_CODE: case PREFERENCES_REQUEST_CODE:
loadPrefs(); loadPrefs();
getActivity().finish(); for (KiwixMobileActivity.State state : KiwixMobileActivity.mPrefState) {
startActivity(new Intent(getActivity(), KiwixMobileActivity.class)); state.setHasToBeRefreshed(true);
}
Log.e("kiwix", KiwixMobileActivity.mPrefState.get(0).hasToBeRefreshed() + "");
break; break;
} }
@ -617,11 +622,13 @@ public class KiwixMobileFragment extends Fragment {
} }
public void loadPrefs() { public void loadPrefs() {
mySharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); mySharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
String pref_zoom = mySharedPreferences.getString(PREF_ZOOM, AUTOMATIC); String pref_zoom = mySharedPreferences.getString(PREF_ZOOM, AUTOMATIC);
Boolean pref_zoom_enabled = mySharedPreferences.getBoolean(PREF_ZOOM_ENABLED, false); Boolean pref_zoom_enabled = mySharedPreferences.getBoolean(PREF_ZOOM_ENABLED, false);
Boolean pref_nightmode = mySharedPreferences.getBoolean(PREF_NIGHTMODE, false); Boolean pref_nightmode = mySharedPreferences.getBoolean(PREF_NIGHTMODE, false);
isButtonEnabled = mySharedPreferences.getBoolean("pref_backtotop", isButtonEnabled); Boolean pref_buttonEnabled = mySharedPreferences.getBoolean(PREF_BACK_TO_TOP, false);
if (pref_zoom.equals(AUTOMATIC)) { if (pref_zoom.equals(AUTOMATIC)) {
setDefaultZoom(); setDefaultZoom();
@ -639,11 +646,13 @@ public class KiwixMobileFragment extends Fragment {
// Pinch to zoom // Pinch to zoom
// This seems to suffer from a bug in Android. If you set to "false" this only apply after a restart of the app. // This seems to suffer from a bug in Android. If you set to "false" this only apply after a restart of the app.
Log.d(TAG_KIWIX, "pref_zoom_enabled value (" + pref_zoom_enabled + ")"); Log.d(TAG_KIWIX, "pref_zoom_enabled value (" + pref_zoom_enabled + ")");
webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setBuiltInZoomControls(pref_zoom_enabled);
webView.getSettings().setDisplayZoomControls(pref_zoom_enabled); webView.getSettings().setDisplayZoomControls(pref_zoom_enabled);
if (!isButtonEnabled) { if (pref_buttonEnabled) {
mBackToTopButton.setVisibility(View.INVISIBLE); mBackToTopButton.setVisibility(View.VISIBLE);
} else {
mBackToTopButton.setVisibility(View.VISIBLE);
} }
// Night mode status // Night mode status

View File

@ -1,69 +1,65 @@
package org.kiwix.kiwixmobile; package org.kiwix.kiwixmobile;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.EditTextPreference;
import android.preference.Preference;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
public class KiwixSettings extends Activity { public class KiwixSettings extends Activity {
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction() getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragment()).commit();
.replace(android.R.id.content, new PrefsFragment()).commit(); }
}
public class PrefsFragment extends PreferenceFragment { public class PrefsFragment extends PreferenceFragment {
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
// Load the preferences from an XML resource // Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences); addPreferencesFromResource(R.xml.preferences);
prepareListPreferenceForAutoSummary("pref_zoom"); prepareListPreferenceForAutoSummary("pref_zoom");
// Set version // Set version
String version; String version;
try { try {
version = getPackageManager().getPackageInfo("org.kiwix.kiwixmobile", 0).versionName; version = getPackageManager().getPackageInfo("org.kiwix.kiwixmobile", 0).versionName;
} catch (NameNotFoundException e) { } catch (NameNotFoundException e) {
return; return;
} }
EditTextPreference versionPref = (EditTextPreference)findPreference("pref_version"); EditTextPreference versionPref = (EditTextPreference) findPreference("pref_version");
versionPref.setSummary(version); versionPref.setSummary(version);
} }
private void prepareListPreferenceForAutoSummary(String preferenceID) { private void prepareListPreferenceForAutoSummary(String preferenceID) {
ListPreference prefList = (ListPreference) findPreference(preferenceID); ListPreference prefList = (ListPreference) findPreference(preferenceID);
prefList.setDefaultValue(prefList.getEntryValues()[0]); prefList.setDefaultValue(prefList.getEntryValues()[0]);
String ss = prefList.getValue(); String ss = prefList.getValue();
if (ss == null) { if (ss == null) {
prefList.setValue((String) prefList.getEntryValues()[0]); prefList.setValue((String) prefList.getEntryValues()[0]);
ss = prefList.getValue(); ss = prefList.getValue();
} }
prefList.setSummary(prefList.getEntries()[prefList prefList.setSummary(prefList.getEntries()[prefList.findIndexOfValue(ss)]);
.findIndexOfValue(ss)]); prefList.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
prefList.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override
@Override public boolean onPreferenceChange(Preference preference,
public boolean onPreferenceChange(Preference preference, Object newValue) {
Object newValue) { if (preference instanceof ListPreference) {
if (preference instanceof ListPreference) preference.setSummary(((ListPreference) preference)
preference.setSummary(((ListPreference) preference) .getEntries()[((ListPreference) preference)
.getEntries()[((ListPreference) preference) .findIndexOfValue(newValue.toString())]);
.findIndexOfValue(newValue.toString())]); }
return true; return true;
} }
}); });
} }
} }
} }

View File

@ -296,7 +296,6 @@ public class ZimFileSelectActivity extends FragmentActivity
private class ViewHolder { private class ViewHolder {
TextView title; TextView title;
TextView path; TextView path;
} }
} }