From faba5d32af6ff61ab42caf952efee21d64f988dd Mon Sep 17 00:00:00 2001 From: Denis Date: Sat, 25 Oct 2014 17:18:12 +0300 Subject: [PATCH] Updated functionality of waypoints dialog --- OsmAnd/res/layout/drawer_list_radius.xml | 32 ++++++++ .../net/osmand/plus/ContextMenuAdapter.java | 73 +++++++++++-------- .../osmand/plus/OsmAndLocationProvider.java | 2 +- .../plus/helpers/WaypointDialogHelper.java | 12 +-- 4 files changed, 81 insertions(+), 38 deletions(-) create mode 100644 OsmAnd/res/layout/drawer_list_radius.xml diff --git a/OsmAnd/res/layout/drawer_list_radius.xml b/OsmAnd/res/layout/drawer_list_radius.xml new file mode 100644 index 0000000000..92c19f8362 --- /dev/null +++ b/OsmAnd/res/layout/drawer_list_radius.xml @@ -0,0 +1,32 @@ + + + + + + + + + \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index e462bb6719..b4041e51c2 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -19,7 +19,8 @@ public class ContextMenuAdapter { items.clear(); isCategory.clear(); itemNames.clear(); - listeners.clear(); + checkListeners.clear(); + itemListeners.clear(); selectedList.clear(); layoutIds.clear(); iconList.clear(); @@ -40,8 +41,10 @@ public class ContextMenuAdapter { final TIntArrayList items = new TIntArrayList(); final TIntArrayList isCategory = new TIntArrayList(); final ArrayList itemNames = new ArrayList(); - final ArrayList listeners = new ArrayList(); + final ArrayList checkListeners = new ArrayList(); + final ArrayList itemListeners = new ArrayList(); final TIntArrayList selectedList = new TIntArrayList(); + final TIntArrayList loadingList = new TIntArrayList(); final TIntArrayList layoutIds = new TIntArrayList(); final TIntArrayList iconList = new TIntArrayList(); final TIntArrayList iconListLight = new TIntArrayList(); @@ -68,7 +71,11 @@ public class ContextMenuAdapter { } public OnContextMenuClick getClickAdapter(int i) { - return listeners.get(i); + return checkListeners.get(i); + } + + public OnContextMenuClick getItemClickAdapter(int i) { + return itemListeners.get(i); } public String getItemName(int pos){ @@ -96,6 +103,10 @@ public class ContextMenuAdapter { public int getSelection(int pos) { return selectedList.get(pos); } + + public int getLoading(int pos) { + return loadingList.get(pos); + } public void setSelection(int pos, int s) { selectedList.set(pos, s); @@ -142,10 +153,12 @@ public class ContextMenuAdapter { String name; int selected = -1; int layout = -1; + int loading = -1; boolean cat; int pos = -1; String description = ""; - private OnContextMenuClick listener; + private OnContextMenuClick checkBoxListener; + private OnContextMenuClick itemClickListener; boolean enabled = false; private Item() { @@ -171,6 +184,11 @@ public class ContextMenuAdapter { this.selected = selected; return this; } + + public Item loading(int loading) { + this.loading = loading; + return this; + } public Item layout(int l) { this.layout = l; @@ -183,9 +201,13 @@ public class ContextMenuAdapter { } public Item listen(OnContextMenuClick l) { - this.listener = l; + this.checkBoxListener = l; return this; + } + public Item itemClickListen(OnContextMenuClick l) { + this.itemClickListener = l; + return this; } public void reg() { @@ -196,10 +218,11 @@ public class ContextMenuAdapter { itemNames.add(pos, name); itemDescription.add(pos, description); selectedList.insert(pos, selected); + loadingList.insert(pos, loading); layoutIds.insert(pos, layout); iconList.insert(pos, icon); iconListLight.insert(pos, lightIcon); - listeners.add(pos, listener); + checkListeners.add(pos, checkBoxListener); isCategory.insert(pos, cat ? 1 : 0); } @@ -222,11 +245,13 @@ public class ContextMenuAdapter { items.removeAt(pos); itemNames.remove(pos); selectedList.removeAt(pos); + loadingList.clear(); iconList.removeAt(pos); iconListLight.removeAt(pos); - listeners.remove(pos); + checkListeners.remove(pos); isCategory.removeAt(pos); layoutIds.removeAt(pos); + loadingList.clear(); } public int getLayoutId(int position) { @@ -270,30 +295,8 @@ public class ContextMenuAdapter { tv.setTypeface(null); } - if (v.findViewById(R.id.check_item) instanceof CheckBox){ - final CheckBox ch = ((CheckBox) v.findViewById(R.id.check_item)); - - if(selectedList.get(position) != -1) { - ch.setOnCheckedChangeListener(null); - ch.setVisibility(View.VISIBLE); - ch.setChecked(selectedList.get(position) > 0); - ch.setOnCheckedChangeListener(new OnCheckedChangeListener() { - - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - OnContextMenuClick ca = getClickAdapter(position); - if(ca != null) { - ca.onContextMenuClick(getElementId(position), position, isChecked); - } - } - }); - ch.setVisibility(View.VISIBLE); - } else if (ch != null) { - ch.setVisibility(View.GONE); - } - } else if (v.findViewById(R.id.check_item) instanceof Switch) { - final Switch ch = (Switch) v.findViewById(R.id.check_item); - + if (v.findViewById(R.id.check_item) != null) { + CompoundButton ch = (CompoundButton) v.findViewById(R.id.check_item); if(selectedList.get(position) != -1) { ch.setOnCheckedChangeListener(null); ch.setVisibility(View.VISIBLE); @@ -314,6 +317,14 @@ public class ContextMenuAdapter { } } + if (v.findViewById(R.id.ProgressBar) != null){ + ProgressBar bar = (ProgressBar) v.findViewById(R.id.ProgressBar); + if(loadingList.get(position) == 1){ + bar.setVisibility(View.VISIBLE); + } else { + bar.setVisibility(View.INVISIBLE); + } + } String itemDescr = getItemDescr(position); if (v.findViewById(R.id.descr) != null){ diff --git a/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java b/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java index 17d079d851..85ccc9cf21 100644 --- a/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java +++ b/OsmAnd/src/net/osmand/plus/OsmAndLocationProvider.java @@ -564,7 +564,7 @@ public class OsmAndLocationProvider implements SensorEventListener { return false; } - // Working with location listeners + // Working with location checkListeners private class NetworkListener implements LocationListener { @Override diff --git a/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java b/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java index 511ea1ec78..0596c6e968 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java @@ -542,7 +542,7 @@ public class WaypointDialogHelper implements OsmAndLocationListener { if (waypointHelper.isTypeVisible(i)) { final boolean checked = waypointHelper.isTypeEnabled(i); final int type = i; - adapter.item(getHeader(ctx, i, checked)).enabled(checked).layout(R.layout.drawer_list_poi_header).listen(new ContextMenuAdapter.OnContextMenuClick() { + adapter.item(getHeader(ctx, i, checked)).enabled(checked).layout(R.layout.drawer_list_poi_header).itemClickListen(new ContextMenuAdapter.OnContextMenuClick() { @Override public boolean onContextMenuClick(int itemId, int pos, boolean isChecked) { running[0] = pos; @@ -554,10 +554,10 @@ public class WaypointDialogHelper implements OsmAndLocationListener { } return false; } - }).reg(); + }).loading(0).reg(); if (i == WaypointHelper.POI && waypointHelper.isTypeEnabled(WaypointHelper.POI)){ - adapter.item(ctx.getString(R.string.search_radius_proximity)).listen(new ContextMenuAdapter.OnContextMenuClick() { + adapter.item(ctx.getString(R.string.search_radius_proximity)).itemClickListen(new ContextMenuAdapter.OnContextMenuClick() { @Override public boolean onContextMenuClick(int itemId, final int pos, boolean isChecked) { int length = WaypointHelper.SEARCH_RADIUS_VALUES.length; @@ -588,9 +588,9 @@ public class WaypointDialogHelper implements OsmAndLocationListener { .show(); return false; } - }).reg(); + }).loading(0).selected(app.getSettings().SHOW_POI_OVER_MAP.get() ? 1 : 0).reg(); } else if (i == WaypointHelper.FAVORITES && waypointHelper.isTypeEnabled(WaypointHelper.FAVORITES)){ - adapter.item(ctx.getString(R.string.search_radius_proximity)).listen(new ContextMenuAdapter.OnContextMenuClick() { + adapter.item(ctx.getString(R.string.search_radius_proximity)).itemClickListen(new ContextMenuAdapter.OnContextMenuClick() { @Override public boolean onContextMenuClick(int itemId, final int pos, boolean isChecked) { int length = WaypointHelper.SEARCH_RADIUS_VALUES.length; @@ -620,7 +620,7 @@ public class WaypointDialogHelper implements OsmAndLocationListener { .show(); return false; } - }).reg(); + }).loading(0).selected(app.getSettings().SHOW_FAVORITES.get() ? 1 : 0).reg(); } if (tp != null && tp.size() > 0) { for (LocationPointWrapper p : tp){