diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/org/fox/ttrss/OfflineActivity.java | 109 | ||||
-rw-r--r-- | src/org/fox/ttrss/OfflineFeedsFragment.java | 5 | ||||
-rw-r--r-- | src/org/fox/ttrss/OfflineHeadlinesFragment.java | 20 |
3 files changed, 128 insertions, 6 deletions
diff --git a/src/org/fox/ttrss/OfflineActivity.java b/src/org/fox/ttrss/OfflineActivity.java index df63b198..e8359de2 100644 --- a/src/org/fox/ttrss/OfflineActivity.java +++ b/src/org/fox/ttrss/OfflineActivity.java @@ -9,6 +9,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.content.DialogInterface.OnClickListener; import android.content.res.Configuration; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; @@ -21,7 +22,6 @@ import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.view.ActionMode; -import android.view.Display; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuInflater; @@ -30,7 +30,8 @@ import android.view.View; import android.view.ViewGroup; import android.view.animation.AnimationUtils; import android.widget.AdapterView.AdapterContextMenuInfo; -import android.widget.LinearLayout; +import android.widget.EditText; +import android.widget.SearchView; import android.widget.TextView; public class OfflineActivity extends FragmentActivity implements @@ -328,6 +329,14 @@ public class OfflineActivity extends FragmentActivity implements findViewById(R.id.feeds_fragment).setVisibility(View.VISIBLE); // } m_activeFeedId = 0; + + OfflineFeedsFragment ff = (OfflineFeedsFragment) getSupportFragmentManager() + .findFragmentById(R.id.feeds_fragment); + + if (ff != null) { + ff.setSelectedFeedId(0); + } + refreshViews(); initMainMenu(); @@ -341,6 +350,13 @@ public class OfflineActivity extends FragmentActivity implements findViewById(R.id.headlines_fragment).setVisibility(View.INVISIBLE); m_activeFeedId = 0; + OfflineFeedsFragment ff = (OfflineFeedsFragment) getSupportFragmentManager() + .findFragmentById(R.id.feeds_fragment); + + if (ff != null) { + ff.setSelectedFeedId(0); + } + refreshViews(); initMainMenu(); @@ -431,13 +447,51 @@ public class OfflineActivity extends FragmentActivity implements @Override public boolean onOptionsItemSelected(MenuItem item) { - OfflineHeadlinesFragment ohf = (OfflineHeadlinesFragment) getSupportFragmentManager() + final OfflineHeadlinesFragment ohf = (OfflineHeadlinesFragment) getSupportFragmentManager() .findFragmentById(R.id.headlines_fragment); switch (item.getItemId()) { case android.R.id.home: goBack(false); return true; + case R.id.search: + if (ohf != null && m_compatMode) { + Dialog dialog = new Dialog(this); + + final EditText edit = new EditText(this); + + AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(R.string.search) + .setPositiveButton(getString(R.string.search), + new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, + int which) { + + String query = edit.getText().toString().trim(); + + ohf.setSearchQuery(query); + + } + }) + .setNegativeButton(getString(R.string.cancel), + new OnClickListener() { + + @Override + public void onClick(DialogInterface dialog, + int which) { + + // + + } + }).setView(edit); + + dialog = builder.create(); + dialog.show(); + } + + return true; case R.id.preferences: Intent intent = new Intent(this, PreferencesActivity.class); startActivityForResult(intent, 0); @@ -671,8 +725,46 @@ public class OfflineActivity extends FragmentActivity implements } } else if (m_selectedArticleId != 0) { m_menu.setGroupVisible(R.id.menu_group_article, true); - } else if (m_activeFeedId != 0 /*|| m_activeCategory != null */) { + } else if (m_activeFeedId != 0) { m_menu.setGroupVisible(R.id.menu_group_headlines, true); + + MenuItem search = m_menu.findItem(R.id.search); + + if (!m_compatMode) { + SearchView searchView = (SearchView) search.getActionView(); + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + private String query = ""; + + @Override + public boolean onQueryTextSubmit(String query) { + OfflineHeadlinesFragment frag = (OfflineHeadlinesFragment) getSupportFragmentManager() + .findFragmentById(R.id.headlines_fragment); + + if (frag != null) { + frag.setSearchQuery(query); + this.query = query; + } + + return false; + } + + @Override + public boolean onQueryTextChange(String newText) { + if (newText.equals("") && !newText.equals(this.query)) { + OfflineHeadlinesFragment frag = (OfflineHeadlinesFragment) 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); } @@ -977,6 +1069,15 @@ public class OfflineActivity extends FragmentActivity implements deselectAllArticles(); + if (m_menu != null) { + MenuItem search = m_menu.findItem(R.id.search); + + if (search != null && !m_compatMode) { + SearchView sv = (SearchView) search.getActionView(); + sv.setQuery("", false); + } + } + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); OfflineHeadlinesFragment frag = new OfflineHeadlinesFragment(); ft.replace(R.id.headlines_fragment, frag); diff --git a/src/org/fox/ttrss/OfflineFeedsFragment.java b/src/org/fox/ttrss/OfflineFeedsFragment.java index 8b836218..01744efe 100644 --- a/src/org/fox/ttrss/OfflineFeedsFragment.java +++ b/src/org/fox/ttrss/OfflineFeedsFragment.java @@ -283,5 +283,10 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene return 0;
}
+
+ public void setSelectedFeedId(int feedId) {
+ m_selectedFeedId = feedId;
+ refresh();
+ }
}
diff --git a/src/org/fox/ttrss/OfflineHeadlinesFragment.java b/src/org/fox/ttrss/OfflineHeadlinesFragment.java index fcb55d4f..a614592d 100644 --- a/src/org/fox/ttrss/OfflineHeadlinesFragment.java +++ b/src/org/fox/ttrss/OfflineHeadlinesFragment.java @@ -45,6 +45,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis private int m_feedId;
private int m_activeArticleId;
private boolean m_combinedMode = true;
+ private String m_searchQuery = "";
private SharedPreferences m_prefs;
@@ -120,6 +121,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis m_activeArticleId = savedInstanceState.getInt("activeArticleId");
//m_selectedArticles = savedInstanceState.getParcelableArrayList("selectedArticles");
m_combinedMode = savedInstanceState.getBoolean("combinedMode");
+ m_searchQuery = (String) savedInstanceState.getCharSequence("searchQuery");
}
View view = inflater.inflate(R.layout.headlines_fragment, container, false);
@@ -141,8 +143,14 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis }
public Cursor createCursor() {
- return m_offlineServices.getReadableDb().query("articles",
- null, "feed_id = ?", new String[] { String.valueOf(m_feedId) }, null, null, "updated DESC");
+ if (m_searchQuery.equals("")) {
+ return m_offlineServices.getReadableDb().query("articles",
+ null, "feed_id = ?", new String[] { String.valueOf(m_feedId) }, null, null, "updated DESC");
+ } else {
+ return m_offlineServices.getReadableDb().query("articles",
+ null, "feed_id = ? AND (title LIKE '%' || ? || '%' OR content LIKE '%' || ? || '%')",
+ new String[] { String.valueOf(m_feedId), m_searchQuery, m_searchQuery }, null, null, "updated DESC");
+ }
}
@Override
@@ -189,6 +197,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis out.putInt("activeArticleId", m_activeArticleId);
//out.putParcelableArrayList("selectedArticles", m_selectedArticles);
out.putBoolean("combinedMode", m_combinedMode);
+ out.putCharSequence("searchQuery", m_searchQuery);
}
public void setLoadingStatus(int status, boolean showProgress) {
@@ -439,5 +448,12 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis public int getArticleCount() {
return m_adapter.getCount();
}
+
+ public void setSearchQuery(String query) {
+ if (!m_searchQuery.equals(query)) {
+ m_searchQuery = query;
+ refresh();
+ }
+ }
}
|