From 50067ee42b2ed8b0a5340ef9a02207a8ac2e0abe Mon Sep 17 00:00:00 2001 From: masensio Date: Wed, 4 Sep 2013 10:25:27 +0200 Subject: [PATCH] Fix bug: When you browses up, the folder and files dissapears --- .../operations/SynchronizeFolderOperation.java | 5 +++++ .../android/ui/activity/FileDisplayActivity.java | 24 ++++++++++++++++------ .../android/ui/fragment/OCFileListFragment.java | 20 +++++++++++------- 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index 3c1a64f6..b08b2be6 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -64,6 +64,11 @@ public class SynchronizeFolderOperation extends RemoteOperation { /** Id of the folder to synchronize in the local database */ private long mParentId; + public long getParentId() { + return mParentId; + } + + /** Access to the local database */ private DataStorageManager mStorageManager; diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index ebccabae..c6c8ecfc 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -948,7 +948,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa cleanSecondFragment(); // Sync Folder - syncFolderOperation(directory.getRemotePath(), directory.getFileId()); + startSyncFolderOperation(directory.getRemotePath(), directory.getFileId()); // Update folder size on DB getStorageManager().calculateFolderSize(directory.getParentId()); @@ -1174,9 +1174,12 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa * @param result Result of the synchronization. */ private void onSynchronizeFolderOperationFinish(SynchronizeFolderOperation operation, RemoteOperationResult result) { + setSupportProgressBarIndeterminateVisibility(false); if (result.isSuccess()) { - refeshListOfFilesFragment(); - + DataStorageManager storageManager = getStorageManager(); + OCFile parentDir = storageManager.getFileById(operation.getParentId()); + + refreshListOfFilesFragment(parentDir); } else { try { Toast msg = Toast.makeText(FileDisplayActivity.this, R.string.sync_file_fail_msg, Toast.LENGTH_LONG); @@ -1189,6 +1192,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. @@ -1374,9 +1385,10 @@ 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(); + setSupportProgressBarIndeterminateVisibility(true); + // perform folder synchronization RemoteOperation synchFolderOp = new SynchronizeFolderOperation( remotePath, currentSyncTime, parentId, diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 64161ed6..b6d30ed2 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -129,18 +129,24 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName if(mFile != null){ DataStorageManager storageManager = mContainerActivity.getStorageManager(); - parentDir = storageManager.getFileById(mFile.getParentId()); + if (mFile.getParentId() == 0) { + parentDir = storageManager.getFileById(1); + } + else { + parentDir = storageManager.getFileById(mFile.getParentId()); + } // Update folder size on DB storageManager.calculateFolderSize(mFile.getFileId()); - mFile = parentDir; - + mFile = parentDir; } - listDirectory(parentDir); - + + if (mFile != null) { + listDirectory(mFile); - mContainerActivity.syncFolderOperation(mFile.getRemotePath(), mFile.getParentId()); + mContainerActivity.startSyncFolderOperation(mFile.getRemotePath(), mFile.getParentId()); + } } @@ -406,7 +412,7 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName public void startImagePreview(OCFile file); - public void syncFolderOperation(String remotePath, long parentId); + public void startSyncFolderOperation(String remotePath, long parentId); /** * Getter for the current DataStorageManager in the container activity -- 2.11.0