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

Reply via email to