private static final String KEY_HOST_URL_TEXT = "HOST_URL_TEXT";\r
private static final String KEY_OC_VERSION = "OC_VERSION";\r
private static final String KEY_ACCOUNT = "ACCOUNT";\r
- private static final String KEY_SERVER_CHECKED_AND_VALID = "SERVER_CHECKED_AND_VALID";\r
+ private static final String KEY_SERVER_VALID = "SERVER_VALID";\r
+ private static final String KEY_SERVER_CHECKED = "SERVER_CHECKED";\r
private static final String KEY_SERVER_CHECK_IN_PROGRESS = "SERVER_CHECK_IN_PROGRESS"; \r
private static final String KEY_SERVER_STATUS_TEXT = "SERVER_STATUS_TEXT";\r
private static final String KEY_SERVER_STATUS_ICON = "SERVER_STATUS_ICON";\r
private OwnCloudVersion mDiscoveredVersion;\r
\r
private int mServerStatusText, mServerStatusIcon;\r
- private boolean mServerCheckedAndValid, mIsSslConn;\r
+ private boolean mServerIsChecked, mServerIsValid, mIsSslConn;\r
private int mAuthStatusText, mAuthStatusIcon; \r
\r
private final Handler mHandler = new Handler();\r
private TextView mOAuthAuthEndpointText;\r
private TextView mOAuthTokenEndpointText;\r
\r
- private HostUrlWatcher mHostUrlChangedListener;\r
- \r
\r
/**\r
* {@inheritDoc}\r
if (savedInstanceState == null) {\r
/// connection state and info\r
mServerStatusText = mServerStatusIcon = 0;\r
- mServerCheckedAndValid = false;\r
+ mServerIsValid = false;\r
+ mServerIsChecked = false;\r
mIsSslConn = false;\r
mAuthStatusText = mAuthStatusIcon = 0;\r
\r
\r
} else {\r
/// connection state and info\r
- mServerCheckedAndValid = savedInstanceState.getBoolean(KEY_SERVER_CHECKED_AND_VALID);\r
+ mServerIsValid = savedInstanceState.getBoolean(KEY_SERVER_VALID);\r
+ mServerIsChecked = savedInstanceState.getBoolean(KEY_SERVER_CHECKED);\r
mServerStatusText = savedInstanceState.getInt(KEY_SERVER_STATUS_TEXT);\r
mServerStatusIcon = savedInstanceState.getInt(KEY_SERVER_STATUS_ICON);\r
mIsSslConn = savedInstanceState.getBoolean(KEY_IS_SSL_CONN);\r
\r
showServerStatus();\r
showAuthStatus();\r
+ if (mServerIsChecked && !mServerIsValid) showRefreshButton();\r
+ mOkButton.setEnabled(mServerIsValid); // state not automatically recovered in configuration changes\r
\r
if (!OAUTH_MODE_OPTIONAL.equals(getString(R.string.oauth2_mode))) {\r
mOAuth2Check.setVisibility(View.GONE);\r
mHostUrlInput.setEnabled(false);\r
mUsernameInput.setEnabled(false);\r
mOAuth2Check.setVisibility(View.GONE);\r
- if (!mServerCheckedAndValid && mOcServerChkOperation == null) {\r
+ if (!mServerIsValid && mOcServerChkOperation == null) {\r
checkOcServer(); \r
}\r
}\r
return true;\r
}\r
});\r
+ mHostUrlInput.addTextChangedListener(new TextWatcher() {\r
+\r
+ @Override\r
+ public void afterTextChanged(Editable s) {\r
+ if (!mHostBaseUrl.equals(normalizeUrl(mHostUrlInput.getText().toString()))) {\r
+ mOkButton.setEnabled(false);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {}\r
+\r
+ @Override\r
+ public void onTextChanged(CharSequence s, int start, int before, int count) {}\r
+ \r
+ });\r
mPasswordInput.setOnFocusChangeListener(this);\r
mPasswordInput.setImeOptions(EditorInfo.IME_ACTION_DONE);\r
mPasswordInput.setOnEditorActionListener(this);\r
}\r
\r
- @Override\r
- protected void onStart() {\r
- super.onStart();\r
- //mHostUrlChangedListener = new HostUrlWatcher();\r
- //mHostUrlInput.addTextChangedListener(mHostUrlChangedListener); \r
- }\r
-\r
- @Override\r
- protected void onStop() {\r
- super.onStop();\r
- mHostUrlInput.removeTextChangedListener(mHostUrlChangedListener);\r
- }\r
- \r
-\r
/**\r
* Saves relevant state before {@link #onPause()}\r
* \r
/// connection state and info\r
outState.putInt(KEY_SERVER_STATUS_TEXT, mServerStatusText);\r
outState.putInt(KEY_SERVER_STATUS_ICON, mServerStatusIcon);\r
- outState.putBoolean(KEY_SERVER_CHECKED_AND_VALID, mServerCheckedAndValid);\r
- outState.putBoolean(KEY_SERVER_CHECK_IN_PROGRESS, (!mServerCheckedAndValid && mOcServerChkOperation != null));\r
+ outState.putBoolean(KEY_SERVER_VALID, mServerIsValid);\r
+ outState.putBoolean(KEY_SERVER_CHECKED, mServerIsChecked);\r
+ outState.putBoolean(KEY_SERVER_CHECK_IN_PROGRESS, (!mServerIsValid && mOcServerChkOperation != null));\r
outState.putBoolean(KEY_IS_SSL_CONN, mIsSslConn);\r
outState.putInt(KEY_AUTH_STATUS_ICON, mAuthStatusIcon);\r
outState.putInt(KEY_AUTH_STATUS_TEXT, mAuthStatusText);\r
private void onUrlInputFocusLost(TextView hostInput) {\r
if (!mHostBaseUrl.equals(normalizeUrl(mHostUrlInput.getText().toString()))) {\r
checkOcServer();\r
+ } else {\r
+ mOkButton.setEnabled(mServerIsValid);\r
}\r
}\r
\r
\r
private void checkOcServer() {\r
String uri = mHostUrlInput.getText().toString().trim();\r
- mServerCheckedAndValid = false;\r
+ mServerIsValid = false;\r
+ mServerIsChecked = false;\r
mOkButton.setEnabled(false);\r
mDiscoveredVersion = null;\r
hideRefreshButton();\r
private void onOcServerCheckFinish(OwnCloudServerCheckOperation operation, RemoteOperationResult result) {\r
if (operation.equals(mOcServerChkOperation)) {\r
/// save result state\r
- mServerCheckedAndValid = result.isSuccess();\r
+ mServerIsChecked = true;\r
+ mServerIsValid = result.isSuccess();\r
mIsSslConn = (result.getCode() == ResultCode.OK_SSL);\r
mOcServerChkOperation = null;\r
\r
/// update status icon and text\r
- if (mServerCheckedAndValid) {\r
+ if (mServerIsValid) {\r
hideRefreshButton();\r
} else {\r
showRefreshButton();\r
mHostBaseUrl = normalizeUrl(mHostUrlInput.getText().toString());\r
\r
/// allow or not the user try to access the server\r
- mOkButton.setEnabled(mServerCheckedAndValid);\r
+ mOkButton.setEnabled(mServerIsValid);\r
\r
} // else nothing ; only the last check operation is considered; \r
// multiple can be triggered if the user amends a URL before a previous check can be triggered\r
url = url.substring(0, url.length() - 1);\r
}\r
}\r
- return url;\r
+ return (url != null ? url : "");\r
}\r
\r
/**\r
public abstract boolean onDrawableTouch(final MotionEvent event);\r
}\r
\r
- \r
- private class HostUrlWatcher implements TextWatcher {\r
-\r
- @Override\r
- public void afterTextChanged(Editable s) {\r
- }\r
-\r
- @Override\r
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {\r
- }\r
-\r
- @Override\r
- public void onTextChanged(CharSequence s, int start, int before, int count) {\r
- if (mServerCheckedAndValid) {\r
- mServerCheckedAndValid = false;\r
- mOkButton.setEnabled(false); // avoids that the 'connect' button can be clicked if the test was previously passed\r
- }\r
- }\r
- \r
- }\r
}\r