From 8243d0dde6997751def222c8263a93a2ba990cce Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Tue, 24 Jul 2012 14:37:34 +0200 Subject: implemented search button --- AndroidManifest.xml | 2 +- res/drawable-hdpi/action_search.png | Bin 0 -> 1759 bytes res/drawable-mdpi/action_search.png | Bin 0 -> 1429 bytes res/drawable-xhdpi/action_search.png | Bin 0 -> 2117 bytes res/layout/searchlist.xml | 20 +++++++ res/menu/podfetcher.xml | 1 + res/values/ids.xml | 1 + res/values/strings.xml | 5 ++ .../danoeh/antennapod/activity/MainActivity.java | 3 + .../danoeh/antennapod/activity/SearchActivity.java | 64 ++++++++++++++++++++- 10 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 res/drawable-hdpi/action_search.png create mode 100644 res/drawable-mdpi/action_search.png create mode 100644 res/drawable-xhdpi/action_search.png create mode 100644 res/layout/searchlist.xml diff --git a/AndroidManifest.xml b/AndroidManifest.xml index ecacd413c..b11491905 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -130,7 +130,7 @@ - + diff --git a/res/drawable-hdpi/action_search.png b/res/drawable-hdpi/action_search.png new file mode 100644 index 000000000..e6b704518 Binary files /dev/null and b/res/drawable-hdpi/action_search.png differ diff --git a/res/drawable-mdpi/action_search.png b/res/drawable-mdpi/action_search.png new file mode 100644 index 000000000..3aa644048 Binary files /dev/null and b/res/drawable-mdpi/action_search.png differ diff --git a/res/drawable-xhdpi/action_search.png b/res/drawable-xhdpi/action_search.png new file mode 100644 index 000000000..804420aee Binary files /dev/null and b/res/drawable-xhdpi/action_search.png differ diff --git a/res/layout/searchlist.xml b/res/layout/searchlist.xml new file mode 100644 index 000000000..71d5e828d --- /dev/null +++ b/res/layout/searchlist.xml @@ -0,0 +1,20 @@ + + + + + + + + \ No newline at end of file diff --git a/res/menu/podfetcher.xml b/res/menu/podfetcher.xml index 9eccb775b..acb2e6f97 100644 --- a/res/menu/podfetcher.xml +++ b/res/menu/podfetcher.xml @@ -21,4 +21,5 @@ + diff --git a/res/values/ids.xml b/res/values/ids.xml index f7cd4e62e..f3eae7671 100644 --- a/res/values/ids.xml +++ b/res/values/ids.xml @@ -7,5 +7,6 @@ + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 2a00375d0..839ab0c9e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -140,6 +140,11 @@ Found in:\u0020 Found in shownotes Found in chapters + Searching... + No results were found + Search results + You searched:\u0020 + Search \ No newline at end of file diff --git a/src/de/danoeh/antennapod/activity/MainActivity.java b/src/de/danoeh/antennapod/activity/MainActivity.java index 3423ddc21..ad325d0d2 100644 --- a/src/de/danoeh/antennapod/activity/MainActivity.java +++ b/src/de/danoeh/antennapod/activity/MainActivity.java @@ -108,6 +108,9 @@ public class MainActivity extends SherlockFragmentActivity { case R.id.opml_import: startActivity(new Intent(this, OpmlImportActivity.class)); return true; + case R.id.search_item: + onSearchRequested(); + return true; default: return super.onOptionsItemSelected(item); } diff --git a/src/de/danoeh/antennapod/activity/SearchActivity.java b/src/de/danoeh/antennapod/activity/SearchActivity.java index 9cc3b1717..8f05e533f 100644 --- a/src/de/danoeh/antennapod/activity/SearchActivity.java +++ b/src/de/danoeh/antennapod/activity/SearchActivity.java @@ -8,14 +8,23 @@ import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; +import android.view.View; +import android.widget.ListView; +import android.widget.TextView; import com.actionbarsherlock.app.SherlockListActivity; +import com.actionbarsherlock.view.Menu; +import com.actionbarsherlock.view.MenuItem; import de.danoeh.antennapod.AppConfig; +import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.SearchlistAdapter; -import de.danoeh.antennapod.feed.FeedComponent; +import de.danoeh.antennapod.feed.Feed; +import de.danoeh.antennapod.feed.FeedItem; import de.danoeh.antennapod.feed.FeedSearcher; import de.danoeh.antennapod.feed.SearchResult; +import de.danoeh.antennapod.fragment.FeedlistFragment; +import de.danoeh.antennapod.fragment.ItemlistFragment; public class SearchActivity extends SherlockListActivity { private static final String TAG = "SearchActivity"; @@ -23,21 +32,71 @@ public class SearchActivity extends SherlockListActivity { private SearchlistAdapter searchAdapter; private ArrayList content; + private TextView txtvStatus; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + setContentView(R.layout.searchlist); + txtvStatus = (TextView) findViewById(android.R.id.empty); if (Intent.ACTION_SEARCH.equals(getIntent().getAction())) { if (AppConfig.DEBUG) Log.d(TAG, "Starting search"); String query = getIntent().getStringExtra(SearchManager.QUERY); + getSupportActionBar().setSubtitle( + getString(R.string.search_term_label) + query); startSearch(query); } } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + startActivity(new Intent(this, MainActivity.class)); + return true; + default: + return false; + } + } + + @Override + protected void onListItemClick(ListView l, View v, int position, long id) { + super.onListItemClick(l, v, position, id); + SearchResult selection = searchAdapter.getItem(position); + if (selection.getComponent().getClass() == Feed.class) { + Feed feed = (Feed) selection.getComponent(); + Intent launchIntent = new Intent(this, FeedItemlistActivity.class); + launchIntent.putExtra(FeedlistFragment.EXTRA_SELECTED_FEED, + feed.getId()); + startActivity(launchIntent); + + } else if (selection.getComponent().getClass() == FeedItem.class) { + FeedItem item = (FeedItem) selection.getComponent(); + Intent launchIntent = new Intent(this, ItemviewActivity.class); + launchIntent.putExtra(FeedlistFragment.EXTRA_SELECTED_FEED, item + .getFeed().getId()); + launchIntent.putExtra(ItemlistFragment.EXTRA_SELECTED_FEEDITEM, + item.getId()); + startActivity(launchIntent); + } + } + @SuppressLint({ "NewApi", "NewApi" }) private void startSearch(String query) { AsyncTask> executor = new AsyncTask>() { + @Override + protected void onPreExecute() { + txtvStatus.setText(R.string.search_status_searching); + } + @Override protected ArrayList doInBackground(String... params) { if (AppConfig.DEBUG) @@ -57,6 +116,9 @@ public class SearchActivity extends SherlockListActivity { content); getListView().setAdapter(searchAdapter); searchAdapter.notifyDataSetChanged(); + if (content.isEmpty()) { + txtvStatus.setText(R.string.search_status_no_results); + } } -- cgit debian/1.2.3+git2.25.1-1-2-gaceb0