Bug 781318 - Autofocus textboxes in prompts. r=mbrubeck

This commit is contained in:
Wes Johnston 2012-08-15 16:51:36 -04:00
Родитель 6b32a462f2
Коммит 44a38b093d
2 изменённых файлов: 20 добавлений и 3 удалений

Просмотреть файл

@ -36,6 +36,7 @@ import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.view.inputmethod.InputMethodManager;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
@ -83,6 +84,7 @@ public class PromptService implements OnClickListener, OnCancelListener, OnItemC
private String label = "";
private String type = "";
private String hint = "";
private Boolean autofocus = false;
private JSONObject mJSONInput = null;
private View view = null;
@ -97,6 +99,9 @@ public class PromptService implements OnClickListener, OnCancelListener, OnItemC
try {
hint = aJSONInput.getString("hint");
} catch(Exception ex) { }
try {
autofocus = aJSONInput.getBoolean("autofocus");
} catch(Exception ex) { }
}
public View getView() {
@ -125,6 +130,18 @@ public class PromptService implements OnClickListener, OnCancelListener, OnItemC
if (!hint.equals("")) {
input.setHint(hint);
}
if (autofocus) {
input.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
((InputMethodManager) GeckoApp.mAppContext.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(v, 0);
}
}
});
input.requestFocus();
}
view = (View)input;
} else if (type.equals("menulist")) {
Spinner spinner = new Spinner(GeckoApp.mAppContext);

Просмотреть файл

@ -248,7 +248,7 @@ Prompt.prototype = {
},
nsIPrompt_prompt: function nsIPrompt_prompt(aTitle, aText, aValue, aCheckMsg, aCheckState) {
let inputs = [{ type: "textbox", value: aValue.value }];
let inputs = [{ type: "textbox", value: aValue.value, autofocus: true }];
let data = this.commonPrompt(aTitle, aText, null, aCheckMsg, aCheckState, inputs);
let ok = data.button == 0;
@ -261,7 +261,7 @@ Prompt.prototype = {
nsIPrompt_promptPassword: function nsIPrompt_promptPassword(
aTitle, aText, aPassword, aCheckMsg, aCheckState) {
let inputs = [{ type: "password", hint: PromptUtils.getLocaleString("password", "passwdmgr"), value: aPassword.value || "" }];
let inputs = [{ type: "password", hint: PromptUtils.getLocaleString("password", "passwdmgr"), value: aPassword.value || "", autofocus: true }];
let data = this.commonPrompt(aTitle, aText, null, aCheckMsg, aCheckState, inputs);
let ok = data.button == 0;
@ -274,7 +274,7 @@ Prompt.prototype = {
nsIPrompt_promptUsernameAndPassword: function nsIPrompt_promptUsernameAndPassword(
aTitle, aText, aUsername, aPassword, aCheckMsg, aCheckState) {
let inputs = [{ type: "textbox", hint: PromptUtils.getLocaleString("username", "passwdmgr"), value: aUsername.value },
let inputs = [{ type: "textbox", hint: PromptUtils.getLocaleString("username", "passwdmgr"), value: aUsername.value, autofocus: true },
{ type: "password", hint: PromptUtils.getLocaleString("password", "passwdmgr"), value: aPassword.value }];
let data = this.commonPrompt(aTitle, aText, null, aCheckMsg, aCheckState, inputs);