Search in sources :

Example 1 with OsmandTextFieldBoxes

use of net.osmand.plus.widgets.OsmandTextFieldBoxes in project Osmand by osmandapp.

the class RenameMarkerBottomSheetDialogFragment method onCreateView.

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final MapActivity mapActivity = (MapActivity) getActivity();
    final boolean portrait = AndroidUiHelper.isOrientationPortrait(getActivity());
    final boolean nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
    final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
    final View mainView = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.fragment_rename_marker_bottom_sheet_dialog, container);
    LinearLayout contentLayout = (LinearLayout) mainView.findViewById(R.id.content_linear_layout);
    int layoutRes = Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH ? R.layout.markers_track_name_text_field_box : R.layout.markers_track_name_edit_text;
    contentLayout.addView(getLayoutInflater().inflate(layoutRes, contentLayout, false), 1);
    View textBox = mainView.findViewById(R.id.name_text_box);
    if (portrait) {
        AndroidUtils.setBackground(getActivity(), mainView, nightMode, R.drawable.bg_bottom_menu_light, R.drawable.bg_bottom_menu_dark);
    }
    final EditText nameEditText = (EditText) mainView.findViewById(R.id.name_edit_text);
    if (nightMode) {
        nameEditText.setTextColor(ContextCompat.getColor(mapActivity, R.color.color_white));
        if (textBox instanceof TextInputLayout) {
            ((TextInputLayout) textBox).setHintTextAppearance(R.style.TextAppearance_App_DarkTextInputLayout);
        } else if (textBox instanceof OsmandTextFieldBoxes) {
            ((OsmandTextFieldBoxes) textBox).setPrimaryColor(ContextCompat.getColor(mapActivity, R.color.color_dialog_buttons_dark));
        }
    }
    nameEditText.setText(marker.getName(mapActivity));
    nameEditText.requestFocus();
    final InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_IMPLICIT_ONLY);
    if (textBox instanceof OsmandTextFieldBoxes) {
        ((OsmandTextFieldBoxes) textBox).activate(true);
    }
    mainView.findViewById(R.id.save_button).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            String name = nameEditText.getText().toString();
            if (name.replaceAll("\\s", "").length() > 0) {
                marker.setName(name);
                mapActivity.getMyApplication().getMapMarkersHelper().updateMapMarker(marker, true);
                dismiss();
            } else {
                nameEditText.setError(getString(R.string.wrong_input));
            }
        }
    });
    mainView.findViewById(R.id.close_button).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            dismiss();
        }
    });
    final int screenHeight = AndroidUtils.getScreenHeight(getActivity());
    final int statusBarHeight = AndroidUtils.getStatusBarHeight(getActivity());
    final int navBarHeight = AndroidUtils.getNavBarHeight(getActivity());
    mainView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        boolean dimensSet;

        @Override
        public void onGlobalLayout() {
            if (!dimensSet) {
                final View scrollView = mainView.findViewById(R.id.rename_marker_scroll_view);
                int scrollViewHeight = scrollView.getHeight();
                int dividerHeight = AndroidUtils.dpToPx(getContext(), 1);
                int cancelButtonHeight = getContext().getResources().getDimensionPixelSize(R.dimen.bottom_sheet_cancel_button_height);
                int spaceForScrollView = screenHeight - statusBarHeight - navBarHeight - dividerHeight - cancelButtonHeight;
                if (scrollViewHeight > spaceForScrollView) {
                    scrollView.getLayoutParams().height = spaceForScrollView;
                    scrollView.requestLayout();
                }
                if (!portrait) {
                    if (screenHeight - statusBarHeight - mainView.getHeight() >= AndroidUtils.dpToPx(getActivity(), 8)) {
                        AndroidUtils.setBackground(getActivity(), mainView, nightMode, R.drawable.bg_bottom_sheet_topsides_landscape_light, R.drawable.bg_bottom_sheet_topsides_landscape_dark);
                    } else {
                        AndroidUtils.setBackground(getActivity(), mainView, nightMode, R.drawable.bg_bottom_sheet_sides_landscape_light, R.drawable.bg_bottom_sheet_sides_landscape_dark);
                    }
                }
                dimensSet = true;
            }
            final Window window = getDialog().getWindow();
            WindowManager.LayoutParams params = window.getAttributes();
            params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
            params.gravity = Gravity.BOTTOM;
            window.setAttributes(params);
        }
    });
    return mainView;
}
Also used : EditText(android.widget.EditText) Window(android.view.Window) InputMethodManager(android.view.inputmethod.InputMethodManager) View(android.view.View) ContextThemeWrapper(android.view.ContextThemeWrapper) OsmandTextFieldBoxes(net.osmand.plus.widgets.OsmandTextFieldBoxes) TextInputLayout(android.support.design.widget.TextInputLayout) ViewTreeObserver(android.view.ViewTreeObserver) LinearLayout(android.widget.LinearLayout) MapActivity(net.osmand.plus.activities.MapActivity) Nullable(android.support.annotation.Nullable)

Example 2 with OsmandTextFieldBoxes

use of net.osmand.plus.widgets.OsmandTextFieldBoxes in project Osmand by osmandapp.

the class SaveAsTrackBottomSheetDialogFragment method onCreateView.

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    MapActivity mapActivity = (MapActivity) getActivity();
    portrait = AndroidUiHelper.isOrientationPortrait(getActivity());
    final boolean nightMode = !getMyApplication().getSettings().isLightContent();
    final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
    final View mainView = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.fragment_marker_save_as_track_bottom_sheet_dialog, container);
    LinearLayout contentLayout = (LinearLayout) mainView.findViewById(R.id.content_linear_layout);
    int layoutRes;
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        layoutRes = R.layout.markers_track_name_text_field_box;
    } else {
        layoutRes = R.layout.markers_track_name_edit_text;
    }
    contentLayout.addView(getLayoutInflater().inflate(layoutRes, contentLayout, false), 2);
    if (portrait) {
        AndroidUtils.setBackground(getActivity(), mainView, nightMode, R.drawable.bg_bottom_menu_light, R.drawable.bg_bottom_menu_dark);
    }
    View textBox = mainView.findViewById(R.id.name_text_box);
    if (nightMode) {
        if (textBox instanceof TextInputLayout) {
            ((TextInputLayout) textBox).setHintTextAppearance(R.style.TextAppearance_App_DarkTextInputLayout);
        } else if (textBox instanceof OsmandTextFieldBoxes) {
            ((OsmandTextFieldBoxes) textBox).setPrimaryColor(ContextCompat.getColor(mapActivity, R.color.color_dialog_buttons_dark));
        }
    }
    final File dir = mapActivity.getMyApplication().getAppPath(IndexConstants.GPX_INDEX_DIR + "/map markers");
    if (!dir.exists()) {
        dir.mkdirs();
    }
    Date date = new Date();
    final String suggestedName = mapActivity.getString(R.string.markers) + "_" + DateFormat.format("yyyy-MM-dd", date).toString();
    String displayedName = suggestedName;
    File fout = new File(dir, suggestedName + GPX_SUFFIX);
    int ind = 1;
    while (fout.exists()) {
        displayedName = suggestedName + "_" + (++ind);
        fout = new File(dir, displayedName + GPX_SUFFIX);
    }
    final EditText nameEditText = (EditText) mainView.findViewById(R.id.name_edit_text);
    nameEditText.setText(displayedName);
    if (textBox instanceof OsmandTextFieldBoxes) {
        ((OsmandTextFieldBoxes) textBox).activate(true);
    }
    mainView.findViewById(R.id.save_button).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (listener != null) {
                listener.saveGpx(nameEditText.getText().toString());
            }
            dismiss();
        }
    });
    mainView.findViewById(R.id.close_button).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            dismiss();
        }
    });
    final int screenHeight = AndroidUtils.getScreenHeight(getActivity());
    final int statusBarHeight = AndroidUtils.getStatusBarHeight(getActivity());
    final int navBarHeight = AndroidUtils.getNavBarHeight(getActivity());
    mainView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        boolean dimensSet;

        @Override
        public void onGlobalLayout() {
            if (!dimensSet) {
                final View scrollView = mainView.findViewById(R.id.marker_save_as_track_scroll_view);
                int scrollViewHeight = scrollView.getHeight();
                int dividerHeight = AndroidUtils.dpToPx(getContext(), 1);
                int cancelButtonHeight = getContext().getResources().getDimensionPixelSize(R.dimen.bottom_sheet_cancel_button_height);
                int spaceForScrollView = screenHeight - statusBarHeight - navBarHeight - dividerHeight - cancelButtonHeight;
                if (scrollViewHeight > spaceForScrollView) {
                    scrollView.getLayoutParams().height = spaceForScrollView;
                    scrollView.requestLayout();
                }
                if (!portrait) {
                    if (screenHeight - statusBarHeight - mainView.getHeight() >= getResources().getDimension(R.dimen.bottom_sheet_content_padding_small)) {
                        AndroidUtils.setBackground(getActivity(), mainView, nightMode, R.drawable.bg_bottom_sheet_topsides_landscape_light, R.drawable.bg_bottom_sheet_topsides_landscape_dark);
                    } else {
                        AndroidUtils.setBackground(getActivity(), mainView, nightMode, R.drawable.bg_bottom_sheet_sides_landscape_light, R.drawable.bg_bottom_sheet_sides_landscape_dark);
                    }
                }
                dimensSet = true;
            }
            final Window window = getDialog().getWindow();
            WindowManager.LayoutParams params = window.getAttributes();
            params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
            params.gravity = Gravity.BOTTOM;
            window.setAttributes(params);
        }
    });
    return mainView;
}
Also used : EditText(android.widget.EditText) Window(android.view.Window) View(android.view.View) Date(java.util.Date) ContextThemeWrapper(android.view.ContextThemeWrapper) OsmandTextFieldBoxes(net.osmand.plus.widgets.OsmandTextFieldBoxes) TextInputLayout(android.support.design.widget.TextInputLayout) File(java.io.File) ViewTreeObserver(android.view.ViewTreeObserver) LinearLayout(android.widget.LinearLayout) MapActivity(net.osmand.plus.activities.MapActivity) Nullable(android.support.annotation.Nullable)

Aggregations

Nullable (android.support.annotation.Nullable)2 TextInputLayout (android.support.design.widget.TextInputLayout)2 ContextThemeWrapper (android.view.ContextThemeWrapper)2 View (android.view.View)2 ViewTreeObserver (android.view.ViewTreeObserver)2 Window (android.view.Window)2 EditText (android.widget.EditText)2 LinearLayout (android.widget.LinearLayout)2 MapActivity (net.osmand.plus.activities.MapActivity)2 OsmandTextFieldBoxes (net.osmand.plus.widgets.OsmandTextFieldBoxes)2 InputMethodManager (android.view.inputmethod.InputMethodManager)1 File (java.io.File)1 Date (java.util.Date)1