From c6225cd16e73fd6ef0f6f6f2b5f4926c849abce9 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 23 Sep 2012 21:14:01 +0400 Subject: reimplement going between articles with volume keys, bump version --- src/org/fox/ttrss/ArticlePager.java | 22 +++++++++++++ src/org/fox/ttrss/OnlineActivity.java | 21 ++++++++++++ src/org/fox/ttrss/offline/OfflineActivity.java | 21 ++++++++++++ src/org/fox/ttrss/offline/OfflineArticlePager.java | 37 +++++++++++++++++----- .../ttrss/offline/OfflineHeadlinesFragment.java | 2 +- 5 files changed, 94 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/org/fox/ttrss/ArticlePager.java b/src/org/fox/ttrss/ArticlePager.java index 72da63f0..a7ea5ff8 100644 --- a/src/org/fox/ttrss/ArticlePager.java +++ b/src/org/fox/ttrss/ArticlePager.java @@ -256,4 +256,26 @@ public class ArticlePager extends Fragment { pager.setCurrentItem(position); } } + + public void selectArticle(boolean next) { + if (m_article != null) { + int position = m_articles.indexOf(m_article); + + if (next) + position++; + else + position--; + + try { + Article tmp = m_articles.get(position); + + if (tmp != null) { + setActiveArticle(tmp); + } + + } catch (IndexOutOfBoundsException e) { + // do nothing + } + } + } } diff --git a/src/org/fox/ttrss/OnlineActivity.java b/src/org/fox/ttrss/OnlineActivity.java index 3ed698dc..f0bcb320 100644 --- a/src/org/fox/ttrss/OnlineActivity.java +++ b/src/org/fox/ttrss/OnlineActivity.java @@ -31,6 +31,7 @@ import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; import android.view.ActionMode; +import android.view.KeyEvent; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -1031,6 +1032,26 @@ public class OnlineActivity extends CommonActivity { return intent; } + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (m_prefs.getBoolean("use_volume_keys", false)) { + ArticlePager ap = (ArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE); + + if (ap != null && ap.isAdded()) { + switch (keyCode) { + case KeyEvent.KEYCODE_VOLUME_UP: + ap.selectArticle(false); + return true; + case KeyEvent.KEYCODE_VOLUME_DOWN: + ap.selectArticle(true); + return true; + } + } + } + + return super.onKeyDown(keyCode, event); + } + @SuppressWarnings("unchecked") public void catchupFeed(final Feed feed) { Log.d(TAG, "catchupFeed=" + feed); diff --git a/src/org/fox/ttrss/offline/OfflineActivity.java b/src/org/fox/ttrss/offline/OfflineActivity.java index 2c6309fa..f7ee9768 100644 --- a/src/org/fox/ttrss/offline/OfflineActivity.java +++ b/src/org/fox/ttrss/offline/OfflineActivity.java @@ -19,6 +19,7 @@ import android.preference.PreferenceManager; import android.provider.BaseColumns; import android.util.Log; import android.view.ActionMode; +import android.view.KeyEvent; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; @@ -495,6 +496,26 @@ public class OfflineActivity extends CommonActivity { return c; } + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (m_prefs.getBoolean("use_volume_keys", false)) { + OfflineArticlePager ap = (OfflineArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE); + + if (ap != null && ap.isAdded()) { + switch (keyCode) { + case KeyEvent.KEYCODE_VOLUME_UP: + ap.selectArticle(false); + return true; + case KeyEvent.KEYCODE_VOLUME_DOWN: + ap.selectArticle(true); + return true; + } + } + } + + return super.onKeyDown(keyCode, event); + } + protected Cursor getFeedById(int feedId) { Cursor c = getReadableDb().query("feeds", null, BaseColumns._ID + "=?", diff --git a/src/org/fox/ttrss/offline/OfflineArticlePager.java b/src/org/fox/ttrss/offline/OfflineArticlePager.java index 9f8ae0f4..659aae00 100644 --- a/src/org/fox/ttrss/offline/OfflineArticlePager.java +++ b/src/org/fox/ttrss/offline/OfflineArticlePager.java @@ -1,6 +1,7 @@ package org.fox.ttrss.offline; import org.fox.ttrss.R; +import org.fox.ttrss.types.Article; import android.app.Activity; import android.database.Cursor; @@ -206,21 +207,41 @@ public class OfflineArticlePager extends Fragment { public void setArticleId(int articleId) { m_articleId = articleId; - m_cursor.moveToFirst(); + int position = getArticleIdPosition(articleId); - int position = 0; + ViewPager pager = (ViewPager) getView().findViewById(R.id.article_pager); + + pager.setCurrentItem(position); + + } + + public int getArticleIdPosition(int articleId) { + m_cursor.moveToFirst(); while (!m_cursor.isLast()) { - if (m_cursor.getInt(m_cursor.getColumnIndex(BaseColumns._ID)) == m_articleId) { - position = m_cursor.getPosition(); - break; + if (m_cursor.getInt(m_cursor.getColumnIndex(BaseColumns._ID)) == articleId) { + return m_cursor.getPosition(); } m_cursor.moveToNext(); } - ViewPager pager = (ViewPager) getView().findViewById(R.id.article_pager); - - pager.setCurrentItem(position); + return -1; + } + + public void selectArticle(boolean next) { + int position = getArticleIdPosition(m_articleId); + if (position != -1) { + if (next) + position++; + else + position--; + + Log.d(TAG, "pos=" + position); + + if (m_cursor.moveToPosition(position)) { + setArticleId(m_cursor.getInt(m_cursor.getColumnIndex(BaseColumns._ID))); + } + } } } diff --git a/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java index 31a1638b..de649a57 100644 --- a/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java +++ b/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java @@ -661,7 +661,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis return i; } - return 0; + return -1; } public int getArticleCount() { -- cgit v1.2.3-54-g00ecf