Update files list when an upload finishes, if the file is uploaded to the current...
authorDavid A. Velasco <dvelasco@solidgear.es>
Thu, 28 Jun 2012 12:12:52 +0000 (14:12 +0200)
committerDavid A. Velasco <dvelasco@solidgear.es>
Thu, 28 Jun 2012 12:12:52 +0000 (14:12 +0200)
src/eu/alefzero/owncloud/files/services/FileUploader.java
src/eu/alefzero/owncloud/ui/activity/FileDisplayActivity.java

index 2da5992..9f2e3e7 100644 (file)
@@ -1,6 +1,7 @@
 package eu.alefzero.owncloud.files.services;
 
 import java.io.File;
+import java.util.List;
 
 import eu.alefzero.owncloud.AccountUtils;
 import eu.alefzero.owncloud.R;
@@ -9,7 +10,6 @@ import eu.alefzero.owncloud.datamodel.FileDataStorageManager;
 import eu.alefzero.owncloud.datamodel.OCFile;
 import eu.alefzero.owncloud.files.interfaces.OnDatatransferProgressListener;
 import eu.alefzero.owncloud.utils.OwnCloudVersion;
-import eu.alefzero.webdav.OnUploadProgressListener;
 import eu.alefzero.webdav.WebdavClient;
 import android.accounts.Account;
 import android.accounts.AccountManager;
@@ -32,6 +32,9 @@ import android.widget.Toast;
 
 public class FileUploader extends Service implements OnDatatransferProgressListener {
 
+    public static final String UPLOAD_FINISH_MESSAGE = "UPLOAD_FINISH";
+    public static final String EXTRA_PARENT_DIR_ID = "PARENT_DIR_ID";
+    
     public static final String KEY_LOCAL_FILE = "LOCAL_FILE";
     public static final String KEY_REMOTE_FILE = "REMOTE_FILE";
     public static final String KEY_ACCOUNT = "ACCOUNT";
@@ -190,12 +193,16 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
                 new_file.setLastSyncDate(0);
                 new_file.setStoragePath(mLocalPaths[i]);         
                 File f = new File(mRemotePaths[i]);
-                new_file.setParentId(storageManager.getFileByPath(f.getParent().endsWith("/")?f.getParent():f.getParent()+"/").getFileId());
+                long parentDirId = storageManager.getFileByPath(f.getParent().endsWith("/")?f.getParent():f.getParent()+"/").getFileId();
+                new_file.setParentId(parentDirId);
                 storageManager.saveFile(new_file);
+                
+                Intent end = new Intent(UPLOAD_FINISH_MESSAGE);
+                end.putExtra(EXTRA_PARENT_DIR_ID, parentDirId);
+                sendBroadcast(end);
             }
+            
         }
-        // notification.contentView.setProgressBar(R.id.status_progress,
-        // mLocalPaths.length-1, mLocalPaths.length-1, false);
         mNotificationManager.cancel(42);
         run();
     }
index e8f9151..7de1e28 100644 (file)
@@ -45,6 +45,7 @@ import android.view.ViewGroup;
 import android.widget.ArrayAdapter;\r
 import android.widget.EditText;\r
 import android.widget.TextView;\r
+import android.widget.Toast;\r
 \r
 import com.actionbarsherlock.app.ActionBar;\r
 import com.actionbarsherlock.app.ActionBar.OnNavigationListener;\r
@@ -61,6 +62,7 @@ import eu.alefzero.owncloud.authenticator.AccountAuthenticator;
 import eu.alefzero.owncloud.datamodel.DataStorageManager;\r
 import eu.alefzero.owncloud.datamodel.FileDataStorageManager;\r
 import eu.alefzero.owncloud.datamodel.OCFile;\r
+import eu.alefzero.owncloud.files.services.FileDownloader;\r
 import eu.alefzero.owncloud.files.services.FileUploader;\r
 import eu.alefzero.owncloud.syncadapter.FileSyncService;\r
 import eu.alefzero.owncloud.ui.fragment.FileDetailFragment;\r
@@ -82,7 +84,8 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
     private String[] mDirs = null;\r
 \r
     private DataStorageManager mStorageManager;\r
-    private SyncBroadcastReceiver syncBroadcastReceiver;\r
+    private SyncBroadcastReceiver mSyncBroadcastReceiver;\r
+    private UploadFinishReceiver mUploadFinishReceiver;\r
     \r
     private View mLayoutView = null;\r
     private FileListFragment mFileList;\r
@@ -300,8 +303,13 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
 \r
             // Listen for sync messages\r
             IntentFilter syncIntentFilter = new IntentFilter(FileSyncService.SYNC_MESSAGE);\r
-            syncBroadcastReceiver = new SyncBroadcastReceiver();\r
-            registerReceiver(syncBroadcastReceiver, syncIntentFilter);\r
+            mSyncBroadcastReceiver = new SyncBroadcastReceiver();\r
+            registerReceiver(mSyncBroadcastReceiver, syncIntentFilter);\r
+            \r
+            // Listen for upload messages\r
+            IntentFilter uploadIntentFilter = new IntentFilter(FileUploader.UPLOAD_FINISH_MESSAGE);\r
+            mUploadFinishReceiver = new UploadFinishReceiver();\r
+            registerReceiver(mUploadFinishReceiver, uploadIntentFilter);\r
         \r
             // Storage manager initialization\r
             mStorageManager = new FileDataStorageManager(\r
@@ -374,9 +382,13 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
     protected void onPause() {\r
         Log.i(getClass().toString(), "onPause() start");\r
         super.onPause();\r
-        if (syncBroadcastReceiver != null) {\r
-            unregisterReceiver(syncBroadcastReceiver);\r
-            syncBroadcastReceiver = null;\r
+        if (mSyncBroadcastReceiver != null) {\r
+            unregisterReceiver(mSyncBroadcastReceiver);\r
+            mSyncBroadcastReceiver = null;\r
+        }\r
+        if (mUploadFinishReceiver != null) {\r
+            unregisterReceiver(mUploadFinishReceiver);\r
+            mUploadFinishReceiver = null;\r
         }\r
         getIntent().putExtra(FileDetailFragment.EXTRA_FILE, mCurrentDir);\r
         Log.i(getClass().toString(), "onPause() end");\r
@@ -611,7 +623,33 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         }\r
 \r
     }\r
+    \r
+\r
+    private class UploadFinishReceiver extends BroadcastReceiver {\r
+        /**\r
+         * Once the file upload has finished -> update view\r
+         *  @author David A. Velasco\r
+         * {@link BroadcastReceiver} to enable upload feedback in UI\r
+         */\r
+        @Override\r
+        public void onReceive(Context context, Intent intent) {\r
+            long parentDirId = intent.getLongExtra(FileUploader.EXTRA_PARENT_DIR_ID, -1);\r
+            OCFile parentDir = mStorageManager.getFileById(parentDirId);\r
+            \r
+            if (parentDir != null && (\r
+                    (mCurrentDir == null && parentDir.getFileName().equals("/")) ||\r
+                     parentDir.equals(mCurrentDir))\r
+                ) {\r
+                FileListFragment fileListFragment = (FileListFragment) getSupportFragmentManager().findFragmentById(R.id.fileList);\r
+                if (fileListFragment != null) { \r
+                    fileListFragment.listDirectory();\r
+                }\r
+            }\r
+        }\r
+        \r
+    }\r
 \r
+    \r
     @Override\r
     public void onClick(View v) {\r
         if (v.getId() == R.id.setup_account) {\r