Search in sources :

Example 11 with SearchResult

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

the class SearchCoreUITest method searchResult.

private SearchResult searchResult(List<SearchResult> rs, SearchPhrase phrase, String text, int dist) {
    SearchResult res = new SearchResult(phrase);
    res.localeName = text;
    double d1 = MapUtils.getDistance(0, 0, 0, 1);
    res.location = new LatLon(0, dist / d1);
    rs.add(res);
    return res;
}
Also used : LatLon(net.osmand.data.LatLon) SearchResult(net.osmand.search.core.SearchResult)

Example 12 with SearchResult

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

the class SearchCoreUITest method testNoResortDuplicate.

@Test
public void testNoResortDuplicate() throws IOException {
    SearchSettings ss = new SearchSettings((SearchSettings) null);
    ss = ss.setOriginalLocation(new LatLon(0, 0));
    SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator());
    SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase);
    List<SearchResult> rs = new ArrayList<>();
    SearchResult a1 = searchResult(rs, phrase, "a", 100);
    SearchResult b2 = searchResult(rs, phrase, "b", 200);
    SearchResult b1 = searchResult(rs, phrase, "b", 100);
    cll.addSearchResults(rs, false, true);
    rs.clear();
    /*SearchResult a3 = */
    searchResult(rs, phrase, "a", 100);
    cll.addSearchResults(rs, false, true);
    rs.clear();
    Assert.assertEquals(3, cll.getCurrentSearchResults().size());
    Assert.assertSame(a1, cll.getCurrentSearchResults().get(0));
    Assert.assertSame(b1, cll.getCurrentSearchResults().get(1));
    Assert.assertSame(b2, cll.getCurrentSearchResults().get(2));
}
Also used : LatLon(net.osmand.data.LatLon) ArrayList(java.util.ArrayList) SearchSettings(net.osmand.search.core.SearchSettings) SearchResultCollection(net.osmand.search.SearchUICore.SearchResultCollection) SearchResult(net.osmand.search.core.SearchResult) SearchPhrase(net.osmand.search.core.SearchPhrase) Test(org.junit.Test)

Example 13 with SearchResult

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

the class QuickSearchDialogFragment method updateSearchResult.

private void updateSearchResult(SearchResultCollection res, boolean append) {
    if (!paused && mainSearchFragment != null) {
        List<QuickSearchListItem> rows = new ArrayList<>();
        if (res != null && res.getCurrentSearchResults().size() > 0) {
            for (final SearchResult sr : res.getCurrentSearchResults()) {
                rows.add(new QuickSearchListItem(app, sr));
            }
        }
        mainSearchFragment.updateListAdapter(rows, append);
    }
}
Also used : ArrayList(java.util.ArrayList) SearchResult(net.osmand.search.core.SearchResult)

Example 14 with SearchResult

use of net.osmand.search.core.SearchResult 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 15 with SearchResult

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

the class SearchCoreUITest method testDuplicates.

@Test
public void testDuplicates() throws IOException {
    SearchSettings ss = new SearchSettings((SearchSettings) null);
    ss = ss.setOriginalLocation(new LatLon(0, 0));
    SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator());
    SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase);
    List<SearchResult> rs = new ArrayList<>();
    SearchResult a1 = searchResult(rs, phrase, "a", 100);
    SearchResult b2 = searchResult(rs, phrase, "b", 200);
    SearchResult b1 = searchResult(rs, phrase, "b", 100);
    /*SearchResult a3 = */
    searchResult(rs, phrase, "a", 100);
    cll.addSearchResults(rs, true, true);
    Assert.assertEquals(3, cll.getCurrentSearchResults().size());
    Assert.assertSame(a1, cll.getCurrentSearchResults().get(0));
    Assert.assertSame(b1, cll.getCurrentSearchResults().get(1));
    Assert.assertSame(b2, cll.getCurrentSearchResults().get(2));
}
Also used : LatLon(net.osmand.data.LatLon) ArrayList(java.util.ArrayList) SearchSettings(net.osmand.search.core.SearchSettings) SearchResultCollection(net.osmand.search.SearchUICore.SearchResultCollection) SearchResult(net.osmand.search.core.SearchResult) SearchPhrase(net.osmand.search.core.SearchPhrase) Test(org.junit.Test)

Aggregations

SearchResult (net.osmand.search.core.SearchResult)20 SearchPhrase (net.osmand.search.core.SearchPhrase)12 ArrayList (java.util.ArrayList)11 SearchResultCollection (net.osmand.search.SearchUICore.SearchResultCollection)9 LatLon (net.osmand.data.LatLon)8 SearchSettings (net.osmand.search.core.SearchSettings)7 SpannableString (android.text.SpannableString)6 PoiUIFilter (net.osmand.plus.poi.PoiUIFilter)5 QuickSearchListItem (net.osmand.plus.search.listitems.QuickSearchListItem)5 Bundle (android.os.Bundle)4 View (android.view.View)4 OnClickListener (android.view.View.OnClickListener)4 ImageView (android.widget.ImageView)4 TextView (android.widget.TextView)4 AdapterView (android.widget.AdapterView)3 ListView (android.widget.ListView)3 IOException (java.io.IOException)3 List (java.util.List)3 SearchMoreItemOnClickListener (net.osmand.plus.search.listitems.QuickSearchMoreListItem.SearchMoreItemOnClickListener)3 SuppressLint (android.annotation.SuppressLint)2