From 2ca47f228a6ac297ddec255cfbdd836a74e145e5 Mon Sep 17 00:00:00 2001 From: Rashiq Ahmad Date: Thu, 12 Dec 2013 21:25:14 +0100 Subject: [PATCH] Fixed prefrenced + finishing activity after returning from the settings activity --- res/xml/preferences.xml | 4 +- .../kiwixmobile/KiwixMobileActivity.java | 35 +++++- .../kiwixmobile/KiwixMobileFragment.java | 31 ++++-- src/org/kiwix/kiwixmobile/KiwixSettings.java | 104 +++++++++--------- .../kiwixmobile/ZimFileSelectActivity.java | 1 - 5 files changed, 105 insertions(+), 70 deletions(-) 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; } }