From 7a659ebd21d9d0416ad5e44c442ad058bf830cde Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Wed, 13 Jan 2016 03:44:03 +0100 Subject: [PATCH] Improve session name dialog - Show keyboard directly. - Let return create the session. --- .../main/java/com/termux/app/DialogUtils.java | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/termux/app/DialogUtils.java b/app/src/main/java/com/termux/app/DialogUtils.java index 9bff03dc..23396f47 100644 --- a/app/src/main/java/com/termux/app/DialogUtils.java +++ b/app/src/main/java/com/termux/app/DialogUtils.java @@ -3,10 +3,14 @@ package com.termux.app; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; +import android.text.Selection; import android.util.TypedValue; +import android.view.KeyEvent; import android.view.ViewGroup.LayoutParams; +import android.view.WindowManager; import android.widget.EditText; import android.widget.LinearLayout; +import android.widget.TextView; final class DialogUtils { @@ -18,7 +22,21 @@ final class DialogUtils { int neutralButtonText, final TextSetListener onNeutral) { final EditText input = new EditText(activity); input.setSingleLine(); - if (initialText != null) input.setText(initialText); + if (initialText != null) { + input.setText(initialText); + Selection.setSelection(input.getText(), initialText.length()); + } + + final AlertDialog[] dialogHolder = new AlertDialog[1]; + input.setImeActionLabel(activity.getResources().getString(positiveButtonText), KeyEvent.KEYCODE_ENTER); + input.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + onPositive.onTextSet(input.getText().toString()); + dialogHolder[0].dismiss(); + return true; + } + }); float dipInPixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, activity.getResources().getDisplayMetrics()); // https://www.google.com/design/spec/components/dialogs.html#dialogs-specs @@ -28,19 +46,18 @@ final class DialogUtils { LinearLayout layout = new LinearLayout(activity); layout.setOrientation(LinearLayout.VERTICAL); layout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); - // layout.setGravity(Gravity.CLIP_VERTICAL); layout.setPadding(paddingTopAndSides, paddingTopAndSides, paddingTopAndSides, paddingBottom); layout.addView(input); AlertDialog.Builder builder = new AlertDialog.Builder(activity) - .setTitle(titleText).setView(layout) - .setPositiveButton(positiveButtonText, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface d, int whichButton) { - onPositive.onTextSet(input.getText().toString()); + .setTitle(titleText).setView(layout) + .setPositiveButton(positiveButtonText, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface d, int whichButton) { + onPositive.onTextSet(input.getText().toString()); } }) - .setNegativeButton(android.R.string.cancel, null); + .setNegativeButton(android.R.string.cancel, null); if (onNeutral != null) { builder.setNeutralButton(neutralButtonText, new DialogInterface.OnClickListener() { @@ -51,8 +68,9 @@ final class DialogUtils { }); } - builder.show(); - input.requestFocus(); + dialogHolder[0] = builder.create(); + dialogHolder[0].getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); + dialogHolder[0].show(); } }