From 436f3359038b1f7cabfe92996c4c53d8dc74b076 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Fri, 31 Oct 2014 13:00:54 +0300 Subject: [PATCH] allow overscroll for headlines list if auto mark as read is enabled --- .../java/org/fox/ttrss/HeadlinesFragment.java | 47 ++++++++----------- .../offline/OfflineHeadlinesFragment.java | 20 +++++++- .../src/main/res/layout/headlines_footer.xml | 15 ++++++ 3 files changed, 53 insertions(+), 29 deletions(-) create mode 100644 org.fox.ttrss/src/main/res/layout/headlines_footer.xml diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java index 927f7b2b..5d635838 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesFragment.java @@ -20,11 +20,13 @@ import android.util.Log; import android.util.TypedValue; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; +import android.view.Display; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.view.WindowManager; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView; @@ -316,28 +318,22 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, } - ListView list = (ListView)view.findViewById(R.id.headlines); + ListView list = (ListView)view.findViewById(R.id.headlines); + + if (m_prefs.getBoolean("headlines_mark_read_scroll", false)) { + WindowManager wm = (WindowManager) m_activity.getSystemService(Context.WINDOW_SERVICE); + Display display = wm.getDefaultDisplay(); + int screenHeight = display.getHeight(); + + View layout = inflater.inflate(R.layout.headlines_footer, container, false); + + layout.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, screenHeight)); + + list.addFooterView(layout); + } + m_adapter = new ArticleListAdapter(getActivity(), R.layout.headlines_row, (ArrayList
)m_articles); - - /* if (!m_activity.isCompatMode()) { - AnimationSet set = new AnimationSet(true); - - Animation animation = new AlphaAnimation(0.0f, 1.0f); - animation.setDuration(500); - set.addAnimation(animation); - - animation = new TranslateAnimation( - Animation.RELATIVE_TO_SELF, 50.0f,Animation.RELATIVE_TO_SELF, 0.0f, - Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f - ); - animation.setDuration(1000); - set.addAnimation(animation); - - LayoutAnimationController controller = new LayoutAnimationController(set, 0.5f); - - list.setLayoutAnimation(controller); - } */ - + list.setAdapter(m_adapter); list.setOnItemClickListener(this); list.setOnScrollListener(this); @@ -348,11 +344,6 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, m_activity.setTitle(m_feed.title); } - //m_activity.m_pullToRefreshAttacher.addRefreshableView(list, this); - - //if (m_activity.isSmallScreen()) - //view.findViewById(R.id.headlines_fragment).setPadding(0, 0, 0, 0); - Log.d(TAG, "onCreateView, feed=" + m_feed); return view; @@ -399,7 +390,9 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, if (list != null) { Article article = (Article)list.getItemAtPosition(position); - if (article.id >= 0) { + + // could be footer or w/e + if (article != null && article.id >= 0) { m_listener.onArticleSelected(article); // only set active article when it makes sense (in HeadlinesActivity) diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java index 44ba3684..c06f7917 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesFragment.java @@ -19,11 +19,13 @@ import android.util.Log; import android.util.TypedValue; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; +import android.view.Display; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; +import android.view.WindowManager; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; @@ -295,8 +297,22 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis m_cursor = createCursor(); - ListView list = (ListView)view.findViewById(R.id.headlines); - m_adapter = new ArticleListAdapter(getActivity(), R.layout.headlines_row, m_cursor, + ListView list = (ListView)view.findViewById(R.id.headlines); + + if (m_prefs.getBoolean("headlines_mark_read_scroll", false)) { + WindowManager wm = (WindowManager) m_activity.getSystemService(Context.WINDOW_SERVICE); + Display display = wm.getDefaultDisplay(); + int screenHeight = display.getHeight(); + + View layout = inflater.inflate(R.layout.headlines_footer, container, false); + + layout.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.MATCH_PARENT, screenHeight)); + + list.addFooterView(layout); + } + + + m_adapter = new ArticleListAdapter(getActivity(), R.layout.headlines_row, m_cursor, new String[] { "title" }, new int[] { R.id.title }, 0); /* if (!m_activity.isCompatMode()) { diff --git a/org.fox.ttrss/src/main/res/layout/headlines_footer.xml b/org.fox.ttrss/src/main/res/layout/headlines_footer.xml new file mode 100644 index 00000000..5877aae9 --- /dev/null +++ b/org.fox.ttrss/src/main/res/layout/headlines_footer.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file