Skip to content
This repository has been archived by the owner on Feb 19, 2020. It is now read-only.

Fix focus in feedback activity #249

Merged
merged 3 commits into from
Jun 14, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.Parcelable;
import android.text.TextUtils;
Expand Down Expand Up @@ -64,7 +65,7 @@
*
* Activity to show the feedback form.
**/
public class FeedbackActivity extends Activity implements OnClickListener {
public class FeedbackActivity extends Activity implements OnClickListener, View.OnFocusChangeListener {

/**
* The URL of the feedback endpoint for this app.
Expand Down Expand Up @@ -359,6 +360,18 @@ public void onClick(View v) {
}
}

@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
if (v instanceof EditText) {
showKeyboard(v);
}
else if (v instanceof Button) {
hideKeyboard();
}
}
}

/**
* Called when context menu is needed (on add attachment button).
*/
Expand Down Expand Up @@ -507,18 +520,24 @@ protected void configureFeedbackView(boolean haveToken) {

mAddResponseButton = (Button) findViewById(R.id.button_add_response);
mAddResponseButton.setOnClickListener(this);
mAddResponseButton.setOnFocusChangeListener(this);

mRefreshButton = (Button) findViewById(R.id.button_refresh);
mRefreshButton.setOnClickListener(this);
mRefreshButton.setOnFocusChangeListener(this);
} else {
/** if the token doesn't exist, the feedback details inputs to be sent need to be displayed */
mWrapperLayoutFeedbackAndMessages.setVisibility(View.GONE);
mFeedbackScrollview.setVisibility(View.VISIBLE);

mNameInput = (EditText) findViewById(R.id.input_name);
mNameInput.setOnFocusChangeListener(this);
mEmailInput = (EditText) findViewById(R.id.input_email);
mEmailInput.setOnFocusChangeListener(this);
mSubjectInput = (EditText) findViewById(R.id.input_subject);
mSubjectInput.setOnFocusChangeListener(this);
mTextInput = (EditText) findViewById(R.id.input_message);
mTextInput.setOnFocusChangeListener(this);

configureHints();

Expand Down Expand Up @@ -584,10 +603,12 @@ protected void configureFeedbackView(boolean haveToken) {
/** Use of context menu needs to be enabled explicitly */
mAddAttachmentButton = (Button) findViewById(R.id.button_attachment);
mAddAttachmentButton.setOnClickListener(this);
mAddAttachmentButton.setOnFocusChangeListener(this);
registerForContextMenu(mAddAttachmentButton);

mSendFeedbackButton = (Button) findViewById(R.id.button_send);
mSendFeedbackButton.setOnClickListener(this);
mAddAttachmentButton.setOnFocusChangeListener(this);
}
}

Expand Down Expand Up @@ -658,6 +679,11 @@ private void createParseFeedbackTask(String feedbackResponseString, String reque
mParseFeedbackTask = new ParseFeedbackTask(this, feedbackResponseString, mParseFeedbackHandler, requestType);
}

private void showKeyboard(View view) {
InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
manager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
}

private void hideKeyboard() {
if (mTextInput != null) {
InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
Expand Down Expand Up @@ -763,7 +789,6 @@ private void sendFeedback() {
}

enableDisableSendFeedbackButton(false);
hideKeyboard();

String token = mForceNewThread && !mInSendFeedback ? null : PrefsUtil.getInstance().getFeedbackTokenFromPrefs(mContext);

Expand Down Expand Up @@ -793,11 +818,21 @@ private void sendFeedback() {

/** Start the Send Feedback {@link AsyncTask} */
sendFetchFeedback(mUrl, name, email, subject, text, attachmentUris, token, mFeedbackHandler, false);

hideKeyboard();
}
}

private void setError(EditText inputField, int feedbackStringId) {
private void setError(final EditText inputField, int feedbackStringId) {
inputField.setError(getString(feedbackStringId));

// requestFocus and showKeyboard on next frame to read error message via talkback
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
inputField.requestFocus();
}
});
enableDisableSendFeedbackButton(true);
}

Expand Down
10 changes: 5 additions & 5 deletions hockeysdk/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@
<string name="hockeyapp_feedback_title">Отзыв</string>
<string name="hockeyapp_feedback_send_generic_error">Ошибка при отправлении сообщения. Пожалуйста, проверьте введённые вами значения, ваше интернет соединение и попробуйте снова.</string>
<string name="hockeyapp_feedback_send_network_error">Сервер не доступен. Пожалуйста, проверьте ваше интернет соединение и затем попробуйте снова.</string>
<string name="hockeyapp_feedback_validate_subject_error">Введите, пожалуйста, Тему</string>
<string name="hockeyapp_feedback_validate_email_error">Введите, пожалуйста действующий Email адрес</string>
<string name="hockeyapp_feedback_validate_email_empty">Введите, пожалуйста, Email</string>
<string name="hockeyapp_feedback_validate_name_error">Введите, пожалуйста Имя</string>
<string name="hockeyapp_feedback_validate_subject_error">Пожалуйста, введите тему</string>
<string name="hockeyapp_feedback_validate_email_error">Пожалуйста, введите действующий email адрес</string>
<string name="hockeyapp_feedback_validate_email_empty">Пожалуйста, введите email адрес</string>
<string name="hockeyapp_feedback_validate_name_error">Пожалуйста, введите имя</string>
<string name="hockeyapp_feedback_validate_text_error">Сообщение не может быть отправлено. Пожалуйста, введите текст отзыва.</string>
<string name="hockeyapp_feedback_generic_error">Произошла ошибка</string>
<string name="hockeyapp_feedback_attach_file">Прикрепить файл</string>
Expand All @@ -53,7 +53,7 @@
<string name="hockeyapp_feedback_max_attachments_allowed">Количество вложений не может быть более чем %s</string>
<string name="hockeyapp_feedback_attachment_loading">Загрузка…</string>
<string name="hockeyapp_feedback_attachment_error">Ошибка</string>
<string name="hockeyapp_feedback_name_hint_required">Имя (Обязательное поле)</string>
<string name="hockeyapp_feedback_name_hint_required">Имя (обязательное поле)</string>
<string name="hockeyapp_feedback_email_hint_required">Email (oбязательное поле)</string>
<string name="hockeyapp_feedback_subject_hint_required">Тема (oбязательное поле)</string>
<string name="hockeyapp_feedback_message_hint_required">Сообщение (oбязательное поле)</string>
Expand Down