Merge pull request #1079 from Bars107/master

Updates to my places.
This commit is contained in:
vshcherb 2015-02-19 17:58:54 +01:00
commit 31339453be
13 changed files with 247 additions and 56 deletions

View file

@ -21,8 +21,8 @@
<ImageView <ImageView
android:id="@+id/favourite_icon" android:id="@+id/favourite_icon"
android:layout_width="wrap_content" android:layout_width="@dimen/favorite_icon_size"
android:layout_height="fill_parent" android:layout_height="@dimen/favorite_icon_size"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginRight="@dimen/favorites_icon_right_margin"/> android:layout_marginRight="@dimen/favorites_icon_right_margin"/>

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

@ -48,6 +48,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center_vertical" android:gravity="center_vertical"
android:textSize="@dimen/download_descr_text_size"
android:maxLines="25" android:maxLines="25"
tools:text="@string/app_mode_aircraft"/> tools:text="@string/app_mode_aircraft"/>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/dialog_content_bottom_margin"
android:paddingLeft="@dimen/dialog_content_margin"
android:paddingRight="@dimen/dialog_content_margin"
android:paddingTop="@dimen/dialog_content_bottom_margin">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dialog_elements_vertical_margin"
android:text="@string/favourites_edit_dialog_name"/>
<EditText
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:selectAllOnFocus="true"/>
</LinearLayout>
</LinearLayout>

View file

@ -23,6 +23,7 @@
android:id="@+id/header" android:id="@+id/header"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/list_header_padding"
android:text="@string/download_tab_updates"/> android:text="@string/download_tab_updates"/>
</LinearLayout> </LinearLayout>

View file

@ -39,6 +39,7 @@
<dimen name="dialog_content_margin">24dp</dimen> <dimen name="dialog_content_margin">24dp</dimen>
<dimen name="dialog_content_bottom_margin">16dp</dimen> <dimen name="dialog_content_bottom_margin">16dp</dimen>
<dimen name="local_size_height">34dp</dimen> <dimen name="local_size_height">34dp</dimen>
<dimen name="favorite_icon_size">24dp</dimen>
<!-- TextSizes --> <!-- TextSizes -->
<dimen name="list_header_text_size">14sp</dimen> <dimen name="list_header_text_size">14sp</dimen>

View file

@ -9,6 +9,8 @@
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated). 3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
--> -->
<string name="share_note">Share note</string>
<string name="rename_recording">Rename recording</string>
<string name="watch">Watch</string> <string name="watch">Watch</string>
<string name="notes">Notes</string> <string name="notes">Notes</string>
<string name="online_map">Online map</string> <string name="online_map">Online map</string>
@ -1788,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();

View file

@ -20,6 +20,7 @@ import android.view.MenuItem;
import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.GpxSelectionHelper;
import net.osmand.plus.OsmAndLocationProvider; import net.osmand.plus.OsmAndLocationProvider;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
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 android.os.Bundle; import android.os.Bundle;
@ -29,6 +30,8 @@ import android.view.View;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TabHost.TabSpec; import android.widget.TabHost.TabSpec;
import android.widget.TextView; import android.widget.TextView;
import net.osmand.plus.audionotes.AudioVideoNotesPlugin;
import net.osmand.plus.audionotes.NotesFragment; import net.osmand.plus.audionotes.NotesFragment;
import net.osmand.plus.views.controls.PagerSlidingTabStrip; import net.osmand.plus.views.controls.PagerSlidingTabStrip;
@ -79,8 +82,11 @@ public class FavoritesActivity extends TabActivity {
List<TabItem> mTabs = new ArrayList<TabItem>(); List<TabItem> mTabs = new ArrayList<TabItem>();
mTabs.add(getTabIndicator(R.string.my_favorites, FavoritesTreeFragment.class)); mTabs.add(getTabIndicator(R.string.my_favorites, FavoritesTreeFragment.class));
mTabs.add(getTabIndicator(R.string.my_tracks, AvailableGPXFragment.class)); mTabs.add(getTabIndicator(R.string.my_tracks, AvailableGPXFragment.class));
AudioVideoNotesPlugin audioVideoNotesPlugin = OsmandPlugin.getEnabledPlugin(AudioVideoNotesPlugin.class);
mTabs.add(getTabIndicator(R.string.notes, NotesFragment.class)); if (audioVideoNotesPlugin != null && audioVideoNotesPlugin.isActive()
&& audioVideoNotesPlugin.getAllRecordings().size() > 0){
mTabs.add(getTabIndicator(R.string.notes, NotesFragment.class));
}
mTabs.add(getTabIndicator(R.string.selected_track, SelectedGPXFragment.class)); mTabs.add(getTabIndicator(R.string.selected_track, SelectedGPXFragment.class));
setViewPagerAdapter(mViewPager, mTabs); setViewPagerAdapter(mViewPager, mTabs);

View file

@ -169,10 +169,10 @@ public class AudioNotesLayer extends OsmandMapLayer implements IContextMenuProvi
@Override @Override
public String getObjectName(Object o) { public String getObjectName(Object o) {
if(o instanceof Recording){ if(o instanceof Recording){
if(((Recording)o).name == null) { if(((Recording)o).getName() == null) {
return view.getResources().getString(R.string.recording_default_name); return view.getResources().getString(R.string.recording_default_name);
} }
return ((Recording)o).name; //$NON-NLS-1$ return ((Recording)o).getName(); //$NON-NLS-1$
} }
return null; return null;
} }

View file

@ -137,8 +137,8 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
} }
public File file; public File file;
public String name;
private String name;
private double lat; private double lat;
private double lon; private double lon;
private long duration = -1; private long duration = -1;
@ -170,6 +170,14 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
} }
} }
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public boolean isPhoto() { public boolean isPhoto() {
return file.getName().endsWith(IMG_EXTENSION); return file.getName().endsWith(IMG_EXTENSION);
} }
@ -301,6 +309,9 @@ public class AudioVideoNotesPlugin extends OsmandPlugin {
return additional; return additional;
} }
public void setDescription() {
//TODO implement setting description
}
} }
private static void initializeRemoteControlRegistrationMethods() { private static void initializeRemoteControlRegistrationMethods() {

View file

@ -96,7 +96,7 @@ public class DashAudioVideoNotesFragment extends DashBaseFragment {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
getMyApplication().getSettings().setMapLocationToShow(recording.getLatitude(), recording.getLongitude(), 15, null, getMyApplication().getSettings().setMapLocationToShow(recording.getLatitude(), recording.getLongitude(), 15, null,
recording.name != null ? recording.name : recording.getDescription(getActivity()), recording.getName() != null ? recording.getName() : recording.getDescription(getActivity()),
recording); //$NON-NLS-1$ recording); //$NON-NLS-1$
MapActivity.launchMapActivityMoveToTop(getActivity()); MapActivity.launchMapActivityMoveToTop(getActivity());
} }
@ -107,8 +107,8 @@ public class DashAudioVideoNotesFragment extends DashBaseFragment {
public static void getNoteView(final AudioVideoNotesPlugin.Recording recording, View view, public static void getNoteView(final AudioVideoNotesPlugin.Recording recording, View view,
final Context ctx, final AudioVideoNotesPlugin plugin) { final Context ctx, final AudioVideoNotesPlugin plugin) {
if (recording.name != null){ if (recording.getName() != null){
((TextView) view.findViewById(R.id.name)).setText(recording.name); ((TextView) view.findViewById(R.id.name)).setText(recording.getName());
((TextView) view.findViewById(R.id.descr)).setText(recording.getDescription(ctx)); ((TextView) view.findViewById(R.id.descr)).setText(recording.getDescription(ctx));
} else { } else {
((TextView) view.findViewById(R.id.name)).setText(recording.getDescription(ctx)); ((TextView) view.findViewById(R.id.name)).setText(recording.getDescription(ctx));

View file

@ -1,19 +1,29 @@
package net.osmand.plus.audionotes; package net.osmand.plus.audionotes;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v7.widget.PopupMenu; import android.support.v7.widget.PopupMenu;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.activities.FavoritesActivity;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.audionotes.AudioVideoNotesPlugin.Recording; import net.osmand.plus.audionotes.AudioVideoNotesPlugin.Recording;
import net.osmand.plus.dialogs.DirectionsDialogs; import net.osmand.plus.dialogs.DirectionsDialogs;
import android.support.v4.app.ListFragment; import android.support.v4.app.ListFragment;
@ -43,11 +53,16 @@ public class NotesFragment extends ListFragment {
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
items = new ArrayList<Recording>(plugin.getAllRecordings()); items = new ArrayList<>(plugin.getAllRecordings());
listAdapter = new NotesAdapter(items); listAdapter = new NotesAdapter(items);
getListView().setAdapter(listAdapter); getListView().setAdapter(listAdapter);
} }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
((FavoritesActivity) getActivity()).getClearToolbar(false);
}
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
@ -60,7 +75,7 @@ public class NotesFragment extends ListFragment {
class NotesAdapter extends ArrayAdapter<AudioVideoNotesPlugin.Recording> { class NotesAdapter extends ArrayAdapter<AudioVideoNotesPlugin.Recording> {
NotesAdapter(List<AudioVideoNotesPlugin.Recording> recordingList) { NotesAdapter(List<AudioVideoNotesPlugin.Recording> recordingList) {
super(getActivity(), R.layout.dash_audio_video_notes_item, recordingList); super(getActivity(), R.layout.note, recordingList);
} }
@Override @Override
@ -72,9 +87,10 @@ public class NotesFragment extends ListFragment {
} }
final AudioVideoNotesPlugin.Recording recording = getItem(position); final AudioVideoNotesPlugin.Recording recording = getItem(position);
if (recording.name != null){ if (recording.getName() != null){
((TextView) row.findViewById(R.id.name)).setText(recording.name); ((TextView) row.findViewById(R.id.name)).setText(recording.getName());
((TextView) row.findViewById(R.id.descr)).setText(recording.getDescription(getActivity())); ((TextView) row.findViewById(R.id.descr)).setText(recording.getDescription(getActivity()));
row.findViewById(R.id.descr).setVisibility(View.VISIBLE);
} else { } else {
((TextView) row.findViewById(R.id.name)).setText(recording.getDescription(getActivity())); ((TextView) row.findViewById(R.id.name)).setText(recording.getDescription(getActivity()));
row.findViewById(R.id.descr).setVisibility(View.GONE); row.findViewById(R.id.descr).setVisibility(View.GONE);
@ -126,6 +142,9 @@ public class NotesFragment extends ListFragment {
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override @Override
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
getMyApplication().getSettings().setMapLocationToShow(recording.getLatitude(), recording.getLongitude(), 15, null, recording.getName(),
recording); //$NON-NLS-1$
MapActivity.launchMapActivityMoveToTop(getActivity());
return true; return true;
} }
}); });
@ -135,6 +154,21 @@ public class NotesFragment extends ListFragment {
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override @Override
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
if (recording.isPhoto()) {
Uri screenshotUri = Uri.parse(recording.file.getAbsolutePath());
sharingIntent.setType("image/*");
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
} else if (recording.isAudio()) {
Uri audioUri = Uri.parse(recording.file.getAbsolutePath());
sharingIntent.setType("audio/*");
sharingIntent.putExtra(Intent.EXTRA_STREAM, audioUri);
} else if (recording.isVideo()) {
Uri videoUri = Uri.parse(recording.file.getAbsolutePath());
sharingIntent.setType("video/*");
sharingIntent.putExtra(Intent.EXTRA_STREAM, videoUri);
}
startActivity(Intent.createChooser(sharingIntent, getString(R.string.share_note)));
return true; return true;
} }
}); });
@ -144,6 +178,7 @@ public class NotesFragment extends ListFragment {
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override @Override
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
editNote(recording);
return true; return true;
} }
}); });
@ -153,11 +188,42 @@ public class NotesFragment extends ListFragment {
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override @Override
public boolean onMenuItemClick(MenuItem item) { public boolean onMenuItemClick(MenuItem item) {
plugin.deleteRecording(recording); 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) {
plugin.deleteRecording(recording);
listAdapter.remove(recording);
}
});
builder.setNegativeButton(R.string.default_buttons_cancel, null);
builder.show();
return true; return true;
} }
}); });
optionsMenu.show(); optionsMenu.show();
} }
private void editNote(final Recording recording) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.rename_recording);
final View v = getActivity().getLayoutInflater().inflate(R.layout.note_edit_dialog,
getListView(), false);
final EditText editText = (EditText) v.findViewById(R.id.name);
builder.setView(v);
editText.setText(recording.getName());
builder.setNegativeButton(R.string.default_buttons_cancel, null);
builder.setPositiveButton(R.string.default_buttons_apply, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
recording.setName(editText.getText().toString());
recording.setDescription();
listAdapter.notifyDataSetInvalidated();
}
});
builder.create().show();
editText.requestFocus();
}
} }