android/source/res/menu/view_menu.xml | 9 - android/source/res/xml/libreoffice_preferences.xml | 2 android/source/src/java/org/libreoffice/SettingsActivity.java | 25 +++- android/source/src/java/org/libreoffice/SettingsListenerModel.java | 56 ++++++++++ android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java | 42 ++----- 5 files changed, 90 insertions(+), 44 deletions(-)
New commits: commit f1c844fed0fdf898fd6d027529cb2570eb52bec5 Author: brainbreaker <gautamprajapat...@gmail.com> Date: Wed Feb 8 01:38:40 2017 +0530 Explorer File View option in Settings working now Explorer file view option in Settings is working now. To listen to the preference updates in the app a custom class SettingsListernerModel has been added. SettingsListenerModel.java file contains the methods to instantiate and set OnSettingPreferenceChangedListener in the implementing class. LibreOfficeUIActivity implements this listener and it is triggered by onSharedPreferenceChanged() method in SettingsActivity. This class can also be used to listen to other preference changes in Settings. Change-Id: I063024df01cf183d2a6211648e32805795af20a9 Reviewed-on: https://gerrit.libreoffice.org/34012 Reviewed-by: Aleksandar StefanoviÄ <theonewithid...@gmail.com> Tested-by: Aleksandar StefanoviÄ <theonewithid...@gmail.com> diff --git a/android/source/res/menu/view_menu.xml b/android/source/res/menu/view_menu.xml index fe28da2..3c0003b 100644 --- a/android/source/res/menu/view_menu.xml +++ b/android/source/res/menu/view_menu.xml @@ -7,24 +7,15 @@ android:title="@string/sort" android:icon="@drawable/ic_sort_black_24dp" app:showAsAction="ifRoom"> - <menu> - <item android:id="@+id/menu_sort_size" android:title="@string/menu_sort_size" /> <item android:id="@+id/menu_sort_az" android:title="@string/menu_sort_az"/> <item android:id="@+id/menu_sort_modified" android:title="@string/menu_sort_modified"/> - - </menu> - </item> - - <item android:id="@+id/menu_view_toggle" - android:title="@string/grid_view"/> - <item android:id="@+id/menu_storage_preferences" android:title="@string/storage_provider_settings"/> <item android:id="@+id/action_about" diff --git a/android/source/res/xml/libreoffice_preferences.xml b/android/source/res/xml/libreoffice_preferences.xml index 17256b7..4d80f28 100644 --- a/android/source/res/xml/libreoffice_preferences.xml +++ b/android/source/res/xml/libreoffice_preferences.xml @@ -18,7 +18,7 @@ android:entryValues="@array/ViewModeStringValues" android:title="Default File Explorer View" android:key="EXPLORER_VIEW_TYPE" - android:summary="View files as a grid or in a list. #not functional, yet."/> + android:summary="View files as a grid or in a list."/> </PreferenceCategory> <PreferenceCategory android:title="@string/pref_category_general" diff --git a/android/source/src/java/org/libreoffice/SettingsActivity.java b/android/source/src/java/org/libreoffice/SettingsActivity.java index c453798..4ef7277 100644 --- a/android/source/src/java/org/libreoffice/SettingsActivity.java +++ b/android/source/src/java/org/libreoffice/SettingsActivity.java @@ -9,11 +9,10 @@ package org.libreoffice; import android.app.Activity; +import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceFragment; -import org.libreoffice.R; - public class SettingsActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { @@ -25,13 +24,31 @@ public class SettingsActivity extends Activity { .commit(); } - public static class SettingsFragment extends PreferenceFragment { + public static class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.libreoffice_preferences); } + + @Override + public void onResume() { + super.onResume(); + getPreferenceScreen().getSharedPreferences() + .registerOnSharedPreferenceChangeListener(this); + } + + @Override + public void onPause() { + super.onPause(); + getPreferenceScreen().getSharedPreferences() + .unregisterOnSharedPreferenceChangeListener(this); + } + + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + SettingsListenerModel.getInstance().changePreferenceState(sharedPreferences, key); + } } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/android/source/src/java/org/libreoffice/SettingsListenerModel.java b/android/source/src/java/org/libreoffice/SettingsListenerModel.java new file mode 100644 index 0000000..1b5a909 --- /dev/null +++ b/android/source/src/java/org/libreoffice/SettingsListenerModel.java @@ -0,0 +1,56 @@ +/* + * + * * This file is part of the LibreOffice project. + * * This Source Code Form is subject to the terms of the Mozilla Public + * * License, v. 2.0. If a copy of the MPL was not distributed with this + * * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + */ +package org.libreoffice; + +import android.content.SharedPreferences; + +public class SettingsListenerModel { + + public interface OnSettingsPreferenceChangedListener { + void settingsPreferenceChanged(SharedPreferences sharedPreferences, String key); + } + + private static SettingsListenerModel mInstance; + private OnSettingsPreferenceChangedListener mListener; + private SharedPreferences sharedPreferences; + private String key; + + private SettingsListenerModel() {} + + public static SettingsListenerModel getInstance() { + if(mInstance == null) { + mInstance = new SettingsListenerModel(); + } + return mInstance; + } + + public void setListener(OnSettingsPreferenceChangedListener listener) { + mListener = listener; + } + + public void changePreferenceState(SharedPreferences sharedPreferences, String key) { + if(mListener != null) { + this.sharedPreferences = sharedPreferences; + this.key = key; + notifyPreferenceChange(sharedPreferences, key); + } + } + + public SharedPreferences getSharedPreferences() { + return sharedPreferences; + } + + public String getKey(){ + return key; + } + + private void notifyPreferenceChange(SharedPreferences preferences, String key) { + mListener.settingsPreferenceChanged(preferences, key); + } +} diff --git a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java index c842abc..4720785 100644 --- a/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java +++ b/android/source/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java @@ -54,6 +54,7 @@ import org.libreoffice.AboutDialogFragment; import org.libreoffice.LibreOfficeMainActivity; import org.libreoffice.R; import org.libreoffice.SettingsActivity; +import org.libreoffice.SettingsListenerModel; import org.libreoffice.storage.DocumentProviderFactory; import org.libreoffice.storage.DocumentProviderSettingsActivity; import org.libreoffice.storage.IDocumentProvider; @@ -72,8 +73,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -public class LibreOfficeUIActivity extends AppCompatActivity { - private static final String LOGTAG = LibreOfficeUIActivity.class.getSimpleName(); +public class LibreOfficeUIActivity extends AppCompatActivity implements SettingsListenerModel.OnSettingsPreferenceChangedListener{ + private String LOGTAG = LibreOfficeUIActivity.class.getSimpleName(); private SharedPreferences prefs; private int filterMode = FileUtilities.ALL; private int viewMode; @@ -116,9 +117,8 @@ public class LibreOfficeUIActivity extends AppCompatActivity { documentProviderFactory = DocumentProviderFactory.getInstance(); PreferenceManager.setDefaultValues(this, R.xml.documentprovider_preferences, false); - readPreferences(); - + SettingsListenerModel.getInstance().setListener(this); // init UI and populate with contents from the provider switchToDocumentProvider(documentProviderFactory.getDefaultProvider()); createUI(); @@ -523,16 +523,7 @@ public class LibreOfficeUIActivity extends AppCompatActivity { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.view_menu, menu); - MenuItem item = menu.findItem(R.id.menu_view_toggle); - if (viewMode == GRID_VIEW) { - item.setTitle(R.string.list_view); - item.setIcon(R.drawable.light_view_as_list); - } else { - item.setTitle(R.string.grid_view); - item.setIcon(R.drawable.light_view_as_grid); - } - - item = menu.findItem(R.id.menu_sort_size); + MenuItem item = menu.findItem(R.id.menu_sort_size); if (sortMode == FileUtilities.SORT_LARGEST) { item.setTitle(R.string.sort_smallest); } else { @@ -569,20 +560,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity { openParentDirectory(); } break; - case R.id.menu_view_toggle: - if (viewMode == GRID_VIEW){ - viewMode = LIST_VIEW; - item.setTitle(R.string.grid_view); // Button points to next view. - item.setIcon(R.drawable.light_view_as_grid); - prefs.edit().putInt(EXPLORER_VIEW_TYPE_KEY, LIST_VIEW).apply(); - } else { - viewMode = GRID_VIEW; - item.setTitle(R.string.list_view); // Button points to next view. - item.setIcon(R.drawable.light_view_as_list); - prefs.edit().putInt(EXPLORER_VIEW_TYPE_KEY, GRID_VIEW).apply(); - } - createUI(); - break; case R.id.menu_sort_size: case R.id.menu_sort_az: case R.id.menu_sort_modified: @@ -643,9 +620,9 @@ public class LibreOfficeUIActivity extends AppCompatActivity { public void readPreferences(){ prefs = getSharedPreferences(EXPLORER_PREFS_KEY, MODE_PRIVATE); - viewMode = prefs.getInt(EXPLORER_VIEW_TYPE_KEY, GRID_VIEW); sortMode = prefs.getInt(SORT_MODE_KEY, FileUtilities.SORT_AZ); SharedPreferences defaultPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + viewMode = Integer.valueOf(defaultPrefs.getString(EXPLORER_VIEW_TYPE_KEY, ""+ GRID_VIEW)); filterMode = Integer.valueOf(defaultPrefs.getString(FILTER_MODE_KEY , "-1")); Intent i = this.getIntent(); @@ -671,6 +648,12 @@ public class LibreOfficeUIActivity extends AppCompatActivity { } @Override + public void settingsPreferenceChanged(SharedPreferences sharedPreferences, String key) { + readPreferences(); + refreshView(); + } + + @Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); @@ -711,7 +694,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity { @Override protected void onPause() { - //prefs.edit().putInt(EXPLORER_VIEW_TYPE, viewType).commit(); super.onPause(); Log.d(LOGTAG, "onPause"); }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits