From 6e4ab9913473f504ed179b2519a27a81b75ba4a3 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 11 May 2015 12:54:07 +0300 Subject: offline: various positioning fixes --- .../fox/ttrss/offline/OfflineArticleFragment.java | 23 ++++++++++++++++- .../offline/OfflineFeedCategoriesFragment.java | 2 +- .../fox/ttrss/offline/OfflineFeedsFragment.java | 2 +- .../ttrss/offline/OfflineHeadlinesActivity.java | 2 ++ .../ttrss/offline/OfflineHeadlinesFragment.java | 29 +++++++++++++++++----- 5 files changed, 49 insertions(+), 9 deletions(-) (limited to 'org.fox.ttrss/src/main/java') diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java index bf5af739..35f86dc9 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineArticleFragment.java @@ -10,6 +10,7 @@ import android.os.Bundle; import android.preference.PreferenceManager; import android.provider.BaseColumns; import android.support.v4.app.Fragment; +import android.support.v7.app.ActionBar; import android.util.Log; import android.util.TypedValue; import android.view.ContextMenu; @@ -22,12 +23,14 @@ import android.view.ViewGroup; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebView.HitTestResult; +import android.widget.ScrollView; import android.widget.TextView; import com.shamanland.fab.ShowHideOnScroll; import org.fox.ttrss.R; import org.fox.ttrss.util.ImageCacheService; +import org.fox.ttrss.util.NotifyingScrollView; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -130,9 +133,27 @@ public class OfflineArticleFragment extends Fragment { if (m_cursor.isFirst()) { final String link = m_cursor.getString(m_cursor.getColumnIndex("link")); - View scrollView = view.findViewById(R.id.article_scrollview); + NotifyingScrollView scrollView = (NotifyingScrollView) view.findViewById(R.id.article_scrollview); View fab = view.findViewById(R.id.article_fab); + if (scrollView != null && m_activity.isSmallScreen()) { + view.findViewById(R.id.article_heading_spacer).setVisibility(View.VISIBLE); + + scrollView.setOnScrollChangedListener(new NotifyingScrollView.OnScrollChangedListener() { + @Override + public void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt) { + ActionBar ab = m_activity.getSupportActionBar(); + + if (t >= oldt && t >= ab.getHeight()) { + ab.hide(); + } else if (t <= ab.getHeight() | oldt - t >= 10) { + ab.show(); + } + + } + }); + } + if (scrollView != null && fab != null) { if (m_prefs.getBoolean("enable_article_fab", true)) { scrollView.setOnTouchListener(new ShowHideOnScroll(fab)); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java index a26b14a5..c9e445d7 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java @@ -239,7 +239,7 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli public int getItemViewType(int position) { Cursor cursor = (Cursor) this.getItem(position); - if (cursor.getLong(0) == m_selectedCatId) { + if (!m_activity.isSmallScreen() && cursor.getLong(0) == m_selectedCatId) { return VIEW_SELECTED; } else { return VIEW_NORMAL; diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java index 3bb35d69..520ff84a 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineFeedsFragment.java @@ -277,7 +277,7 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene public int getItemViewType(int position) { Cursor cursor = (Cursor) this.getItem(position); - if (cursor.getLong(0) == m_selectedFeedId) { + if (!m_activity.isSmallScreen() && cursor.getLong(0) == m_selectedFeedId) { return VIEW_SELECTED; } else { return VIEW_NORMAL; diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesActivity.java index f187f87e..a52252dd 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/offline/OfflineHeadlinesActivity.java @@ -48,6 +48,8 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); + getSupportActionBar().show(); + invalidateOptionsMenu(); } 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 b47e184e..481657d7 100755 --- 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 @@ -71,6 +71,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis private boolean m_compactLayoutMode = false; private ListView m_list; + private int m_listPreviousVisibleItem; public void initialize(int feedId, boolean isCat, boolean compactMode) { m_feedId = feedId; @@ -811,18 +812,20 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis } public Cursor getArticleAtPosition(int position) { - return (Cursor) m_adapter.getItem(position); + return (Cursor) m_list.getItemAtPosition(position); } public int getArticleIdAtPosition(int position) { - /*Cursor c = getArticleAtPosition(position); + Cursor c = getArticleAtPosition(position); if (c != null) { int id = c.getInt(0); return id; - } */ + } + + return 0; - return (int) m_adapter.getItemId(position); + //return (int) m_adapter.getItemId(position + m_list.getHeaderViewsCount()); } public int getActiveArticleId() { @@ -832,7 +835,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis public int getArticleIdPosition(int articleId) { for (int i = 0; i < m_adapter.getCount(); i++) { if (articleId == m_adapter.getItemId(i)) - return i; + return i + m_list.getHeaderViewsCount(); } return -1; @@ -862,7 +865,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { - if (m_prefs.getBoolean("headlines_mark_read_scroll", false) && firstVisibleItem > 0) { + if (m_prefs.getBoolean("headlines_mark_read_scroll", false) && firstVisibleItem > (m_activity.isSmallScreen() ? 1 : 0)) { //Article a = m_articles.get(firstVisibleItem - 1); Cursor article = getArticleAtPosition(firstVisibleItem - 1); @@ -876,6 +879,20 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis } } } + + if (!m_activity.isTablet()) { + if (m_adapter.getCount() > 0) { + if (firstVisibleItem > m_listPreviousVisibleItem) { + m_activity.getSupportActionBar().hide(); + } else if (firstVisibleItem < m_listPreviousVisibleItem) { + m_activity.getSupportActionBar().show(); + } + } else { + m_activity.getSupportActionBar().show(); + } + + m_listPreviousVisibleItem = firstVisibleItem; + } } @Override -- cgit v1.2.3