commit
bbd64b1f52
11 changed files with 922 additions and 347 deletions
51
OsmAnd/res/layout-land/empty_state_osm_edits.xml
Normal file
51
OsmAnd/res/layout-land/empty_state_osm_edits.xml
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:osmand="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_marginTop="@dimen/empty_state_image_margin_top"
|
||||
android:layout_marginBottom="@dimen/empty_state_image_margin_bottom"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_marginLeft="@dimen/empty_state_image_margin_left"
|
||||
android:layout_marginStart="@dimen/empty_state_image_margin_left"
|
||||
android:id="@+id/empty_state_image_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
tools:src="@drawable/ic_empty_state_osm_edits_night"/>
|
||||
|
||||
<LinearLayout
|
||||
android:clipToPadding="false"
|
||||
android:paddingLeft="@dimen/empty_state_text_button_padding_left"
|
||||
android:paddingStart="@dimen/empty_state_text_button_padding_left"
|
||||
android:paddingRight="@dimen/empty_state_text_button_padding_right"
|
||||
android:paddingEnd="@dimen/empty_state_text_button_padding_right"
|
||||
android:paddingTop="@dimen/empty_state_text_button_padding_top"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<net.osmand.plus.widgets.TextViewEx
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/empty_state_text_interval"
|
||||
android:background="@null"
|
||||
android:text="@string/empty_state_osm_edits"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="@dimen/empty_state_text_size"
|
||||
osmand:typeface="@string/font_roboto_medium"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:text="@string/empty_state_osm_edits_descr"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/empty_state_text_desc_size"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
39
OsmAnd/res/layout/empty_state_osm_edits.xml
Normal file
39
OsmAnd/res/layout/empty_state_osm_edits.xml
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:osmand="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/empty_state_image_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/empty_state_image_margin_bottom"
|
||||
android:layout_marginTop="@dimen/empty_state_image_margin_top"
|
||||
tools:src="@drawable/ic_empty_state_osm_edits_night"/>
|
||||
|
||||
<net.osmand.plus.widgets.TextViewEx
|
||||
osmand:typeface="@string/font_roboto_medium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/empty_state_text_interval"
|
||||
android:background="@null"
|
||||
android:text="@string/empty_state_osm_edits"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="@dimen/empty_state_text_size"/>
|
||||
|
||||
<TextView
|
||||
android:gravity="center"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:layout_marginLeft="@dimen/empty_state_text_desc_margin"
|
||||
android:layout_marginRight="@dimen/empty_state_text_desc_margin"
|
||||
android:text="@string/empty_state_osm_edits_descr"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textSize="@dimen/empty_state_text_desc_size"/>
|
||||
|
||||
</LinearLayout>
|
|
@ -0,0 +1,210 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:osmand="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/bg_color"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/osm_edit_options_scroll_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="@dimen/bottom_sheet_content_padding_small">
|
||||
|
||||
<net.osmand.plus.widgets.TextViewEx
|
||||
android:id="@+id/osm_edit_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/bottom_sheet_title_height"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="@dimen/content_padding"
|
||||
android:paddingRight="@dimen/content_padding"
|
||||
tools:text="Universal Bank"
|
||||
android:textAppearance="@style/TextAppearance.ListItemTitle"
|
||||
osmand:typeface="@string/font_roboto_medium"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/upload_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/bottom_sheet_list_item_height"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:minHeight="@dimen/bottom_sheet_list_item_height"
|
||||
android:paddingLeft="@dimen/content_padding"
|
||||
android:paddingRight="@dimen/content_padding">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/upload_icon"
|
||||
android:layout_width="@dimen/standard_icon_size"
|
||||
android:layout_height="@dimen/standard_icon_size"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
|
||||
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
|
||||
tools:src="@drawable/ic_action_export"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:text="@string/local_openstreetmap_upload"
|
||||
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/show_on_map_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/bottom_sheet_list_item_height"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:minHeight="@dimen/bottom_sheet_list_item_height"
|
||||
android:paddingLeft="@dimen/content_padding"
|
||||
android:paddingRight="@dimen/content_padding">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/show_on_map_icon"
|
||||
android:layout_width="@dimen/standard_icon_size"
|
||||
android:layout_height="@dimen/standard_icon_size"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
|
||||
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
|
||||
tools:background="@drawable/ic_show_on_map"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_weight="1"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:text="@string/shared_string_show_on_map"
|
||||
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginBottom="@dimen/bottom_sheet_divider_margin_bottom"
|
||||
android:layout_marginLeft="@dimen/bottom_sheet_divider_margin_start"
|
||||
android:layout_marginStart="@dimen/bottom_sheet_divider_margin_start"
|
||||
android:layout_marginTop="@dimen/bottom_sheet_divider_margin_top"
|
||||
android:background="?attr/dashboard_divider"/>
|
||||
|
||||
<LinearLayout
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
android:id="@+id/modify_osm_change_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/bottom_sheet_list_item_height"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:minHeight="@dimen/bottom_sheet_list_item_height"
|
||||
android:paddingLeft="@dimen/content_padding"
|
||||
android:paddingRight="@dimen/content_padding">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/modify_osm_change_icon"
|
||||
android:layout_width="@dimen/standard_icon_size"
|
||||
android:layout_height="@dimen/standard_icon_size"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
|
||||
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
|
||||
tools:src="@drawable/ic_action_edit_dark"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:text="@string/poi_context_menu_modify_osm_change"
|
||||
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
android:id="@+id/modify_osm_note_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/bottom_sheet_list_item_height"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:minHeight="@dimen/bottom_sheet_list_item_height"
|
||||
android:paddingLeft="@dimen/content_padding"
|
||||
android:paddingRight="@dimen/content_padding">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/modify_osm_note_icon"
|
||||
android:layout_width="@dimen/standard_icon_size"
|
||||
android:layout_height="@dimen/standard_icon_size"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
|
||||
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
|
||||
tools:src="@drawable/ic_action_edit_dark"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:text="@string/context_menu_item_modify_note"
|
||||
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/delete_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/bottom_sheet_list_item_height"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:minHeight="@dimen/bottom_sheet_list_item_height"
|
||||
android:paddingLeft="@dimen/content_padding"
|
||||
android:paddingRight="@dimen/content_padding">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/delete_icon"
|
||||
android:layout_width="@dimen/standard_icon_size"
|
||||
android:layout_height="@dimen/standard_icon_size"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/bottom_sheet_icon_margin"
|
||||
android:layout_marginRight="@dimen/bottom_sheet_icon_margin"
|
||||
tools:src="@drawable/ic_action_delete_dark"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:text="@string/shared_string_delete"
|
||||
android:textAppearance="@style/TextAppearance.ListItemTitle"/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?attr/dashboard_divider"/>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/cancel_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/bottom_sheet_cancel_button_height"
|
||||
android:background="?attr/selectableItemBackground">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/cancel_row_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:text="@string/shared_string_close"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="?attr/color_dialog_buttons"
|
||||
android:textSize="@dimen/default_desc_text_size"
|
||||
android:textStyle="bold"/>
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
|
@ -45,4 +45,4 @@
|
|||
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
|
@ -58,8 +58,9 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:layout_marginTop="@dimen/map_widget_icon_margin"
|
||||
android:textColor="?android:textColorSecondary"
|
||||
android:textSize="@dimen/default_sub_text_size"
|
||||
android:textSize="@dimen/default_desc_text_size"
|
||||
tools:text="Oct 13, 2017 * 3 MB * 01:14"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
@ -305,4 +305,8 @@
|
|||
<color name="coordinate_input_keyboard_icon_color">#9fadfc</color>
|
||||
<color name="coordinate_input_error_color">#ed5421</color>
|
||||
|
||||
<color name="color_osm_edit_create">#78cc5c</color>
|
||||
<color name="color_osm_edit_modify">#fac403</color>
|
||||
<color name="color_osm_edit_delete">#ee5622</color>
|
||||
|
||||
</resources>
|
|
@ -9,6 +9,11 @@
|
|||
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
|
||||
-->
|
||||
<string name="empty_state_osm_edits">Create or modify OSM objects</string>
|
||||
<string name="empty_state_osm_edits_descr">Create or modify OSM POI, opening or commenting OSM Notes, and contributing recorded GPX files.</string>
|
||||
<string name="shared_string_deleted">Deleted</string>
|
||||
<string name="shared_string_edited">Edited</string>
|
||||
<string name="shared_string_added">Added</string>
|
||||
<string name="marker_activated">Marker %s activated.</string>
|
||||
<string name="one_tap_active_descr">Tap on marker on the map, move it to the first place in active markers, without opening context menu.</string>
|
||||
<string name="one_tap_active">One tap active</string>
|
||||
|
|
|
@ -0,0 +1,129 @@
|
|||
package net.osmand.plus.osmedit;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.ContextThemeWrapper;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.base.MenuBottomSheetDialogFragment;
|
||||
import net.osmand.plus.widgets.TextViewEx;
|
||||
|
||||
public class OsmEditOptionsBottomSheetDialogFragment extends MenuBottomSheetDialogFragment {
|
||||
|
||||
public final static String TAG = "OsmEditOptionsBottomSheetDialogFragment";
|
||||
|
||||
public static final String OSM_POINT = "osm_point";
|
||||
|
||||
private OsmEditOptionsFragmentListener listener;
|
||||
|
||||
public void setListener(OsmEditOptionsFragmentListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
|
||||
final View mainView = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.fragment_osm_edit_options_bottom_sheet_dialog, container);
|
||||
|
||||
Bundle args = getArguments();
|
||||
if (args != null) {
|
||||
final OsmPoint osmPoint = (OsmPoint) args.getSerializable(OSM_POINT);
|
||||
|
||||
((TextViewEx) mainView.findViewById(R.id.osm_edit_name)).setText(OsmEditingPlugin.getName(osmPoint) + ":");
|
||||
|
||||
((ImageView) mainView.findViewById(R.id.upload_icon)).setImageDrawable(getContentIcon(R.drawable.ic_action_export));
|
||||
mainView.findViewById(R.id.upload_row).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (listener != null) {
|
||||
listener.onUploadClick(osmPoint);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
((ImageView) mainView.findViewById(R.id.show_on_map_icon)).setImageDrawable(getContentIcon(R.drawable.ic_show_on_map));
|
||||
mainView.findViewById(R.id.show_on_map_row).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (listener != null) {
|
||||
listener.onShowOnMapClick(osmPoint);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
if (osmPoint instanceof OpenstreetmapPoint && osmPoint.getAction() != OsmPoint.Action.DELETE) {
|
||||
mainView.findViewById(R.id.modify_osm_change_row).setVisibility(View.VISIBLE);
|
||||
((ImageView) mainView.findViewById(R.id.modify_osm_change_icon)).setImageDrawable(getContentIcon(R.drawable.ic_action_edit_dark));
|
||||
mainView.findViewById(R.id.modify_osm_change_row).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (listener != null) {
|
||||
listener.onModifyOsmChangeClick(osmPoint);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (osmPoint instanceof OsmNotesPoint) {
|
||||
mainView.findViewById(R.id.modify_osm_note_row).setVisibility(View.VISIBLE);
|
||||
((ImageView) mainView.findViewById(R.id.modify_osm_note_icon)).setImageDrawable(getContentIcon(R.drawable.ic_action_edit_dark));
|
||||
mainView.findViewById(R.id.modify_osm_note_row).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (listener != null) {
|
||||
listener.onModifyOsmNoteClick(osmPoint);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
((ImageView) mainView.findViewById(R.id.delete_icon)).setImageDrawable(getContentIcon(R.drawable.ic_action_delete_dark));
|
||||
mainView.findViewById(R.id.delete_row).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
if (listener != null) {
|
||||
listener.onDeleteClick(osmPoint);
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (nightMode) {
|
||||
((TextViewEx) mainView.findViewById(R.id.osm_edit_name)).setTextColor(getResources().getColor(R.color.ctx_menu_info_text_dark));
|
||||
}
|
||||
|
||||
mainView.findViewById(R.id.cancel_row).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
dismiss();
|
||||
}
|
||||
});
|
||||
|
||||
setupHeightAndBackground(mainView, R.id.osm_edit_options_scroll_view);
|
||||
|
||||
return mainView;
|
||||
}
|
||||
|
||||
public interface OsmEditOptionsFragmentListener {
|
||||
|
||||
void onUploadClick(OsmPoint osmPoint);
|
||||
|
||||
void onShowOnMapClick(OsmPoint osmPoint);
|
||||
|
||||
void onModifyOsmChangeClick(OsmPoint osmPoint);
|
||||
|
||||
void onModifyOsmNoteClick(OsmPoint osmPoint);
|
||||
|
||||
void onDeleteClick(OsmPoint osmPoint);
|
||||
}
|
||||
}
|
|
@ -258,11 +258,9 @@ public class OsmEditingPlugin extends OsmandPlugin {
|
|||
|
||||
@Override
|
||||
public void addMyPlacesTab(FavoritesActivity favoritesActivity, List<TabActivity.TabItem> mTabs, Intent intent) {
|
||||
if (getDBPOI().getOpenstreetmapPoints().size() > 0 || getDBBug().getOsmbugsPoints().size() > 0) {
|
||||
mTabs.add(favoritesActivity.getTabIndicator(R.string.osm_edits, OsmEditsFragment.class));
|
||||
if (intent != null && "OSM".equals(intent.getStringExtra("TAB"))) {
|
||||
app.getSettings().FAVORITES_TAB.set(R.string.osm_edits);
|
||||
}
|
||||
mTabs.add(favoritesActivity.getTabIndicator(R.string.osm_edits, OsmEditsFragment.class));
|
||||
if (intent != null && "OSM".equals(intent.getStringExtra("TAB"))) {
|
||||
app.getSettings().FAVORITES_TAB.set(R.string.osm_edits);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -423,21 +421,32 @@ public class OsmEditingPlugin extends OsmandPlugin {
|
|||
|
||||
public static String getEditName(OsmPoint point) {
|
||||
String prefix = getPrefix(point);
|
||||
String name = getName(point);
|
||||
if (point.getGroup() == OsmPoint.Group.POI) {
|
||||
String subtype = "";
|
||||
if (!Algorithms.isEmpty(((OpenstreetmapPoint) point).getSubtype())) {
|
||||
subtype = " (" + ((OpenstreetmapPoint) point).getSubtype() + ") ";
|
||||
}
|
||||
return prefix + subtype + ((OpenstreetmapPoint) point).getName();
|
||||
return prefix + subtype + name;
|
||||
} else if (point.getGroup() == OsmPoint.Group.BUG) {
|
||||
return prefix + ((OsmNotesPoint) point).getText();
|
||||
return prefix + name;
|
||||
} else {
|
||||
return prefix;
|
||||
}
|
||||
}
|
||||
|
||||
private static String getPrefix(OsmPoint osmPoint) {
|
||||
return (osmPoint.getGroup() == OsmPoint.Group.POI ? "POI " : "Bug ") + " id: " + osmPoint.getId() + " ";
|
||||
public static String getName(OsmPoint point) {
|
||||
if (point.getGroup() == OsmPoint.Group.POI) {
|
||||
return ((OpenstreetmapPoint) point).getName();
|
||||
} else if (point.getGroup() == OsmPoint.Group.BUG) {
|
||||
return ((OsmNotesPoint) point).getText();
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public static String getPrefix(OsmPoint osmPoint) {
|
||||
return (osmPoint.getGroup() == OsmPoint.Group.POI ? "POI" : "Bug") + " id: " + osmPoint.getId() + " ";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
228
OsmAnd/src/net/osmand/plus/osmedit/OsmEditsAdapter.java
Normal file
228
OsmAnd/src/net/osmand/plus/osmedit/OsmEditsAdapter.java
Normal file
|
@ -0,0 +1,228 @@
|
|||
package net.osmand.plus.osmedit;
|
||||
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import net.osmand.osm.PoiType;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.render.RenderingIcons;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class OsmEditsAdapter extends ArrayAdapter<OsmPoint> {
|
||||
|
||||
private OsmandApplication app;
|
||||
|
||||
private boolean selectionMode;
|
||||
private List<OsmPoint> selectedOsmEdits;
|
||||
|
||||
private OsmEditsAdapterListener listener;
|
||||
|
||||
public OsmEditsAdapter(OsmandApplication app, @NonNull List<OsmPoint> points) {
|
||||
super(app, 0, points);
|
||||
this.app = app;
|
||||
}
|
||||
|
||||
public boolean isSelectionMode() {
|
||||
return selectionMode;
|
||||
}
|
||||
|
||||
public void setSelectionMode(boolean selectionMode) {
|
||||
this.selectionMode = selectionMode;
|
||||
}
|
||||
|
||||
public void setSelectedOsmEdits(List<OsmPoint> selectedOsmEdits) {
|
||||
this.selectedOsmEdits = selectedOsmEdits;
|
||||
}
|
||||
|
||||
public void setAdapterListener(OsmEditsAdapterListener listener) {
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
|
||||
View view = convertView;
|
||||
if (view == null) {
|
||||
view = LayoutInflater.from(getContext()).inflate(R.layout.note_list_item, parent, false);
|
||||
OsmEditViewHolder holder = new OsmEditViewHolder(view);
|
||||
view.setTag(holder);
|
||||
}
|
||||
final OsmPoint osmEdit = getItem(position);
|
||||
|
||||
if (osmEdit != null) {
|
||||
final OsmEditViewHolder holder = (OsmEditViewHolder) view.getTag();
|
||||
|
||||
holder.titleTextView.setText(OsmEditingPlugin.getName(osmEdit));
|
||||
holder.descriptionTextView.setText(getDescription(osmEdit));
|
||||
Drawable icon = getIcon(osmEdit);
|
||||
if (icon != null) {
|
||||
holder.icon.setImageDrawable(icon);
|
||||
}
|
||||
if (selectionMode) {
|
||||
holder.optionsImageButton.setVisibility(View.GONE);
|
||||
holder.selectCheckBox.setVisibility(View.VISIBLE);
|
||||
holder.selectCheckBox.setChecked(selectedOsmEdits.contains(osmEdit));
|
||||
holder.icon.setVisibility(View.GONE);
|
||||
holder.selectCheckBox.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (listener != null) {
|
||||
listener.onItemSelect(osmEdit, holder.selectCheckBox.isChecked());
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
holder.icon.setVisibility(View.VISIBLE);
|
||||
holder.optionsImageButton.setVisibility(View.VISIBLE);
|
||||
holder.selectCheckBox.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
holder.optionsImageButton.setImageDrawable(app.getIconsCache().getThemedIcon(R.drawable.ic_overflow_menu_white));
|
||||
holder.optionsImageButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (listener != null) {
|
||||
listener.onOptionsClick(osmEdit);
|
||||
}
|
||||
}
|
||||
});
|
||||
holder.mainView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (selectionMode) {
|
||||
holder.selectCheckBox.performClick();
|
||||
} else {
|
||||
if (listener != null) {
|
||||
listener.onItemShowMap(osmEdit);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
boolean showDivider = getCount() > 1 && position != getCount() - 1;
|
||||
holder.bottomDivider.setVisibility(showDivider ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
private Drawable getIcon(OsmPoint point) {
|
||||
if (point.getGroup() == OsmPoint.Group.POI) {
|
||||
OpenstreetmapPoint osmPoint = (OpenstreetmapPoint) point;
|
||||
int iconResId = 0;
|
||||
String poiTranslation = osmPoint.getEntity().getTag(EditPoiData.POI_TYPE_TAG);
|
||||
if (poiTranslation != null) {
|
||||
Map<String, PoiType> poiTypeMap = app.getPoiTypes().getAllTranslatedNames(false);
|
||||
PoiType poiType = poiTypeMap.get(poiTranslation.toLowerCase());
|
||||
if (poiType != null) {
|
||||
String id = null;
|
||||
if (RenderingIcons.containsBigIcon(poiType.getIconKeyName())) {
|
||||
id = poiType.getIconKeyName();
|
||||
} else if (RenderingIcons.containsBigIcon(poiType.getOsmTag() + "_" + poiType.getOsmValue())) {
|
||||
id = poiType.getOsmTag() + "_" + poiType.getOsmValue();
|
||||
}
|
||||
if (id != null) {
|
||||
iconResId = RenderingIcons.getBigIconResourceId(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (iconResId == 0) {
|
||||
iconResId = R.drawable.ic_type_info;
|
||||
}
|
||||
int colorResId = R.color.color_distance;
|
||||
if (point.getAction() == OsmPoint.Action.CREATE) {
|
||||
colorResId = R.color.color_osm_edit_create;
|
||||
} else if (point.getAction() == OsmPoint.Action.MODIFY) {
|
||||
colorResId = R.color.color_osm_edit_modify;
|
||||
} else if (point.getAction() == OsmPoint.Action.DELETE) {
|
||||
colorResId = R.color.color_osm_edit_delete;
|
||||
} else if (point.getAction() == OsmPoint.Action.REOPEN) {
|
||||
colorResId = R.color.color_osm_edit_modify;
|
||||
}
|
||||
return app.getIconsCache().getIcon(iconResId, colorResId);
|
||||
} else if (point.getGroup() == OsmPoint.Group.BUG) {
|
||||
return app.getIconsCache().getIcon(R.drawable.ic_type_bug, R.color.color_distance);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getDescription(OsmPoint point) {
|
||||
String action = "";
|
||||
if (point.getAction() == OsmPoint.Action.CREATE) {
|
||||
action = getContext().getString(R.string.shared_string_added);
|
||||
} else if (point.getAction() == OsmPoint.Action.MODIFY) {
|
||||
action = getContext().getString(R.string.shared_string_edited);
|
||||
} else if (point.getAction() == OsmPoint.Action.DELETE) {
|
||||
action = getContext().getString(R.string.shared_string_deleted);
|
||||
} else if (point.getAction() == OsmPoint.Action.REOPEN) {
|
||||
action = getContext().getString(R.string.shared_string_edited);
|
||||
}
|
||||
|
||||
String category = "";
|
||||
if (point.getGroup() == OsmPoint.Group.POI) {
|
||||
category = ((OpenstreetmapPoint) point).getEntity().getTag(EditPoiData.POI_TYPE_TAG);
|
||||
}
|
||||
|
||||
String comment = "";
|
||||
if (point.getGroup() == OsmPoint.Group.BUG) {
|
||||
comment = getContext().getString(R.string.osn_bug_name);
|
||||
}
|
||||
|
||||
String prefix = OsmEditingPlugin.getPrefix(point);
|
||||
|
||||
String description = "";
|
||||
if (!Algorithms.isEmpty(action)) {
|
||||
description += action + " • ";
|
||||
}
|
||||
if (!Algorithms.isEmpty(comment)) {
|
||||
description += comment + " • ";
|
||||
}
|
||||
if (!Algorithms.isEmpty(category)) {
|
||||
description += category + " • ";
|
||||
}
|
||||
description += prefix;
|
||||
|
||||
return description;
|
||||
}
|
||||
|
||||
private class OsmEditViewHolder {
|
||||
View mainView;
|
||||
ImageView icon;
|
||||
CheckBox selectCheckBox;
|
||||
ImageButton optionsImageButton;
|
||||
TextView titleTextView;
|
||||
TextView descriptionTextView;
|
||||
View bottomDivider;
|
||||
|
||||
OsmEditViewHolder(View view) {
|
||||
mainView = view;
|
||||
icon = (ImageView) view.findViewById(R.id.icon);
|
||||
selectCheckBox = (CheckBox) view.findViewById(R.id.check_box);
|
||||
optionsImageButton = (ImageButton) view.findViewById(R.id.options);
|
||||
titleTextView = (TextView) view.findViewById(R.id.title);
|
||||
descriptionTextView = (TextView) view.findViewById(R.id.description);
|
||||
bottomDivider = view.findViewById(R.id.bottom_divider);
|
||||
}
|
||||
}
|
||||
|
||||
public interface OsmEditsAdapterListener {
|
||||
|
||||
void onItemSelect(OsmPoint point, boolean checked);
|
||||
|
||||
void onItemShowMap(OsmPoint point);
|
||||
|
||||
void onOptionsClick(OsmPoint note);
|
||||
}
|
||||
}
|
|
@ -9,10 +9,9 @@ import android.os.AsyncTask;
|
|||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.view.MenuItemCompat;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.view.ActionMode;
|
||||
import android.support.v7.widget.PopupMenu;
|
||||
import android.util.Xml;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
|
@ -20,8 +19,7 @@ import android.view.MenuInflater;
|
|||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemClickListener;
|
||||
import android.view.ViewStub;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.EditText;
|
||||
|
@ -30,7 +28,6 @@ import android.widget.ListView;
|
|||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.osm.edit.Node;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
|
@ -41,13 +38,12 @@ import net.osmand.plus.activities.ActionBarProgressActivity;
|
|||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.activities.OsmandActionBarActivity;
|
||||
import net.osmand.plus.base.OsmAndListFragment;
|
||||
import net.osmand.plus.dialogs.DirectionsDialogs;
|
||||
import net.osmand.plus.dialogs.ProgressDialogFragment;
|
||||
import net.osmand.plus.helpers.AndroidUiHelper;
|
||||
import net.osmand.plus.myplaces.FavoritesActivity;
|
||||
import net.osmand.plus.osmedit.OsmPoint.Action;
|
||||
import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment;
|
||||
import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.PoiUploaderType;
|
||||
import net.osmand.plus.osmedit.OsmEditOptionsBottomSheetDialogFragment.OsmEditOptionsFragmentListener;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import org.xmlpull.v1.XmlSerializer;
|
||||
|
@ -60,44 +56,68 @@ import java.util.Iterator;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class OsmEditsFragment extends OsmAndListFragment
|
||||
implements SendPoiDialogFragment.ProgressDialogPoiUploader, OpenstreetmapLocalUtil.OnNodeCommittedListener {
|
||||
OsmEditingPlugin plugin;
|
||||
|
||||
private OsmEditsAdapter listAdapter;
|
||||
private View footerView;
|
||||
|
||||
private boolean selectionMode = false;
|
||||
|
||||
public class OsmEditsFragment extends OsmAndListFragment implements SendPoiDialogFragment.ProgressDialogPoiUploader, OpenstreetmapLocalUtil.OnNodeCommittedListener {
|
||||
|
||||
private final static int MODE_DELETE = 100;
|
||||
private final static int MODE_UPLOAD = 101;
|
||||
|
||||
private ActionMode actionMode;
|
||||
private long refreshId;
|
||||
private OsmEditingPlugin plugin;
|
||||
|
||||
private View footerView;
|
||||
private View headerView;
|
||||
private View emptyView;
|
||||
|
||||
private List<OsmPoint> osmEdits = new ArrayList<>();
|
||||
private OsmEditsAdapter listAdapter;
|
||||
private ArrayList<OsmPoint> osmEditsSelected = new ArrayList<>();
|
||||
|
||||
private ActionMode actionMode;
|
||||
private long refreshId;
|
||||
|
||||
public static void getOsmEditView(View v, OsmPoint child, OsmandApplication app) {
|
||||
TextView viewName = ((TextView) v.findViewById(R.id.name));
|
||||
ImageView icon = (ImageView) v.findViewById(R.id.icon);
|
||||
String name = OsmEditingPlugin.getEditName(child);
|
||||
viewName.setText(name);
|
||||
if (child.getGroup() == OsmPoint.Group.POI) {
|
||||
icon.setImageDrawable(app.getIconsCache().getIcon(R.drawable.ic_type_info, R.color.color_distance));
|
||||
} else if (child.getGroup() == OsmPoint.Group.BUG) {
|
||||
icon.setImageDrawable(app.getIconsCache().getIcon(R.drawable.ic_type_bug, R.color.color_distance));
|
||||
}
|
||||
|
||||
TextView descr = (TextView) v.findViewById(R.id.description);
|
||||
if (child.getAction() == OsmPoint.Action.CREATE) {
|
||||
descr.setText(R.string.action_create);
|
||||
} else if (child.getAction() == OsmPoint.Action.MODIFY) {
|
||||
descr.setText(R.string.action_modify);
|
||||
} else if (child.getAction() == OsmPoint.Action.DELETE) {
|
||||
descr.setText(R.string.action_delete);
|
||||
} else if (child.getAction() == OsmPoint.Action.REOPEN) {
|
||||
descr.setText(R.string.action_modify);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
setHasOptionsMenu(true);
|
||||
plugin = OsmandPlugin.getEnabledPlugin(OsmEditingPlugin.class);
|
||||
View view = getActivity().getLayoutInflater().inflate(R.layout.update_index, container, false);
|
||||
((TextView) view.findViewById(R.id.header)).setText(R.string.your_edits);
|
||||
|
||||
final CheckBox selectAll = (CheckBox) view.findViewById(R.id.select_all);
|
||||
selectAll.setVisibility(View.GONE);
|
||||
selectAll.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (selectAll.isChecked()) {
|
||||
selectAll();
|
||||
} else {
|
||||
deselectAll();
|
||||
}
|
||||
updateSelectionTitle(actionMode);
|
||||
}
|
||||
});
|
||||
View view = inflater.inflate(R.layout.update_index, container, false);
|
||||
view.findViewById(R.id.header_layout).setVisibility(View.GONE);
|
||||
ViewStub emptyStub = (ViewStub) view.findViewById(R.id.empty_view_stub);
|
||||
emptyStub.setLayoutResource(R.layout.empty_state_osm_edits);
|
||||
emptyView = emptyStub.inflate();
|
||||
int icRes = getMyApplication().getSettings().isLightContent()
|
||||
? R.drawable.ic_empty_state_osm_edits_day : R.drawable.ic_empty_state_osm_edits_night;
|
||||
((ImageView) emptyView.findViewById(R.id.empty_state_image_view)).setImageResource(icRes);
|
||||
emptyView.setBackgroundColor(getResources().getColor(getMyApplication().getSettings()
|
||||
.isLightContent() ? R.color.ctx_menu_info_view_bg_light : R.color.ctx_menu_info_view_bg_dark));
|
||||
|
||||
Fragment optionsFragment = getChildFragmentManager().findFragmentByTag(OsmEditOptionsBottomSheetDialogFragment.TAG);
|
||||
if (optionsFragment != null) {
|
||||
((OsmEditOptionsBottomSheetDialogFragment) optionsFragment).setListener(createOsmEditOptionsFragmentListener());
|
||||
}
|
||||
|
||||
plugin.getPoiModificationLocalUtil().addNodeCommittedListener(this);
|
||||
return view;
|
||||
}
|
||||
|
@ -108,23 +128,24 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
super.onDestroyView();
|
||||
}
|
||||
|
||||
public android.widget.ArrayAdapter<?> getAdapter() {
|
||||
@Override
|
||||
public ArrayAdapter<?> getAdapter() {
|
||||
return listAdapter;
|
||||
}
|
||||
|
||||
|
||||
private void selectAll() {
|
||||
for (int i = 0; i < listAdapter.getCount(); i++) {
|
||||
OsmPoint point = listAdapter.getItem(i);
|
||||
for (int i = 0; i < osmEdits.size(); i++) {
|
||||
OsmPoint point = osmEdits.get(i);
|
||||
if (!osmEditsSelected.contains(point)) {
|
||||
osmEditsSelected.add(point);
|
||||
}
|
||||
}
|
||||
listAdapter.notifyDataSetInvalidated();
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private void deselectAll() {
|
||||
osmEditsSelected.clear();
|
||||
listAdapter.notifyDataSetInvalidated();
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -147,22 +168,22 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
return true;
|
||||
}
|
||||
});
|
||||
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
||||
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
|
||||
item = menu.add(R.string.local_osm_changes_backup).
|
||||
setIcon(R.drawable.ic_action_gshare_dark);
|
||||
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
||||
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
new BackupOpenstreetmapPointAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
|
||||
listAdapter.dataPoints.toArray(new OsmPoint[listAdapter.dataPoints.size()]));
|
||||
osmEdits.toArray(new OsmPoint[osmEdits.size()]));
|
||||
return true;
|
||||
}
|
||||
});
|
||||
item = menu.add(R.string.shared_string_delete_all).
|
||||
setIcon(R.drawable.ic_action_delete_dark);
|
||||
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
|
||||
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
|
@ -178,8 +199,7 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
@Override
|
||||
public boolean onCreateActionMode(final ActionMode mode, Menu menu) {
|
||||
enableSelectionMode(true);
|
||||
MenuItem item = menu.add(R.string.local_openstreetmap_uploadall).
|
||||
setIcon(R.drawable.ic_action_export);
|
||||
MenuItem item = menu.add(R.string.local_openstreetmap_uploadall).setIcon(R.drawable.ic_action_export);
|
||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
|
@ -188,9 +208,9 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
return true;
|
||||
}
|
||||
});
|
||||
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
|
||||
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
osmEditsSelected.clear();
|
||||
listAdapter.notifyDataSetInvalidated();
|
||||
listAdapter.notifyDataSetChanged();
|
||||
updateSelectionMode(mode);
|
||||
return true;
|
||||
}
|
||||
|
@ -208,7 +228,7 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
@Override
|
||||
public void onDestroyActionMode(ActionMode mode) {
|
||||
enableSelectionMode(false);
|
||||
listAdapter.notifyDataSetInvalidated();
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -240,9 +260,9 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
return true;
|
||||
}
|
||||
});
|
||||
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
|
||||
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
osmEditsSelected.clear();
|
||||
listAdapter.notifyDataSetInvalidated();
|
||||
listAdapter.notifyDataSetChanged();
|
||||
updateSelectionMode(mode);
|
||||
return true;
|
||||
}
|
||||
|
@ -260,7 +280,7 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
@Override
|
||||
public void onDestroyActionMode(ActionMode mode) {
|
||||
enableSelectionMode(false);
|
||||
listAdapter.notifyDataSetInvalidated();
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -285,9 +305,9 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
if (view == null) {
|
||||
return;
|
||||
}
|
||||
CheckBox selectAll = (CheckBox) view.findViewById(R.id.select_all);
|
||||
for (int i = 0; i < listAdapter.getCount(); i++) {
|
||||
OsmPoint point = listAdapter.getItem(i);
|
||||
CheckBox selectAll = (CheckBox) view.findViewById(R.id.check_box);
|
||||
for (int i = 0; i < osmEdits.size(); i++) {
|
||||
OsmPoint point = osmEdits.get(i);
|
||||
if (!osmEditsSelected.contains(point)) {
|
||||
selectAll.setChecked(false);
|
||||
return;
|
||||
|
@ -297,11 +317,10 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
}
|
||||
|
||||
private void enableSelectionMode(boolean selectionMode) {
|
||||
this.selectionMode = selectionMode;
|
||||
listAdapter.setSelectionMode(selectionMode);
|
||||
//noinspection ConstantConditions
|
||||
getView().findViewById(R.id.select_all).setVisibility(selectionMode ? View.VISIBLE : View.GONE);
|
||||
((FavoritesActivity) getActivity()).setToolbarVisibility(!selectionMode &&
|
||||
AndroidUiHelper.isOrientationPortrait(getActivity()));
|
||||
getView().findViewById(R.id.check_box).setVisibility(selectionMode ? View.VISIBLE : View.GONE);
|
||||
((FavoritesActivity) getActivity()).setToolbarVisibility(!selectionMode && AndroidUiHelper.isOrientationPortrait(getActivity()));
|
||||
((FavoritesActivity) getActivity()).updateListViewFooter(footerView);
|
||||
}
|
||||
|
||||
|
@ -313,17 +332,15 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
}
|
||||
|
||||
private void deleteItems(final ArrayList<OsmPoint> points) {
|
||||
DeleteOsmEditsConfirmDialogFragment.createInstance(points).
|
||||
show(getChildFragmentManager(), DeleteOsmEditsConfirmDialogFragment.TAG);
|
||||
DeleteOsmEditsConfirmDialogFragment.createInstance(points).show(getChildFragmentManager(), DeleteOsmEditsConfirmDialogFragment.TAG);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
getListView().setBackgroundColor(
|
||||
getResources().getColor(
|
||||
getMyApplication().getSettings().isLightContent() ? R.color.ctx_menu_info_view_bg_light
|
||||
: R.color.ctx_menu_info_view_bg_dark));
|
||||
getListView().setBackgroundColor(getResources().getColor(getMyApplication().getSettings().isLightContent()
|
||||
? R.color.ctx_menu_info_view_bg_light
|
||||
: R.color.ctx_menu_info_view_bg_dark));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -333,34 +350,62 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
}
|
||||
|
||||
private void fetchData() {
|
||||
ArrayList<OsmPoint> dataPoints = new ArrayList<>();
|
||||
osmEdits = new ArrayList<>();
|
||||
List<OpenstreetmapPoint> l1 = plugin.getDBPOI().getOpenstreetmapPoints();
|
||||
List<OsmNotesPoint> l2 = plugin.getDBBug().getOsmbugsPoints();
|
||||
dataPoints.addAll(l1);
|
||||
dataPoints.addAll(l2);
|
||||
if (listAdapter == null) {
|
||||
listAdapter = new OsmEditsAdapter(dataPoints);
|
||||
ListView listView = getListView();
|
||||
if (dataPoints.size() > 0 && footerView == null) {
|
||||
//listView.addHeaderView(getActivity().getLayoutInflater().inflate(R.layout.list_shadow_header, null, false));
|
||||
footerView = getActivity().getLayoutInflater().inflate(R.layout.list_shadow_footer, null, false);
|
||||
osmEdits.addAll(l1);
|
||||
osmEdits.addAll(l2);
|
||||
ListView listView = getListView();
|
||||
listView.setDivider(null);
|
||||
listView.setEmptyView(emptyView);
|
||||
|
||||
if (osmEdits.size() > 0) {
|
||||
if (footerView == null) {
|
||||
footerView = getActivity().getLayoutInflater().inflate(R.layout.list_shadow_footer, listView, false);
|
||||
listView.addFooterView(footerView);
|
||||
listView.setHeaderDividersEnabled(false);
|
||||
listView.setFooterDividersEnabled(false);
|
||||
}
|
||||
listView.setAdapter(listAdapter);
|
||||
listView.setOnItemClickListener(new OnItemClickListener() {
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
OsmPoint it = listAdapter.getItem(position);
|
||||
openPopUpMenu(view, it);
|
||||
|
||||
}
|
||||
});
|
||||
} else {
|
||||
listAdapter.setNewList(dataPoints);
|
||||
if (headerView == null) {
|
||||
headerView = getActivity().getLayoutInflater().inflate(R.layout.list_item_header, listView, false);
|
||||
listView.addHeaderView(headerView);
|
||||
((TextView) headerView.findViewById(R.id.title_text_view)).setText(R.string.your_edits);
|
||||
final CheckBox selectAll = (CheckBox) headerView.findViewById(R.id.check_box);
|
||||
selectAll.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (selectAll.isChecked()) {
|
||||
selectAll();
|
||||
} else {
|
||||
deselectAll();
|
||||
}
|
||||
updateSelectionTitle(actionMode);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
listAdapter = new OsmEditsAdapter(getMyApplication(), osmEdits);
|
||||
listAdapter.setSelectedOsmEdits(osmEditsSelected);
|
||||
listAdapter.setAdapterListener(new OsmEditsAdapter.OsmEditsAdapterListener() {
|
||||
@Override
|
||||
public void onItemSelect(OsmPoint point, boolean checked) {
|
||||
if (checked) {
|
||||
osmEditsSelected.add(point);
|
||||
} else {
|
||||
osmEditsSelected.remove(point);
|
||||
}
|
||||
updateSelectionMode(actionMode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemShowMap(OsmPoint point) {
|
||||
showOnMap(point);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOptionsClick(OsmPoint note) {
|
||||
openPopUpMenu(note);
|
||||
}
|
||||
});
|
||||
listView.setAdapter(listAdapter);
|
||||
}
|
||||
|
||||
private void showBugDialog(final OsmNotesPoint point) {
|
||||
|
@ -390,31 +435,6 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
builder.create().show();
|
||||
}
|
||||
|
||||
public static void getOsmEditView(View v, OsmPoint child, OsmandApplication app) {
|
||||
TextView viewName = ((TextView) v.findViewById(R.id.name));
|
||||
ImageView icon = (ImageView) v.findViewById(R.id.icon);
|
||||
String name = OsmEditingPlugin.getEditName(child);
|
||||
viewName.setText(name);
|
||||
if (child.getGroup() == OsmPoint.Group.POI) {
|
||||
icon.setImageDrawable(app.getIconsCache().
|
||||
getIcon(R.drawable.ic_type_info, R.color.color_distance));
|
||||
} else if (child.getGroup() == OsmPoint.Group.BUG) {
|
||||
icon.setImageDrawable(app.getIconsCache().
|
||||
getIcon(R.drawable.ic_type_bug, R.color.color_distance));
|
||||
}
|
||||
|
||||
TextView descr = (TextView) v.findViewById(R.id.description);
|
||||
if (child.getAction() == OsmPoint.Action.CREATE) {
|
||||
descr.setText(R.string.action_create);
|
||||
} else if (child.getAction() == OsmPoint.Action.MODIFY) {
|
||||
descr.setText(R.string.action_modify);
|
||||
} else if (child.getAction() == OsmPoint.Action.DELETE) {
|
||||
descr.setText(R.string.action_delete);
|
||||
} else if (child.getAction() == OsmPoint.Action.REOPEN) {
|
||||
descr.setText(R.string.action_modify);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNoteCommitted() {
|
||||
getMyApplication().runInUIThread(new Runnable() {
|
||||
|
@ -425,173 +445,56 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
});
|
||||
}
|
||||
|
||||
protected class OsmEditsAdapter extends ArrayAdapter<OsmPoint> {
|
||||
private List<OsmPoint> dataPoints;
|
||||
|
||||
|
||||
public OsmEditsAdapter(List<OsmPoint> points) {
|
||||
super(getActivity(), net.osmand.plus.R.layout.note, points);
|
||||
dataPoints = points;
|
||||
}
|
||||
|
||||
public void setNewList(List<OsmPoint> dp) {
|
||||
dataPoints = dp;
|
||||
setNotifyOnChange(false);
|
||||
clear();
|
||||
for (OsmPoint pnt : dp) {
|
||||
add(pnt);
|
||||
}
|
||||
setNotifyOnChange(true);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public List<OsmPoint> getDataPoints() {
|
||||
return dataPoints;
|
||||
}
|
||||
|
||||
public void delete(OsmPoint i) {
|
||||
dataPoints.remove(i);
|
||||
remove(i);
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
View v = convertView;
|
||||
final OsmPoint child = getItem(position);
|
||||
if (v == null) {
|
||||
LayoutInflater inflater = getActivity().getLayoutInflater();
|
||||
v = inflater.inflate(net.osmand.plus.R.layout.note, parent, false);
|
||||
}
|
||||
getOsmEditView(v, child, getMyApplication());
|
||||
|
||||
v.findViewById(R.id.play).setVisibility(View.GONE);
|
||||
|
||||
final CheckBox ch = (CheckBox) v.findViewById(R.id.check_local_index);
|
||||
View options = v.findViewById(R.id.options);
|
||||
if (selectionMode) {
|
||||
options.setVisibility(View.GONE);
|
||||
ch.setVisibility(View.VISIBLE);
|
||||
ch.setChecked(osmEditsSelected.contains(child));
|
||||
v.findViewById(R.id.icon).setVisibility(View.GONE);
|
||||
ch.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
onItemSelect(ch, child);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
v.findViewById(R.id.icon).setVisibility(View.VISIBLE);
|
||||
options.setVisibility(View.VISIBLE);
|
||||
ch.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
((ImageView) options).setImageDrawable(getMyApplication().getIconsCache()
|
||||
.getThemedIcon(R.drawable.ic_overflow_menu_white));
|
||||
options.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
openPopUpMenu(v, child);
|
||||
}
|
||||
});
|
||||
v.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (selectionMode) {
|
||||
ch.setChecked(!ch.isChecked());
|
||||
onItemSelect(ch, child);
|
||||
} else {
|
||||
showOnMap(child);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
return v;
|
||||
}
|
||||
|
||||
public void onItemSelect(CheckBox ch, OsmPoint child) {
|
||||
if (ch.isChecked()) {
|
||||
osmEditsSelected.add(child);
|
||||
} else {
|
||||
osmEditsSelected.remove(child);
|
||||
}
|
||||
updateSelectionMode(actionMode);
|
||||
}
|
||||
|
||||
private void openPopUpMenu(final OsmPoint info) {
|
||||
OsmEditOptionsBottomSheetDialogFragment optionsFragment = new OsmEditOptionsBottomSheetDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable(OsmEditOptionsBottomSheetDialogFragment.OSM_POINT, info);
|
||||
optionsFragment.setUsedOnMap(false);
|
||||
optionsFragment.setArguments(args);
|
||||
optionsFragment.setListener(createOsmEditOptionsFragmentListener());
|
||||
optionsFragment.show(getChildFragmentManager(), OsmEditOptionsBottomSheetDialogFragment.TAG);
|
||||
}
|
||||
|
||||
private void openPopUpMenu(View v, final OsmPoint info) {
|
||||
OsmandApplication app = getMyApplication();
|
||||
final PopupMenu optionsMenu = new PopupMenu(getActivity(), v);
|
||||
DirectionsDialogs.setupPopUpMenuIcon(optionsMenu);
|
||||
MenuItem item = optionsMenu.getMenu().add(R.string.shared_string_show_on_map).
|
||||
setIcon(app.getIconsCache().getThemedIcon(R.drawable.ic_show_on_map));
|
||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||
private OsmEditOptionsFragmentListener createOsmEditOptionsFragmentListener() {
|
||||
return new OsmEditOptionsFragmentListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
public void onUploadClick(OsmPoint osmPoint) {
|
||||
uploadItems(new OsmPoint[]{getPointAfterModify(osmPoint)});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onShowOnMapClick(OsmPoint osmPoint) {
|
||||
OsmandSettings settings = getMyApplication().getSettings();
|
||||
settings.setMapLocationToShow(info.getLatitude(), info.getLongitude(), settings.getLastKnownMapZoom());
|
||||
settings.setMapLocationToShow(osmPoint.getLatitude(), osmPoint.getLongitude(), settings.getLastKnownMapZoom());
|
||||
MapActivity.launchMapActivityMoveToTop(getActivity());
|
||||
return true;
|
||||
}
|
||||
});
|
||||
if (info instanceof OpenstreetmapPoint && info.getAction() != Action.DELETE) {
|
||||
item = optionsMenu.getMenu().add(R.string.poi_context_menu_modify_osm_change)
|
||||
.setIcon(app.getIconsCache().getThemedIcon(R.drawable.ic_action_edit_dark));
|
||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
OpenstreetmapPoint i = (OpenstreetmapPoint) getPointAfterModify(info);
|
||||
final Node entity = i.getEntity();
|
||||
refreshId = entity.getId();
|
||||
EditPoiDialogFragment.createInstance(entity, false)
|
||||
.show(getActivity().getSupportFragmentManager(), "edit_poi");
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
if (info instanceof OsmNotesPoint) {
|
||||
item = optionsMenu.getMenu().add(R.string.context_menu_item_modify_note)
|
||||
.setIcon(app.getIconsCache().getThemedIcon(R.drawable.ic_action_edit_dark));
|
||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
showBugDialog((OsmNotesPoint) info);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
item = optionsMenu.getMenu().add(R.string.shared_string_delete).
|
||||
setIcon(app.getIconsCache().getThemedIcon(R.drawable.ic_action_delete_dark));
|
||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
public void onModifyOsmChangeClick(OsmPoint osmPoint) {
|
||||
OpenstreetmapPoint i = (OpenstreetmapPoint) getPointAfterModify(osmPoint);
|
||||
final Node entity = i.getEntity();
|
||||
refreshId = entity.getId();
|
||||
EditPoiDialogFragment.createInstance(entity, false).show(getActivity().getSupportFragmentManager(), "edit_poi");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onModifyOsmNoteClick(OsmPoint osmPoint) {
|
||||
showBugDialog((OsmNotesPoint) osmPoint);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDeleteClick(OsmPoint osmPoint) {
|
||||
ArrayList<OsmPoint> points = new ArrayList<>();
|
||||
points.add(info);
|
||||
points.add(osmPoint);
|
||||
deleteItems(new ArrayList<>(points));
|
||||
return true;
|
||||
|
||||
}
|
||||
});
|
||||
item = optionsMenu.getMenu().add(R.string.local_openstreetmap_upload).
|
||||
setIcon(app.getIconsCache().getThemedIcon(R.drawable.ic_action_export));
|
||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
uploadItems(new OsmPoint[]{getPointAfterModify(info)});
|
||||
return true;
|
||||
}
|
||||
});
|
||||
optionsMenu.show();
|
||||
};
|
||||
}
|
||||
|
||||
protected OsmPoint getPointAfterModify(OsmPoint info) {
|
||||
if(info instanceof OpenstreetmapPoint && info.getId() == refreshId) {
|
||||
for(OpenstreetmapPoint p : plugin.getDBPOI().getOpenstreetmapPoints()) {
|
||||
if(p.getId() == info.getId()) {
|
||||
if (info instanceof OpenstreetmapPoint && info.getId() == refreshId) {
|
||||
for (OpenstreetmapPoint p : plugin.getDBPOI().getOpenstreetmapPoints()) {
|
||||
if (p.getId() == info.getId()) {
|
||||
return p;
|
||||
}
|
||||
}
|
||||
|
@ -623,22 +526,85 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
super.uploadEnded(loadErrorsMap);
|
||||
for (OsmPoint osmPoint : loadErrorsMap.keySet()) {
|
||||
if (loadErrorsMap.get(osmPoint) == null) {
|
||||
listAdapter.remove(osmPoint);
|
||||
osmEdits.remove(osmPoint);
|
||||
}
|
||||
}
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
};
|
||||
dialog.show(getActivity().getSupportFragmentManager(), ProgressDialogFragment.TAG);
|
||||
UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask(
|
||||
dialog, listener, plugin, points.length, closeChangeSet, anonymously);
|
||||
UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask(dialog, listener, plugin, points.length, closeChangeSet, anonymously);
|
||||
uploadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, points);
|
||||
}
|
||||
|
||||
private void showOnMap(OsmPoint osmPoint) {
|
||||
boolean isOsmPoint = osmPoint instanceof OpenstreetmapPoint;
|
||||
String type = osmPoint.getGroup() == OsmPoint.Group.POI ? PointDescription.POINT_TYPE_POI : PointDescription.POINT_TYPE_OSM_BUG;
|
||||
String name = (isOsmPoint ? ((OpenstreetmapPoint) osmPoint).getName() : ((OsmNotesPoint) osmPoint).getText());
|
||||
getMyApplication().getSettings().setMapLocationToShow(osmPoint.getLatitude(), osmPoint.getLongitude(), 15,
|
||||
new PointDescription(type, name), true, osmPoint); //$NON-NLS-1$
|
||||
MapActivity.launchMapActivityMoveToTop(getActivity());
|
||||
}
|
||||
|
||||
private void deletePoint(OsmPoint osmPoint) {
|
||||
osmEdits.remove(osmPoint);
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private void notifyDataSetChanged() {
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public static class DeleteOsmEditsConfirmDialogFragment extends DialogFragment {
|
||||
public static final String TAG = "DeleteOsmEditsConfirmDialogFragment";
|
||||
private static final String POINTS_LIST = "points_list";
|
||||
|
||||
public static DeleteOsmEditsConfirmDialogFragment createInstance(
|
||||
ArrayList<OsmPoint> points) {
|
||||
DeleteOsmEditsConfirmDialogFragment fragment = new DeleteOsmEditsConfirmDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable(POINTS_LIST, points);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
final OsmEditsFragment parentFragment = (OsmEditsFragment) getParentFragment();
|
||||
final OsmEditingPlugin plugin = OsmandPlugin.getEnabledPlugin(OsmEditingPlugin.class);
|
||||
@SuppressWarnings("unchecked")
|
||||
final ArrayList<OsmPoint> points = (ArrayList<OsmPoint>) getArguments().getSerializable(POINTS_LIST);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
assert points != null;
|
||||
builder.setMessage(getString(R.string.local_osm_changes_delete_all_confirm, points.size()));
|
||||
builder.setPositiveButton(R.string.shared_string_delete, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Iterator<OsmPoint> it = points.iterator();
|
||||
while (it.hasNext()) {
|
||||
OsmPoint osmPoint = it.next();
|
||||
assert plugin != null;
|
||||
if (osmPoint.getGroup() == OsmPoint.Group.POI) {
|
||||
plugin.getDBPOI().deletePOI((OpenstreetmapPoint) osmPoint);
|
||||
} else if (osmPoint.getGroup() == OsmPoint.Group.BUG) {
|
||||
plugin.getDBBug().deleteAllBugModifications((OsmNotesPoint) osmPoint);
|
||||
}
|
||||
it.remove();
|
||||
parentFragment.deletePoint(osmPoint);
|
||||
}
|
||||
parentFragment.notifyDataSetChanged();
|
||||
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.shared_string_cancel, null);
|
||||
return builder.create();
|
||||
}
|
||||
}
|
||||
|
||||
public class BackupOpenstreetmapPointAsyncTask extends AsyncTask<OsmPoint, OsmPoint, String> {
|
||||
|
||||
|
||||
private File osmchange;
|
||||
|
||||
public BackupOpenstreetmapPointAsyncTask() {
|
||||
|
@ -745,71 +711,4 @@ public class OsmEditsFragment extends OsmAndListFragment
|
|||
}
|
||||
}
|
||||
|
||||
private void showOnMap(OsmPoint osmPoint) {
|
||||
boolean isOsmPoint = osmPoint instanceof OpenstreetmapPoint;
|
||||
String type = osmPoint.getGroup() == OsmPoint.Group.POI ? PointDescription.POINT_TYPE_POI : PointDescription.POINT_TYPE_OSM_BUG;
|
||||
String name = (isOsmPoint ? ((OpenstreetmapPoint) osmPoint).getName() : ((OsmNotesPoint) osmPoint).getText());
|
||||
getMyApplication().getSettings().setMapLocationToShow(osmPoint.getLatitude(), osmPoint.getLongitude(), 15,
|
||||
new PointDescription(type, name), true, osmPoint); //$NON-NLS-1$
|
||||
MapActivity.launchMapActivityMoveToTop(getActivity());
|
||||
}
|
||||
|
||||
private void deletePoint(OsmPoint osmPoint) {
|
||||
listAdapter.delete(osmPoint);
|
||||
}
|
||||
|
||||
private void notifyDataSetChanged() {
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public static class DeleteOsmEditsConfirmDialogFragment extends DialogFragment {
|
||||
public static final String TAG = "DeleteOsmEditsConfirmDialogFragment";
|
||||
private static final String POINTS_LIST = "points_list";
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
final OsmEditsFragment parentFragment = (OsmEditsFragment) getParentFragment();
|
||||
final OsmEditingPlugin plugin = OsmandPlugin.getEnabledPlugin(OsmEditingPlugin.class);
|
||||
@SuppressWarnings("unchecked")
|
||||
final ArrayList<OsmPoint> points =
|
||||
(ArrayList<OsmPoint>) getArguments().getSerializable(POINTS_LIST);
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
||||
assert points != null;
|
||||
builder.setMessage(getString(R.string.local_osm_changes_delete_all_confirm,
|
||||
points.size()));
|
||||
builder.setPositiveButton(R.string.shared_string_delete, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Iterator<OsmPoint> it = points.iterator();
|
||||
while (it.hasNext()) {
|
||||
OsmPoint osmPoint = it.next();
|
||||
assert plugin != null;
|
||||
if (osmPoint.getGroup() == OsmPoint.Group.POI) {
|
||||
plugin.getDBPOI().deletePOI((OpenstreetmapPoint) osmPoint);
|
||||
} else if (osmPoint.getGroup() == OsmPoint.Group.BUG) {
|
||||
plugin.getDBBug().deleteAllBugModifications((OsmNotesPoint) osmPoint);
|
||||
}
|
||||
it.remove();
|
||||
parentFragment.deletePoint(osmPoint);
|
||||
}
|
||||
parentFragment.notifyDataSetChanged();
|
||||
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.shared_string_cancel, null);
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
public static DeleteOsmEditsConfirmDialogFragment createInstance(
|
||||
ArrayList<OsmPoint> points) {
|
||||
DeleteOsmEditsConfirmDialogFragment fragment = new DeleteOsmEditsConfirmDialogFragment();
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable(POINTS_LIST, points);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue