Search in sources :

Example 11 with UiUtilities

use of net.osmand.plus.utils.UiUtilities in project Osmand by osmandapp.

the class QuickSearchDialogFragment method onCreateView.

@Override
@SuppressLint("PrivateResource, ValidFragment")
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final MapActivity mapActivity = getMapActivity();
    final UiUtilities iconsCache = app.getUIUtilities();
    final View view = inflater.inflate(R.layout.search_dialog_fragment, container, false);
    toolbarController = new QuickSearchToolbarController();
    toolbarController.setOnBackButtonClickListener(v -> mapActivity.showQuickSearch(ShowQuickSearchMode.CURRENT, false));
    toolbarController.setOnTitleClickListener(v -> mapActivity.showQuickSearch(ShowQuickSearchMode.CURRENT, false));
    toolbarController.setOnCloseButtonClickListener(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(iconsCache.getThemedIcon(R.drawable.ic_action_marker_dark));
    buttonToolbarFilter = (ImageButton) view.findViewById(R.id.filterButton);
    buttonToolbarFilter.setImageDrawable(iconsCache.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) {
            cancelSearch();
            SearchPhrase searchPhrase = searchUICore.getPhrase();
            if (foundPartialLocation) {
                QuickSearchCoordinatesFragment.showDialog(QuickSearchDialogFragment.this, searchPhrase.getFirstUnknownSearchWord());
            } else if (searchPhrase.isNoSelectedType() || searchPhrase.isLastWord(POI_TYPE)) {
                PoiUIFilter filter;
                if (searchPhrase.isNoSelectedType()) {
                    AbstractPoiType uselectedPoiType = searchUICore.getUnselectedPoiType();
                    if (isOnlineSearch() && !Algorithms.isEmpty(searchPhrase.getFirstUnknownSearchWord())) {
                        app.getPoiFilters().resetNominatimFilters();
                        filter = app.getPoiFilters().getNominatimPOIFilter();
                        filter.setFilterByName(searchPhrase.getUnknownSearchPhrase());
                        filter.clearCurrentResults();
                    } else if (uselectedPoiType != null) {
                        filter = new PoiUIFilter(uselectedPoiType, app, "");
                        String customName = searchUICore.getCustomNameFilter();
                        if (!Algorithms.isEmpty(customName)) {
                            filter.setFilterByName(customName);
                        }
                    } else {
                        filter = app.getPoiFilters().getSearchByNamePOIFilter();
                        if (!Algorithms.isEmpty(searchPhrase.getFirstUnknownSearchWord())) {
                            filter.setFilterByName(searchPhrase.getFirstUnknownSearchWord());
                            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.getFirstUnknownSearchWord())) {
                        filter.setFilterByName(searchPhrase.getFirstUnknownSearchWord());
                    }
                } 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.isTargetPoint() && 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) {
                        FavoriteGroup group = (FavoriteGroup) word.getResult().object;
                        if (group.getPoints().size() > 1) {
                            double left = 0, right = 0;
                            double top = 0, bottom = 0;
                            for (FavouritePoint p : group.getPoints()) {
                                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.getPoints().size() == 1) {
                            FavouritePoint p = group.getPoints().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.app_bar_color_dark));
    }
    Drawable icBack = iconsCache.getThemedIcon(AndroidUtils.getNavigationIconResId(app));
    toolbar.setNavigationIcon(icBack);
    toolbar.setNavigationContentDescription(R.string.access_shared_string_navigate_up);
    toolbar.setNavigationOnClickListener(v -> onBackButtonPressed());
    toolbarEdit = (Toolbar) view.findViewById(R.id.toolbar_edit);
    toolbarEdit.setNavigationIcon(iconsCache.getIcon(R.drawable.ic_action_remove_dark));
    toolbarEdit.setNavigationContentDescription(R.string.shared_string_cancel);
    toolbarEdit.setNavigationOnClickListener(v -> enableSelectionMode(false, -1));
    titleEdit = (TextView) view.findViewById(R.id.titleEdit);
    Drawable shareIcon = iconsCache.getIcon(R.drawable.ic_action_gshare_dark, R.color.color_white);
    shareIcon = AndroidUtils.getDrawableForDirection(app, shareIcon);
    ImageView shareButton = (ImageView) view.findViewById(R.id.shareButton);
    shareButton.setImageDrawable(shareIcon);
    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) {
                Object object = searchListItem.getSearchResult().object;
                if (object instanceof HistoryEntry) {
                    historyEntries.add((HistoryEntry) object);
                }
            }
            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) {
                String newQueryText = searchQuery + " ";
                searchEditText.setText(newQueryText);
                searchEditText.setSelection(newQueryText.length());
                AndroidUtils.hideSoftKeyboard(getActivity(), searchEditText);
                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());
            updateSendEmptySearchBottomBar(false);
            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(iconsCache.getThemedIcon(R.drawable.ic_action_remove_dark));
    clearButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (searchEditText.getText().length() > 0) {
                clearLastWord();
            } 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();
            }
            updateSendEmptySearchBottomBar(false);
            updateToolbarButton();
        }
    });
    fab = view.findViewById(R.id.fab);
    fab.setOnClickListener(v -> saveCustomFilter());
    updateFab();
    setupSearch(mapActivity);
    sendEmptySearchView = view.findViewById(R.id.no_search_results_bottom_bar);
    sendEmptySearchText = view.findViewById(R.id.no_search_results_description);
    sendEmptySearchButton = view.findViewById(R.id.send_empty_search_button);
    sendEmptySearchButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            OsmandApplication app = getMyApplication();
            if (app != null) {
                if (!app.getSettings().isInternetConnectionAvailable()) {
                    Toast.makeText(app, R.string.internet_not_available, Toast.LENGTH_LONG).show();
                } else {
                    if (searchQuery != null) {
                        Bundle args = new Bundle();
                        SendSearchQueryBottomSheet fragment = new SendSearchQueryBottomSheet();
                        args.putString(MISSING_SEARCH_LOCATION_KEY, String.valueOf(location));
                        args.putString(MISSING_SEARCH_QUERY_KEY, searchQuery);
                        fragment.setArguments(args);
                        fragment.show(mapActivity.getSupportFragmentManager(), SendSearchQueryBottomSheet.TAG);
                    }
                }
            }
        }
    });
    updateFab();
    return view;
}
Also used : FavouritePoint(net.osmand.data.FavouritePoint) OsmandApplication(net.osmand.plus.OsmandApplication) 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) ImageView(android.widget.ImageView) MapActivity(net.osmand.plus.activities.MapActivity) Bundle(android.os.Bundle) FavoriteGroup(net.osmand.plus.myplaces.FavoriteGroup) Drawable(android.graphics.drawable.Drawable) SearchResult(net.osmand.search.core.SearchResult) 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) ViewPager(androidx.viewpager.widget.ViewPager) LockableViewPager(net.osmand.plus.LockableViewPager) FavouritePoint(net.osmand.data.FavouritePoint) SuppressLint(android.annotation.SuppressLint) PoiUIFilter(net.osmand.plus.poi.PoiUIFilter) UiUtilities(net.osmand.plus.utils.UiUtilities) 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 12 with UiUtilities

use of net.osmand.plus.utils.UiUtilities in project Osmand by osmandapp.

the class GPXLayer method initUI.

private void initUI() {
    paint = new Paint();
    paint.setStyle(Style.STROKE);
    paint.setAntiAlias(true);
    borderPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    borderPaint.setStyle(Style.STROKE);
    borderPaint.setStrokeJoin(Paint.Join.ROUND);
    borderPaint.setStrokeCap(Paint.Cap.ROUND);
    borderPaint.setColor(0x80000000);
    shadowPaint = new Paint();
    shadowPaint.setStyle(Style.STROKE);
    shadowPaint.setAntiAlias(true);
    paintTextIcon = new Paint();
    paintTextIcon.setTextSize(10 * view.getDensity());
    paintTextIcon.setTextAlign(Align.CENTER);
    paintTextIcon.setFakeBoldText(true);
    paintTextIcon.setAntiAlias(true);
    textLayer = view.getLayerByClass(MapTextLayer.class);
    paintInnerRect = new Paint();
    paintInnerRect.setStyle(Style.FILL);
    paintInnerRect.setAntiAlias(true);
    paintOuterRect = new Paint();
    paintOuterRect.setStyle(Style.STROKE);
    paintOuterRect.setAntiAlias(true);
    paintOuterRect.setStrokeWidth(3);
    paintOuterRect.setAlpha(255);
    UiUtilities iconsCache = view.getApplication().getUIUtilities();
    startPointIcon = iconsCache.getIcon(R.drawable.map_track_point_start);
    finishPointIcon = iconsCache.getIcon(R.drawable.map_track_point_finish);
    startAndFinishIcon = iconsCache.getIcon(R.drawable.map_track_point_start_finish);
    contextMenuLayer = view.getLayerByClass(ContextMenuLayer.class);
    visitedColor = ContextCompat.getColor(view.getApplication(), R.color.color_ok);
    defPointColor = ContextCompat.getColor(view.getApplication(), R.color.gpx_color_point);
    grayColor = ContextCompat.getColor(view.getApplication(), R.color.color_favorite_gray);
    wayContext = new GpxGeometryWayContext(view.getContext(), view.getDensity());
}
Also used : UiUtilities(net.osmand.plus.utils.UiUtilities) GpxGeometryWayContext(net.osmand.plus.views.layers.geometry.GpxGeometryWayContext) Paint(android.graphics.Paint)

Example 13 with UiUtilities

use of net.osmand.plus.utils.UiUtilities in project Osmand by osmandapp.

the class IntroductionViewHolder method bindView.

public void bindView(@NonNull FragmentActivity activity, @NonNull BackupStatusFragment fragment, @NonNull PrepareBackupResult backup, @NonNull LoginDialogType dialogType, boolean nightMode) {
    OsmandApplication app = (OsmandApplication) activity.getApplicationContext();
    UiUtilities iconsCache = app.getUIUtilities();
    if (dialogType == LoginDialogType.SIGN_IN) {
        title.setText(R.string.backup_welcome_back);
        description.setText(R.string.backup_welcome_back_descr);
        icon.setImageDrawable(iconsCache.getIcon(R.drawable.ic_action_cloud_smile_face_colored));
    } else if (dialogType == LoginDialogType.SIGN_UP) {
        title.setText(R.string.backup_do_not_have_any);
        description.setText(R.string.backup_dont_have_any_descr);
        icon.setImageDrawable(iconsCache.getThemedIcon(R.drawable.ic_action_cloud_neutral_face));
    }
    setupBackupButton(activity, fragment, backup, nightMode);
    setupRestoreButton(activity, fragment, backup, nightMode);
}
Also used : UiUtilities(net.osmand.plus.utils.UiUtilities) OsmandApplication(net.osmand.plus.OsmandApplication)

Example 14 with UiUtilities

use of net.osmand.plus.utils.UiUtilities in project Osmand by osmandapp.

the class DownloadGroupViewHolder method getIconForGroup.

private Drawable getIconForGroup(DownloadResourceGroup group) {
    Drawable iconStart;
    OsmandApplication app = ctx.getMyApplication();
    UiUtilities cache = app.getUIUtilities();
    if (group.getType() == DownloadResourceGroupType.VOICE_REC || group.getType() == DownloadResourceGroupType.VOICE_TTS) {
        iconStart = cache.getThemedIcon(R.drawable.ic_action_volume_up);
    } else if (group.getType() == DownloadResourceGroupType.FONTS) {
        iconStart = cache.getThemedIcon(R.drawable.ic_action_map_language);
    } else {
        if (group.getRegion() instanceof CustomRegion) {
            String iconName = ((CustomRegion) group.getRegion()).getIconName(ctx);
            int iconId = AndroidUtils.getDrawableId(app, iconName);
            if (iconId != 0) {
                iconStart = getIconForDownloadedItems(group, iconId);
                return iconStart != null ? iconStart : cache.getThemedIcon(iconId);
            }
        }
        if (isParentWorld(group) || isParentWorld(group.getParentGroup())) {
            iconStart = cache.getThemedIcon(R.drawable.ic_world_globe_dark);
        } else {
            iconStart = getIconForDownloadedItems(group, R.drawable.ic_map);
            if (iconStart == null) {
                iconStart = cache.getThemedIcon(R.drawable.ic_map);
            }
        }
    }
    return iconStart;
}
Also used : UiUtilities(net.osmand.plus.utils.UiUtilities) OsmandApplication(net.osmand.plus.OsmandApplication) Drawable(android.graphics.drawable.Drawable) CustomRegion(net.osmand.plus.download.CustomRegion)

Example 15 with UiUtilities

use of net.osmand.plus.utils.UiUtilities in project Osmand by osmandapp.

the class MultiSelectionArrayAdapter method getView.

@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    if (convertView == null) {
        convertView = menu.getMapActivity().getLayoutInflater().inflate(R.layout.menu_obj_list_item, parent, false);
    }
    final MapMultiSelectionMenu.MenuObject item = getItem(position);
    if (item != null) {
        if (!menu.isLandscapeLayout()) {
            int listBgColor = ColorUtilities.getListBgColorId(!menu.isLight());
            AndroidUtils.setBackground(convertView.getContext(), convertView, listBgColor);
        }
        convertView.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                if (listener != null) {
                    listener.onClick(position);
                }
            }
        });
        UiUtilities iconsCache = menu.getMapActivity().getMyApplication().getUIUtilities();
        final View iconLayout = convertView.findViewById(R.id.context_menu_icon_layout);
        final ImageView iconView = (ImageView) convertView.findViewById(R.id.context_menu_icon_view);
        if (item.getPointDescription().isFavorite() || item.getPointDescription().isWpt()) {
            int iconSize = getContext().getResources().getDimensionPixelSize(R.dimen.favorites_my_places_icon_size);
            iconView.getLayoutParams().height = iconSize;
            iconView.getLayoutParams().width = iconSize;
            iconView.requestLayout();
        }
        Drawable icon = item.getRightIcon();
        int iconId = item.getRightIconId();
        if (icon != null) {
            iconView.setImageDrawable(icon);
            iconLayout.setVisibility(View.VISIBLE);
        } else if (iconId != 0) {
            iconView.setImageDrawable(iconsCache.getIcon(iconId, menu.isLight() ? R.color.osmand_orange : R.color.osmand_orange_dark));
            iconLayout.setVisibility(View.VISIBLE);
        } else {
            iconLayout.setVisibility(View.GONE);
        }
        // Text line 1
        TextView line1 = (TextView) convertView.findViewById(R.id.context_menu_line1);
        line1.setTextColor(ColorUtilities.getPrimaryTextColor(getContext(), !menu.isLight()));
        line1.setText(item.getTitleStr());
        // Text line 2
        TextView line2 = (TextView) convertView.findViewById(R.id.context_menu_line2);
        ((TextView) line2).setTextColor(ContextCompat.getColor(getContext(), R.color.ctx_menu_subtitle_color));
        StringBuilder line2Str = new StringBuilder(item.getTypeStr());
        String streetStr = item.getStreetStr();
        if (!Algorithms.isEmpty(streetStr) && !item.displayStreetNameInTitle()) {
            if (line2Str.length() > 0) {
                line2Str.append(", ");
            }
            line2Str.append(streetStr);
        }
        line2.setText(line2Str);
        Drawable slIcon = item.getTypeIcon();
        line2.setCompoundDrawablesWithIntrinsicBounds(slIcon, null, null, null);
        line2.setCompoundDrawablePadding(AndroidUtils.dpToPx(menu.getMapActivity(), 5f));
        // Divider
        View divider = convertView.findViewById(R.id.divider);
        divider.setBackgroundColor(ContextCompat.getColor(getContext(), menu.isLight() ? R.color.multi_selection_menu_divider_light : R.color.multi_selection_menu_divider_dark));
        divider.setVisibility(position != getCount() - 1 ? View.VISIBLE : View.GONE);
    }
    return convertView;
}
Also used : UiUtilities(net.osmand.plus.utils.UiUtilities) Drawable(android.graphics.drawable.Drawable) TextView(android.widget.TextView) ImageView(android.widget.ImageView) ImageView(android.widget.ImageView) TextView(android.widget.TextView) View(android.view.View) NonNull(androidx.annotation.NonNull)

Aggregations

UiUtilities (net.osmand.plus.utils.UiUtilities)35 View (android.view.View)16 ImageView (android.widget.ImageView)16 Drawable (android.graphics.drawable.Drawable)13 TextView (android.widget.TextView)13 OsmandApplication (net.osmand.plus.OsmandApplication)13 MenuItem (android.view.MenuItem)7 ArrayList (java.util.ArrayList)7 MapActivity (net.osmand.plus.activities.MapActivity)7 LatLon (net.osmand.data.LatLon)6 PopupMenu (androidx.appcompat.widget.PopupMenu)5 RecyclerView (androidx.recyclerview.widget.RecyclerView)4 SuppressLint (android.annotation.SuppressLint)3 Bundle (android.os.Bundle)3 Editable (android.text.Editable)3 TextWatcher (android.text.TextWatcher)3 LayoutInflater (android.view.LayoutInflater)3 MotionEvent (android.view.MotionEvent)3 AdapterView (android.widget.AdapterView)3 PointDescription (net.osmand.data.PointDescription)3