Refactoring of main Activities and Fragments to avoid inconsistent states leading...
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / activity / FileDetailActivity.java
index 00a1f83..737c00f 100644 (file)
  */\r
 package eu.alefzero.owncloud.ui.activity;\r
 \r
+import android.accounts.Account;\r
 import android.content.Intent;\r
+import android.content.res.Configuration;\r
 import android.os.Bundle;\r
 import android.support.v4.app.FragmentTransaction;\r
+import android.util.Log;\r
 \r
 import com.actionbarsherlock.app.ActionBar;\r
 import com.actionbarsherlock.app.SherlockFragmentActivity;\r
 import com.actionbarsherlock.view.MenuItem;\r
 \r
 import eu.alefzero.owncloud.R;\r
+import eu.alefzero.owncloud.datamodel.OCFile;\r
+import eu.alefzero.owncloud.files.services.FileDownloader;\r
 import eu.alefzero.owncloud.ui.fragment.FileDetailFragment;\r
 \r
 /**\r
@@ -36,21 +41,38 @@ import eu.alefzero.owncloud.ui.fragment.FileDetailFragment;
  * \r
  */\r
 public class FileDetailActivity extends SherlockFragmentActivity {\r
-    private FileDetailFragment mFileDetail;\r
+    \r
+    private boolean mConfigurationChangedToLandscape = false;\r
 \r
     @Override\r
     protected void onCreate(Bundle savedInstanceState) {\r
         super.onCreate(savedInstanceState);\r
-        setContentView(R.layout.file_activity_details);\r
 \r
-        ActionBar actionBar = getSupportActionBar();\r
-        actionBar.setDisplayHomeAsUpEnabled(true);\r
-        \r
-        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();\r
-        mFileDetail = new FileDetailFragment();\r
-        ft.replace(R.id.fragment, mFileDetail, "FileDetails");\r
-        ft.commit();\r
+        // check if configuration changed to large-land ; for a tablet being changed from portrait to landscape when in FileDetailActivity \r
+        Configuration conf = getResources().getConfiguration();\r
+        mConfigurationChangedToLandscape = (conf.orientation == Configuration.ORIENTATION_LANDSCAPE && \r
+                                                (conf.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE\r
+                                           );\r
 \r
+        if (!mConfigurationChangedToLandscape) {\r
+            setContentView(R.layout.file_activity_details);\r
+        \r
+            ActionBar actionBar = getSupportActionBar();\r
+            actionBar.setDisplayHomeAsUpEnabled(true);\r
+        \r
+            OCFile file = getIntent().getParcelableExtra(FileDetailFragment.EXTRA_FILE);\r
+            Account account = getIntent().getParcelableExtra(FileDownloader.EXTRA_ACCOUNT);\r
+            FileDetailFragment mFileDetail = new FileDetailFragment(file, account);\r
+        \r
+            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();\r
+            ft.replace(R.id.fragment, mFileDetail, FileDetailFragment.FTAG);\r
+            ft.commit();\r
+            \r
+        }  else {\r
+            backToDisplayActivity();   // the 'back' won't be effective until this.onStart() and this.onResume() are completed;\r
+        }\r
+        \r
+        \r
     }\r
 \r
     @Override\r
@@ -59,11 +81,7 @@ public class FileDetailActivity extends SherlockFragmentActivity {
         \r
         switch(item.getItemId()){\r
         case android.R.id.home:\r
-            Intent intent = new Intent(this, FileDisplayActivity.class);\r
-            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);\r
-            intent.putExtra(FileDetailFragment.EXTRA_FILE, mFileDetail.getDisplayedFile());\r
-            startActivity(intent);\r
-            finish();\r
+            backToDisplayActivity();\r
             returnValue = true;\r
         }\r
         \r
@@ -74,10 +92,21 @@ public class FileDetailActivity extends SherlockFragmentActivity {
 \r
     @Override\r
     protected void onResume() {\r
+        \r
         super.onResume();\r
-        mFileDetail.updateFileDetails(getIntent());\r
+        if (!mConfigurationChangedToLandscape) { \r
+            FileDetailFragment fragment = (FileDetailFragment) getSupportFragmentManager().findFragmentByTag(FileDetailFragment.FTAG);\r
+            fragment.updateFileDetails();\r
+        }\r
     }\r
     \r
-    \r
+\r
+    private void backToDisplayActivity() {\r
+        Intent intent = new Intent(this, FileDisplayActivity.class);\r
+        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);\r
+        intent.putExtra(FileDetailFragment.EXTRA_FILE, getIntent().getParcelableExtra(FileDetailFragment.EXTRA_FILE));\r
+        startActivity(intent);\r
+        finish();\r
+    }\r
 \r
 }\r