Merge branch 'develop' into check_account_existance_in_gallery
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / activity / FileActivity.java
index cfada45..2cd28dd 100644 (file)
@@ -60,6 +60,12 @@ public abstract class FileActivity extends SherlockFragmentActivity {
     /** Flag to signal that the activity will is finishing to enforce the creation of an ownCloud {@link Account} */
     private boolean mRedirectingToSetupAccount = false;
     
+    /** Flag to signal when the value of mAccount was set */ 
+    private boolean mAccountWasSet;
+    
+    /** Flag to signal when the value of mAccount was restored from a saved state */ 
+    private boolean mAccountWasRestored;
+    
 
     /**
      * Loads the cownCloud {@link Account} and main {@link OCFile} to be handled by the instance of 
@@ -80,9 +86,14 @@ public abstract class FileActivity extends SherlockFragmentActivity {
             mFile = getIntent().getParcelableExtra(FileActivity.EXTRA_FILE);
         }
 
+        Account oldAccount = mAccount;
         grantValidAccount();
         if (mAccount != null) {
-            onAccountSet(savedInstanceState != null);
+            mAccountWasSet = true;
+            mAccountWasRestored = (savedInstanceState != null && mAccount.equals(oldAccount));
+        } else {
+            mAccountWasSet = false;
+            mAccountWasRestored = false;
         }
     }
 
@@ -99,11 +110,15 @@ public abstract class FileActivity extends SherlockFragmentActivity {
         Account oldAccount = mAccount;
         grantValidAccount();
         if (mAccount != null && !mAccount.equals(oldAccount)) {
-            onAccountSet(false);
+            mAccountWasSet = true;
+            mAccountWasRestored = false;
+        } else {
+            mAccountWasSet = false;
+            mAccountWasRestored = false;
         }
     }
+
     
-        
     /**
      *  Validates the ownCloud {@link Account} associated to the Activity any time it is restarted.
      * 
@@ -126,6 +141,16 @@ public abstract class FileActivity extends SherlockFragmentActivity {
     }
     
     
+    @Override 
+    protected void onStart() {
+        // maybe better in onPostCreate() ?
+        super.onStart();
+        if (mAccountWasSet) {
+            onAccountSet(mAccountWasRestored);
+        }
+    }
+    
+    
     /**
      * Launches the account creation activity. To use when no ownCloud account is available
      */
@@ -214,7 +239,7 @@ public abstract class FileActivity extends SherlockFragmentActivity {
                         FileActivity.this.onAccountSet(false);
                     }
                 } catch (OperationCanceledException e) {
-                    Log_OC.e(TAG, "Account creation canceled");
+                    Log_OC.d(TAG, "Account creation canceled");
                     
                 } catch (Exception e) {
                     Log_OC.e(TAG, "Account creation finished in exception: ", e);
@@ -224,7 +249,7 @@ public abstract class FileActivity extends SherlockFragmentActivity {
                 Log_OC.e(TAG, "Account creation callback with null bundle");
             }
             if (mAccount == null) {
-                finish();
+                moveTaskToBack(true);
             }
         }