Created preview fragment to show previews for audio, video and images; shown when...
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / activity / FileDisplayActivity.java
index 8eafbf7..fbce7cb 100644 (file)
@@ -48,6 +48,7 @@ import android.os.Handler;
 import android.os.IBinder;\r
 import android.preference.PreferenceManager;\r
 import android.provider.MediaStore;\r
+import android.support.v4.app.Fragment;\r
 import android.support.v4.app.FragmentTransaction;\r
 import android.util.Log;\r
 import android.view.View;\r
@@ -87,6 +88,8 @@ import com.owncloud.android.ui.dialog.ChangelogDialog;
 import com.owncloud.android.ui.dialog.SslValidatorDialog;\r
 import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener;\r
 import com.owncloud.android.ui.fragment.FileDetailFragment;\r
+import com.owncloud.android.ui.fragment.FileFragment;\r
+import com.owncloud.android.ui.fragment.FilePreviewFragment;\r
 import com.owncloud.android.ui.fragment.OCFileListFragment;\r
 \r
 import com.owncloud.android.R;\r
@@ -289,8 +292,13 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         if (mDualPane && getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG) == null) {\r
             FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();\r
             if (mCurrentFile != null) {\r
-                transaction.replace(R.id.file_details_container, new FileDetailFragment(mCurrentFile, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG); // empty FileDetailFragment\r
+                if (FilePreviewFragment.canBePreviewed(mCurrentFile)) {\r
+                    transaction.replace(R.id.file_details_container, new FilePreviewFragment(mCurrentFile, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG);\r
+                } else {\r
+                    transaction.replace(R.id.file_details_container, new FileDetailFragment(mCurrentFile, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG);\r
+                }\r
                 mCurrentFile = null;\r
+                \r
             } else {\r
                 transaction.replace(R.id.file_details_container, new FileDetailFragment(null, null), FileDetailFragment.FTAG); // empty FileDetailFragment\r
             }\r
@@ -504,11 +512,10 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         \r
         if (mDualPane) {\r
             // Resets the FileDetailsFragment on Tablets so that it always displays\r
-            FileDetailFragment fileDetails = (FileDetailFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
-            if (fileDetails != null && !fileDetails.isEmpty()) {\r
+            Fragment fileFragment = getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
+            if (fileFragment != null && (fileFragment instanceof FilePreviewFragment || !((FileDetailFragment) fileFragment).isEmpty())) {\r
                 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();\r
-                transaction.remove(fileDetails);\r
-                transaction.add(R.id.file_details_container, new FileDetailFragment(null, null), FileDetailFragment.FTAG);\r
+                transaction.replace(R.id.file_details_container, new FileDetailFragment(null, null), FileDetailFragment.FTAG); // empty FileDetailFragment                \r
                 transaction.commit();\r
             }\r
         }\r
@@ -526,9 +533,9 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         super.onSaveInstanceState(outState);\r
         outState.putParcelable(FileDetailFragment.EXTRA_FILE, mCurrentDir);\r
         if (mDualPane) {\r
-            FileDetailFragment fragment = (FileDetailFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
+            FileFragment fragment = (FileFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
             if (fragment != null) {\r
-                OCFile file = fragment.getDisplayedFile();\r
+                OCFile file = fragment.getFile();\r
                 if (file != null) {\r
                     outState.putParcelable(FileDetailFragment.EXTRA_FILE, file);\r
                 }\r
@@ -999,11 +1006,10 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         \r
         if (mDualPane) {\r
             // Resets the FileDetailsFragment on Tablets so that it always displays\r
-            FileDetailFragment fileDetails = (FileDetailFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
-            if (fileDetails != null && !fileDetails.isEmpty()) {\r
+            Fragment fileFragment = getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
+            if (fileFragment != null && (fileFragment instanceof FilePreviewFragment || !((FileDetailFragment) fileFragment).isEmpty())) {\r
                 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();\r
-                transaction.remove(fileDetails);\r
-                transaction.add(R.id.file_details_container, new FileDetailFragment(null, null), FileDetailFragment.FTAG);\r
+                transaction.replace(R.id.file_details_container, new FileDetailFragment(null, null), FileDetailFragment.FTAG); // empty FileDetailFragment                \r
                 transaction.commit();\r
             }\r
         }\r
@@ -1020,8 +1026,12 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         if (mDualPane) {\r
             // buttons in the details view are problematic when trying to reuse an existing fragment; create always a new one solves some of them, BUT no all; downloads are 'dangerous'\r
             FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();\r
-            transaction.replace(R.id.file_details_container, new FileDetailFragment(file, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG);\r
-            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);\r
+            if (FilePreviewFragment.canBePreviewed(file)) {\r
+                transaction.replace(R.id.file_details_container, new FilePreviewFragment(file, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG);\r
+            } else {\r
+                transaction.replace(R.id.file_details_container, new FileDetailFragment(file, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG);\r
+            }\r
+            //transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);\r
             transaction.commit();\r
             \r
         } else {    // small or medium screen device -> new Activity\r
@@ -1090,9 +1100,10 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
             if (mFileList != null)\r
                 mFileList.listDirectory();\r
             if (mDualPane) {\r
-                FileDetailFragment fragment = (FileDetailFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
-                if (fragment != null)\r
-                    fragment.updateFileDetails(false);\r
+                Fragment fragment = getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
+                if (fragment != null && fragment instanceof FileDetailFragment) {\r
+                    ((FileDetailFragment)fragment).updateFileDetails(false);\r
+                }\r
             }\r
         }\r
 \r
@@ -1172,8 +1183,8 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
             msg.show();\r
             OCFile removedFile = operation.getFile();\r
             if (mDualPane) {\r
-                FileDetailFragment details = (FileDetailFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
-                if (details != null && removedFile.equals(details.getDisplayedFile()) ) {\r
+                FileFragment details = (FileFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
+                if (details != null && removedFile.equals(details.getFile())) {\r
                     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();\r
                     transaction.replace(R.id.file_details_container, new FileDetailFragment(null, null)); // empty FileDetailFragment\r
                     transaction.commit();\r
@@ -1205,9 +1216,9 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
         OCFile renamedFile = operation.getFile();\r
         if (result.isSuccess()) {\r
             if (mDualPane) {\r
-                FileDetailFragment details = (FileDetailFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
-                if (details != null && renamedFile.equals(details.getDisplayedFile()) ) {\r
-                    details.updateFileDetails(renamedFile, AccountUtils.getCurrentOwnCloudAccount(this));\r
+                FileFragment details = (FileFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
+                if (details != null && details instanceof FileDetailFragment && renamedFile.equals(details.getFile()) ) {\r
+                    ((FileDetailFragment) details).updateFileDetails(renamedFile, AccountUtils.getCurrentOwnCloudAccount(this));\r
                 }\r
             }\r
             if (mStorageManager.getFileById(renamedFile.getParentId()).equals(mCurrentDir)) {\r
@@ -1269,12 +1280,12 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
             fileListFragment.listDirectory();\r
         }*/\r
         if (mDualPane) {\r
-            FileDetailFragment details = (FileDetailFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
-            if (details != null && file.equals(details.getDisplayedFile()) ) {\r
+            FileFragment details = (FileFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
+            if (details != null && details instanceof FileDetailFragment && file.equals(details.getFile()) ) {\r
                 if (downloading || uploading) {\r
-                    details.updateFileDetails(file, AccountUtils.getCurrentOwnCloudAccount(this));\r
+                    ((FileDetailFragment)details).updateFileDetails(file, AccountUtils.getCurrentOwnCloudAccount(this));\r
                 } else {\r
-                    details.updateFileDetails(downloading || uploading);\r
+                    ((FileDetailFragment)details).updateFileDetails(downloading || uploading);\r
                 }\r
             }\r
         }\r