[Libreoffice-commits] core.git: android/source

brainbreaker gautamprajapati06 at gmail.com
Thu Feb 9 08:33:23 UTC 2017


 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 <gautamprajapati06 at 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ć <theonewithideas at gmail.com>
    Tested-by: Aleksandar Stefanović <theonewithideas at 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");
     }


More information about the Libreoffice-commits mailing list