From 8a57b4d1a200b1c2ab3939dc30f1c2a6b17c64fe Mon Sep 17 00:00:00 2001 From: PavelRatushny Date: Thu, 2 Nov 2017 18:59:09 +0200 Subject: [PATCH] Start integrating hand selection options --- ...nate_input_options_bottom_sheet_helper.xml | 41 +++++++++++++++++++ OsmAnd/res/values/strings.xml | 3 ++ ...rdinateInputBottomSheetDialogFragment.java | 18 +++++++- .../CoordinateInputDialogFragment.java | 13 ++++++ 4 files changed, 73 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/layout/fragment_marker_coordinate_input_options_bottom_sheet_helper.xml b/OsmAnd/res/layout/fragment_marker_coordinate_input_options_bottom_sheet_helper.xml index d093e40a06..f261d69782 100644 --- a/OsmAnd/res/layout/fragment_marker_coordinate_input_options_bottom_sheet_helper.xml +++ b/OsmAnd/res/layout/fragment_marker_coordinate_input_options_bottom_sheet_helper.xml @@ -71,6 +71,47 @@ android:focusableInTouchMode="false"/> + + + + + + + + + + Right + Left + Show number pad Paste Automatically switch to the next field after entering %1$d digits after the decimal point %1$d digits diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/CoordinateInputBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/mapmarkers/CoordinateInputBottomSheetDialogFragment.java index 431b97370f..c2ad3de87f 100644 --- a/OsmAnd/src/net/osmand/plus/mapmarkers/CoordinateInputBottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapmarkers/CoordinateInputBottomSheetDialogFragment.java @@ -11,11 +11,14 @@ import android.widget.ImageView; import android.widget.RadioButton; import android.widget.TextView; +import net.osmand.AndroidUtils; import net.osmand.plus.R; import net.osmand.plus.base.MenuBottomSheetDialogFragment; +import net.osmand.plus.helpers.AndroidUiHelper; import static net.osmand.plus.mapmarkers.CoordinateInputDialogFragment.ACCURACY; import static net.osmand.plus.mapmarkers.CoordinateInputDialogFragment.GO_TO_NEXT_FIELD; +import static net.osmand.plus.mapmarkers.CoordinateInputDialogFragment.RIGHT_HAND; import static net.osmand.plus.mapmarkers.CoordinateInputDialogFragment.USE_OSMAND_KEYBOARD; public class CoordinateInputBottomSheetDialogFragment extends MenuBottomSheetDialogFragment { @@ -23,9 +26,10 @@ public class CoordinateInputBottomSheetDialogFragment extends MenuBottomSheetDia public final static String TAG = "CoordinateInputBottomSheetDialogFragment"; private View mainView; - private boolean useOsmandKeyboard = true; + private boolean useOsmandKeyboard; + private boolean rightHand; private boolean goToNextField; - private int accuracy = -1; + private int accuracy; private CoordinateInputFormatChangeListener listener; public void setListener(CoordinateInputFormatChangeListener listener) { @@ -39,11 +43,13 @@ public class CoordinateInputBottomSheetDialogFragment extends MenuBottomSheetDia Bundle args = getArguments(); if (args != null) { useOsmandKeyboard = args.getBoolean(USE_OSMAND_KEYBOARD); + rightHand = args.getBoolean(RIGHT_HAND); goToNextField = args.getBoolean(GO_TO_NEXT_FIELD); accuracy = args.getInt(ACCURACY); } } else { useOsmandKeyboard = savedInstanceState.getBoolean(USE_OSMAND_KEYBOARD); + rightHand = savedInstanceState.getBoolean(RIGHT_HAND); goToNextField = savedInstanceState.getBoolean(GO_TO_NEXT_FIELD); accuracy = savedInstanceState.getInt(ACCURACY); } @@ -53,6 +59,7 @@ public class CoordinateInputBottomSheetDialogFragment extends MenuBottomSheetDia @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme; + boolean portrait = AndroidUiHelper.isOrientationPortrait(getActivity()); mainView = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.fragment_marker_coordinate_input_options_bottom_sheet_helper, container); @@ -62,6 +69,10 @@ public class CoordinateInputBottomSheetDialogFragment extends MenuBottomSheetDia ((TextView) mainView.findViewById(R.id.coordinate_input_accuracy_descr)).setText(getString(R.string.coordinate_input_accuracy_description, accuracy)); + if (portrait) { + mainView.findViewById(R.id.hand_row).setVisibility(View.GONE); + } + ((CompoundButton) mainView.findViewById(R.id.go_to_next_field_switch)).setChecked(goToNextField); ((ImageView) mainView.findViewById(R.id.go_to_next_field_icon)).setImageDrawable(getContentIcon(R.drawable.ic_action_keyboard)); mainView.findViewById(R.id.go_to_next_field_row).setOnClickListener(new View.OnClickListener() { @@ -150,6 +161,7 @@ public class CoordinateInputBottomSheetDialogFragment extends MenuBottomSheetDia @Override public void onSaveInstanceState(Bundle outState) { outState.putBoolean(USE_OSMAND_KEYBOARD, useOsmandKeyboard); + outState.putBoolean(RIGHT_HAND, rightHand); outState.putBoolean(GO_TO_NEXT_FIELD, goToNextField); outState.putInt(ACCURACY, accuracy); super.onSaveInstanceState(outState); @@ -173,6 +185,8 @@ public class CoordinateInputBottomSheetDialogFragment extends MenuBottomSheetDia void onKeyboardChanged(boolean useOsmandKeyboard); + void onHandChanged(boolean rightHand); + void onGoToNextFieldChanged(boolean goToNextField); void onAccuracyChanged(int accuracy); diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/CoordinateInputDialogFragment.java b/OsmAnd/src/net/osmand/plus/mapmarkers/CoordinateInputDialogFragment.java index a5f92890da..27fb4b2a58 100644 --- a/OsmAnd/src/net/osmand/plus/mapmarkers/CoordinateInputDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapmarkers/CoordinateInputDialogFragment.java @@ -70,6 +70,7 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm public static final String TAG = "CoordinateInputDialogFragment"; public static final String USE_OSMAND_KEYBOARD = "use_osmand_keyboard"; + public static final String RIGHT_HAND = "right_hand"; public static final String GO_TO_NEXT_FIELD = "go_to_next_field"; public static final String ACCURACY = "accuracy"; @@ -86,6 +87,7 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm private CoordinateInputAdapter adapter; private boolean lightTheme; private boolean useOsmandKeyboard = true; + private boolean rightHand = true; private boolean goToNextField; private int accuracy = 4; private List textFieldBoxes; @@ -168,6 +170,7 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm fragment.setUsedOnMap(false); Bundle args = new Bundle(); args.putBoolean(USE_OSMAND_KEYBOARD, useOsmandKeyboard); + args.putBoolean(RIGHT_HAND, rightHand); args.putBoolean(GO_TO_NEXT_FIELD, goToNextField); args.putInt(ACCURACY, accuracy); fragment.setArguments(args); @@ -555,6 +558,12 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm changeEditTextSelections(); } + @Override + public void onHandChanged(boolean rightHand) { + CoordinateInputDialogFragment.this.rightHand = rightHand; + changeHand(); + } + @Override public void onGoToNextFieldChanged(boolean goToNextField) { CoordinateInputDialogFragment.this.goToNextField = goToNextField; @@ -569,6 +578,10 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm }; } + private void changeHand() { + + } + private void changeEditTextSelections() { for (EditText inputEditText : inputEditTexts) { inputEditText.setSelection(inputEditText.getText().length());