Convert on text change
This commit is contained in:
parent
bc43fa91c3
commit
12c25b6ca6
@ -8,41 +8,29 @@ import android.support.annotation.Nullable;
|
|||||||
import android.support.design.widget.TextInputLayout;
|
import android.support.design.widget.TextInputLayout;
|
||||||
import android.support.v4.app.FragmentActivity;
|
import android.support.v4.app.FragmentActivity;
|
||||||
import android.support.v7.app.AlertDialog;
|
import android.support.v7.app.AlertDialog;
|
||||||
|
import android.text.Editable;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import android.text.TextWatcher;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.widget.AdapterView;
|
import android.widget.*;
|
||||||
import android.widget.ArrayAdapter;
|
import butterknife.Bind;
|
||||||
import android.widget.EditText;
|
import butterknife.ButterKnife;
|
||||||
import android.widget.ImageButton;
|
|
||||||
import android.widget.Spinner;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import org.solovyev.android.calculator.App;
|
import org.solovyev.android.calculator.App;
|
||||||
import org.solovyev.android.calculator.BaseDialogFragment;
|
import org.solovyev.android.calculator.BaseDialogFragment;
|
||||||
import org.solovyev.android.calculator.R;
|
import org.solovyev.android.calculator.R;
|
||||||
|
|
||||||
import butterknife.Bind;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.measure.unit.Dimension;
|
import javax.measure.unit.Dimension;
|
||||||
import javax.measure.unit.NonSI;
|
import javax.measure.unit.NonSI;
|
||||||
import javax.measure.unit.SI;
|
import javax.measure.unit.SI;
|
||||||
import javax.measure.unit.Unit;
|
import javax.measure.unit.Unit;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
public class ConverterFragment extends BaseDialogFragment
|
public class ConverterFragment extends BaseDialogFragment
|
||||||
implements AdapterView.OnItemSelectedListener, View.OnFocusChangeListener, TextView.OnEditorActionListener, View.OnClickListener {
|
implements AdapterView.OnItemSelectedListener, View.OnFocusChangeListener, TextView.OnEditorActionListener, View.OnClickListener, TextWatcher {
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private static final Set<String> excludedUnits = new HashSet<>(Arrays.asList("year_sidereal", "year_calendar", "day_sidereal", "foot_survey_us"));
|
private static final Set<String> excludedUnits = new HashSet<>(Arrays.asList("year_sidereal", "year_calendar", "day_sidereal", "foot_survey_us"));
|
||||||
@ -153,6 +141,7 @@ public class ConverterFragment extends BaseDialogFragment
|
|||||||
|
|
||||||
editTextFrom.setOnFocusChangeListener(this);
|
editTextFrom.setOnFocusChangeListener(this);
|
||||||
editTextFrom.setOnEditorActionListener(this);
|
editTextFrom.setOnEditorActionListener(this);
|
||||||
|
editTextFrom.addTextChangedListener(this);
|
||||||
|
|
||||||
swapButton.setOnClickListener(this);
|
swapButton.setOnClickListener(this);
|
||||||
|
|
||||||
@ -261,9 +250,15 @@ public class ConverterFragment extends BaseDialogFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void convert() {
|
private void convert() {
|
||||||
|
convert(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void convert(boolean validate) {
|
||||||
final String value = editTextFrom.getText().toString();
|
final String value = editTextFrom.getText().toString();
|
||||||
if (TextUtils.isEmpty(value)) {
|
if (TextUtils.isEmpty(value)) {
|
||||||
|
if (validate) {
|
||||||
setError(labelFrom, "Empty");
|
setError(labelFrom, "Empty");
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -275,9 +270,11 @@ public class ConverterFragment extends BaseDialogFragment
|
|||||||
editTextTo.setText(String.valueOf(toValue));
|
editTextTo.setText(String.valueOf(toValue));
|
||||||
clearError(labelFrom);
|
clearError(labelFrom);
|
||||||
} catch (RuntimeException e) {
|
} catch (RuntimeException e) {
|
||||||
|
if (validate) {
|
||||||
setError(labelFrom, e.getLocalizedMessage());
|
setError(labelFrom, e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
||||||
@ -327,6 +324,21 @@ public class ConverterFragment extends BaseDialogFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) {
|
||||||
|
convert(false);
|
||||||
|
}
|
||||||
|
|
||||||
private enum MyDimension {
|
private enum MyDimension {
|
||||||
TIME(Dimension.TIME, "Time"),
|
TIME(Dimension.TIME, "Time"),
|
||||||
AMOUNT_OF_SUBSTANCE(Dimension.AMOUNT_OF_SUBSTANCE, "Amount of substance"),
|
AMOUNT_OF_SUBSTANCE(Dimension.AMOUNT_OF_SUBSTANCE, "Amount of substance"),
|
||||||
|
Loading…
Reference in New Issue
Block a user