summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/org/fox/ttrss/ArticlePager.java31
-rw-r--r--src/org/fox/ttrss/FeedCategoriesFragment.java37
-rw-r--r--src/org/fox/ttrss/FeedsFragment.java36
-rw-r--r--src/org/fox/ttrss/HeadlinesFragment.java53
-rw-r--r--src/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java3
-rw-r--r--src/org/fox/ttrss/offline/OfflineFeedsActivity.java3
-rw-r--r--src/org/fox/ttrss/offline/OfflineFeedsFragment.java3
-rw-r--r--src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java10
-rw-r--r--src/org/fox/ttrss/share/SubscribeActivity.java7
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);
}
}