Updated tracks tab in my places
This commit is contained in:
parent
78b3c480b5
commit
a1d75f8edd
4 changed files with 115 additions and 42 deletions
|
@ -15,7 +15,8 @@
|
||||||
android:focusable="false"
|
android:focusable="false"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
android:layout_marginRight="@dimen/local_index_check_right_margin"
|
android:layout_marginRight="@dimen/local_index_check_right_margin"
|
||||||
android:layout_gravity="center_vertical"/>
|
android:layout_marginTop="@dimen/favorites_icon_top_margin"
|
||||||
|
/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/icon"
|
android:id="@+id/icon"
|
||||||
|
@ -23,8 +24,8 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginRight="@dimen/favorites_icon_right_margin"
|
android:layout_marginRight="@dimen/favorites_icon_right_margin"
|
||||||
android:focusable="false"
|
android:layout_marginTop="@dimen/favorites_icon_top_margin"
|
||||||
android:layout_gravity="center_vertical"/>
|
android:focusable="false"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
|
@ -69,7 +70,6 @@
|
||||||
android:layout_width="@dimen/list_item_height"
|
android:layout_width="@dimen/list_item_height"
|
||||||
android:layout_height="@dimen/list_item_height"
|
android:layout_height="@dimen/list_item_height"
|
||||||
android:background="?attr/options_button_background"
|
android:background="?attr/options_button_background"
|
||||||
android:layout_gravity="center_vertical"
|
|
||||||
android:focusable="false"
|
android:focusable="false"
|
||||||
android:src="?attr/list_settings_icon"/>
|
android:src="?attr/list_settings_icon"/>
|
||||||
|
|
||||||
|
|
|
@ -1790,7 +1790,7 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A
|
||||||
<string name="fav_saved_sucessfully">Favorites successfully saved to {0}</string>
|
<string name="fav_saved_sucessfully">Favorites successfully saved to {0}</string>
|
||||||
<string name="no_fav_to_save">No favorite points to save</string>
|
<string name="no_fav_to_save">No favorite points to save</string>
|
||||||
<string name="import_fav">Import</string>
|
<string name="import_fav">Import</string>
|
||||||
<string name="export_fav">Export</string>
|
<string name="export">Export</string>
|
||||||
<string name="share_fav">Share</string>
|
<string name="share_fav">Share</string>
|
||||||
<string name="share_fav_subject">Favourites shared via OsmAnd</string>
|
<string name="share_fav_subject">Favourites shared via OsmAnd</string>
|
||||||
<string name="error_occurred_loading_gpx">Error occurred while loading GPX</string>
|
<string name="error_occurred_loading_gpx">Error occurred while loading GPX</string>
|
||||||
|
|
|
@ -16,6 +16,7 @@ import android.os.Handler;
|
||||||
import android.support.v4.view.MenuItemCompat;
|
import android.support.v4.view.MenuItemCompat;
|
||||||
import android.support.v7.app.ActionBarActivity;
|
import android.support.v7.app.ActionBarActivity;
|
||||||
import android.support.v7.view.ActionMode;
|
import android.support.v7.view.ActionMode;
|
||||||
|
import android.support.v7.widget.PopupMenu;
|
||||||
import android.support.v7.widget.SearchView;
|
import android.support.v7.widget.SearchView;
|
||||||
import android.view.*;
|
import android.view.*;
|
||||||
import net.osmand.IndexConstants;
|
import net.osmand.IndexConstants;
|
||||||
|
@ -30,6 +31,7 @@ import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
import net.osmand.plus.OsmandSettings;
|
import net.osmand.plus.OsmandSettings;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
|
import net.osmand.plus.dialogs.DirectionsDialogs;
|
||||||
import net.osmand.plus.helpers.GpxUiHelper;
|
import net.osmand.plus.helpers.GpxUiHelper;
|
||||||
import net.osmand.plus.helpers.ScreenOrientationHelper;
|
import net.osmand.plus.helpers.ScreenOrientationHelper;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
@ -54,6 +56,8 @@ import android.widget.ExpandableListView;
|
||||||
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
|
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
|
||||||
import android.widget.Filter;
|
import android.widget.Filter;
|
||||||
import android.widget.Filterable;
|
import android.widget.Filterable;
|
||||||
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
@ -62,12 +66,11 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
|
||||||
|
|
||||||
|
|
||||||
public static final int SEARCH_ID = -1;
|
public static final int SEARCH_ID = -1;
|
||||||
public static final int ACTION_ID = 0;
|
// public static final int ACTION_ID = 0;
|
||||||
protected static final int DELETE_ACTION_ID = 1;
|
// protected static final int DELETE_ACTION_ID = 1;
|
||||||
private boolean selectionMode = false;
|
private boolean selectionMode = false;
|
||||||
private List<GpxInfo> selectedItems = new ArrayList<GpxInfo>();
|
private List<GpxInfo> selectedItems = new ArrayList<>();
|
||||||
private ActionMode actionMode;
|
private ActionMode actionMode;
|
||||||
private SearchView searchView;
|
|
||||||
private LoadGpxTask asyncLoader;
|
private LoadGpxTask asyncLoader;
|
||||||
private GpxIndexesAdapter listAdapter;
|
private GpxIndexesAdapter listAdapter;
|
||||||
MessageFormat formatMb = new MessageFormat("{0, number,##.#} MB", Locale.US);
|
MessageFormat formatMb = new MessageFormat("{0, number,##.#} MB", Locale.US);
|
||||||
|
@ -99,17 +102,6 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
View vs = super.onCreateView(inflater, container, 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;
|
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,
|
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
|
R.drawable.ic_action_search_dark, MenuItemCompat.SHOW_AS_ACTION_ALWAYS
|
||||||
| MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
|
| MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
|
||||||
searchView = new SearchView(getActivity());
|
SearchView searchView = new SearchView(getActivity());
|
||||||
FavoritesActivity.updateSearchView(getActivity(), searchView);
|
FavoritesActivity.updateSearchView(getActivity(), searchView);
|
||||||
MenuItemCompat.setActionView(mi,searchView);
|
MenuItemCompat.setActionView(mi, searchView);
|
||||||
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -464,21 +456,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
|
||||||
sendIntent.setType("application/gpx+xml");
|
sendIntent.setType("application/gpx+xml");
|
||||||
startActivity(sendIntent);
|
startActivity(sendIntent);
|
||||||
} else if (resId == R.string.show_gpx_route) {
|
} else if (resId == R.string.show_gpx_route) {
|
||||||
info.updateGpxInfo(getMyApplication());
|
showGpxOnMap(info);
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -506,6 +484,24 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
|
||||||
OsmandPlugin.onContextMenuActivity(getActivity(), this, info, adapter);
|
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) {
|
private void showContextMenu(final GpxInfo info) {
|
||||||
Builder builder = new AlertDialog.Builder(getActivity());
|
Builder builder = new AlertDialog.Builder(getActivity());
|
||||||
final ContextMenuAdapter adapter = new ContextMenuAdapter(getActivity());
|
final ContextMenuAdapter adapter = new ContextMenuAdapter(getActivity());
|
||||||
|
@ -577,6 +573,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
|
||||||
if(getActivity() != null) {
|
if(getActivity() != null) {
|
||||||
((ActionBarActivity)getActivity()).setSupportProgressBarIndeterminateVisibility(false);
|
((ActionBarActivity)getActivity()).setSupportProgressBarIndeterminateVisibility(false);
|
||||||
}
|
}
|
||||||
|
if (listAdapter.getGroupCount() > 0){
|
||||||
|
getExpandableListView().expandGroup(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private File[] listFilesSorted(File dir) {
|
private File[] listFilesSorted(File dir) {
|
||||||
|
@ -712,7 +711,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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;
|
View v = convertView;
|
||||||
final GpxInfo child = getChild(groupPosition, childPosition);
|
final GpxInfo child = getChild(groupPosition, childPosition);
|
||||||
if (v == null) {
|
if (v == null) {
|
||||||
|
@ -750,8 +749,16 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
|
||||||
} else {
|
} else {
|
||||||
descr.setVisibility(View.GONE);
|
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);
|
final CheckBox checkbox = (CheckBox) v.findViewById(R.id.check_local_index);
|
||||||
checkbox.setVisibility(selectionMode ? View.VISIBLE : View.GONE);
|
checkbox.setVisibility(selectionMode ? View.VISIBLE : View.GONE);
|
||||||
|
ImageView icon = (ImageView) v.findViewById(R.id.icon);
|
||||||
if (selectionMode) {
|
if (selectionMode) {
|
||||||
checkbox.setChecked(selectedItems.contains(child));
|
checkbox.setChecked(selectedItems.contains(child));
|
||||||
checkbox.setOnClickListener(new View.OnClickListener() {
|
checkbox.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@ -767,9 +774,19 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
|
||||||
updateSelectionMode(actionMode);
|
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;
|
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<GpxInfo, GpxInfo, GpxInfo[]> {
|
public class LoadLocalIndexDescriptionTask extends AsyncTask<GpxInfo, GpxInfo, GpxInfo[]> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1185,8 +1259,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
|
||||||
description = gpx.warning;
|
description = gpx.warning;
|
||||||
} else {
|
} else {
|
||||||
// 'Long-press for options' message
|
// 'Long-press for options' message
|
||||||
description = GpxUiHelper.getDescription(app, gpx, file, true) +
|
description = GpxUiHelper.getDescription(app, gpx, file, true);
|
||||||
app.getString(R.string.local_index_gpx_info_show);
|
|
||||||
}
|
}
|
||||||
htmlDescription = null;
|
htmlDescription = null;
|
||||||
getHtmlDescription();
|
getHtmlDescription();
|
||||||
|
|
Loading…
Reference in a new issue