- observer = mObservers.get(i);
- if (observer.getPath().equals(path))
- duplicate = true;
- observer.setContext(getBaseContext());
- }
- if (duplicate) return;
- observer = new OwnCloudFileObserver(path, OwnCloudFileObserver.CHANGES_ONLY);
- observer.setContext(getBaseContext());
- Account account = AccountUtils.getCurrentOwnCloudAccount(getBaseContext());
- observer.setAccount(account);
- FileDataStorageManager storage =
- new FileDataStorageManager(account, getContentResolver());
- observer.setStorageManager(storage);
- observer.setOCFile(storage.getFileByLocalPath(path));
-
- DownloadCompletedReceiver receiver = new DownloadCompletedReceiver(path, observer);
- registerReceiver(receiver, new IntentFilter(FileDownloader.DOWNLOAD_FINISH_MESSAGE));
+ tmpObserver = mObservers.get(i);
+ if (tmpObserver.getPath().equals(localPath)) {
+ observer = tmpObserver;
+ }
+ tmpObserver.setContext(getApplicationContext()); // 'refreshing' context to all the observers? why?
+ }
+ if (observer == null) {
+ /// the local file was never registered to observe before
+ observer = new OwnCloudFileObserver(localPath, OwnCloudFileObserver.CHANGES_ONLY);
+ //Account account = AccountUtils.getCurrentOwnCloudAccount(getApplicationContext());
+ observer.setAccount(account);
+ FileDataStorageManager storage =
+ new FileDataStorageManager(account, getContentResolver()); // I don't trust in this resolver's life span...
+ observer.setStorageManager(storage);
+ //observer.setOCFile(storage.getFileByLocalPath(path)); // ISSUE 10 - the fix in FileDetailsFragment to avoid path == null was not enough; it the file was never down before, this sets a NULL OCFile in the observer
+ observer.setOCFile(file);
+ observer.addObserverStatusListener(this);
+ observer.setContext(getApplicationContext());
+
+ } else {
+ /* LET'S IGNORE THAT, CURRENTLY, A LOCAL FILE CAN BE LINKED TO DIFFERENT FILES IN OWNCLOUD;
+ * we should change that
+ *
+ /// the local file is already observed for some other OCFile(s)
+ observer.addOCFile(account, file); // OCFiles should have a reference to the account containing them to not be confused
+ */
+ }