Bug 1251362 - Part 13 - Only enable swipe to refresh within the Synced devices smart folder. r=liuche draft
authorJan Henning <jh+bugzilla@buttercookie.de>
Sat, 14 May 2016 23:38:29 +0200
changeset 376081 bbaecba8579b9fcdec4dc5b194759a25eefd4ead
parent 376080 1e2005f8d6b8774e333c0e0ce21e2a838f61f410
child 376082 6d09fadb8ee5de47ffd183abead83b109e08e385
push id20500
push usermozilla@buttercookie.de
push dateTue, 07 Jun 2016 11:41:20 +0000
reviewersliuche
bugs1251362
milestone50.0a1
Bug 1251362 - Part 13 - Only enable swipe to refresh within the Synced devices smart folder. r=liuche Recently closed tabs aren't synced, therefore being able to swipe to refresh within the Recent tabs folder isn't necessary. To avoid triggering a refresh by accident, we restrict swipe to refresh to the Synced devices folder itself. MozReview-Commit-ID: YwekSwQr2q
mobile/android/base/java/org/mozilla/gecko/home/ClientsAdapter.java
mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryPanel.java
--- a/mobile/android/base/java/org/mozilla/gecko/home/ClientsAdapter.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/ClientsAdapter.java
@@ -140,16 +140,20 @@ public class ClientsAdapter extends Recy
         }
     }
 
     @Override
     public int getItemViewType(int position) {
         return CombinedHistoryItem.ItemType.itemTypeToViewType(getItemTypeForPosition(position));
     }
 
+    public int getClientsCount() {
+        return hiddenClients.size() + visibleClients.size();
+    }
+
     @UiThread
     public void setClients(List<RemoteClient> clients) {
         adapterList.clear();
         adapterList.add(null);
 
         hiddenClients.clear();
         visibleClients.clear();
 
--- a/mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryPanel.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/CombinedHistoryPanel.java
@@ -180,16 +180,17 @@ public class CombinedHistoryPanel extend
             }
         });
         registerForContextMenu(mRecyclerView);
     }
 
     private void setUpRefreshLayout() {
         mRefreshLayout.setColorSchemeResources(R.color.fennec_ui_orange, R.color.action_orange);
         mRefreshLayout.setOnRefreshListener(new RemoteTabsRefreshListener());
+        mRefreshLayout.setEnabled(false);
     }
 
     private void setUpEmptyViews() {
         // Set up history empty view.
         final ImageView historyIcon = (ImageView) mHistoryEmptyView.findViewById(R.id.home_empty_image);
         historyIcon.setVisibility(View.GONE);
 
         final TextView historyText = (TextView) mHistoryEmptyView.findViewById(R.id.home_empty_text);
@@ -299,17 +300,16 @@ public class CombinedHistoryPanel extend
                 case LOADER_ID_HISTORY:
                     mHistoryAdapter.setHistory(c);
                     break;
 
                 case LOADER_ID_REMOTE:
                     final List<RemoteClient> clients = mDB.getTabsAccessor().getClientsFromCursor(c);
                     mHistoryAdapter.getDeviceUpdateHandler().onDeviceCountUpdated(clients.size());
                     mClientsAdapter.setClients(clients);
-                    mRefreshLayout.setEnabled(clients.size() > 0);
                     break;
             }
 
             updateEmptyView();
             updateButtonFromLevel();
         }
 
         @Override
@@ -342,19 +342,21 @@ public class CombinedHistoryPanel extend
             if (level == mPanelLevel) {
                 return false;
             }
 
             mPanelLevel = level;
             switch (level) {
                 case PARENT:
                     mRecyclerView.swapAdapter(mHistoryAdapter, true);
+                    mRefreshLayout.setEnabled(false);
                     break;
                 case CHILD_SYNC:
                     mRecyclerView.swapAdapter(mClientsAdapter, true);
+                    mRefreshLayout.setEnabled(mClientsAdapter.getClientsCount() > 0);
                     break;
                 case CHILD_RECENT_TABS:
                     mRecyclerView.swapAdapter(mRecentTabsAdapter, true);
                     break;
             }
 
             updateEmptyView();
             updateButtonFromLevel();