Adding cancellation to uploads (WIP)
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / fragment / FileDetailFragment.java
index 5b76c01..10b44ad 100644 (file)
@@ -79,9 +79,12 @@ import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;\r
 import com.owncloud.android.files.services.FileDownloader;\r
 import com.owncloud.android.files.services.FileUploader;\r
+import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;\r
+import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;\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.ui.activity.TransferServiceGetter;\r
 import com.owncloud.android.utils.OwnCloudVersion;\r
 \r
 import com.owncloud.android.R;\r
@@ -136,7 +139,7 @@ public class FileDetailFragment extends SherlockFragment implements
      * @param fileToDetail      An {@link OCFile} to show in the fragment\r
      * @param ocAccount         An ownCloud account; needed to start downloads\r
      */\r
-    public FileDetailFragment(OCFile fileToDetail, Account ocAccount){\r
+    public FileDetailFragment(OCFile fileToDetail, Account ocAccount) {\r
         mFile = fileToDetail;\r
         mAccount = ocAccount;\r
         mLayout = R.layout.file_details_empty;\r
@@ -147,20 +150,6 @@ public class FileDetailFragment extends SherlockFragment implements
     }\r
     \r
 \r
-    /**\r
-     * {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void onAttach(Activity activity) {\r
-        super.onAttach(activity);\r
-        try {\r
-            mContainerActivity = (ContainerActivity) activity;\r
-        } catch (ClassCastException e) {\r
-            throw new ClassCastException(activity.toString() + " must implement FileListFragment.ContainerActivity");\r
-        }\r
-    }\r
-    \r
-    \r
     @Override\r
     public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
             Bundle savedInstanceState) {\r
@@ -190,6 +179,20 @@ public class FileDetailFragment extends SherlockFragment implements
     }\r
     \r
 \r
+    /**\r
+     * {@inheritDoc}\r
+     */\r
+    @Override\r
+    public void onAttach(Activity activity) {\r
+        super.onAttach(activity);\r
+        try {\r
+            mContainerActivity = (ContainerActivity) activity;\r
+        } catch (ClassCastException e) {\r
+            throw new ClassCastException(activity.toString() + " must implement " + FileDetailFragment.ContainerActivity.class.getCanonicalName());\r
+        }\r
+    }\r
+        \r
+\r
     @Override\r
     public void onSaveInstanceState(Bundle outState) {\r
         Log.i(getClass().toString(), "onSaveInstanceState() start");\r
@@ -242,10 +245,10 @@ public class FileDetailFragment extends SherlockFragment implements
     public void onClick(View v) {\r
         switch (v.getId()) {\r
             case R.id.fdDownloadBtn: {\r
-                if (FileDownloader.isDownloading(mAccount, mFile.getRemotePath())) {\r
-                    \r
-                    // TODO cancelar descarga\r
-                    \r
+                //if (FileDownloader.isDownloading(mAccount, mFile.getRemotePath())) {\r
+                FileDownloaderBinder downloaderBinder = mContainerActivity.getFileDownloaderBinder();\r
+                if (downloaderBinder != null && downloaderBinder.isDownloading(mAccount, mFile)) {\r
+                    downloaderBinder.cancel(mAccount, mFile);\r
                     if (mFile.isDown()) {\r
                         setButtonsForDown();\r
                     } else {\r
@@ -255,9 +258,10 @@ public class FileDetailFragment extends SherlockFragment implements
                 } else {\r
                     Intent i = new Intent(getActivity(), FileDownloader.class);\r
                     i.putExtra(FileDownloader.EXTRA_ACCOUNT, mAccount);\r
-                    i.putExtra(FileDownloader.EXTRA_REMOTE_PATH, mFile.getRemotePath());\r
+                    i.putExtra(FileDownloader.EXTRA_FILE, mFile);\r
+                    /*i.putExtra(FileDownloader.EXTRA_REMOTE_PATH, mFile.getRemotePath());\r
                     i.putExtra(FileDownloader.EXTRA_FILE_PATH, mFile.getRemotePath());\r
-                    i.putExtra(FileDownloader.EXTRA_FILE_SIZE, mFile.getFileLength());\r
+                    i.putExtra(FileDownloader.EXTRA_FILE_SIZE, mFile.getFileLength());*/\r
                 \r
                     // update ui \r
                     setButtonsForTransferring();\r
@@ -440,7 +444,10 @@ public class FileDetailFragment extends SherlockFragment implements
             cb.setChecked(mFile.keepInSync());\r
 \r
             // configure UI for depending upon local state of the file\r
-            if (FileDownloader.isDownloading(mAccount, mFile.getRemotePath()) || FileUploader.isUploading(mAccount, mFile.getRemotePath())) {\r
+            //if (FileDownloader.isDownloading(mAccount, mFile.getRemotePath()) || FileUploader.isUploading(mAccount, mFile.getRemotePath())) {\r
+            FileDownloaderBinder downloaderBinder = mContainerActivity.getFileDownloaderBinder();\r
+            FileUploaderBinder uploaderBinder = mContainerActivity.getFileUploaderBinder();\r
+            if ((downloaderBinder != null && downloaderBinder.isDownloading(mAccount, mFile)) || (uploaderBinder != null && uploaderBinder.isUploading(mAccount, mFile))) {\r
                 setButtonsForTransferring();\r
                 \r
             } else if (mFile.isDown()) {\r
@@ -585,7 +592,7 @@ public class FileDetailFragment extends SherlockFragment implements
      * \r
      * @author David A. Velasco\r
      */\r
-    public interface ContainerActivity {\r
+    public interface ContainerActivity extends TransferServiceGetter {\r
 \r
         /**\r
          * Callback method invoked when the detail fragment wants to notice its container \r