Merge "Fix "always show pictures""
diff --git a/res/layout/account_setup_exchange_fragment.xml b/res/layout/account_setup_exchange_fragment.xml
index 86b443e..e792c56 100644
--- a/res/layout/account_setup_exchange_fragment.xml
+++ b/res/layout/account_setup_exchange_fragment.xml
@@ -30,7 +30,7 @@
<EditText
android:id="@+id/account_username"
android:inputType="textEmailAddress"
- android:imeOptions="actionDone"
+ android:imeOptions="actionNext"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:contentDescription="@string/account_setup_exchange_username_label" />
@@ -43,7 +43,7 @@
<EditText
android:id="@+id/account_password"
android:inputType="textPassword"
- android:imeOptions="actionDone"
+ android:imeOptions="actionNext"
android:layout_height="wrap_content"
android:layout_width="match_parent" />
<!-- This text may be changed in code if the server is IMAP, etc. -->
diff --git a/res/layout/account_setup_incoming_fragment.xml b/res/layout/account_setup_incoming_fragment.xml
index eb77f0f..625e1fc 100644
--- a/res/layout/account_setup_incoming_fragment.xml
+++ b/res/layout/account_setup_incoming_fragment.xml
@@ -32,7 +32,7 @@
android:layout_width="match_parent"
android:contentDescription="@string/account_setup_incoming_username_label"
android:inputType="textEmailAddress"
- android:imeOptions="actionDone" />
+ android:imeOptions="actionNext" />
<TextView
android:text="@string/account_setup_incoming_password_label"
android:layout_height="wrap_content"
@@ -45,7 +45,7 @@
android:layout_width="match_parent"
android:contentDescription="@string/account_setup_incoming_password_label"
android:inputType="textPassword"
- android:imeOptions="actionDone" />
+ android:imeOptions="actionNext" />
<!-- This text may be changed in code if the server is IMAP, etc. -->
<TextView
android:id="@+id/account_server_label"
@@ -62,7 +62,7 @@
android:layout_width="match_parent"
android:contentDescription="@string/account_setup_incoming_pop_server_label"
android:inputType="textUri"
- android:imeOptions="actionDone" />
+ android:imeOptions="actionNext" />
<TextView
android:text="@string/account_setup_incoming_port_label"
android:layout_height="wrap_content"
diff --git a/src/com/android/email/activity/setup/AccountServerBaseFragment.java b/src/com/android/email/activity/setup/AccountServerBaseFragment.java
index d2325a3..abc31a1 100644
--- a/src/com/android/email/activity/setup/AccountServerBaseFragment.java
+++ b/src/com/android/email/activity/setup/AccountServerBaseFragment.java
@@ -16,23 +16,26 @@
package com.android.email.activity.setup;
-import com.android.email.R;
-import com.android.email.activity.UiUtilities;
-import com.android.emailcommon.provider.Account;
-import com.android.emailcommon.provider.HostAuth;
-import com.android.emailcommon.utility.Utility;
-
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
+import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.TextView;
+import android.widget.TextView.OnEditorActionListener;
+
+import com.android.email.R;
+import com.android.email.activity.UiUtilities;
+import com.android.emailcommon.provider.Account;
+import com.android.emailcommon.provider.HostAuth;
+import com.android.emailcommon.utility.Utility;
import java.net.URI;
import java.net.URISyntaxException;
@@ -283,6 +286,32 @@
}
/**
+ * A keyboard listener which dismisses the keyboard when "DONE" is pressed, but doesn't muck
+ * around with focus. This is useful in settings screens, as we don't want focus to change
+ * since some fields throw up errors when they're focused to give the user more info.
+ */
+ protected final OnEditorActionListener mDismissImeOnDoneListener =
+ new OnEditorActionListener() {
+ @Override
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if (actionId == EditorInfo.IME_ACTION_DONE) {
+ // Dismiss soft keyboard but don't modify focus.
+ final Context context = getActivity();
+ if (context == null) {
+ return false;
+ }
+ InputMethodManager imm = (InputMethodManager) context.getSystemService(
+ Context.INPUT_METHOD_SERVICE);
+ if (imm != null && imm.isActive()) {
+ imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
+ }
+ return true;
+ }
+ return false;
+ }
+ };
+
+ /**
* Clears the "next" button de-bounce flags and allows the "next" button to activate.
*/
private void clearButtonBounce() {
diff --git a/src/com/android/email/activity/setup/AccountSetupExchangeFragment.java b/src/com/android/email/activity/setup/AccountSetupExchangeFragment.java
index 801c631..1ff5bee 100644
--- a/src/com/android/email/activity/setup/AccountSetupExchangeFragment.java
+++ b/src/com/android/email/activity/setup/AccountSetupExchangeFragment.java
@@ -104,7 +104,7 @@
: R.layout.account_setup_exchange_fragment;
View view = inflater.inflate(layoutId, container, false);
- Context context = getActivity();
+ final Context context = getActivity();
mUsernameView = UiUtilities.getView(view, R.id.account_username);
mPasswordView = UiUtilities.getView(view, R.id.account_password);
@@ -132,6 +132,10 @@
mUsernameView.addTextChangedListener(validationTextWatcher);
mPasswordView.addTextChangedListener(validationTextWatcher);
mServerView.addTextChangedListener(validationTextWatcher);
+
+ EditText lastView = mServerView;
+ lastView.setOnEditorActionListener(mDismissImeOnDoneListener);
+
String deviceId = "";
try {
deviceId = Device.getDeviceId(context);
diff --git a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
index c0d358d..249e5b4 100644
--- a/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
+++ b/src/com/android/email/activity/setup/AccountSetupIncomingFragment.java
@@ -27,6 +27,7 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.inputmethod.EditorInfo;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
@@ -284,21 +285,25 @@
private void configureEditor() {
if (mConfigured) return;
Account account = SetupData.getAccount();
+ TextView lastView = mImapPathPrefixView;
mBaseScheme = account.mHostAuthRecv.mProtocol;
if (HostAuth.SCHEME_POP3.equals(mBaseScheme)) {
mServerLabelView.setText(R.string.account_setup_incoming_pop_server_label);
mServerView.setContentDescription(
getResources().getString(R.string.account_setup_incoming_pop_server_label));
mImapPathPrefixSectionView.setVisibility(View.GONE);
+ lastView = mPortView;
} else if (HostAuth.SCHEME_IMAP.equals(mBaseScheme)) {
mServerLabelView.setText(R.string.account_setup_incoming_imap_server_label);
mServerView.setContentDescription(
getResources().getString(R.string.account_setup_incoming_imap_server_label));
mDeletePolicyLabelView.setVisibility(View.GONE);
mDeletePolicyView.setVisibility(View.GONE);
+ mPortView.setImeOptions(EditorInfo.IME_ACTION_NEXT);
} else {
throw new Error("Unknown account type: " + account);
}
+ lastView.setOnEditorActionListener(mDismissImeOnDoneListener);
mConfigured = true;
}