From a1d75f8eddcd3e1d16266f8cc0cb32478dcbc9be Mon Sep 17 00:00:00 2001 From: Bars107 Date: Thu, 19 Feb 2015 18:41:38 +0200 Subject: [PATCH] Updated tracks tab in my places --- OsmAnd/res/layout/local_index_list_item.xml | 8 +- OsmAnd/res/values/strings.xml | 2 +- .../plus/activities/AvailableGPXFragment.java | 145 +++++++++++++----- .../osmand/plus/audionotes/NotesFragment.java | 2 +- 4 files changed, 115 insertions(+), 42 deletions(-) diff --git a/OsmAnd/res/layout/local_index_list_item.xml b/OsmAnd/res/layout/local_index_list_item.xml index 0668141af6..3a922e413d 100644 --- a/OsmAnd/res/layout/local_index_list_item.xml +++ b/OsmAnd/res/layout/local_index_list_item.xml @@ -15,7 +15,8 @@ android:focusable="false" android:visibility="gone" android:layout_marginRight="@dimen/local_index_check_right_margin" - android:layout_gravity="center_vertical"/> + android:layout_marginTop="@dimen/favorites_icon_top_margin" +/> + android:layout_marginTop="@dimen/favorites_icon_top_margin" + android:focusable="false"/> diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index c74d02be12..8e7472a972 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -1790,7 +1790,7 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Favorites successfully saved to {0} No favorite points to save Import - Export + Export Share Favourites shared via OsmAnd Error occurred while loading GPX diff --git a/OsmAnd/src/net/osmand/plus/activities/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/activities/AvailableGPXFragment.java index 0194805634..301bc9e5f1 100644 --- a/OsmAnd/src/net/osmand/plus/activities/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/AvailableGPXFragment.java @@ -16,6 +16,7 @@ import android.os.Handler; import android.support.v4.view.MenuItemCompat; import android.support.v7.app.ActionBarActivity; import android.support.v7.view.ActionMode; +import android.support.v7.widget.PopupMenu; import android.support.v7.widget.SearchView; import android.view.*; import net.osmand.IndexConstants; @@ -30,6 +31,7 @@ import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; +import net.osmand.plus.dialogs.DirectionsDialogs; import net.osmand.plus.helpers.GpxUiHelper; import net.osmand.plus.helpers.ScreenOrientationHelper; import net.osmand.util.Algorithms; @@ -54,6 +56,8 @@ import android.widget.ExpandableListView; import android.widget.ExpandableListView.ExpandableListContextMenuInfo; import android.widget.Filter; import android.widget.Filterable; +import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -62,12 +66,11 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { public static final int SEARCH_ID = -1; - public static final int ACTION_ID = 0; - protected static final int DELETE_ACTION_ID = 1; +// public static final int ACTION_ID = 0; +// protected static final int DELETE_ACTION_ID = 1; private boolean selectionMode = false; - private List selectedItems = new ArrayList(); + private List selectedItems = new ArrayList<>(); private ActionMode actionMode; - private SearchView searchView; private LoadGpxTask asyncLoader; private GpxIndexesAdapter listAdapter; MessageFormat formatMb = new MessageFormat("{0, number,##.#} MB", Locale.US); @@ -99,17 +102,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View vs = super.onCreateView(inflater, container, savedInstanceState); - getExpandableListView().setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() { - @Override - public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { - long packedPos = ((ExpandableListContextMenuInfo) menuInfo).packedPosition; - int group = ExpandableListView.getPackedPositionGroup(packedPos); - int child = ExpandableListView.getPackedPositionChild(packedPos); - if (child >= 0 && group >= 0) { - showContextMenu(listAdapter.getChild(group, child)); - } - } - }); return vs; } @@ -137,9 +129,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { MenuItem mi = createMenuItem(menu, SEARCH_ID, R.string.search_poi_filter, R.drawable.ic_action_search_dark, R.drawable.ic_action_search_dark, MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); - searchView = new SearchView(getActivity()); + SearchView searchView = new SearchView(getActivity()); FavoritesActivity.updateSearchView(getActivity(), searchView); - MenuItemCompat.setActionView(mi,searchView); + MenuItemCompat.setActionView(mi, searchView); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override @@ -464,21 +456,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { sendIntent.setType("application/gpx+xml"); startActivity(sendIntent); } else if (resId == R.string.show_gpx_route) { - info.updateGpxInfo(getMyApplication()); - boolean e = true; - if (info != null && info.gpx != null) { - WptPt loc = info.gpx.findPointToShow(); - OsmandSettings settings = getMyApplication().getSettings(); - if (loc != null) { - settings.setMapLocationToShow(loc.lat, loc.lon, settings.getLastKnownMapZoom()); - e = false; - getMyApplication().getSelectedGpxHelper().setGpxFileToDisplay(info.gpx); - MapActivity.launchMapActivityMoveToTop(getActivity()); - } - } - if (e) { - AccessibleToast.makeText(getActivity(), R.string.gpx_file_is_empty, Toast.LENGTH_LONG).show(); - } + showGpxOnMap(info); } return true; } @@ -506,6 +484,24 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { OsmandPlugin.onContextMenuActivity(getActivity(), this, info, adapter); } + private void showGpxOnMap(GpxInfo info) { + info.updateGpxInfo(getMyApplication()); + boolean e = true; + if (info != null && info.gpx != null) { + WptPt loc = info.gpx.findPointToShow(); + OsmandSettings settings = getMyApplication().getSettings(); + if (loc != null) { + settings.setMapLocationToShow(loc.lat, loc.lon, settings.getLastKnownMapZoom()); + e = false; + getMyApplication().getSelectedGpxHelper().setGpxFileToDisplay(info.gpx); + MapActivity.launchMapActivityMoveToTop(getActivity()); + } + } + if (e) { + AccessibleToast.makeText(getActivity(), R.string.gpx_file_is_empty, Toast.LENGTH_LONG).show(); + } + } + private void showContextMenu(final GpxInfo info) { Builder builder = new AlertDialog.Builder(getActivity()); final ContextMenuAdapter adapter = new ContextMenuAdapter(getActivity()); @@ -577,6 +573,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { if(getActivity() != null) { ((ActionBarActivity)getActivity()).setSupportProgressBarIndeterminateVisibility(false); } + if (listAdapter.getGroupCount() > 0){ + getExpandableListView().expandGroup(0); + } } private File[] listFilesSorted(File dir) { @@ -712,7 +711,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { } @Override - public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { View v = convertView; final GpxInfo child = getChild(groupPosition, childPosition); if (v == null) { @@ -750,8 +749,16 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { } else { descr.setVisibility(View.GONE); } + ImageButton options = (ImageButton) v.findViewById(R.id.options); + options.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + openPopUpMenu(v, child); + } + }); final CheckBox checkbox = (CheckBox) v.findViewById(R.id.check_local_index); checkbox.setVisibility(selectionMode ? View.VISIBLE : View.GONE); + ImageView icon = (ImageView) v.findViewById(R.id.icon); if (selectionMode) { checkbox.setChecked(selectedItems.contains(child)); checkbox.setOnClickListener(new View.OnClickListener() { @@ -767,9 +774,19 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { updateSelectionMode(actionMode); } }); + icon.setVisibility(View.GONE); + options.setVisibility(View.GONE); + } else { + icon.setVisibility(View.VISIBLE); + options.setVisibility(View.VISIBLE); } - + v.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onChildClick(null, v, groupPosition, childPosition, 0); + } + }); return v; } @@ -861,6 +878,63 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { } } + private void openPopUpMenu(View v, final GpxInfo gpxInfo) { + boolean light = getMyApplication().getSettings().isLightContent(); + final PopupMenu optionsMenu = new PopupMenu(getActivity(), v); + DirectionsDialogs.setupPopUpMenuIcon(optionsMenu); + MenuItem item = optionsMenu.getMenu().add(R.string.show_gpx_route) + .setIcon(light ? R.drawable.ic_action_map_marker_light : R.drawable.ic_action_map_marker_dark); + item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + showGpxOnMap(gpxInfo); + return true; + } + }); + + item = optionsMenu.getMenu().add(R.string.local_index_mi_rename) + .setIcon(light ? R.drawable.ic_action_edit_light : R.drawable.ic_action_edit_dark); + item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + + return true; + } + }); + + item = optionsMenu.getMenu().add(R.string.export) + .setIcon(light ? R.drawable.ic_action_gup_light : R.drawable.ic_action_gup_dark); + item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + + return true; + } + }); + + item = optionsMenu.getMenu().add(R.string.edit_filter_delete_menu_item) + .setIcon(light ? R.drawable.ic_action_delete_light : R.drawable.ic_action_delete_dark); + item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setMessage(R.string.recording_delete_confirm); + builder.setPositiveButton(R.string.default_buttons_yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + operationTask = new DeleteGpxTask(); + operationTask.execute(gpxInfo); + } + }); + builder.setNegativeButton(R.string.default_buttons_cancel, null); + builder.show(); + return true; + } + }); + optionsMenu.show(); + + } + public class LoadLocalIndexDescriptionTask extends AsyncTask { @Override @@ -1185,8 +1259,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { description = gpx.warning; } else { // 'Long-press for options' message - description = GpxUiHelper.getDescription(app, gpx, file, true) + - app.getString(R.string.local_index_gpx_info_show); + description = GpxUiHelper.getDescription(app, gpx, file, true); } htmlDescription = null; getHtmlDescription(); diff --git a/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java b/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java index fe14ff650e..e7b665ba16 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/NotesFragment.java @@ -60,7 +60,7 @@ public class NotesFragment extends ListFragment { @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - ((FavoritesActivity) getActivity()).getClearToolbar(false); + ((FavoritesActivity) getActivity()).getClearToolbar(false); } @Override