Fixed crash when the device is turned while the warning dialog about server certifica...
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / fragment / FileDetailFragment.java
index ae38a0a..d251883 100644 (file)
@@ -79,7 +79,9 @@ import com.owncloud.android.authenticator.AccountAuthenticator;
 import com.owncloud.android.datamodel.FileDataStorageManager;\r
 import com.owncloud.android.datamodel.OCFile;\r
 import com.owncloud.android.files.services.FileDownloader;\r
+import com.owncloud.android.files.services.FileObserverService;\r
 import com.owncloud.android.files.services.FileUploader;\r
+import com.owncloud.android.network.OwnCloudClientUtils;\r
 import com.owncloud.android.ui.activity.FileDetailActivity;\r
 import com.owncloud.android.ui.activity.FileDisplayActivity;\r
 import com.owncloud.android.utils.OwnCloudVersion;\r
@@ -262,9 +264,17 @@ public class FileDetailFragment extends SherlockFragment implements
                 fdsm.saveFile(mFile);\r
                 if (mFile.keepInSync()) {\r
                     onClick(getView().findViewById(R.id.fdDownloadBtn));\r
-                } else {    \r
+                } else {\r
                     mContainerActivity.onFileStateChanged();    // put inside 'else' to not call it twice (here, and in the virtual click on fdDownloadBtn)\r
                 }\r
+                Intent intent = new Intent(getActivity().getApplicationContext(),\r
+                                           FileObserverService.class);\r
+                intent.putExtra(FileObserverService.KEY_FILE_CMD,\r
+                           (cb.isChecked()?\r
+                                   FileObserverService.CMD_ADD_OBSERVED_FILE:\r
+                                   FileObserverService.CMD_DEL_OBSERVED_FILE));\r
+                intent.putExtra(FileObserverService.KEY_CMD_ARG, mFile.getStoragePath());\r
+                getActivity().startService(intent);\r
                 break;\r
             }\r
             case R.id.fdRenameBtn: {\r
@@ -661,7 +671,7 @@ public class FileDetailFragment extends SherlockFragment implements
                 final String WEBDAV_SCRIPT = "webdav.php";\r
                 final String WEBDAV_FILES_LOCATION = "/files/";\r
                 \r
-                WebdavClient wc = new WebdavClient();\r
+                WebdavClient wc = OwnCloudClientUtils.createOwnCloudClient(account, getActivity().getApplicationContext());\r
                 HttpConnectionManagerParams params = new HttpConnectionManagerParams();\r
                 params.setMaxConnectionsPerHost(wc.getHostConfiguration(), 5);\r
 \r
@@ -684,7 +694,6 @@ public class FileDetailFragment extends SherlockFragment implements
                     PropFindMethod find = new PropFindMethod(url+"/");\r
                     find.addRequestHeader("Referer", am.getUserData(account, AccountAuthenticator.KEY_OC_BASE_URL));\r
                     Log.d("sharer", ""+ url+"/");\r
-                    wc.setCredentials(account.name.substring(0, account.name.lastIndexOf('@')), am.getPassword(account));\r
                     \r
                     for (org.apache.commons.httpclient.Header a : find.getRequestHeaders()) {\r
                         Log.d("sharer-h", a.getName() + ":"+a.getValue());\r
@@ -809,8 +818,7 @@ public class FileDetailFragment extends SherlockFragment implements
         }\r
         \r
         public void run() {\r
-            WebdavClient wc = new WebdavClient(mAccount, getSherlockActivity().getApplicationContext());\r
-            wc.allowSelfsignedCertificates();\r
+            WebdavClient wc = OwnCloudClientUtils.createOwnCloudClient(mAccount, getSherlockActivity().getApplicationContext());\r
             AccountManager am = AccountManager.get(getSherlockActivity());\r
             String baseUrl = am.getUserData(mAccount, AccountAuthenticator.KEY_OC_BASE_URL);\r
             OwnCloudVersion ocv = new OwnCloudVersion(am.getUserData(mAccount, AccountAuthenticator.KEY_OC_VERSION));\r
@@ -825,6 +833,7 @@ public class FileDetailFragment extends SherlockFragment implements
             try {\r
                 int status = wc.executeMethod(move);\r
                 success = move.succeeded();\r
+                move.getResponseBodyAsString(); // exhaust response, although not interesting\r
                 Log.d(TAG, "Move returned status: " + status);\r
                 \r
             } catch (HttpException e) {\r
@@ -835,11 +844,14 @@ public class FileDetailFragment extends SherlockFragment implements
                 \r
             } catch (Exception e) {\r
                 Log.e(TAG, "Unexpected exception renaming file " + mOld.getRemotePath() + " to " + mNew.getRemotePath(), e);\r
-            }\r
+                \r
+            } finally {\r
+               move.releaseConnection();\r
+            } \r
             \r
             if (success) {\r
                 FileDataStorageManager fdsm = new FileDataStorageManager(mAccount, getActivity().getContentResolver());\r
-                fdsm.removeFile(mOld);\r
+                fdsm.removeFile(mOld, false);\r
                 fdsm.saveFile(mNew);\r
                 mFile = mNew;\r
                 mHandler.post(new Runnable() {\r
@@ -973,8 +985,7 @@ public class FileDetailFragment extends SherlockFragment implements
         }\r
         \r
         public void run() {\r
-            WebdavClient wc = new WebdavClient(mAccount, getSherlockActivity().getApplicationContext());\r
-            wc.allowSelfsignedCertificates();\r
+            WebdavClient wc = OwnCloudClientUtils.createOwnCloudClient(mAccount, getSherlockActivity().getApplicationContext());\r
             AccountManager am = AccountManager.get(getSherlockActivity());\r
             String baseUrl = am.getUserData(mAccount, AccountAuthenticator.KEY_OC_BASE_URL);\r
             OwnCloudVersion ocv = new OwnCloudVersion(am.getUserData(mAccount, AccountAuthenticator.KEY_OC_VERSION));\r
@@ -988,6 +999,7 @@ public class FileDetailFragment extends SherlockFragment implements
             try {\r
                 status = wc.executeMethod(delete);\r
                 success = (delete.succeeded());\r
+                delete.getResponseBodyAsString();   // exhaust the response, although not interesting\r
                 Log.d(TAG, "Delete: returned status " + status);\r
                 \r
             } catch (HttpException e) {\r
@@ -998,11 +1010,14 @@ public class FileDetailFragment extends SherlockFragment implements
                 \r
             } catch (Exception e) {\r
                 Log.e(TAG, "Unexpected exception removing file " + mFileToRemove.getRemotePath(), e);\r
+                \r
+            } finally {\r
+                delete.releaseConnection();\r
             }\r
             \r
             if (success) {\r
                 FileDataStorageManager fdsm = new FileDataStorageManager(mAccount, getActivity().getContentResolver());\r
-                fdsm.removeFile(mFileToRemove);\r
+                fdsm.removeFile(mFileToRemove, true);\r
                 mHandler.post(new Runnable() {\r
                     @Override\r
                     public void run() {\r