diff options
| -rw-r--r-- | res/drawable/filter_bar_background.xml | 9 | ||||
| -rw-r--r-- | res/layout/caches.xml | 1 | ||||
| -rw-r--r-- | res/layout/filter_bar.xml | 10 | ||||
| -rw-r--r-- | res/layout/googlemap.xml | 1 | ||||
| -rw-r--r-- | res/layout/mfmap.xml | 1 | ||||
| -rw-r--r-- | res/values/styles.xml | 26 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgCacheListAdapter.java | 4 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeocaches.java | 36 | ||||
| -rw-r--r-- | src/cgeo/geocaching/filter/cgFilter.java | 10 | ||||
| -rw-r--r-- | src/cgeo/geocaching/filter/cgFilterBySize.java | 13 | ||||
| -rw-r--r-- | src/cgeo/geocaching/filter/cgFilterByTrackables.java | 6 | ||||
| -rw-r--r-- | src/cgeo/geocaching/filter/cgFilterByType.java | 13 | ||||
| -rw-r--r-- | src/cgeo/geocaching/mapcommon/cgeomap.java | 12 |
13 files changed, 122 insertions, 20 deletions
diff --git a/res/drawable/filter_bar_background.xml b/res/drawable/filter_bar_background.xml new file mode 100644 index 0000000..e42cd60 --- /dev/null +++ b/res/drawable/filter_bar_background.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape + xmlns:android="http://schemas.android.com/apk/res/android"> + <gradient android:angle="270" + android:startColor="#ffffff00" + android:centerColor="#ffcccc00" + android:centerY="0.8" + android:endColor="#ffdddd00"/> +</shape> diff --git a/res/layout/caches.xml b/res/layout/caches.xml index ebd7610..924651d 100644 --- a/res/layout/caches.xml +++ b/res/layout/caches.xml @@ -22,6 +22,7 @@ android:src="@drawable/actionbar_manual" android:onClick="goManual" /> </LinearLayout> + <include layout="@layout/filter_bar"/> <ListView android:id="@android:id/list" android:visibility="gone" android:layout_above="@+id/counter" diff --git a/res/layout/filter_bar.xml b/res/layout/filter_bar.xml new file mode 100644 index 0000000..35ee929 --- /dev/null +++ b/res/layout/filter_bar.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/filter_bar" + style="@style/filter_bar" + android:visibility="gone"> + <ImageView style="@style/filter_bar_image" + android:src="@drawable/main_filter_default"></ImageView> + <TextView android:id="@+id/filter_text" + style="@style/filter_bar_text"/> +</LinearLayout>
\ No newline at end of file diff --git a/res/layout/googlemap.xml b/res/layout/googlemap.xml index 963101f..4689749 100644 --- a/res/layout/googlemap.xml +++ b/res/layout/googlemap.xml @@ -19,6 +19,7 @@ android:src="@drawable/actionbar_manual" android:onClick="goManual" /> </LinearLayout> + <include layout="@layout/filter_bar"/> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > diff --git a/res/layout/mfmap.xml b/res/layout/mfmap.xml index a3c6885..4c78a10 100644 --- a/res/layout/mfmap.xml +++ b/res/layout/mfmap.xml @@ -19,6 +19,7 @@ android:src="@drawable/actionbar_manual" android:onClick="goManual" /> </LinearLayout> + <include layout="@layout/filter_bar"/> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > diff --git a/res/values/styles.xml b/res/values/styles.xml index f1f85e6..2ac800a 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -277,4 +277,30 @@ <item name="android:textColor">?text_color_headline</item> <item name="android:background">?background_color</item> </style> + +<!-- filter bar --> + <style name="filter_bar"> + <item name="android:layout_width">fill_parent</item> + <item name="android:layout_height">wrap_content</item> + <item name="android:orientation">horizontal</item> + <item name="android:background">@drawable/filter_bar_background</item> + <item name="android:gravity">center_vertical</item> + </style> + + <style name="filter_bar_image"> + <item name="android:layout_width">30dp</item> + <item name="android:layout_height">30dp</item> + <item name="android:padding">6dp</item> + <item name="android:scaleType">fitCenter</item> + </style> + + <style name="filter_bar_text"> + <item name="android:layout_width">wrap_content</item> + <item name="android:layout_height">wrap_content</item> + <item name="android:singleLine">true</item> + <item name="android:scrollHorizontally">true</item> + <item name="android:ellipsize">marquee</item> + <item name="android:lines">1</item> + <item name="android:textColor">@android:color/black</item> + </style> </resources> diff --git a/src/cgeo/geocaching/cgCacheListAdapter.java b/src/cgeo/geocaching/cgCacheListAdapter.java index 6dc63da..f6a8e2c 100644 --- a/src/cgeo/geocaching/cgCacheListAdapter.java +++ b/src/cgeo/geocaching/cgCacheListAdapter.java @@ -162,6 +162,10 @@ public class cgCacheListAdapter extends ArrayAdapter<cgCache> { } } + public String getFilterName() { + return currentFilter.getFilterName(); + } + public void setHistoric(boolean historicIn) { historic = historicIn; diff --git a/src/cgeo/geocaching/cgeocaches.java b/src/cgeo/geocaching/cgeocaches.java index 5fd1db1..926a72d 100644 --- a/src/cgeo/geocaching/cgeocaches.java +++ b/src/cgeo/geocaching/cgeocaches.java @@ -669,6 +669,8 @@ public class cgeocaches extends AbstractListActivity { setTitle(title); Log.e(cgSettings.tag, "cgeocaches.onCreate: No action or unknown action specified"); } + + prepareFilterBar(); } @Override @@ -746,7 +748,9 @@ public class cgeocaches extends AbstractListActivity { public boolean onCreateOptionsMenu(Menu menu) { SubMenu subMenuFilter = menu.addSubMenu(0, SUBMENU_FILTER, 0, res.getString(R.string.caches_filter)).setIcon(android.R.drawable.ic_menu_search); subMenuFilter.setHeaderTitle(res.getString(R.string.caches_filter_title)); - subMenuFilter.add(0, SUBMENU_FILTER_TYPE, 0, res.getString(R.string.caches_filter_type)); + if (settings.cacheType == null) { + subMenuFilter.add(0, SUBMENU_FILTER_TYPE, 0, res.getString(R.string.caches_filter_type)); + } subMenuFilter.add(0, SUBMENU_FILTER_SIZE, 0, res.getString(R.string.caches_filter_size)); subMenuFilter.add(0, MENU_FILTER_TRACKABLES, 0, res.getString(R.string.caches_filter_track)); subMenuFilter.add(0, MENU_FILTER_CLEAR, 0, res.getString(R.string.caches_filter_clear)); @@ -1012,11 +1016,11 @@ public class cgeocaches extends AbstractListActivity { openContextMenu(getListView()); return false; case MENU_FILTER_TRACKABLES: - adapter.setFilter(new cgFilterByTrackables()); + setFilter(new cgFilterByTrackables(res.getString(R.string.caches_filter_track))); return false; case MENU_FILTER_CLEAR: if (adapter != null) { - adapter.setFilter(null); + setFilter(null); } return false; case MENU_IMPORT_WEB: @@ -1299,6 +1303,7 @@ public class cgeocaches extends AbstractListActivity { private boolean setFilter(cgFilter filter) { if (adapter != null) { adapter.setFilter(filter); + prepareFilterBar(); return true; } return false; @@ -2602,4 +2607,29 @@ public class cgeocaches extends AbstractListActivity { context.startActivity(cachesIntent); } + + private void prepareFilterBar() { + TextView filterTextView = (TextView) findViewById(R.id.filter_text); + View filterBar = findViewById(R.id.filter_bar); + String cacheType = "", filter = ""; + + if (settings.cacheType != null || adapter.isFilter()) { + if (settings.cacheType != null) { + cacheType = cgBase.cacheTypesInv.get(settings.cacheType); + } + if (adapter.isFilter()) { + filter = adapter.getFilterName(); + } + + if (settings.cacheType != null && adapter.isFilter()) { + filter = ", " + filter; + } + + filterTextView.setText(cacheType + filter); + filterBar.setVisibility(View.VISIBLE); + } + else { + filterBar.setVisibility(View.GONE); + } + } } diff --git a/src/cgeo/geocaching/filter/cgFilter.java b/src/cgeo/geocaching/filter/cgFilter.java index 20f04c9..4dc0d99 100644 --- a/src/cgeo/geocaching/filter/cgFilter.java +++ b/src/cgeo/geocaching/filter/cgFilter.java @@ -6,6 +6,12 @@ import java.util.List; import cgeo.geocaching.cgCache; public abstract class cgFilter { + String name; + + public cgFilter(String name) { + this.name = name; + } + abstract boolean applyFilter(cgCache cache); public void filter(List<cgCache> list){ @@ -17,4 +23,8 @@ public abstract class cgFilter { } list.removeAll(itemsToRemove); } + + public String getFilterName() { + return name; + } } diff --git a/src/cgeo/geocaching/filter/cgFilterBySize.java b/src/cgeo/geocaching/filter/cgFilterBySize.java index 3437620..649166b 100644 --- a/src/cgeo/geocaching/filter/cgFilterBySize.java +++ b/src/cgeo/geocaching/filter/cgFilterBySize.java @@ -3,15 +3,12 @@ package cgeo.geocaching.filter; import cgeo.geocaching.cgCache; public class cgFilterBySize extends cgFilter { - private String size; + public cgFilterBySize(String size) { + super(size); + } - public cgFilterBySize(String size){ - this.size = size; - } - - @Override + @Override boolean applyFilter(cgCache cache) { - return size.equals(cache.size); + return name.equals(cache.name); } - } diff --git a/src/cgeo/geocaching/filter/cgFilterByTrackables.java b/src/cgeo/geocaching/filter/cgFilterByTrackables.java index 44c85c1..0866ff5 100644 --- a/src/cgeo/geocaching/filter/cgFilterByTrackables.java +++ b/src/cgeo/geocaching/filter/cgFilterByTrackables.java @@ -3,10 +3,12 @@ package cgeo.geocaching.filter; import cgeo.geocaching.cgCache; public class cgFilterByTrackables extends cgFilter { + public cgFilterByTrackables(String name) { + super(name); + } - @Override + @Override boolean applyFilter(cgCache cache) { return cache.hasTrackables(); } - } diff --git a/src/cgeo/geocaching/filter/cgFilterByType.java b/src/cgeo/geocaching/filter/cgFilterByType.java index 15948e4..2b2ace6 100644 --- a/src/cgeo/geocaching/filter/cgFilterByType.java +++ b/src/cgeo/geocaching/filter/cgFilterByType.java @@ -1,17 +1,20 @@ package cgeo.geocaching.filter; +import cgeo.geocaching.cgBase; import cgeo.geocaching.cgCache; public class cgFilterByType extends cgFilter { - private String type; - public cgFilterByType(String type){ - this.type = type; + super(type); } @Override boolean applyFilter(cgCache cache) { - return type.equals(cache.type); + return name.equals(cache.name); + } + + @Override + public String getFilterName() { + return cgBase.cacheTypesInv.get(name); } - } diff --git a/src/cgeo/geocaching/mapcommon/cgeomap.java b/src/cgeo/geocaching/mapcommon/cgeomap.java index 40f7a3c..f6bd400 100644 --- a/src/cgeo/geocaching/mapcommon/cgeomap.java +++ b/src/cgeo/geocaching/mapcommon/cgeomap.java @@ -25,10 +25,11 @@ import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; -import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; +import android.view.ViewGroup.LayoutParams; import android.widget.ImageSwitcher; import android.widget.ImageView; +import android.widget.TextView; import android.widget.ImageView.ScaleType; import android.widget.ViewSwitcher.ViewFactory; import cgeo.geocaching.R; @@ -38,13 +39,13 @@ import cgeo.geocaching.cgCoord; import cgeo.geocaching.cgDirection; import cgeo.geocaching.cgGeo; import cgeo.geocaching.cgSettings; -import cgeo.geocaching.cgSettings.mapSourceEnum; import cgeo.geocaching.cgUpdateDir; import cgeo.geocaching.cgUpdateLoc; import cgeo.geocaching.cgUser; import cgeo.geocaching.cgWaypoint; import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.activity.ActivityMixin; +import cgeo.geocaching.cgSettings.mapSourceEnum; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.mapinterfaces.ActivityImpl; import cgeo.geocaching.mapinterfaces.CacheOverlayItemImpl; @@ -357,6 +358,13 @@ public class cgeomap extends MapBase implements OnDragListener, ViewFactory { switchMyLocationButton(); startTimer(); + + // show the filter warning bar if the filter is set + if (settings.cacheType != null) { + String cacheType = cgBase.cacheTypesInv.get(settings.cacheType); + ((TextView)activity.findViewById(R.id.filter_text)).setText(cacheType); + activity.findViewById(R.id.filter_bar).setVisibility(View.VISIBLE); + } } @Override |
