Solving modified date and length conflicts
[pub/Android/ownCloud.git] / src / com / owncloud / android / files / services / FileObserverService.java
index 25b5f1c..dc533d1 100644 (file)
@@ -7,6 +7,8 @@ import com.owncloud.android.AccountUtils;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
 import com.owncloud.android.files.OwnCloudFileObserver;
+import com.owncloud.android.files.OwnCloudFileObserver.FileObserverStatusListener;
+import com.owncloud.android.ui.activity.ConflictsResolveActivity;
 
 import android.accounts.Account;
 import android.accounts.AccountManager;
@@ -20,7 +22,7 @@ import android.os.Binder;
 import android.os.IBinder;
 import android.util.Log;
 
-public class FileObserverService extends Service {
+public class FileObserverService extends Service implements FileObserverStatusListener {
 
     public final static String KEY_FILE_CMD = "KEY_FILE_CMD";
     public final static String KEY_CMD_ARG = "KEY_CMD_ARG";
@@ -115,6 +117,7 @@ public class FileObserverService extends Service {
             observer.setAccount(account);
             observer.setStorageManager(storage);
             observer.setOCFile(storage.getFileByPath(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_PATH))));
+            observer.addObserverStatusListener(this);
             observer.startWatching();
             mObservers.add(observer);
             Log.d(TAG, "Started watching file " + path);
@@ -147,6 +150,7 @@ public class FileObserverService extends Service {
                 new FileDataStorageManager(account, getContentResolver());
         observer.setStorageManager(storage);
         observer.setOCFile(storage.getFileByLocalPath(path));
+        observer.addObserverStatusListener(this);
 
         DownloadCompletedReceiver receiver = new DownloadCompletedReceiver(path, observer);
         registerReceiver(receiver, new IntentFilter(FileDownloader.DOWNLOAD_FINISH_MESSAGE));
@@ -201,7 +205,28 @@ public class FileObserverService extends Service {
             mDownloadReceivers.remove(r);
         }
     }
-    
+
+    @Override
+    public void OnObservedFileStatusUpdate(String localPath, String remotePath, Account account, Status status) {
+        switch (status) {
+            case CONFLICT:
+            {
+                Intent i = new Intent(getApplicationContext(), ConflictsResolveActivity.class);
+                i.setFlags(i.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK);
+                i.putExtra("remotepath", remotePath);
+                i.putExtra("localpath", localPath);
+                i.putExtra("account", account);
+                startActivity(i);
+                break;
+            }
+            case SENDING_TO_UPLOADER:
+            case INCORRECT_MASK:
+                break;
+            default:
+                Log.wtf(TAG, "Unhandled status " + status);
+        }
+    }
+
     private class DownloadCompletedReceiver extends BroadcastReceiver {
         String mPath;
         OwnCloudFileObserver mObserver;