summaryrefslogtreecommitdiff
path: root/src/org
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2012-09-23 21:14:01 +0400
committerAndrew Dolgov <[email protected]>2012-09-23 21:14:01 +0400
commitc6225cd16e73fd6ef0f6f6f2b5f4926c849abce9 (patch)
tree0d441ac23ed7b67634437cf3ab450cecb91ba882 /src/org
parent193b107c80822970fbf457eeedd9f17ac852af10 (diff)
reimplement going between articles with volume keys, bump version
Diffstat (limited to 'src/org')
-rw-r--r--src/org/fox/ttrss/ArticlePager.java22
-rw-r--r--src/org/fox/ttrss/OnlineActivity.java21
-rw-r--r--src/org/fox/ttrss/offline/OfflineActivity.java21
-rw-r--r--src/org/fox/ttrss/offline/OfflineArticlePager.java37
-rw-r--r--src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java2
5 files changed, 94 insertions, 9 deletions
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() {