X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/0c75a839f20f4912ecdae32315bb3aebb0775fc7..def870aa0fffb6127d77efe1bda3f7dc617406c8:/src/com/owncloud/android/ui/activity/FileDisplayActivity.java diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index c8f23f0f..bff3869e 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -92,6 +92,7 @@ import com.owncloud.android.ui.fragment.FileDetailFragment; import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.ui.fragment.FilePreviewFragment; import com.owncloud.android.ui.fragment.OCFileListFragment; +import com.owncloud.android.ui.preview.PreviewImageActivity; import com.owncloud.android.R; import eu.alefzero.webdav.WebdavClient; @@ -1053,25 +1054,37 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements @Override public void onFileClick(OCFile file) { - // If we are on a large device -> update fragment - if (mDualPane) { - // 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' - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - if (file != null && FilePreviewFragment.canBePreviewed(file)) { - if (file.isDown()) { - transaction.replace(R.id.file_details_container, new FilePreviewFragment(file, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG); - } else { - transaction.replace(R.id.file_details_container, new FileDetailFragment(file, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG); - mWaitingToPreview = file; - requestForDownload(); - } + if (file != null && FilePreviewFragment.canBePreviewed(file)) { + if (file.isDown()) { + // preview it + startPreview(file); + } else { - transaction.replace(R.id.file_details_container, new FileDetailFragment(file, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG); + // automatic download, preview on finish + startDownloadForPreview(file); + } - //transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); + } else { + // details view + startDetails(file); + } + } + + private void startPreview(OCFile file) { + if (mDualPane && + !file.isImage() // this is a trick to get a quick-to-implement 'full screen' preview for images in landscape + ) { + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.replace(R.id.file_details_container, new FilePreviewFragment(file, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG); transaction.commit(); - } else { // small or medium screen device -> new Activity + } else if (file.isImage()) { + Intent showDetailsIntent = new Intent(this, PreviewImageActivity.class); + showDetailsIntent.putExtra(FileDetailFragment.EXTRA_FILE, file); + showDetailsIntent.putExtra(FileDetailFragment.EXTRA_ACCOUNT, AccountUtils.getCurrentOwnCloudAccount(this)); + startActivity(showDetailsIntent); + + } else { Intent showDetailsIntent = new Intent(this, FileDetailActivity.class); showDetailsIntent.putExtra(FileDetailFragment.EXTRA_FILE, file); showDetailsIntent.putExtra(FileDetailFragment.EXTRA_ACCOUNT, AccountUtils.getCurrentOwnCloudAccount(this)); @@ -1079,7 +1092,37 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements } } + private void startDownloadForPreview(OCFile file) { + if (mDualPane) { + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.replace(R.id.file_details_container, new FileDetailFragment(file, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG); + transaction.commit(); + mWaitingToPreview = file; + requestForDownload(); + + } else { + Intent showDetailsIntent = new Intent(this, FileDetailActivity.class); + showDetailsIntent.putExtra(FileDetailFragment.EXTRA_FILE, file); + showDetailsIntent.putExtra(FileDetailFragment.EXTRA_ACCOUNT, AccountUtils.getCurrentOwnCloudAccount(this)); + startActivity(showDetailsIntent); + } + } + + private void startDetails(OCFile file) { + if (mDualPane && !file.isImage()) { + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.replace(R.id.file_details_container, new FileDetailFragment(file, AccountUtils.getCurrentOwnCloudAccount(this)), FileDetailFragment.FTAG); + transaction.commit(); + } else { + Intent showDetailsIntent = new Intent(this, FileDetailActivity.class); + showDetailsIntent.putExtra(FileDetailFragment.EXTRA_FILE, file); + showDetailsIntent.putExtra(FileDetailFragment.EXTRA_ACCOUNT, AccountUtils.getCurrentOwnCloudAccount(this)); + startActivity(showDetailsIntent); + } + } + + /** * {@inheritDoc} */