diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index 762d77e69..02cda10bc 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -21,10 +21,10 @@
android:defaultValue="false"
android:summary="@string/pref_nightmode_summary"/>
+ android:defaultValue="true"/>
diff --git a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java
index fe8cea33f..381d73c87 100644
--- a/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java
+++ b/src/org/kiwix/kiwixmobile/KiwixMobileActivity.java
@@ -30,9 +30,13 @@ import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.Spinner;
+import java.util.ArrayList;
+
public class KiwixMobileActivity extends FragmentActivity implements ActionBar.TabListener,
View.OnLongClickListener, View.OnDragListener, KiwixMobileFragment.FragmentCommunicator {
+ public static ArrayList mPrefState;
+
private int NUM_ITEMS = 0;
private ViewPagerAdapter mViewPagerAdapter;
@@ -64,6 +68,8 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
+ mPrefState = new ArrayList();
+
mActionBar = getActionBar();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
@@ -262,8 +268,9 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
}
@Override
- public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
- mViewPager.setCurrentItem(tab.getPosition(), true);
+ public void onTabSelected(final ActionBar.Tab tab, FragmentTransaction ft) {
+ final int position = tab.getPosition();
+ mViewPager.setCurrentItem(position, true);
mCurrentFragment = getCurrentVisibleFragment();
@@ -286,6 +293,11 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
if (mActionBar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS) {
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;
mViewPagerAdapter.notifyDataSetChanged();
+ mPrefState.add(NUM_ITEMS - 1, new State(false));
+
if (mActionBar.getTabCount() > 1) {
mActionBar.setTitle(ZimContentProvider.getZimFileTitle());
mActionBar.setSubtitle(null);
@@ -545,6 +559,23 @@ public class KiwixMobileActivity extends FragmentActivity implements ActionBar.T
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 {
// Keep track of the active Fragments
diff --git a/src/org/kiwix/kiwixmobile/KiwixMobileFragment.java b/src/org/kiwix/kiwixmobile/KiwixMobileFragment.java
index 20313456d..bf925ec11 100644
--- a/src/org/kiwix/kiwixmobile/KiwixMobileFragment.java
+++ b/src/org/kiwix/kiwixmobile/KiwixMobileFragment.java
@@ -80,7 +80,9 @@ public class KiwixMobileFragment extends Fragment {
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";
@@ -114,9 +116,9 @@ public class KiwixMobileFragment extends Fragment {
protected int requestWebReloadOnFinished;
- private SharedPreferences mySharedPreferences;
+ private boolean isButtonEnabled;
- private boolean isButtonEnabled = true;
+ private SharedPreferences mySharedPreferences;
private ArrayAdapter adapter;
@@ -137,6 +139,7 @@ public class KiwixMobileFragment extends Fragment {
requestWebReloadOnFinished = 0;
requestInitAllMenuItems = false;
nightMode = false;
+ isButtonEnabled = true;
isFullscreenOpened = false;
}
@@ -175,7 +178,7 @@ public class KiwixMobileFragment extends Fragment {
@Override
public void onPause() {
super.onPause();
- SharedPreferences settings = getActivity().getSharedPreferences(PREFS_KIWIX_MOBILE, 0);
+ SharedPreferences settings = getActivity().getSharedPreferences(PREF_KIWIX_MOBILE, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString(TAG_CURRENTZIMFILE, ZimContentProvider.getZimFile());
@@ -222,7 +225,7 @@ public class KiwixMobileFragment extends Fragment {
+ " times after restoring state");
} else {
- SharedPreferences settings = getActivity().getSharedPreferences(PREFS_KIWIX_MOBILE, 0);
+ SharedPreferences settings = getActivity().getSharedPreferences(PREF_KIWIX_MOBILE, 0);
String zimFile = settings.getString(TAG_CURRENTZIMFILE, null);
if (zimFile != null) {
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;
case PREFERENCES_REQUEST_CODE:
loadPrefs();
- getActivity().finish();
- startActivity(new Intent(getActivity(), KiwixMobileActivity.class));
+ for (KiwixMobileActivity.State state : KiwixMobileActivity.mPrefState) {
+ state.setHasToBeRefreshed(true);
+ }
+ Log.e("kiwix", KiwixMobileActivity.mPrefState.get(0).hasToBeRefreshed() + "");
break;
}
@@ -617,11 +622,13 @@ public class KiwixMobileFragment extends Fragment {
}
public void loadPrefs() {
+
mySharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
+
String pref_zoom = mySharedPreferences.getString(PREF_ZOOM, AUTOMATIC);
Boolean pref_zoom_enabled = mySharedPreferences.getBoolean(PREF_ZOOM_ENABLED, 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)) {
setDefaultZoom();
@@ -639,11 +646,13 @@ public class KiwixMobileFragment extends Fragment {
// 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.
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);
- if (!isButtonEnabled) {
- mBackToTopButton.setVisibility(View.INVISIBLE);
+ if (pref_buttonEnabled) {
+ mBackToTopButton.setVisibility(View.VISIBLE);
+ } else {
+ mBackToTopButton.setVisibility(View.VISIBLE);
}
// Night mode status
diff --git a/src/org/kiwix/kiwixmobile/KiwixSettings.java b/src/org/kiwix/kiwixmobile/KiwixSettings.java
index 568ccd3db..dc031e5af 100644
--- a/src/org/kiwix/kiwixmobile/KiwixSettings.java
+++ b/src/org/kiwix/kiwixmobile/KiwixSettings.java
@@ -1,69 +1,65 @@
package org.kiwix.kiwixmobile;
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.os.Bundle;
+import android.preference.EditTextPreference;
+import android.preference.ListPreference;
+import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceFragment;
public class KiwixSettings extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getFragmentManager().beginTransaction()
- .replace(android.R.id.content, new PrefsFragment()).commit();
- }
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getFragmentManager().beginTransaction().replace(android.R.id.content, new PrefsFragment()).commit();
+ }
- public class PrefsFragment extends PreferenceFragment {
+ public class PrefsFragment extends PreferenceFragment {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ // TODO Auto-generated method stub
+ super.onCreate(savedInstanceState);
- // Load the preferences from an XML resource
- addPreferencesFromResource(R.xml.preferences);
- prepareListPreferenceForAutoSummary("pref_zoom");
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.preferences);
+ prepareListPreferenceForAutoSummary("pref_zoom");
- // Set version
- String version;
- try {
- version = getPackageManager().getPackageInfo("org.kiwix.kiwixmobile", 0).versionName;
- } catch (NameNotFoundException e) {
- return;
- }
- EditTextPreference versionPref = (EditTextPreference)findPreference("pref_version");
- versionPref.setSummary(version);
- }
+ // Set version
+ String version;
+ try {
+ version = getPackageManager().getPackageInfo("org.kiwix.kiwixmobile", 0).versionName;
+ } catch (NameNotFoundException e) {
+ return;
+ }
+ EditTextPreference versionPref = (EditTextPreference) findPreference("pref_version");
+ versionPref.setSummary(version);
+ }
- private void prepareListPreferenceForAutoSummary(String preferenceID) {
- ListPreference prefList = (ListPreference) findPreference(preferenceID);
- prefList.setDefaultValue(prefList.getEntryValues()[0]);
- String ss = prefList.getValue();
- if (ss == null) {
- prefList.setValue((String) prefList.getEntryValues()[0]);
- ss = prefList.getValue();
- }
- prefList.setSummary(prefList.getEntries()[prefList
- .findIndexOfValue(ss)]);
- prefList.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
- @Override
- public boolean onPreferenceChange(Preference preference,
- Object newValue) {
- if (preference instanceof ListPreference)
- preference.setSummary(((ListPreference) preference)
- .getEntries()[((ListPreference) preference)
- .findIndexOfValue(newValue.toString())]);
- return true;
- }
- });
- }
- }
+ private void prepareListPreferenceForAutoSummary(String preferenceID) {
+ ListPreference prefList = (ListPreference) findPreference(preferenceID);
+ prefList.setDefaultValue(prefList.getEntryValues()[0]);
+ String ss = prefList.getValue();
+ if (ss == null) {
+ prefList.setValue((String) prefList.getEntryValues()[0]);
+ ss = prefList.getValue();
+ }
+ prefList.setSummary(prefList.getEntries()[prefList.findIndexOfValue(ss)]);
+ prefList.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference,
+ Object newValue) {
+ if (preference instanceof ListPreference) {
+ preference.setSummary(((ListPreference) preference)
+ .getEntries()[((ListPreference) preference)
+ .findIndexOfValue(newValue.toString())]);
+ }
+ return true;
+ }
+ });
+ }
+ }
}
\ No newline at end of file
diff --git a/src/org/kiwix/kiwixmobile/ZimFileSelectActivity.java b/src/org/kiwix/kiwixmobile/ZimFileSelectActivity.java
index afe48ae1d..8093a9a69 100644
--- a/src/org/kiwix/kiwixmobile/ZimFileSelectActivity.java
+++ b/src/org/kiwix/kiwixmobile/ZimFileSelectActivity.java
@@ -296,7 +296,6 @@ public class ZimFileSelectActivity extends FragmentActivity
private class ViewHolder {
TextView title;
-
TextView path;
}
}