Updated tracks tab in my places

This commit is contained in:
Bars107 2015-02-19 18:41:38 +02:00
parent 78b3c480b5
commit a1d75f8edd
4 changed files with 115 additions and 42 deletions

View file

@ -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"/>

View file

@ -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>

View file

@ -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();