diff --git a/OsmAnd/res/layout/quick_action_list.xml b/OsmAnd/res/layout/quick_action_list.xml
index b4d1530172..229f4e729c 100644
--- a/OsmAnd/res/layout/quick_action_list.xml
+++ b/OsmAnd/res/layout/quick_action_list.xml
@@ -4,6 +4,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:background="?attr/spinnerListBackground"
android:orientation="vertical">
diff --git a/OsmAnd/src/net/osmand/plus/quickaction/AddQuickActionDialog.java b/OsmAnd/src/net/osmand/plus/quickaction/AddQuickActionDialog.java
index 5bb4f1c93c..3bfd15ecd4 100644
--- a/OsmAnd/src/net/osmand/plus/quickaction/AddQuickActionDialog.java
+++ b/OsmAnd/src/net/osmand/plus/quickaction/AddQuickActionDialog.java
@@ -139,7 +139,7 @@ public class AddQuickActionDialog extends DialogFragment {
HeaderViewHolder headerHolder = (HeaderViewHolder) holder;
- headerHolder.header.setText(action.nameRes);
+ headerHolder.header.setText(action.getNameRes());
if (position == 0) headerHolder.divider.setVisibility(View.GONE);
else headerHolder.divider.setVisibility(View.VISIBLE);
@@ -147,8 +147,8 @@ public class AddQuickActionDialog extends DialogFragment {
ItemViewHolder itemHolder = (ItemViewHolder) holder;
- itemHolder.title.setText(action.nameRes);
- itemHolder.icon.setImageResource(action.iconRes);
+ itemHolder.title.setText(action.getNameRes());
+ itemHolder.icon.setImageResource(action.getIconRes());
itemHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
diff --git a/OsmAnd/src/net/osmand/plus/quickaction/CreateEditActionDialog.java b/OsmAnd/src/net/osmand/plus/quickaction/CreateEditActionDialog.java
index 7b26ae6783..c62b6f1785 100644
--- a/OsmAnd/src/net/osmand/plus/quickaction/CreateEditActionDialog.java
+++ b/OsmAnd/src/net/osmand/plus/quickaction/CreateEditActionDialog.java
@@ -197,7 +197,7 @@ public class CreateEditActionDialog extends DialogFragment {
if (savedInstanceState == null) name.setText(action.getName(getContext()));
else action.setName(name.getText().toString());
- image.setImageResource(action.iconRes);
+ image.setImageResource(action.getIconRes());
}
private void setupFooter(final View root){
diff --git a/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java b/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java
index 99ae4648fc..e2a983ee90 100644
--- a/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java
+++ b/OsmAnd/src/net/osmand/plus/quickaction/QuickAction.java
@@ -32,8 +32,9 @@ public class QuickAction {
protected int type;
protected long id;
- protected @StringRes int nameRes;
- protected @DrawableRes int iconRes;
+
+ private @StringRes int nameRes;
+ private @DrawableRes int iconRes;
protected boolean autogeneratedTitle;
@@ -47,11 +48,14 @@ public class QuickAction {
protected QuickAction(int type, int nameRes) {
this.id = System.currentTimeMillis();
this.nameRes = nameRes;
+ this.type = type;
}
protected QuickAction(int type) {
this.id = System.currentTimeMillis();
this.type = type;
+ this.nameRes = QuickActionFactory.getActionName(type);
+ this.iconRes = QuickActionFactory.getActionIcon(type);
}
public QuickAction(QuickAction quickAction) {
diff --git a/OsmAnd/src/net/osmand/plus/quickaction/QuickActionFactory.java b/OsmAnd/src/net/osmand/plus/quickaction/QuickActionFactory.java
index 6f90ffbc01..537764544b 100644
--- a/OsmAnd/src/net/osmand/plus/quickaction/QuickActionFactory.java
+++ b/OsmAnd/src/net/osmand/plus/quickaction/QuickActionFactory.java
@@ -6,6 +6,7 @@ import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
+import android.support.annotation.DrawableRes;
import android.support.annotation.StringRes;
import android.support.v4.view.MotionEventCompat;
import android.support.v7.app.AlertDialog;
@@ -94,53 +95,6 @@ public class QuickActionFactory {
return quickActions != null ? quickActions : new ArrayList();
}
- public List parseAndFilterActiveActionsList(String json) {
-
- Type type = new TypeToken>() {
- }.getType();
- ArrayList quickActions = new Gson().fromJson(json, type);
-
- return quickActions != null ? quickActions : new ArrayList();
- }
-
- public static List produceTypeActionsListWithHeaders() {
-
- ArrayList quickActions = new ArrayList<>();
-
- quickActions.add(new QuickAction(0, R.string.quick_action_add_create_items));
- quickActions.add(new FavoriteAction());
- quickActions.add(new GPXAction());
- quickActions.add(new MarkerAction());
-
- if (OsmandPlugin.getEnabledPlugin(AudioVideoNotesPlugin.class) != null) {
-
- quickActions.add(new TakeAudioNoteAction());
- quickActions.add(new TakePhotoNoteAction());
- quickActions.add(new TakeVideoNoteAction());
- }
-
- if (OsmandPlugin.getEnabledPlugin(OsmEditingPlugin.class) != null) {
-
- quickActions.add(new AddPOIAction());
- quickActions.add(new AddOSMBugAction());
- }
-
- if (OsmandPlugin.getEnabledPlugin(ParkingPositionPlugin.class) != null) {
-
- quickActions.add(new ParkingAction());
- }
-
- quickActions.add(new QuickAction(0, R.string.quick_action_add_configure_map));
- quickActions.add(new MapStyleAction());
- quickActions.add(new ShowHideFavoritesAction());
- quickActions.add(new ShowHidePoiAction());
-
- quickActions.add(new QuickAction(0, R.string.quick_action_add_navigation));
- quickActions.add(new NavigationVoiceAction());
-
- return quickActions;
- }
-
public static List produceTypeActionsListWithHeaders(List active) {
ArrayList quickActions = new ArrayList<>();
@@ -313,15 +267,130 @@ public class QuickActionFactory {
}
}
+ public static @DrawableRes int getActionIcon(int type) {
+
+ switch (type) {
+
+ case NewAction.TYPE:
+ return R.drawable.ic_action_plus;
+
+ case MarkerAction.TYPE:
+ return R.drawable.ic_action_flag_dark;
+
+ case FavoriteAction.TYPE:
+ return R.drawable.ic_action_fav_dark;
+
+ case ShowHideFavoritesAction.TYPE:
+ return R.drawable.ic_action_fav_dark;
+
+ case ShowHidePoiAction.TYPE:
+ return R.drawable.ic_action_gabout_dark;
+
+ case GPXAction.TYPE:
+ return R.drawable.ic_action_flag_dark;
+
+ case ParkingAction.TYPE:
+ return R.drawable.ic_action_parking_dark;
+
+ case TakeAudioNoteAction.TYPE:
+ return R.drawable.ic_action_micro_dark;
+
+ case TakePhotoNoteAction.TYPE:
+ return R.drawable.ic_action_photo_dark;
+
+ case TakeVideoNoteAction.TYPE:
+ return R.drawable.ic_action_video_dark;
+
+ case NavigationVoiceAction.TYPE:
+ return R.drawable.ic_action_volume_up;
+
+ case AddOSMBugAction.TYPE:
+ return R.drawable.ic_action_bug_dark;
+
+ case AddPOIAction.TYPE:
+ return R.drawable.ic_action_gabout_dark;
+
+ case MapStyleAction.TYPE:
+ return R.drawable.ic_map;
+
+ case MapSourceAction.TYPE:
+ return R.drawable.ic_map;
+
+ case MapOverlayAction.TYPE:
+ return R.drawable.ic_layer_top_dark;
+
+ case MapUnderlayAction.TYPE:
+ return R.drawable.ic_layer_bottom_dark;
+
+ default: return R.drawable.ic_action_plus;
+ }
+ }
+
+ public static @StringRes int getActionName(int type) {
+
+ switch (type) {
+
+ case NewAction.TYPE:
+ return R.string.quick_action_new_action;
+
+ case MarkerAction.TYPE:
+ return R.string.quick_action_add_marker;
+
+ case FavoriteAction.TYPE:
+ return R.string.quick_action_add_favorite;
+
+ case ShowHideFavoritesAction.TYPE:
+ return R.string.quick_action_showhide_favorites_title;
+
+ case ShowHidePoiAction.TYPE:
+ return R.string.quick_action_showhide_poi_title;
+
+ case GPXAction.TYPE:
+ return R.string.quick_action_add_gpx;
+
+ case ParkingAction.TYPE:
+ return R.string.quick_action_add_parking;
+
+ case TakeAudioNoteAction.TYPE:
+ return R.string.quick_action_take_audio_note;
+
+ case TakePhotoNoteAction.TYPE:
+ return R.string.quick_action_take_photo_note;
+
+ case TakeVideoNoteAction.TYPE:
+ return R.string.quick_action_take_video_note;
+
+ case NavigationVoiceAction.TYPE:
+ return R.string.quick_action_navigation_voice;
+
+ case AddOSMBugAction.TYPE:
+ return R.string.quick_action_add_osm_bug;
+
+ case AddPOIAction.TYPE:
+ return R.string.quick_action_add_poi;
+
+ case MapStyleAction.TYPE:
+ return R.string.quick_action_map_style;
+
+ case MapSourceAction.TYPE:
+ return R.string.quick_action_map_source;
+
+ case MapOverlayAction.TYPE:
+ return R.string.quick_action_map_overlay;
+
+ case MapUnderlayAction.TYPE:
+ return R.string.quick_action_map_underlay;
+
+ default: return R.string.quick_action_new_action;
+ }
+ }
+
public static class NewAction extends QuickAction {
public static final int TYPE = 1;
protected NewAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_new_action;
- iconRes = R.drawable.ic_action_plus;
+ super(TYPE);
}
public NewAction(QuickAction quickAction) {
@@ -338,7 +407,6 @@ public class QuickActionFactory {
@Override
public void drawUI(ViewGroup parent, MapActivity activity) {
- //TODO inflate view & fill with params
}
}
@@ -347,10 +415,7 @@ public class QuickActionFactory {
public static final int TYPE = 2;
private MarkerAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_add_marker;
- iconRes = R.drawable.ic_action_flag_dark;
+ super(TYPE);
}
public MarkerAction(QuickAction quickAction) {
@@ -400,10 +465,7 @@ public class QuickActionFactory {
public static final String KEY_CATEGORY_COLOR = "category_color";
private FavoriteAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_add_favorite;
- iconRes = R.drawable.ic_action_fav_dark;
+ super(TYPE);
}
public FavoriteAction(QuickAction quickAction) {
@@ -584,10 +646,7 @@ public class QuickActionFactory {
public static final int TYPE = 4;
protected ShowHideFavoritesAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_showhide_favorites_title;
- iconRes = R.drawable.ic_action_fav_dark;
+ super(TYPE);
autogeneratedTitle = true;
}
@@ -640,10 +699,7 @@ public class QuickActionFactory {
private transient EditText title;
protected ShowHidePoiAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_showhide_poi_title;
- iconRes = R.drawable.ic_action_gabout_dark;
+ super(TYPE);
autogeneratedTitle = true;
}
@@ -946,10 +1002,7 @@ public class QuickActionFactory {
public static final String KEY_CATEGORY_COLOR = "category_color";
private GPXAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_add_gpx;
- iconRes = R.drawable.ic_action_flag_dark;
+ super(TYPE);
}
public GPXAction(QuickAction quickAction) {
@@ -1108,10 +1161,7 @@ public class QuickActionFactory {
public static final int TYPE = 7;
private ParkingAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_add_parking;
- iconRes = R.drawable.ic_action_parking_dark;
+ super(TYPE);
}
public ParkingAction(QuickAction quickAction) {
@@ -1150,10 +1200,7 @@ public class QuickActionFactory {
public static final int TYPE = 8;
protected TakeAudioNoteAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_take_audio_note;
- iconRes = R.drawable.ic_action_micro_dark;
+ super(TYPE);
}
public TakeAudioNoteAction(QuickAction quickAction) {
@@ -1189,10 +1236,7 @@ public class QuickActionFactory {
public static final int TYPE = 9;
protected TakeVideoNoteAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_take_video_note;
- iconRes = R.drawable.ic_action_video_dark;
+ super(TYPE);
}
public TakeVideoNoteAction(QuickAction quickAction) {
@@ -1228,10 +1272,7 @@ public class QuickActionFactory {
public static final int TYPE = 10;
protected TakePhotoNoteAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_take_photo_note;
- iconRes = R.drawable.ic_action_photo_dark;
+ super(TYPE);
}
public TakePhotoNoteAction(QuickAction quickAction) {
@@ -1267,11 +1308,7 @@ public class QuickActionFactory {
public static final int TYPE = 11;
protected NavigationVoiceAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_navigation_voice;
- iconRes = R.drawable.ic_action_volume_up;
- autogeneratedTitle = true;
+ super(TYPE);
}
public NavigationVoiceAction(QuickAction quickAction) {
@@ -1318,10 +1355,7 @@ public class QuickActionFactory {
public static final int TYPE = 12;
protected AddOSMBugAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_add_osm_bug;
- iconRes = R.drawable.ic_action_bug_dark;
+ super(TYPE);
}
public AddOSMBugAction(QuickAction quickAction) {
@@ -1359,10 +1393,7 @@ public class QuickActionFactory {
public static final String KEY_TAG = "key_tag";
protected AddPOIAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_add_poi;
- iconRes = R.drawable.ic_action_gabout_dark;
+ super(TYPE);
}
public AddPOIAction(QuickAction quickAction) {
@@ -1574,10 +1605,7 @@ public class QuickActionFactory {
private static String KEY_STYLES = "styles";
protected MapStyleAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_map_style;
- iconRes = R.drawable.ic_map;
+ super(TYPE);
}
public MapStyleAction(QuickAction quickAction) {
@@ -1713,10 +1741,7 @@ public class QuickActionFactory {
private static String KEY_OVERLAYS = "overlays";
protected MapOverlayAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_map_overlay;
- iconRes = R.drawable.ic_layer_top_dark;
+ super(TYPE);
}
public MapOverlayAction(QuickAction quickAction) {
@@ -1767,10 +1792,7 @@ public class QuickActionFactory {
private static String KEY_UNDERLAYS = "underlays";
protected MapUnderlayAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_map_underlay;
- iconRes = R.drawable.ic_layer_bottom_dark;
+ super(TYPE);
}
public MapUnderlayAction(QuickAction quickAction) {
@@ -1820,10 +1842,7 @@ public class QuickActionFactory {
private static String KEY_SOURCE = "source";
protected MapSourceAction() {
- id = System.currentTimeMillis();
- type = TYPE;
- nameRes = R.string.quick_action_map_source;
- iconRes = R.drawable.ic_map;
+ super(TYPE);
}
public MapSourceAction(QuickAction quickAction) {
@@ -1870,7 +1889,8 @@ public class QuickActionFactory {
private transient EditText title;
- public SwitchableAction() {
+ protected SwitchableAction(int type) {
+ super(type);
}
public SwitchableAction(QuickAction quickAction) {