Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit

Permalink
Fixes #697 #734 The Developer panel closes when and EditText is focused
Browse files Browse the repository at this point in the history
  • Loading branch information
keianhzo committed Nov 21, 2018
1 parent 3b3279b commit 86b152d
Show file tree
Hide file tree
Showing 9 changed files with 142 additions and 180 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,21 @@ private void initialize(Context aContext) {
by.setVisibility(View.VISIBLE);

mText2 = findViewById(R.id.textValue2);
mText2.setSoundEffectsEnabled(false);
mText2.setOnClickListener(mText2ClickListener);

mEdit2 = findViewById(R.id.editValue2);
mEdit2.setSoundEffectsEnabled(false);
mEdit2.setOnTouchListener((v, event) -> updateTouchTextSelection(v));
mEdit2.setOnFocusChangeListener((v, hasFocus) -> updateFocusTextSelection(v, hasFocus));
mEdit2.addTextChangedListener(new TextColorTextWatcher(mEdit2));
mEdit2.setOnClickListener(v -> mEdit2.selectAll());

mEdit2.setOnEditorActionListener(mInternalEditorActionListener);
}

private OnClickListener mText2ClickListener = v -> mButton.performClick();

protected void onClickListener(View v) {
mText2.setVisibility(mEdit1.getVisibility());
mEdit2.setVisibility(mEdit1.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package org.mozilla.vrbrowser.ui.settings;

import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.support.annotation.StringRes;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;
Expand All @@ -21,8 +24,10 @@ public class SingleEditSetting extends LinearLayout {
private TextView mDescriptionView;
protected TextView mText1;
protected EditText mEdit1;
private TextView mButton;
protected TextView mButton;
private OnClickListener mListener;
private int mEditTextSelectedColor;
private int mEditTextUnelectedColor;

public SingleEditSetting(Context context, AttributeSet attrs) {
this(context, attrs, 0);
Expand All @@ -47,21 +52,29 @@ private void initialize(Context aContext) {
mDescriptionView.setText(mDescription);

mText1 = findViewById(R.id.textValue1);
mText1.setSoundEffectsEnabled(false);
mText1.setOnClickListener(mText1ClickListener);

mEdit1 = findViewById(R.id.editValue1);
mEdit1.setSoundEffectsEnabled(false);

mEdit1.setOnEditorActionListener(mInternalEditorActionListener);
ColorStateList colors = mEdit1.getTextColors();
mEditTextSelectedColor = colors.getColorForState(View.SELECTED_STATE_SET, R.color.fog);
mEditTextUnelectedColor = colors.getColorForState(View.EMPTY_STATE_SET, R.color.asphalt);
mEdit1.setOnTouchListener((v, event) -> updateTouchTextSelection(v));
mEdit1.setOnFocusChangeListener((v, hasFocus) -> updateFocusTextSelection(v, hasFocus));
mEdit1.addTextChangedListener(new TextColorTextWatcher(mEdit1));
mEdit1.setOnClickListener(v -> mEdit1.selectAll());

mButton = findViewById(R.id.settingButton);
mButton.setSoundEffectsEnabled(false);
mButton.setOnClickListener(mInternalClickListener);
}

private View.OnClickListener mInternalClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
onClickListener(v);
}
};
private OnClickListener mText1ClickListener = v -> mButton.performClick();

private View.OnClickListener mInternalClickListener = v -> onClickListener(v);

protected TextView.OnEditorActionListener mInternalEditorActionListener = new TextView.OnEditorActionListener() {
@Override
Expand Down Expand Up @@ -104,4 +117,69 @@ public void setOnClickListener(OnClickListener aListener) {
mListener = aListener;
}

public void cancel() {
mText1.setVisibility(VISIBLE);
mEdit1.setVisibility(View.GONE);
@StringRes int buttonText = mEdit1.getVisibility() == View.VISIBLE ?
R.string.developer_options_save : R.string.developer_options_edit;
mButton.setText(buttonText);
}

public boolean isEditing() {
return mEdit1.getVisibility() == View.VISIBLE;
}

protected boolean updateTouchTextSelection(View v) {
EditText editText = (EditText) v;
if (editText.hasSelection()) {
editText.setTextColor(mEditTextSelectedColor);

} else {
editText.setTextColor(mEditTextUnelectedColor);
}

editText.requestFocusFromTouch();

return false;
}

protected void updateFocusTextSelection(View v, boolean hasFocus) {
EditText editText = (EditText) v;
if (editText.hasSelection()) {
if (hasFocus) {
editText.setTextColor(mEditTextSelectedColor);

} else {
editText.setTextColor(mEditTextUnelectedColor);
}

} else {
editText.setTextColor(mEditTextUnelectedColor);
}
}

protected class TextColorTextWatcher implements TextWatcher {

private EditText mEditText;

public TextColorTextWatcher(EditText view) {
mEditText = view;
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mEditText.setTextColor(mEditTextUnelectedColor);
}

@Override
public void afterTextChanged(Editable s) {

}
}

}

This file was deleted.

Loading

0 comments on commit 86b152d

Please sign in to comment.