Search in sources :

Example 1 with SearchWord

use of net.osmand.search.core.SearchWord in project Osmand by osmandapp.

the class QuickSearchDialogFragment method onCreateView.

@Override
@SuppressLint("PrivateResource, ValidFragment")
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final MapActivity mapActivity = getMapActivity();
    final View view = inflater.inflate(R.layout.search_dialog_fragment, container, false);
    toolbarController = new QuickSearchToolbarController();
    toolbarController.setOnBackButtonClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            mapActivity.showQuickSearch(ShowQuickSearchMode.CURRENT, false);
        }
    });
    toolbarController.setOnTitleClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            mapActivity.showQuickSearch(ShowQuickSearchMode.CURRENT, false);
        }
    });
    toolbarController.setOnCloseButtonClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            mapActivity.closeQuickSearch();
        }
    });
    Bundle arguments = getArguments();
    if (savedInstanceState != null) {
        searchType = QuickSearchType.valueOf(savedInstanceState.getString(QUICK_SEARCH_TYPE_KEY, QuickSearchType.REGULAR.name()));
        searchQuery = savedInstanceState.getString(QUICK_SEARCH_QUERY_KEY);
        double lat = savedInstanceState.getDouble(QUICK_SEARCH_LAT_KEY, Double.NaN);
        double lon = savedInstanceState.getDouble(QUICK_SEARCH_LON_KEY, Double.NaN);
        if (!Double.isNaN(lat) && !Double.isNaN(lon)) {
            centerLatLon = new LatLon(lat, lon);
        }
        interruptedSearch = savedInstanceState.getBoolean(QUICK_SEARCH_INTERRUPTED_SEARCH_KEY, false);
        hidden = savedInstanceState.getBoolean(QUICK_SEARCH_HIDDEN_KEY, false);
        toolbarTitle = savedInstanceState.getString(QUICK_SEARCH_TOOLBAR_TITLE_KEY);
        toolbarVisible = savedInstanceState.getBoolean(QUICK_SEARCH_TOOLBAR_VISIBLE_KEY, false);
        fabVisible = savedInstanceState.getBoolean(QUICK_SEARCH_FAB_VISIBLE_KEY, false);
    }
    if (searchQuery == null && arguments != null) {
        searchType = QuickSearchType.valueOf(arguments.getString(QUICK_SEARCH_TYPE_KEY, QuickSearchType.REGULAR.name()));
        searchQuery = arguments.getString(QUICK_SEARCH_QUERY_KEY);
        runSearchFirstTime = arguments.getBoolean(QUICK_SEARCH_RUN_SEARCH_FIRST_TIME_KEY, false);
        phraseDefined = arguments.getBoolean(QUICK_SEARCH_PHRASE_DEFINED_KEY, false);
        double lat = arguments.getDouble(QUICK_SEARCH_LAT_KEY, Double.NaN);
        double lon = arguments.getDouble(QUICK_SEARCH_LON_KEY, Double.NaN);
        if (!Double.isNaN(lat) && !Double.isNaN(lon)) {
            centerLatLon = new LatLon(lat, lon);
        }
        newSearch = true;
    }
    if (searchQuery == null)
        searchQuery = "";
    QuickSearchTab showSearchTab = QuickSearchTab.HISTORY;
    if (arguments != null) {
        showSearchTab = QuickSearchTab.valueOf(arguments.getString(QUICK_SEARCH_SHOW_TAB_KEY, QuickSearchTab.HISTORY.name()));
    }
    if (showSearchTab == QuickSearchTab.ADDRESS) {
        addressSearch = true;
    }
    tabToolbarView = view.findViewById(R.id.tab_toolbar_layout);
    tabsView = view.findViewById(R.id.tabs_view);
    searchView = view.findViewById(R.id.search_view);
    buttonToolbarView = view.findViewById(R.id.button_toolbar_layout);
    buttonToolbarImage = (ImageView) view.findViewById(R.id.buttonToolbarImage);
    buttonToolbarImage.setImageDrawable(app.getIconsCache().getThemedIcon(R.drawable.ic_action_marker_dark));
    buttonToolbarFilter = (ImageButton) view.findViewById(R.id.filterButton);
    buttonToolbarFilter.setImageDrawable(app.getIconsCache().getThemedIcon(R.drawable.ic_action_filter));
    buttonToolbarFilter.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            SearchPhrase searchPhrase = searchUICore.getPhrase();
            if (searchPhrase.isLastWord(POI_TYPE)) {
                String filterId = null;
                String filterByName = searchPhrase.getUnknownSearchPhrase().trim();
                Object object = searchPhrase.getLastSelectedWord().getResult().object;
                if (object instanceof PoiUIFilter) {
                    PoiUIFilter model = (PoiUIFilter) object;
                    if (!Algorithms.isEmpty(model.getSavedFilterByName())) {
                        model.setFilterByName(model.getSavedFilterByName());
                    }
                    filterId = model.getFilterId();
                } else if (object instanceof AbstractPoiType) {
                    AbstractPoiType abstractPoiType = (AbstractPoiType) object;
                    PoiUIFilter custom = app.getPoiFilters().getFilterById(PoiUIFilter.STD_PREFIX + abstractPoiType.getKeyName());
                    if (custom != null) {
                        custom.setFilterByName(null);
                        custom.clearFilter();
                        custom.updateTypesToAccept(abstractPoiType);
                        filterId = custom.getFilterId();
                    }
                }
                if (filterId != null) {
                    QuickSearchPoiFilterFragment.showDialog(QuickSearchDialogFragment.this, filterByName, filterId);
                }
            }
        }
    });
    buttonToolbarText = (TextView) view.findViewById(R.id.buttonToolbarTitle);
    view.findViewById(R.id.buttonToolbar).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            SearchPhrase searchPhrase = searchUICore.getPhrase();
            if (foundPartialLocation) {
                QuickSearchCoordinatesFragment.showDialog(QuickSearchDialogFragment.this, searchPhrase.getUnknownSearchWord());
            } else if (searchPhrase.isNoSelectedType() || searchPhrase.isLastWord(POI_TYPE)) {
                PoiUIFilter filter;
                if (searchPhrase.isNoSelectedType()) {
                    if (isOnlineSearch() && !Algorithms.isEmpty(searchPhrase.getUnknownSearchWord())) {
                        app.getPoiFilters().resetNominatimFilters();
                        filter = app.getPoiFilters().getNominatimPOIFilter();
                        filter.setFilterByName(searchPhrase.getUnknownSearchWord());
                        filter.clearCurrentResults();
                    } else {
                        filter = app.getPoiFilters().getSearchByNamePOIFilter();
                        if (!Algorithms.isEmpty(searchPhrase.getUnknownSearchWord())) {
                            filter.setFilterByName(searchPhrase.getUnknownSearchWord());
                            filter.clearCurrentResults();
                        }
                    }
                } else if (searchPhrase.getLastSelectedWord().getResult().object instanceof AbstractPoiType) {
                    if (searchPhrase.isNoSelectedType()) {
                        filter = new PoiUIFilter(null, app, "");
                    } else {
                        AbstractPoiType abstractPoiType = (AbstractPoiType) searchPhrase.getLastSelectedWord().getResult().object;
                        filter = new PoiUIFilter(abstractPoiType, app, "");
                    }
                    if (!Algorithms.isEmpty(searchPhrase.getUnknownSearchWord())) {
                        filter.setFilterByName(searchPhrase.getUnknownSearchWord());
                    }
                } else {
                    filter = (PoiUIFilter) searchPhrase.getLastSelectedWord().getResult().object;
                }
                app.getPoiFilters().clearSelectedPoiFilters();
                app.getPoiFilters().addSelectedPoiFilter(filter);
                mapActivity.getContextMenu().closeActiveToolbar();
                showToolbar();
                getMapActivity().updateStatusBarColor();
                getMapActivity().refreshMap();
                hide();
            } else {
                SearchWord word = searchPhrase.getLastSelectedWord();
                if (word != null) {
                    if ((searchType == QuickSearchType.START_POINT || searchType == QuickSearchType.DESTINATION || searchType == QuickSearchType.INTERMEDIATE) && word.getLocation() != null) {
                        if (mainSearchFragment != null) {
                            mainSearchFragment.showResult(word.getResult());
                        }
                    } else if (word.getLocation() != null) {
                        SearchResult searchResult = word.getResult();
                        String name = QuickSearchListItem.getName(app, searchResult);
                        String typeName = QuickSearchListItem.getTypeName(app, searchResult);
                        PointDescription pointDescription = new PointDescription(PointDescription.POINT_TYPE_ADDRESS, typeName, name);
                        app.getSettings().setMapLocationToShow(searchResult.location.getLatitude(), searchResult.location.getLongitude(), searchResult.preferredZoom, pointDescription, true, searchResult.object);
                        hideToolbar();
                        MapActivity.launchMapActivityMoveToTop(getActivity());
                        reloadHistory();
                        hide();
                    } else if (word.getType() == ObjectType.FAVORITE_GROUP) {
                        FavouritesDbHelper.FavoriteGroup group = (FavouritesDbHelper.FavoriteGroup) word.getResult().object;
                        if (group.points.size() > 1) {
                            double left = 0, right = 0;
                            double top = 0, bottom = 0;
                            for (FavouritePoint p : group.points) {
                                if (left == 0) {
                                    left = p.getLongitude();
                                    right = p.getLongitude();
                                    top = p.getLatitude();
                                    bottom = p.getLatitude();
                                } else {
                                    left = Math.min(left, p.getLongitude());
                                    right = Math.max(right, p.getLongitude());
                                    top = Math.max(top, p.getLatitude());
                                    bottom = Math.min(bottom, p.getLatitude());
                                }
                            }
                            getMapActivity().getMapView().fitRectToMap(left, right, top, bottom, 0, 0, 0);
                            hideToolbar();
                            MapActivity.launchMapActivityMoveToTop(getActivity());
                            hide();
                        } else if (group.points.size() == 1) {
                            FavouritePoint p = group.points.get(0);
                            app.getSettings().setMapLocationToShow(p.getLatitude(), p.getLongitude(), word.getResult().preferredZoom);
                            hideToolbar();
                            MapActivity.launchMapActivityMoveToTop(getActivity());
                            hide();
                        }
                    }
                }
            }
        }
    });
    toolbar = (Toolbar) view.findViewById(R.id.toolbar);
    if (!app.getSettings().isLightContent()) {
        toolbar.setBackgroundColor(ContextCompat.getColor(mapActivity, R.color.actionbar_dark_color));
    }
    toolbar.setNavigationIcon(app.getIconsCache().getThemedIcon(R.drawable.ic_arrow_back));
    toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
    toolbar.setNavigationOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (!processBackAction()) {
                dismiss();
            }
        }
    });
    toolbarEdit = (Toolbar) view.findViewById(R.id.toolbar_edit);
    toolbarEdit.setNavigationIcon(app.getIconsCache().getIcon(R.drawable.ic_action_remove_dark));
    toolbarEdit.setNavigationContentDescription(R.string.shared_string_cancel);
    toolbarEdit.setNavigationOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            enableSelectionMode(false, -1);
        }
    });
    titleEdit = (TextView) view.findViewById(R.id.titleEdit);
    view.findViewById(R.id.shareButton).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            List<HistoryEntry> historyEntries = new ArrayList<HistoryEntry>();
            List<QuickSearchListItem> selectedItems = historySearchFragment.getListAdapter().getSelectedItems();
            for (QuickSearchListItem searchListItem : selectedItems) {
                HistoryEntry historyEntry = (HistoryEntry) searchListItem.getSearchResult().object;
                historyEntries.add(historyEntry);
            }
            if (historyEntries.size() > 0) {
                shareHistory(historyEntries);
                enableSelectionMode(false, -1);
            }
        }
    });
    view.findViewById(R.id.deleteButton).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            DeleteDialogFragment deleteDialog = new DeleteDialogFragment();
            deleteDialog.setSelectedItems(historySearchFragment.getListAdapter().getSelectedItems());
            deleteDialog.show(getChildFragmentManager(), "DeleteHistoryConfirmationFragment");
        }
    });
    viewPager = (LockableViewPager) view.findViewById(R.id.pager);
    viewPager.setOffscreenPageLimit(2);
    pagerAdapter = new SearchFragmentPagerAdapter(getChildFragmentManager(), getResources());
    viewPager.setAdapter(pagerAdapter);
    switch(showSearchTab) {
        case HISTORY:
            viewPager.setCurrentItem(0);
            break;
        case CATEGORIES:
            viewPager.setCurrentItem(1);
            break;
        case ADDRESS:
            viewPager.setCurrentItem(2);
            break;
    }
    tabLayout = (TabLayout) view.findViewById(R.id.tab_layout);
    tabLayout.setupWithViewPager(viewPager);
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        @Override
        public void onPageSelected(int position) {
            hideKeyboard();
            addressSearch = position == 2;
            updateClearButtonAndHint();
            if (addressSearch && !citiesLoaded) {
                reloadCities();
            } else {
                restoreSearch();
            }
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });
    searchEditText = (EditText) view.findViewById(R.id.searchEditText);
    searchEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEARCH) {
                searchQuery += " ";
                AndroidUtils.hideSoftKeyboard(getActivity(), searchEditText);
                runSearch();
                return true;
            }
            return false;
        }
    });
    searchEditText.addTextChangedListener(new TextWatcher() {

        @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) {
            String newQueryText = s.toString();
            updateClearButtonAndHint();
            updateClearButtonVisibility(true);
            boolean textEmpty = newQueryText.length() == 0;
            updateTabbarVisibility(textEmpty && !isOnlineSearch());
            if (textEmpty) {
                if (addressSearch) {
                    startAddressSearch();
                }
                if (poiFilterApplied) {
                    poiFilterApplied = false;
                    reloadCategories();
                    if (fabVisible) {
                        fabVisible = false;
                        updateFab();
                    }
                }
            }
            if (!searchQuery.equalsIgnoreCase(newQueryText)) {
                searchQuery = newQueryText;
                if (Algorithms.isEmpty(searchQuery)) {
                    cancelSearch();
                    setResultCollection(null);
                    searchUICore.resetPhrase();
                    mainSearchFragment.getAdapter().clear();
                } else {
                    runSearch();
                }
            } else if (runSearchFirstTime) {
                runSearchFirstTime = false;
                runSearch();
            }
        }
    });
    progressBar = (ProgressBar) view.findViewById(R.id.searchProgressBar);
    clearButton = (ImageButton) view.findViewById(R.id.clearButton);
    clearButton.setImageDrawable(app.getIconsCache().getThemedIcon(R.drawable.ic_action_remove_dark));
    clearButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (searchEditText.getText().length() > 0) {
                String newText = searchUICore.getPhrase().getTextWithoutLastWord();
                searchEditText.setText(newText);
                searchEditText.setSelection(newText.length());
            } else if (useMapCenter && location != null) {
                useMapCenter = false;
                centerLatLon = null;
                updateUseMapCenterUI();
                LatLon centerLatLon = new LatLon(location.getLatitude(), location.getLongitude());
                SearchSettings ss = searchUICore.getSearchSettings().setOriginalLocation(new LatLon(centerLatLon.getLatitude(), centerLatLon.getLongitude()));
                searchUICore.updateSettings(ss);
                updateClearButtonAndHint();
                updateClearButtonVisibility(true);
                startLocationUpdate();
            }
            updateToolbarButton();
        }
    });
    fab = view.findViewById(R.id.fab);
    fab.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            saveCustomFilter();
        }
    });
    updateFab();
    setupSearch(mapActivity);
    return view;
}
Also used : FavouritePoint(net.osmand.data.FavouritePoint) SearchWord(net.osmand.search.core.SearchWord) SpannableString(android.text.SpannableString) SearchPhrase(net.osmand.search.core.SearchPhrase) KeyEvent(android.view.KeyEvent) QuickSearchListItem(net.osmand.plus.search.listitems.QuickSearchListItem) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) SearchSettings(net.osmand.search.core.SearchSettings) ArrayList(java.util.ArrayList) List(java.util.List) TextView(android.widget.TextView) MapActivity(net.osmand.plus.activities.MapActivity) Bundle(android.os.Bundle) SearchResult(net.osmand.search.core.SearchResult) FavouritesDbHelper(net.osmand.plus.FavouritesDbHelper) AbstractPoiType(net.osmand.osm.AbstractPoiType) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) LockableViewPager(net.osmand.plus.LockableViewPager) ViewPager(android.support.v4.view.ViewPager) FavouritePoint(net.osmand.data.FavouritePoint) SuppressLint(android.annotation.SuppressLint) PoiUIFilter(net.osmand.plus.poi.PoiUIFilter) LatLon(net.osmand.data.LatLon) PointDescription(net.osmand.data.PointDescription) SearchMoreItemOnClickListener(net.osmand.plus.search.listitems.QuickSearchMoreListItem.SearchMoreItemOnClickListener) OnClickListener(android.view.View.OnClickListener) HistoryEntry(net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry) SuppressLint(android.annotation.SuppressLint)

Example 2 with SearchWord

use of net.osmand.search.core.SearchWord in project Osmand by osmandapp.

the class QuickSearchDialogFragment method onCreateView.

@Override
@SuppressLint("PrivateResource, ValidFragment")
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final MainActivity mainActivity = getMainActivity();
    final View view = inflater.inflate(R.layout.search_dialog_fragment, container, false);
    /*
		toolbarController = new QuickSearchToolbarController();
		toolbarController.setOnBackButtonClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				mainActivity.showQuickSearch(ShowQuickSearchMode.CURRENT, false);
			}
		});
		toolbarController.setOnTitleClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				mainActivity.showQuickSearch(ShowQuickSearchMode.CURRENT, false);
			}
		});
		toolbarController.setOnCloseButtonClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				mainActivity.closeQuickSearch();
			}
		});
		*/
    Bundle arguments = getArguments();
    if (savedInstanceState != null) {
        searchQuery = savedInstanceState.getString(QUICK_SEARCH_QUERY_KEY);
        double lat = savedInstanceState.getDouble(QUICK_SEARCH_LAT_KEY, Double.NaN);
        double lon = savedInstanceState.getDouble(QUICK_SEARCH_LON_KEY, Double.NaN);
        if (!Double.isNaN(lat) && !Double.isNaN(lon)) {
            centerLatLon = new LatLon(lat, lon);
        }
        interruptedSearch = savedInstanceState.getBoolean(QUICK_SEARCH_INTERRUPTED_SEARCH_KEY, false);
        hidden = savedInstanceState.getBoolean(QUICK_SEARCH_HIDDEN_KEY, false);
        toolbarTitle = savedInstanceState.getString(QUICK_SEARCH_TOOLBAR_TITLE_KEY);
        toolbarVisible = savedInstanceState.getBoolean(QUICK_SEARCH_TOOLBAR_VISIBLE_KEY, false);
    }
    if (searchQuery == null && arguments != null) {
        searchQuery = arguments.getString(QUICK_SEARCH_QUERY_KEY);
        runSearchFirstTime = arguments.getBoolean(QUICK_SEARCH_RUN_SEARCH_FIRST_TIME_KEY, false);
        phraseDefined = arguments.getBoolean(QUICK_SEARCH_PHRASE_DEFINED_KEY, false);
        double lat = arguments.getDouble(QUICK_SEARCH_LAT_KEY, Double.NaN);
        double lon = arguments.getDouble(QUICK_SEARCH_LON_KEY, Double.NaN);
        if (!Double.isNaN(lat) && !Double.isNaN(lon)) {
            centerLatLon = new LatLon(lat, lon);
        }
        newSearch = true;
    }
    if (searchQuery == null)
        searchQuery = "";
    boolean showCategories = false;
    if (arguments != null) {
        showCategories = arguments.getBoolean(QUICK_SEARCH_SHOW_CATEGORIES_KEY, false);
    }
    searchView = view.findViewById(R.id.search_view);
    categoriesView = view.findViewById(R.id.categories_view);
    buttonToolbarView = view.findViewById(R.id.button_toolbar_layout);
    buttonToolbarImage = (ImageView) view.findViewById(R.id.buttonToolbarImage);
    buttonToolbarImage.setImageDrawable(app.getIconsCache().getThemedIcon("ic_action_marker_dark"));
    buttonToolbarText = (TextView) view.findViewById(R.id.buttonToolbarTitle);
    view.findViewById(R.id.buttonToolbar).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            SearchPhrase searchPhrase = searchUICore.getPhrase();
            SearchWord word = searchPhrase.getLastSelectedWord();
            if (word != null && word.getLocation() != null) {
                SearchResult searchResult = word.getResult();
                String name = QuickSearchListItem.getName(app, searchResult);
                String typeName = QuickSearchListItem.getTypeName(app, searchResult);
                PointDescription pointDescription = new PointDescription(PointDescription.POINT_TYPE_ADDRESS, typeName, name);
                mainActivity.showOnMap(searchResult.location, searchResult.preferredZoom);
                mainActivity.getContextMenu().show(searchResult.location, pointDescription, searchResult.object);
                hide();
            }
        }
    });
    toolbar = (Toolbar) view.findViewById(R.id.toolbar);
    toolbar.setNavigationIcon(app.getIconsCache().getThemedIcon(R.drawable.ic_arrow_back));
    toolbar.setNavigationContentDescription(app.getString("access_shared_string_navigate_up"));
    toolbar.setNavigationOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            dismiss();
        }
    });
    searchEditText = (EditText) view.findViewById(R.id.searchEditText);
    searchEditText.addTextChangedListener(new TextWatcher() {

        @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) {
            String newQueryText = s.toString();
            updateClearButtonAndHint();
            updateClearButtonVisibility(true);
            boolean textEmpty = newQueryText.length() == 0;
            updateViewsVisibility(textEmpty);
            if (!searchQuery.equalsIgnoreCase(newQueryText)) {
                searchQuery = newQueryText;
                if (Algorithms.isEmpty(searchQuery)) {
                    searchUICore.resetPhrase();
                } else {
                    runSearch();
                }
            } else if (runSearchFirstTime) {
                runSearchFirstTime = false;
                runSearch();
            }
        }
    });
    progressBar = (ProgressBar) view.findViewById(R.id.searchProgressBar);
    clearButton = (ImageButton) view.findViewById(R.id.clearButton);
    clearButton.setImageDrawable(app.getIconsCache().getThemedIcon(R.drawable.ic_action_remove_dark));
    clearButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (searchEditText.getText().length() > 0) {
                String newText = searchUICore.getPhrase().getTextWithoutLastWord();
                searchEditText.setText(newText);
                searchEditText.setSelection(newText.length());
            } else if (useMapCenter && location != null) {
                useMapCenter = false;
                centerLatLon = null;
                updateUseMapCenterUI();
                LatLon centerLatLon = new LatLon(location.getLatitude(), location.getLongitude());
                SearchSettings ss = searchUICore.getSearchSettings().setOriginalLocation(new LatLon(centerLatLon.getLatitude(), centerLatLon.getLongitude()));
                searchUICore.updateSettings(ss);
                updateClearButtonAndHint();
                updateClearButtonVisibility(true);
                startLocationUpdate();
            }
            updateToolbarButton();
        }
    });
    setupSearch(mainActivity);
    return view;
}
Also used : Bundle(android.os.Bundle) SearchWord(net.osmand.search.core.SearchWord) SearchResult(net.osmand.search.core.SearchResult) MainActivity(net.osmand.core.samples.android.sample1.MainActivity) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) SearchPhrase(net.osmand.search.core.SearchPhrase) SuppressLint(android.annotation.SuppressLint) LatLon(net.osmand.data.LatLon) PointDescription(net.osmand.core.samples.android.sample1.data.PointDescription) OnClickListener(android.view.View.OnClickListener) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) SearchSettings(net.osmand.search.core.SearchSettings) SuppressLint(android.annotation.SuppressLint)

Example 3 with SearchWord

use of net.osmand.search.core.SearchWord in project Osmand by osmandapp.

the class QuickSearchDialogFragment method updateToolbarButton.

private void updateToolbarButton() {
    SearchWord word = searchUICore.getPhrase().getLastSelectedWord();
    if (foundPartialLocation) {
        buttonToolbarText.setText(app.getString(R.string.advanced_coords_search).toUpperCase());
    } else if (searchEditText.getText().length() > 0) {
        if (searchType == QuickSearchType.START_POINT || searchType == QuickSearchType.DESTINATION || searchType == QuickSearchType.INTERMEDIATE) {
            if (word != null && word.getResult() != null) {
                buttonToolbarText.setText(app.getString(R.string.shared_string_select).toUpperCase() + " " + word.getResult().localeName.toUpperCase());
            } else {
                buttonToolbarText.setText(app.getString(R.string.shared_string_select).toUpperCase());
            }
        } else {
            if (word != null && word.getResult() != null) {
                buttonToolbarText.setText(app.getString(R.string.show_something_on_map, word.getResult().localeName).toUpperCase());
            } else {
                buttonToolbarText.setText(app.getString(R.string.shared_string_show_on_map).toUpperCase());
            }
        }
    } else {
        buttonToolbarText.setText(app.getString(R.string.shared_string_show_on_map).toUpperCase());
    }
    boolean filterButtonVisible = word != null && word.getType() != null && word.getType().equals(POI_TYPE);
    buttonToolbarFilter.setVisibility(filterButtonVisible ? View.VISIBLE : View.GONE);
    if (filterButtonVisible) {
        if (word.getResult().object instanceof PoiUIFilter) {
            buttonToolbarFilter.setImageDrawable(app.getIconsCache().getIcon(R.drawable.ic_action_filter, app.getSettings().isLightContent() ? R.color.color_dialog_buttons_light : R.color.color_dialog_buttons_dark));
        } else {
            buttonToolbarFilter.setImageDrawable(app.getIconsCache().getThemedIcon(R.drawable.ic_action_filter));
        }
    }
}
Also used : SearchWord(net.osmand.search.core.SearchWord) PoiUIFilter(net.osmand.plus.poi.PoiUIFilter)

Example 4 with SearchWord

use of net.osmand.search.core.SearchWord in project Osmand by osmandapp.

the class QuickSearchDialogFragment method replaceQueryWithText.

public void replaceQueryWithText(String txt) {
    searchQuery = txt;
    searchEditText.setText(txt);
    searchEditText.setSelection(txt.length());
    SearchWord lastWord = searchUICore.getPhrase().getLastSelectedWord();
    boolean buttonToolbarVisible = lastWord == null || searchType == QuickSearchType.REGULAR || ((searchType == QuickSearchType.START_POINT || searchType == QuickSearchType.DESTINATION || searchType == QuickSearchType.INTERMEDIATE) && ObjectType.isAddress(lastWord.getType()));
    buttonToolbarView.setVisibility(buttonToolbarVisible ? View.VISIBLE : View.GONE);
    updateToolbarButton();
    SearchSettings settings = searchUICore.getSearchSettings();
    if (settings.getRadiusLevel() != 1) {
        searchUICore.updateSettings(settings.setRadiusLevel(1));
    }
    runCoreSearch(txt, false, false);
}
Also used : SearchWord(net.osmand.search.core.SearchWord) SearchSettings(net.osmand.search.core.SearchSettings)

Aggregations

SearchWord (net.osmand.search.core.SearchWord)4 SearchSettings (net.osmand.search.core.SearchSettings)3 SuppressLint (android.annotation.SuppressLint)2 Bundle (android.os.Bundle)2 Editable (android.text.Editable)2 TextWatcher (android.text.TextWatcher)2 View (android.view.View)2 OnClickListener (android.view.View.OnClickListener)2 ImageView (android.widget.ImageView)2 TextView (android.widget.TextView)2 LatLon (net.osmand.data.LatLon)2 PoiUIFilter (net.osmand.plus.poi.PoiUIFilter)2 SearchPhrase (net.osmand.search.core.SearchPhrase)2 SearchResult (net.osmand.search.core.SearchResult)2 ViewPager (android.support.v4.view.ViewPager)1 SpannableString (android.text.SpannableString)1 KeyEvent (android.view.KeyEvent)1 AdapterView (android.widget.AdapterView)1 ListView (android.widget.ListView)1 ArrayList (java.util.ArrayList)1