OSDN Git Service

No register long-click listener if not needed
authorjruesga <jorge@ruesga.com>
Fri, 28 Sep 2012 12:14:01 +0000 (14:14 +0200)
committerjruesga <jorge@ruesga.com>
Fri, 28 Sep 2012 12:14:01 +0000 (14:14 +0200)
When long-click action is set to none, the long-click listener shouldn't
be registered because it's not needed

src/com/cyanogenmod/explorer/activities/SearchActivity.java
src/com/cyanogenmod/explorer/ui/widgets/NavigationView.java

index 22cf879..e81e4a5 100644 (file)
@@ -143,6 +143,15 @@ public class SearchActivity extends Activity
                                 Preferences.getSharedPreferences().getString(id, defaultValue);
                         SearchActivity.this.mDefaultLongClickAction =
                                 DefaultLongClickAction.fromId(value);
+
+                        // Register the long-click listener only if needed
+                        if (SearchActivity.this.mDefaultLongClickAction.compareTo(
+                                DefaultLongClickAction.NONE) != 0) {
+                            SearchActivity.this.
+                                mSearchListView.setOnItemLongClickListener(SearchActivity.this);
+                        } else {
+                            SearchActivity.this.mSearchListView.setOnItemLongClickListener(null);
+                        }
                         return;
                     }
                 }
@@ -180,6 +189,15 @@ public class SearchActivity extends Activity
             Log.d(TAG, "NavigationActivity.onCreate"); //$NON-NLS-1$
         }
 
+        // Default long-click action
+        String defaultValue = ((ObjectStringIdentifier)ExplorerSettings.
+                SETTINGS_DEFAULT_LONG_CLICK_ACTION.getDefaultValue()).getId();
+        String value = Preferences.getSharedPreferences().getString(
+                            ExplorerSettings.SETTINGS_DEFAULT_LONG_CLICK_ACTION.getId(),
+                            defaultValue);
+        DefaultLongClickAction mode = DefaultLongClickAction.fromId(value);
+        this.mDefaultLongClickAction = mode;
+
         // Register the broadcast receiver
         IntentFilter filter = new IntentFilter();
         filter.addAction(ExplorerSettings.INTENT_SETTING_CHANGED);
@@ -214,15 +232,6 @@ public class SearchActivity extends Activity
             }
         }
 
-        // Default long-click action
-        String defaultValue = ((ObjectStringIdentifier)ExplorerSettings.
-                SETTINGS_DEFAULT_LONG_CLICK_ACTION.getDefaultValue()).getId();
-        String value = Preferences.getSharedPreferences().getString(
-                            ExplorerSettings.SETTINGS_DEFAULT_LONG_CLICK_ACTION.getId(),
-                            defaultValue);
-        DefaultLongClickAction mode = DefaultLongClickAction.fromId(value);
-        this.mDefaultLongClickAction = mode;
-
         //Save state
         super.onCreate(state);
     }
@@ -331,7 +340,13 @@ public class SearchActivity extends Activity
         //The list view
         this.mSearchListView = (ListView)findViewById(R.id.search_listview);
         this.mSearchListView.setOnItemClickListener(this);
-        this.mSearchListView.setOnItemLongClickListener(this);
+
+        // Register the long-click listener only if needed
+        if (this.mDefaultLongClickAction.compareTo(
+                DefaultLongClickAction.NONE) != 0) {
+            this.mSearchListView.setOnItemLongClickListener(this);
+        }
+
         //Other components
         this.mSearchWaiting = (ProgressBar)findViewById(R.id.search_waiting);
         this.mSearchFoundItems = (TextView)findViewById(R.id.search_status_found_items);
index 48f024b..9416d3b 100644 (file)
@@ -200,14 +200,6 @@ public class NavigationView extends RelativeLayout implements
         //Initialize variables
         this.mFiles = new ArrayList<FileSystemObject>();
 
-        //Retrieve the default configuration
-        SharedPreferences preferences = Preferences.getSharedPreferences();
-        int viewMode = preferences.getInt(
-                ExplorerSettings.SETTINGS_LAYOUT_MODE.getId(),
-                ((ObjectIdentifier)ExplorerSettings.
-                        SETTINGS_LAYOUT_MODE.getDefaultValue()).getId());
-        changeViewMode(NavigationLayoutMode.fromId(viewMode));
-
         // Default long-click action
         String defaultValue = ((ObjectStringIdentifier)ExplorerSettings.
                 SETTINGS_DEFAULT_LONG_CLICK_ACTION.getDefaultValue()).getId();
@@ -216,6 +208,14 @@ public class NavigationView extends RelativeLayout implements
                             defaultValue);
         DefaultLongClickAction mode = DefaultLongClickAction.fromId(value);
         this.mDefaultLongClickAction = mode;
+
+        //Retrieve the default configuration
+        SharedPreferences preferences = Preferences.getSharedPreferences();
+        int viewMode = preferences.getInt(
+                ExplorerSettings.SETTINGS_LAYOUT_MODE.getId(),
+                ((ObjectIdentifier)ExplorerSettings.
+                        SETTINGS_LAYOUT_MODE.getDefaultValue()).getId());
+        changeViewMode(NavigationLayoutMode.fromId(viewMode));
     }
 
     /**
@@ -286,6 +286,14 @@ public class NavigationView extends RelativeLayout implements
      */
     public void setDefaultLongClickAction(DefaultLongClickAction mDefaultLongClickAction) {
         this.mDefaultLongClickAction = mDefaultLongClickAction;
+        
+        // Register the long-click listener only if needed
+        if (this.mDefaultLongClickAction.compareTo(
+                DefaultLongClickAction.NONE) != 0) {
+            this.mAdapterView.setOnItemLongClickListener(this);
+        } else {
+            this.mAdapterView.setOnItemLongClickListener(null);
+        }
     }
 
     /**
@@ -408,9 +416,14 @@ public class NavigationView extends RelativeLayout implements
 
             //Set the adapter
             this.mAdapter = adapter;
-            newView.setAdapter(adapter);
+            newView.setAdapter(this.mAdapter);
             newView.setOnItemClickListener(NavigationView.this);
-            newView.setOnItemLongClickListener(NavigationView.this);
+
+            // Register the long-click listener only if needed
+            if (this.mDefaultLongClickAction.compareTo(
+                    DefaultLongClickAction.NONE) != 0) {
+                newView.setOnItemLongClickListener(this);
+            }
 
             //Add the new layout
             this.mAdapterView = newView;