diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/org/fox/ttrss/ArticlePager.java | 31 | ||||
| -rw-r--r-- | src/org/fox/ttrss/FeedCategoriesFragment.java | 37 | ||||
| -rw-r--r-- | src/org/fox/ttrss/FeedsFragment.java | 36 | ||||
| -rw-r--r-- | src/org/fox/ttrss/HeadlinesFragment.java | 53 | ||||
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java | 3 | ||||
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineFeedsActivity.java | 3 | ||||
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineFeedsFragment.java | 3 | ||||
| -rw-r--r-- | src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java | 10 | ||||
| -rw-r--r-- | src/org/fox/ttrss/share/SubscribeActivity.java | 7 |
9 files changed, 142 insertions, 41 deletions
diff --git a/src/org/fox/ttrss/ArticlePager.java b/src/org/fox/ttrss/ArticlePager.java index 9caa72d1..f7e5a13f 100644 --- a/src/org/fox/ttrss/ArticlePager.java +++ b/src/org/fox/ttrss/ArticlePager.java @@ -175,10 +175,12 @@ public class ArticlePager extends Fragment { } } - if (m_article.id == 0 || m_articles.indexOf(m_article) == -1) { - if (m_articles.size() > 0) { - m_article = m_articles.get(0); - m_listener.onArticleSelected(m_article, false); + if (m_article != null) { + if (m_article.id == 0 || m_articles.indexOf(m_article) == -1) { + if (m_articles.size() > 0) { + m_article = m_articles.get(0); + m_listener.onArticleSelected(m_article, false); + } } } @@ -199,11 +201,28 @@ public class ArticlePager extends Fragment { int skip = 0; if (append) { + // adaptive, all_articles, marked, published, unread + String viewMode = m_activity.getViewMode(); + int numUnread = 0; + int numAll = m_articles.size(); + for (Article a : m_articles) { - if (a.unread) ++skip; + if (a.unread) ++numUnread; } - if (skip == 0) skip = m_articles.size(); + if ("marked".equals(viewMode)) { + skip = numAll; + } else if ("published".equals(viewMode)) { + skip = numAll; + } else if ("unread".equals(viewMode)) { + skip = numUnread; + } else if (m_searchQuery != null && m_searchQuery.length() > 0) { + skip = numAll; + } else if ("adaptive".equals(viewMode)) { + skip = numUnread > 0 ? numUnread : numAll; + } else { + skip = numAll; + } } final int fskip = skip; diff --git a/src/org/fox/ttrss/FeedCategoriesFragment.java b/src/org/fox/ttrss/FeedCategoriesFragment.java index 34b21922..f2c6d522 100644 --- a/src/org/fox/ttrss/FeedCategoriesFragment.java +++ b/src/org/fox/ttrss/FeedCategoriesFragment.java @@ -13,7 +13,10 @@ import org.fox.ttrss.types.FeedCategoryList; import android.annotation.SuppressLint; import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; import android.content.Context; +import android.content.DialogInterface; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; @@ -125,9 +128,36 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe return true; case R.id.catchup_category: if (true) { - FeedCategory cat = getCategoryAtPosition(info.position); + final FeedCategory cat = getCategoryAtPosition(info.position); if (cat != null) { - m_activity.catchupFeed(new Feed(cat.id, cat.title, true)); + + if (m_prefs.getBoolean("confirm_headlines_catchup", true)) { + AlertDialog.Builder builder = new AlertDialog.Builder( + m_activity) + .setMessage(getString(R.string.context_confirm_catchup, cat.title)) + .setPositiveButton(R.string.catchup, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + m_activity.catchupFeed(new Feed(cat.id, cat.title, true)); + + } + }) + .setNegativeButton(R.string.dialog_cancel, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + } + }); + + AlertDialog dlg = builder.create(); + dlg.show(); + } else { + m_activity.catchupFeed(new Feed(cat.id, cat.title, true)); + } + } } return true; @@ -415,9 +445,6 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe ImageButton ib = (ImageButton) v.findViewById(R.id.feed_menu_button); if (ib != null) { - if (m_activity.isDarkTheme()) - ib.setImageResource(R.drawable.ic_mailbox_collapsed_holo_dark); - ib.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { diff --git a/src/org/fox/ttrss/FeedsFragment.java b/src/org/fox/ttrss/FeedsFragment.java index 9eae321b..cc851cd4 100644 --- a/src/org/fox/ttrss/FeedsFragment.java +++ b/src/org/fox/ttrss/FeedsFragment.java @@ -19,7 +19,10 @@ import org.fox.ttrss.types.FeedList; import android.annotation.SuppressLint; import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; import android.content.Context; +import android.content.DialogInterface; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.graphics.Bitmap; @@ -156,9 +159,35 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh return true; case R.id.catchup_feed: if (true) { - Feed feed = getFeedAtPosition(info.position); + final Feed feed = getFeedAtPosition(info.position); + if (feed != null) { - m_activity.catchupFeed(feed); + if (m_prefs.getBoolean("confirm_headlines_catchup", true)) { + AlertDialog.Builder builder = new AlertDialog.Builder( + m_activity) + .setMessage(getString(R.string.context_confirm_catchup, feed.title)) + .setPositiveButton(R.string.catchup, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + m_activity.catchupFeed(feed); + + } + }) + .setNegativeButton(R.string.dialog_cancel, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + } + }); + + AlertDialog dlg = builder.create(); + dlg.show(); + } else { + m_activity.catchupFeed(feed); + } } } return true; @@ -542,9 +571,6 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh ImageButton ib = (ImageButton) v.findViewById(R.id.feed_menu_button); if (ib != null) { - if (m_activity.isDarkTheme()) - ib.setImageResource(R.drawable.ic_mailbox_collapsed_holo_dark); - ib.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java index d2ba40cc..0b5bc1ca 100644 --- a/src/org/fox/ttrss/HeadlinesFragment.java +++ b/src/org/fox/ttrss/HeadlinesFragment.java @@ -65,6 +65,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, private Article m_activeArticle; private String m_searchQuery = ""; private boolean m_refreshInProgress = false; + private boolean m_autoCatchupDisabled = false; private SharedPreferences m_prefs; @@ -298,8 +299,8 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, //list.setEmptyView(view.findViewById(R.id.no_headlines)); registerForContextMenu(list); - if (m_activity.isSmallScreen()) - view.findViewById(R.id.headlines_fragment).setPadding(0, 0, 0, 0); + //if (m_activity.isSmallScreen()) + //view.findViewById(R.id.headlines_fragment).setPadding(0, 0, 0, 0); Log.d(TAG, "onCreateView, feed=" + m_feed); @@ -371,6 +372,20 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, append = false; } + // new stuff may appear on top, scroll back to show it + if (!append) { + if (getView() != null) { + Log.d(TAG, "scroll hack"); + ListView list = (ListView)getView().findViewById(R.id.headlines); + m_autoCatchupDisabled = true; + list.setSelection(0); + m_autoCatchupDisabled = false; + list.setEmptyView(null); + m_adapter.clear(); + m_adapter.notifyDataSetChanged(); + } + } + final boolean fappend = append; final String sessionId = m_activity.getSessionId(); final boolean isCat = m_feed.is_cat; @@ -418,11 +433,29 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, int skip = 0; if (append) { + // adaptive, all_articles, marked, published, unread + String viewMode = m_activity.getViewMode(); + int numUnread = 0; + int numAll = m_articles.size(); + for (Article a : m_articles) { - if (a.unread) ++skip; + if (a.unread) ++numUnread; + } + + if ("marked".equals(viewMode)) { + skip = numAll; + } else if ("published".equals(viewMode)) { + skip = numAll; + } else if ("unread".equals(viewMode)) { + skip = numUnread; + } else if (m_searchQuery != null && m_searchQuery.length() > 0) { + skip = numAll; + } else if ("adaptive".equals(viewMode)) { + skip = numUnread > 0 ? numUnread : numAll; + } else { + skip = numAll; } - if (skip == 0) skip = m_articles.size(); } else { m_activity.setLoadingStatus(R.string.blank, true); } @@ -765,13 +798,13 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, }); } - ImageButton ib = (ImageButton) v.findViewById(R.id.article_menu_button); + ImageView iv = (ImageView) v.findViewById(R.id.article_menu_button); - if (ib != null) { - if (m_activity.isDarkTheme()) - ib.setImageResource(R.drawable.ic_mailbox_collapsed_holo_dark); + if (iv != null) { + //if (m_activity.isDarkTheme()) + // ib.setImageResource(R.drawable.ic_mailbox_collapsed_holo_dark); - ib.setOnClickListener(new OnClickListener() { + iv.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { getActivity().openContextMenu(v); @@ -869,7 +902,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, refresh(true); } - if (m_prefs.getBoolean("headlines_mark_read_scroll", false) && firstVisibleItem > 0) { + if (m_prefs.getBoolean("headlines_mark_read_scroll", false) && firstVisibleItem > 0 && !m_autoCatchupDisabled) { Article a = m_articles.get(firstVisibleItem - 1); if (a != null && a.unread) { diff --git a/src/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java b/src/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java index ad229919..682cf3e6 100644 --- a/src/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java +++ b/src/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java @@ -288,9 +288,6 @@ public class OfflineFeedCategoriesFragment extends Fragment implements OnItemCli ImageButton ib = (ImageButton) v.findViewById(R.id.feed_menu_button); if (ib != null) { - if (m_activity.isDarkTheme()) - ib.setImageResource(R.drawable.ic_mailbox_collapsed_holo_dark); - ib.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { diff --git a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java index 2511d266..1ca965b7 100644 --- a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java +++ b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java @@ -65,9 +65,10 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead m_actionbarUpEnabled = false; m_feedIsSelected = false; getSupportActionBar().setDisplayHomeAsUpEnabled(false); - initMenu(); refresh(); } + + initMenu(); } }); } diff --git a/src/org/fox/ttrss/offline/OfflineFeedsFragment.java b/src/org/fox/ttrss/offline/OfflineFeedsFragment.java index 98996858..69a07595 100644 --- a/src/org/fox/ttrss/offline/OfflineFeedsFragment.java +++ b/src/org/fox/ttrss/offline/OfflineFeedsFragment.java @@ -322,9 +322,6 @@ public class OfflineFeedsFragment extends Fragment implements OnItemClickListene ImageButton ib = (ImageButton) v.findViewById(R.id.feed_menu_button); if (ib != null) { - if (m_activity.isDarkTheme()) - ib.setImageResource(R.drawable.ic_mailbox_collapsed_holo_dark); - ib.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { diff --git a/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java index 1953c671..afa08b40 100644 --- a/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java +++ b/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java @@ -317,8 +317,8 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis list.setEmptyView(view.findViewById(R.id.no_headlines)); registerForContextMenu(list); - if (m_activity.isSmallScreen()) - view.findViewById(R.id.headlines_fragment).setPadding(0, 0, 0, 0); + //if (m_activity.isSmallScreen()) + // view.findViewById(R.id.headlines_fragment).setPadding(0, 0, 0, 0); getActivity().setProgressBarIndeterminateVisibility(false); @@ -645,11 +645,11 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis }); } - ImageButton ib = (ImageButton) v.findViewById(R.id.article_menu_button); + ImageView ib = (ImageView) v.findViewById(R.id.article_menu_button); if (ib != null) { - if (m_activity.isDarkTheme()) - ib.setImageResource(R.drawable.ic_mailbox_collapsed_holo_dark); + //if (m_activity.isDarkTheme()) + // ib.setImageResource(R.drawable.ic_mailbox_collapsed_holo_dark); ib.setOnClickListener(new OnClickListener() { @Override diff --git a/src/org/fox/ttrss/share/SubscribeActivity.java b/src/org/fox/ttrss/share/SubscribeActivity.java index d37e8818..bed173a2 100644 --- a/src/org/fox/ttrss/share/SubscribeActivity.java +++ b/src/org/fox/ttrss/share/SubscribeActivity.java @@ -224,8 +224,7 @@ public class SubscribeActivity extends CommonShareActivity { final List<FeedCategory> cats = new Gson().fromJson(content, listType); m_cats.clear(); - m_cats.add(new FeedCategory(0, "Uncategorized", 0)); - + for (FeedCategory c : cats) { if (c.id > 0) m_cats.add(c); @@ -233,8 +232,10 @@ public class SubscribeActivity extends CommonShareActivity { sortCats(); - m_adapter.notifyDataSetChanged(); + m_cats.add(0, new FeedCategory(0, "Uncategorized", 0)); + m_adapter.notifyDataSetChanged(); + toast(R.string.category_list_updated); } } |