Search in sources :

Example 1 with OnItemClickListener

use of net.osmand.plus.track.GpxTrackAdapter.OnItemClickListener in project Osmand by osmandapp.

the class SelectFileBottomSheet method createMenuItems.

@Override
public void createMenuItems(final Bundle savedInstanceState) {
    final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
    Context context = requireContext();
    final OsmandApplication app = requiredMyApplication();
    mainView = View.inflate(new ContextThemeWrapper(context, themeRes), R.layout.bottom_sheet_plan_route_select_file, null);
    TextView titleView = mainView.findViewById(R.id.title);
    titleView.setText(fragmentMode.title);
    final TextView descriptionView = mainView.findViewById(R.id.description);
    descriptionView.setText(fragmentMode.description);
    final RecyclerView filesRecyclerView = mainView.findViewById(R.id.gpx_track_list);
    filesRecyclerView.setLayoutManager(new LinearLayoutManager(context));
    if (fragmentMode == Mode.OPEN_TRACK) {
        titleView.setText(AndroidUtils.addColon(app, fragmentMode.title));
        updateDescription(descriptionView);
    }
    final ImageButton sortButton = mainView.findViewById(R.id.sort_button);
    int backgroundColorId = ColorUtilities.getInactiveButtonsAndLinksColorId(nightMode);
    Drawable background = app.getUIUtilities().getIcon(R.drawable.bg_dash_line_dark, backgroundColorId);
    AndroidUtils.setBackground(sortButton, background);
    sortButton.setImageResource(sortByMode.getIconId());
    sortButton.setVisibility(View.VISIBLE);
    sortButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            final List<PopUpMenuItem> items = new ArrayList<>();
            for (final TracksSortByMode mode : TracksSortByMode.values()) {
                items.add(new PopUpMenuItem.Builder(app).setTitleId(mode.getNameId()).setIcon(app.getUIUtilities().getThemedIcon(mode.getIconId())).setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        sortByMode = mode;
                        sortButton.setImageResource(mode.getIconId());
                        updateDescription(descriptionView);
                        sortFolderList();
                        folderSelector.setItems(getFolderChips());
                        folderSelector.notifyDataSetChanged();
                        sortFileList();
                        adapter.notifyDataSetChanged();
                    }
                }).setSelected(sortByMode == mode).create());
            }
            new PopUpMenuHelper.Builder(v, items, nightMode).show();
        }
    });
    final File gpxDir = app.getAppPath(IndexConstants.GPX_INDEX_DIR);
    allFilesFolder = context.getString(R.string.shared_string_all);
    if (savedInstanceState == null) {
        selectedFolder = allFilesFolder;
    }
    final List<GPXInfo> allGpxList = getSortedGPXFilesInfo(gpxDir, null, false);
    currentlyRecording = new GPXInfo(getString(R.string.shared_string_currently_recording_track), 0, 0);
    if (isShowCurrentGpx()) {
        allGpxList.add(0, currentlyRecording);
    }
    gpxInfoMap = new HashMap<>();
    gpxInfoMap.put(allFilesFolder, allGpxList);
    for (GPXInfo gpxInfo : allGpxList) {
        String folderName = getFolderName(gpxInfo);
        List<GPXInfo> gpxList = gpxInfoMap.get(folderName);
        if (gpxList == null) {
            gpxList = new ArrayList<>();
            gpxInfoMap.put(folderName, gpxList);
        }
        gpxList.add(gpxInfo);
    }
    adapter = new GpxTrackAdapter(requireContext(), allGpxList, isShowCurrentGpx(), showFoldersName());
    adapter.setAdapterListener(new OnItemClickListener() {

        @Override
        public void onItemClick(int position) {
            List<GPXInfo> gpxList = adapter.getGpxInfoList();
            if (position != RecyclerView.NO_POSITION && position < gpxList.size()) {
                String fileName;
                if (isShowCurrentGpx() && position == 0) {
                    fileName = null;
                } else {
                    fileName = gpxList.get(position).getFileName();
                }
                if (listener != null) {
                    listener.selectFileOnCLick(fileName);
                }
            }
            dismiss();
        }
    });
    filesRecyclerView.setAdapter(adapter);
    folderSelector = mainView.findViewById(R.id.folder_list);
    folders = new ArrayList<>();
    collectDirs(gpxDir, folders);
    sortFolderList();
    folderSelector.setItems(getFolderChips());
    ChipItem selected = folderSelector.getChipById(selectedFolder);
    folderSelector.setSelected(selected);
    folderSelector.setOnSelectChipListener(chip -> {
        selectedFolder = chip.id;
        folderSelector.smoothScrollTo(chip);
        updateFileList();
        return true;
    });
    items.add(new BaseBottomSheetItem.Builder().setCustomView(mainView).create());
    updateFileList();
}
Also used : BaseBottomSheetItem(net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem) OsmandApplication(net.osmand.plus.OsmandApplication) GPXInfo(net.osmand.plus.helpers.GpxUiHelper.GPXInfo) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) GpxTrackAdapter(net.osmand.plus.track.GpxTrackAdapter) ImageButton(android.widget.ImageButton) TextView(android.widget.TextView) ArrayList(java.util.ArrayList) List(java.util.List) Context(android.content.Context) OnItemClickListener(net.osmand.plus.track.GpxTrackAdapter.OnItemClickListener) TracksSortByMode(net.osmand.plus.settings.enums.TracksSortByMode) Drawable(android.graphics.drawable.Drawable) PopUpMenuItem(net.osmand.plus.widgets.popup.PopUpMenuItem) View(android.view.View) RecyclerView(androidx.recyclerview.widget.RecyclerView) HorizontalChipsView(net.osmand.plus.widgets.chips.HorizontalChipsView) TextView(android.widget.TextView) ChipItem(net.osmand.plus.widgets.chips.ChipItem) ContextThemeWrapper(androidx.appcompat.view.ContextThemeWrapper) RecyclerView(androidx.recyclerview.widget.RecyclerView) File(java.io.File)

Aggregations

Context (android.content.Context)1 Drawable (android.graphics.drawable.Drawable)1 View (android.view.View)1 ImageButton (android.widget.ImageButton)1 TextView (android.widget.TextView)1 ContextThemeWrapper (androidx.appcompat.view.ContextThemeWrapper)1 LinearLayoutManager (androidx.recyclerview.widget.LinearLayoutManager)1 RecyclerView (androidx.recyclerview.widget.RecyclerView)1 File (java.io.File)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 OsmandApplication (net.osmand.plus.OsmandApplication)1 BaseBottomSheetItem (net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem)1 GPXInfo (net.osmand.plus.helpers.GpxUiHelper.GPXInfo)1 TracksSortByMode (net.osmand.plus.settings.enums.TracksSortByMode)1 GpxTrackAdapter (net.osmand.plus.track.GpxTrackAdapter)1 OnItemClickListener (net.osmand.plus.track.GpxTrackAdapter.OnItemClickListener)1 ChipItem (net.osmand.plus.widgets.chips.ChipItem)1 HorizontalChipsView (net.osmand.plus.widgets.chips.HorizontalChipsView)1 PopUpMenuItem (net.osmand.plus.widgets.popup.PopUpMenuItem)1