OC-1380: Fix Start Synchroniztion fails
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / activity / FileDisplayActivity.java
index 00193e0..26b1df5 100644 (file)
@@ -947,9 +947,10 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
         pushDirname(directory);
         cleanSecondFragment();
         
-        syncFolderOperation(directory.getRemotePath(), directory.getFileId());
-        // Update folder size on DB
-        getStorageManager().calculateFolderSize(directory.getFileId());
+        // Sync Folder
+        startSyncFolderOperation(directory.getRemotePath(), directory.getFileId());
+//        // Update folder size on DB
+//        getStorageManager().calculateFolderSize(directory.getParentId());
         
     }
 
@@ -1173,9 +1174,22 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
      * @param result        Result of the synchronization.
      */
     private void onSynchronizeFolderOperationFinish(SynchronizeFolderOperation operation, RemoteOperationResult result) {
+        
+        OCFileListFragment list = getListOfFilesFragment();
+        enableDisableViewGroup(list.getListView(), true);
+        
+        setSupportProgressBarIndeterminateVisibility(false);
         if (result.isSuccess()) {
-            refeshListOfFilesFragment();
+            if (result.getCode() != ResultCode.OK_NO_CHANGES_ON_DIR) {
+                DataStorageManager storageManager = getStorageManager();
+                OCFile parentDir = storageManager.getFileByPath(operation.getRemotePath());
+
+                // Update folder size on DB
+                getStorageManager().calculateFolderSize(parentDir.getFileId());
 
+                // Refrest List
+                refreshListOfFilesFragment(parentDir);
+            }
         } else {
             try {
                 Toast msg = Toast.makeText(FileDisplayActivity.this, R.string.sync_file_fail_msg, Toast.LENGTH_LONG); 
@@ -1188,6 +1202,14 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
     }
 
 
+    private void refreshListOfFilesFragment(OCFile parentDir) {
+        OCFileListFragment fileListFragment = getListOfFilesFragment();
+        if (fileListFragment != null) { 
+            fileListFragment.listDirectory(parentDir);
+        }
+    }
+
+
     /**
      * Updates the view associated to the activity after the finish of an operation trying to remove a 
      * file. 
@@ -1373,9 +1395,13 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
         return null;
     }
     
-    public void syncFolderOperation(String remotePath, long parentId) {
-         long currentSyncTime = System.currentTimeMillis(); 
-        // perform folder synchronization
+    public void startSyncFolderOperation(String remotePath, long parentId) {
+        long currentSyncTime = System.currentTimeMillis(); 
+        
+        OCFileListFragment list = getListOfFilesFragment();
+        enableDisableViewGroup(list.getListView(), false);
+        
+       // perform folder synchronization
         RemoteOperation synchFolderOp = new SynchronizeFolderOperation(  remotePath, 
                                                                                     currentSyncTime, 
                                                                                     parentId, 
@@ -1385,6 +1411,19 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
                                                                                   );
         synchFolderOp.execute(getAccount(), this, this, mHandler, this);
         
+        setSupportProgressBarIndeterminateVisibility(true);
     }
 
+    
+    public void enableDisableViewGroup(ViewGroup viewGroup, boolean enabled) {
+        int childCount = viewGroup.getChildCount();
+        for (int i = 0; i < childCount; i++) {
+          View view = viewGroup.getChildAt(i);
+          view.setEnabled(enabled);
+          view.setClickable(!enabled);
+          if (view instanceof ViewGroup) {
+            enableDisableViewGroup((ViewGroup) view, enabled);
+          }
+        }
+      }
 }