浏览代码

Fixed visibility of button for server checking

David A. Velasco 12 年之前
父节点
当前提交
16403b2722
共有 1 个文件被更改,包括 107 次插入36 次删除
  1. 107 36
      src/com/owncloud/android/authentication/AuthenticatorActivity.java

+ 107 - 36
src/com/owncloud/android/authentication/AuthenticatorActivity.java

@@ -417,6 +417,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
         mServerCheckedAndValid = false;
         mOkButton.setEnabled(false);
         mDiscoveredVersion = null;
+        hideRefreshButton();
         if (uri.length() != 0) {
             mServerStatusText = R.string.auth_testing_connection;
             mServerStatusIcon = R.drawable.progress_small;
@@ -425,7 +426,6 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
             WebdavClient client = OwnCloudClientUtils.createOwnCloudClient(Uri.parse(uri), this);
             mOperationThread = mOcServerChkOperation.execute(client, this, mHandler);
         } else {
-            mHostUrlInput.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
             mServerStatusText = 0;
             mServerStatusIcon = 0;
             showServerStatus();
@@ -534,8 +534,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
      */
     private void startOauthorization() {
         // be gentle with the user
-        mServerStatusIcon = R.drawable.progress_small;
-        mServerStatusText = R.string.oauth_login_connection;
+        mAuthStatusIcon = R.drawable.progress_small;
+        mAuthStatusText = R.string.oauth_login_connection;
         showAuthStatus();
         
         // GET AUTHORIZATION request
@@ -590,7 +590,12 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
             mOcServerChkOperation = null;
             
             /// update status icon and text
-            updateStatusIconAndText(result);
+            if (mServerCheckedAndValid) {
+                hideRefreshButton();
+            } else {
+                showRefreshButton();
+            }
+            updateServerStatusIconAndText(result);
             showServerStatus();
     
             /// very special case (TODO: move to a common place for all the remote operations)
@@ -599,13 +604,6 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
                 showDialog(DIALOG_SSL_VALIDATOR); 
             }
             
-            /// update the visibility of the 'retry connection' button
-            if (!mServerCheckedAndValid) {
-                mHostUrlInput.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_action_refresh_black, 0);
-            } else {
-                mHostUrlInput.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
-            }
-            
             /// retrieve discovered version and normalize server URL
             mDiscoveredVersion = operation.getDiscoveredVersion();
             mHostBaseUrl = normalizeUrl(mHostUrlInput.getText().toString());
@@ -642,8 +640,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
      * 
      * @param result    Result of a remote operation performed in this activity
      */
-    private void updateStatusIconAndText(RemoteOperationResult result) {
-        mServerStatusText = mServerStatusIcon = 0;
+    private void updateServerStatusIconAndText(RemoteOperationResult result) {
+        mServerStatusIcon = R.drawable.common_error;    // the most common case in the switch below
 
         switch (result.getCode()) {
         case OK_SSL:
@@ -662,69 +660,131 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
             }
             break;
             
+        case NO_NETWORK_CONNECTION:
+            mServerStatusIcon = R.drawable.no_network;
+            mServerStatusText = R.string.auth_no_net_conn_title;
+            break;
+            
         case SSL_RECOVERABLE_PEER_UNVERIFIED:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_ssl_unverified_server_title;
             break;
-                
         case BAD_OC_VERSION:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_bad_oc_version_title;
             break;
         case WRONG_CONNECTION:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_wrong_connection_title;
             break;
         case TIMEOUT:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_timeout_title;
             break;
         case INCORRECT_ADDRESS:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_incorrect_address_title;
             break;
-            
         case SSL_ERROR:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_ssl_general_error_title;
             break;
-            
         case UNAUTHORIZED:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_unauthorized;
             break;
         case HOST_NOT_AVAILABLE:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_unknown_host_title;
             break;
-        case NO_NETWORK_CONNECTION:
-            mServerStatusIcon = R.drawable.no_network;
-            mServerStatusText = R.string.auth_no_net_conn_title;
-            break;
         case INSTANCE_NOT_CONFIGURED:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_not_configured_title;
             break;
         case FILE_NOT_FOUND:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_incorrect_path_title;
             break;
         case OAUTH2_ERROR:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_oauth_error;
             break;
         case OAUTH2_ERROR_ACCESS_DENIED:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_oauth_error_access_denied;
             break;
         case UNHANDLED_HTTP_CODE:
         case UNKNOWN_ERROR:
-            mServerStatusIcon = R.drawable.common_error;
             mServerStatusText = R.string.auth_unknown_error_title;
             break;
-            
         default:
+            mServerStatusText = 0;
+            mServerStatusIcon = 0;
+        }
+    }
+
+
+    /**
+     * Chooses the right icon and text to show to the user for the received operation result.
+     * 
+     * @param result    Result of a remote operation performed in this activity
+     */
+    private void updateAuthStatusIconAndText(RemoteOperationResult result) {
+        mAuthStatusIcon = R.drawable.common_error;    // the most common case in the switch below
+
+        switch (result.getCode()) {
+        case OK_SSL:
+            mAuthStatusIcon = android.R.drawable.ic_secure;
+            mAuthStatusText = R.string.auth_secure_connection;
             break;
+            
+        case OK_NO_SSL:
+        case OK:
+            if (mHostUrlInput.getText().toString().trim().toLowerCase().startsWith("http://") ) {
+                mAuthStatusText = R.string.auth_connection_established;
+                mAuthStatusIcon = R.drawable.ic_ok;
+            } else {
+                mAuthStatusText = R.string.auth_nossl_plain_ok_title;
+                mAuthStatusIcon = android.R.drawable.ic_partial_secure;
+            }
+            break;
+            
+        case NO_NETWORK_CONNECTION:
+            mAuthStatusIcon = R.drawable.no_network;
+            mAuthStatusText = R.string.auth_no_net_conn_title;
+            break;
+            
+        case SSL_RECOVERABLE_PEER_UNVERIFIED:
+            mAuthStatusText = R.string.auth_ssl_unverified_server_title;
+            break;
+        case BAD_OC_VERSION:
+            mAuthStatusText = R.string.auth_bad_oc_version_title;
+            break;
+        case WRONG_CONNECTION:
+            mAuthStatusText = R.string.auth_wrong_connection_title;
+            break;
+        case TIMEOUT:
+            mAuthStatusText = R.string.auth_timeout_title;
+            break;
+        case INCORRECT_ADDRESS:
+            mAuthStatusText = R.string.auth_incorrect_address_title;
+            break;
+        case SSL_ERROR:
+            mAuthStatusText = R.string.auth_ssl_general_error_title;
+            break;
+        case UNAUTHORIZED:
+            mAuthStatusText = R.string.auth_unauthorized;
+            break;
+        case HOST_NOT_AVAILABLE:
+            mAuthStatusText = R.string.auth_unknown_host_title;
+            break;
+        case INSTANCE_NOT_CONFIGURED:
+            mAuthStatusText = R.string.auth_not_configured_title;
+            break;
+        case FILE_NOT_FOUND:
+            mAuthStatusText = R.string.auth_incorrect_path_title;
+            break;
+        case OAUTH2_ERROR:
+            mAuthStatusText = R.string.auth_oauth_error;
+            break;
+        case OAUTH2_ERROR_ACCESS_DENIED:
+            mAuthStatusText = R.string.auth_oauth_error_access_denied;
+            break;
+        case UNHANDLED_HTTP_CODE:
+        case UNKNOWN_ERROR:
+            mAuthStatusText = R.string.auth_unknown_error_title;
+            break;
+        default:
+            mAuthStatusText = 0;
+            mAuthStatusIcon = 0;
         }
     }
 
@@ -757,7 +817,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
             mAuthCheckOperation.execute(client, this, mHandler);
             
         } else {
-            updateStatusIconAndText(result);
+            updateAuthStatusIconAndText(result);
             showAuthStatus();
             Log_OC.d(TAG, "Access failed: " + result.getLogMessage());
         }
@@ -792,7 +852,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
             finish();
             
         } else {
-            updateStatusIconAndText(result);
+            updateAuthStatusIconAndText(result);
             showAuthStatus();
             Log_OC.d(TAG, "Access failed: " + result.getLogMessage());
         }
@@ -997,11 +1057,13 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
 
         if (mServerStatusIcon == 0 && mServerStatusText == 0) {
             tv.setVisibility(View.INVISIBLE);
+            
         } else {
             tv.setText(mServerStatusText);
             tv.setCompoundDrawablesWithIntrinsicBounds(mServerStatusIcon, 0, 0, 0);
             tv.setVisibility(View.VISIBLE);
         }
+        
     }
     
     
@@ -1012,6 +1074,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
     private void showAuthStatus() {
         if (mAuthStatusIcon == 0 && mAuthStatusText == 0) {
             mAuthStatusLayout.setVisibility(View.INVISIBLE);
+            
         } else {
             mAuthStatusLayout.setText(mAuthStatusText);
             mAuthStatusLayout.setCompoundDrawablesWithIntrinsicBounds(mAuthStatusIcon, 0, 0, 0);
@@ -1020,6 +1083,14 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
     }     
 
     
+    private void showRefreshButton() {
+        mHostUrlInput.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_action_refresh_black, 0);
+    }
+    
+    private void hideRefreshButton() {
+        mHostUrlInput.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
+    }
+    
     /**
      * Called when the refresh button in the input field for ownCloud host is clicked.
      *