summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2012-12-14 19:37:05 +0400
committerAndrew Dolgov <[email protected]>2012-12-14 19:37:05 +0400
commitd473c5abbda4e5f8fbb0aef9c21014470e2dbec1 (patch)
tree1d13653c59c859ce98a386620d4bbcf3151e3dbb
parent77e7bef9688a36b109938d6120a997f592139c06 (diff)
move between articles by tapping left/right sides
-rw-r--r--AndroidManifest.xml4
-rw-r--r--src/org/fox/ttrss/ArticleFragment.java109
-rw-r--r--src/org/fox/ttrss/offline/OfflineArticleFragment.java109
3 files changed, 217 insertions, 5 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 90117d6e..3f656b1a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.fox.ttrss"
- android:versionCode="118"
- android:versionName="0.9.2" >
+ android:versionCode="119"
+ android:versionName="0.9.3" >
<uses-sdk
android:minSdkVersion="8"
diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java
index edbc6a37..e74b2468 100644
--- a/src/org/fox/ttrss/ArticleFragment.java
+++ b/src/org/fox/ttrss/ArticleFragment.java
@@ -14,6 +14,7 @@ import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import android.annotation.SuppressLint;
+import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -24,10 +25,12 @@ import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.util.TypedValue;
+import android.view.GestureDetector;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuItem;
+import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
@@ -40,7 +43,7 @@ import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;
-public class ArticleFragment extends Fragment {
+public class ArticleFragment extends Fragment implements GestureDetector.OnDoubleTapListener {
private final String TAG = this.getClass().getSimpleName();
private SharedPreferences m_prefs;
@@ -48,7 +51,8 @@ public class ArticleFragment extends Fragment {
private OnlineActivity m_activity;
//private Article m_nextArticle;
//private Article m_prevArticle;
-
+ private GestureDetector m_detector;
+
public ArticleFragment() {
super();
}
@@ -180,6 +184,13 @@ public class ArticleFragment extends Fragment {
}
});
+ web.setOnTouchListener(new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ return m_detector.onTouchEvent(event);
+ }
+ });
+
String content;
String cssOverride = "";
@@ -398,6 +409,100 @@ public class ArticleFragment extends Fragment {
m_prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
m_activity = (OnlineActivity)activity;
//m_article = m_onlineServices.getSelectedArticle();
+
+ m_detector = new GestureDetector(m_activity, new GestureDetector.OnGestureListener() {
+ @Override
+ public boolean onSingleTapUp(MotionEvent e) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void onShowPress(MotionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
+ float distanceY) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void onLongPress(MotionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
+ float velocityY) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean onDown(MotionEvent e) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+ });
+
+ m_detector.setOnDoubleTapListener(this);
+ }
+
+ @Override
+ public boolean onDoubleTap(MotionEvent arg0) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean onDoubleTapEvent(MotionEvent arg0) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ private void onLeftSideTapped() {
+ ArticlePager ap = (ArticlePager) m_activity.getSupportFragmentManager().findFragmentByTag(CommonActivity.FRAG_ARTICLE);
+
+ if (ap != null && ap.isAdded()) {
+ ap.selectArticle(false);
+ }
+ }
+
+ private void onRightSideTapped() {
+ ArticlePager ap = (ArticlePager) m_activity.getSupportFragmentManager().findFragmentByTag(CommonActivity.FRAG_ARTICLE);
+
+ if (ap != null && ap.isAdded()) {
+ ap.selectArticle(true);
+ }
+ }
+
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+
+ int width = getView().getWidth();
+ int x = Math.round(e.getX());
+
+ if (x <= width/15) {
+ onLeftSideTapped();
+ return true;
+ } else if (x >= width-(width/15)) {
+ onRightSideTapped();
+ return true;
+ } /* else if (!m_activity.isCompatMode()) {
+ ActionBar bar = m_activity.getActionBar();
+
+ if (bar.isShowing()) {
+ bar.hide();
+ } else {
+ bar.show();
+ }
+ } */
+ return false;
}
}
diff --git a/src/org/fox/ttrss/offline/OfflineArticleFragment.java b/src/org/fox/ttrss/offline/OfflineArticleFragment.java
index d5d004cf..a16ab002 100644
--- a/src/org/fox/ttrss/offline/OfflineArticleFragment.java
+++ b/src/org/fox/ttrss/offline/OfflineArticleFragment.java
@@ -3,6 +3,8 @@ package org.fox.ttrss.offline;
import java.text.SimpleDateFormat;
import java.util.Date;
+import org.fox.ttrss.ArticlePager;
+import org.fox.ttrss.CommonActivity;
import org.fox.ttrss.R;
import org.fox.ttrss.util.ImageCacheService;
import org.jsoup.Jsoup;
@@ -27,6 +29,7 @@ import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuItem;
+import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
@@ -35,8 +38,9 @@ import android.webkit.WebSettings;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebView;
import android.widget.TextView;
+import android.view.GestureDetector;
-public class OfflineArticleFragment extends Fragment {
+public class OfflineArticleFragment extends Fragment implements GestureDetector.OnDoubleTapListener {
private final String TAG = this.getClass().getSimpleName();
private SharedPreferences m_prefs;
@@ -44,6 +48,7 @@ public class OfflineArticleFragment extends Fragment {
private boolean m_isCat = false; // FIXME use
private Cursor m_cursor;
private OfflineActivity m_activity;
+ private GestureDetector m_detector;
public OfflineArticleFragment() {
super();
@@ -161,6 +166,13 @@ public class OfflineArticleFragment extends Fragment {
}
});
+ web.setOnTouchListener(new View.OnTouchListener() {
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ return m_detector.onTouchEvent(event);
+ }
+ });
+
String content;
String cssOverride = "";
@@ -297,6 +309,101 @@ public class OfflineArticleFragment extends Fragment {
m_prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
m_activity = (OfflineActivity) activity;
+
+ m_detector = new GestureDetector(m_activity, new GestureDetector.OnGestureListener() {
+ @Override
+ public boolean onSingleTapUp(MotionEvent e) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void onShowPress(MotionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
+ float distanceY) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void onLongPress(MotionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
+ float velocityY) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean onDown(MotionEvent e) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+ });
+
+ m_detector.setOnDoubleTapListener(this);
+ }
+
+ @Override
+ public boolean onDoubleTap(MotionEvent arg0) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean onDoubleTapEvent(MotionEvent arg0) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ private void onLeftSideTapped() {
+ OfflineArticlePager ap = (OfflineArticlePager) m_activity.getSupportFragmentManager().findFragmentByTag(CommonActivity.FRAG_ARTICLE);
+
+ if (ap != null && ap.isAdded()) {
+ ap.selectArticle(false);
+ }
+ }
+
+ private void onRightSideTapped() {
+ OfflineArticlePager ap = (OfflineArticlePager) m_activity.getSupportFragmentManager().findFragmentByTag(CommonActivity.FRAG_ARTICLE);
+
+ if (ap != null && ap.isAdded()) {
+ ap.selectArticle(true);
+ }
+ }
+
+ @Override
+ public boolean onSingleTapConfirmed(MotionEvent e) {
+
+ int width = getView().getWidth();
+ int x = Math.round(e.getX());
+
+ if (x <= width/15) {
+ onLeftSideTapped();
+ return true;
+ } else if (x >= width-(width/15)) {
+ onRightSideTapped();
+ return true;
+ } /* else if (!m_activity.isCompatMode()) {
+ ActionBar bar = m_activity.getActionBar();
+
+ if (bar.isShowing()) {
+ bar.hide();
+ } else {
+ bar.show();
+ }
+ } */
+
+ return false;
}