summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/menu/main_menu.xml18
-rw-r--r--res/values/strings.xml1
-rw-r--r--src/org/fox/ttrss/HeadlinesFragment.java16
-rw-r--r--src/org/fox/ttrss/MainActivity.java56
4 files changed, 85 insertions, 6 deletions
diff --git a/res/menu/main_menu.xml b/res/menu/main_menu.xml
index 85d9dac8..1e3f58b7 100644
--- a/res/menu/main_menu.xml
+++ b/res/menu/main_menu.xml
@@ -4,11 +4,13 @@
<group android:id="@+id/menu_group_feeds" >
- <!-- <item
+ <!--
+ <item
android:id="@+id/back_to_categories"
android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:showAsAction=""
- android:title="@string/back_to_categories"/> -->
+ android:title="@string/back_to_categories"/>
+ -->
<item
android:id="@+id/show_feeds"
@@ -39,10 +41,17 @@
<item
android:id="@+id/go_offline"
- android:icon="@drawable/ic_menu_cloud"
+ android:icon="@drawable/ic_menu_cloud"
android:title="@string/go_offline"/>
<item
+ android:id="@+id/search"
+ android:actionViewClass="android.widget.SearchView"
+ android:icon="@android:drawable/ic_menu_search"
+ android:showAsAction="ifRoom"
+ android:title="@string/search"/>
+
+ <item
android:id="@+id/headlines_mark_as_read"
android:icon="@drawable/ic_menu_tick"
android:showAsAction=""
@@ -112,12 +121,11 @@
android:id="@+id/catchup_above"
android:icon="@drawable/ic_menu_tick"
android:title="@string/article_mark_read_above"/>
-
+
<item
android:id="@+id/set_labels"
android:icon="@drawable/ic_menu_marked"
android:title="@string/article_set_labels"/>
-
</group>
</group>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 27eea636..6605b52a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -115,4 +115,5 @@
<string name="offline_image_cache_enabled_summary">Download images to sdcard. This might significantly increase time it takes to go offline.</string>
<string name="notify_downloading_images">Downloading images (%1$d)...</string>
<string name="article_set_labels">Set labels</string>
+ <string name="search">Search</string>
</resources> \ No newline at end of file
diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java
index 6c66b3aa..1f33e746 100644
--- a/src/org/fox/ttrss/HeadlinesFragment.java
+++ b/src/org/fox/ttrss/HeadlinesFragment.java
@@ -58,6 +58,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
private boolean m_refreshInProgress = false;
private boolean m_canLoadMore = false;
private boolean m_combinedMode = true;
+ private String m_searchQuery = "";
private SharedPreferences m_prefs;
@@ -110,6 +111,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
m_selectedArticles = savedInstanceState.getParcelable("selectedArticles");
m_canLoadMore = savedInstanceState.getBoolean("canLoadMore");
m_combinedMode = savedInstanceState.getBoolean("combinedMode");
+ m_searchQuery = savedInstanceState.getString("searchQuery", "");
}
View view = inflater.inflate(R.layout.headlines_fragment, container, false);
@@ -201,6 +203,12 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
put("skip", String.valueOf(fskip));
if (isCat) put("is_cat", "true");
+
+ if (m_searchQuery.length() != 0) {
+ put("search", m_searchQuery);
+ put("search_mode", "");
+ put("match_on", "both");
+ }
}
};
@@ -217,6 +225,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
out.putParcelable("selectedArticles", m_selectedArticles);
out.putBoolean("canLoadMore", m_canLoadMore);
out.putBoolean("combinedMode", m_combinedMode);
+ out.putString("searchQuery", m_searchQuery);
}
public void setLoadingStatus(int status, boolean showProgress) {
@@ -562,5 +571,12 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
return m_adapter.getPosition(article);
}
+ public void setSearchQuery(String query) {
+ if (!m_searchQuery.equals(query)) {
+ m_searchQuery = query;
+ refresh(false);
+ }
+ }
+
}
diff --git a/src/org/fox/ttrss/MainActivity.java b/src/org/fox/ttrss/MainActivity.java
index 5fc579af..40c0a331 100644
--- a/src/org/fox/ttrss/MainActivity.java
+++ b/src/org/fox/ttrss/MainActivity.java
@@ -31,6 +31,7 @@ import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
+import android.support.v4.widget.SearchViewCompat;
import android.util.Log;
import android.view.ActionMode;
import android.view.Display;
@@ -43,6 +44,7 @@ import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.LinearLayout;
+import android.widget.SearchView;
import android.widget.TextView;
import android.widget.Toast;
@@ -1201,8 +1203,52 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
} else if (m_selectedArticle != null) {
m_menu.setGroupVisible(R.id.menu_group_article, true);
- } else if (m_activeFeed != null || m_activeCategory != null) {
+ } else if (m_activeFeed != null) {
m_menu.setGroupVisible(R.id.menu_group_headlines, true);
+
+ MenuItem search = m_menu.findItem(R.id.search);
+
+ if (search != null && !m_compatMode) {
+ SearchView searchView = (SearchView) search.getActionView();
+ searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
+ private String query = "";
+
+ @Override
+ public boolean onQueryTextSubmit(String query) {
+ Log.d(TAG, "Search/onQueryTextSubmit");
+
+ HeadlinesFragment frag = (HeadlinesFragment) getSupportFragmentManager()
+ .findFragmentById(R.id.headlines_fragment);
+
+ if (frag != null) {
+ frag.setSearchQuery(query);
+ this.query = query;
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean onQueryTextChange(String newText) {
+ // TODO Auto-generated method stub
+
+ Log.d(TAG, "Search/onQueryTextChange: " + newText);
+
+ if (newText.equals("") && !newText.equals(this.query)) {
+ HeadlinesFragment frag = (HeadlinesFragment) getSupportFragmentManager()
+ .findFragmentById(R.id.headlines_fragment);
+
+ if (frag != null) {
+ frag.setSearchQuery(newText);
+ this.query = newText;
+ }
+ }
+
+ return false;
+ }
+ });
+ }
+
} else {
m_menu.setGroupVisible(R.id.menu_group_feeds, true);
}
@@ -1422,6 +1468,14 @@ public class MainActivity extends FragmentActivity implements OnlineServices {
}
if (!append) {
+
+ MenuItem search = m_menu.findItem(R.id.search);
+
+ if (search != null && !m_compatMode) {
+ SearchView sv = (SearchView) search.getActionView();
+ sv.setQuery("", false);
+ }
+
HeadlinesFragment hf = new HeadlinesFragment();
FragmentTransaction ft = getSupportFragmentManager()