From 4759db4ef8b347e1eaf23c7e728dcd4941c4eda3 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 3 Oct 2020 11:04:00 +0300 Subject: show extended catchup dialog on api 15+ --- .../java/org/fox/ttrss/FeedCategoriesFragment.java | 13 +-- .../src/main/java/org/fox/ttrss/FeedsFragment.java | 31 +---- .../main/java/org/fox/ttrss/MasterActivity.java | 4 +- .../main/java/org/fox/ttrss/OnlineActivity.java | 126 +++++++++++++++++++-- org.fox.ttrss/src/main/res/values/strings.xml | 6 + 5 files changed, 135 insertions(+), 45 deletions(-) diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java index 07fec156..43a1d6d4 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedCategoriesFragment.java @@ -2,10 +2,7 @@ package org.fox.ttrss; 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.Build; @@ -255,8 +252,10 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt if (true) { final FeedCategory cat = getCategoryAtPosition(info.position); if (cat != null) { - - if (m_prefs.getBoolean("confirm_headlines_catchup", true)) { + + m_activity.catchupDialog(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)) @@ -265,7 +264,7 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt public void onClick(DialogInterface dialog, int which) { - m_activity.catchupFeed(new Feed(cat.id, cat.title, true)); + m_activity.catchupFeed(new Feed(cat.id, cat.title, true), "all"); } }) @@ -281,7 +280,7 @@ public class FeedCategoriesFragment extends BaseFeedlistFragment implements OnIt dlg.show(); } else { m_activity.catchupFeed(new Feed(cat.id, cat.title, true)); - } + } */ } } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java index 58e76a34..dde7923e 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/FeedsFragment.java @@ -318,35 +318,10 @@ public class FeedsFragment extends BaseFeedlistFragment implements OnItemClickLi return true; case R.id.catchup_feed: if (true) { - final Feed feed = getFeedAtPosition(info.position); - + Feed feed = getFeedAtPosition(info.position); + if (feed != null) { - 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); - } + m_activity.catchupDialog(feed); } } return true; diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java index e4f11757..d2fb2cc1 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/MasterActivity.java @@ -551,8 +551,8 @@ public class MasterActivity extends OnlineActivity implements HeadlinesEventList onArticleSelected(article, true); } - public void catchupFeed(final Feed feed) { - super.catchupFeed(feed); + public void catchupFeed(final Feed feed, final String mode) { + super.catchupFeed(feed, mode); refresh(); } diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java index e644fc46..7403985a 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/OnlineActivity.java @@ -28,6 +28,7 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.EditText; +import android.widget.ListView; import android.widget.TextView; import com.google.gson.Gson; @@ -68,6 +69,108 @@ public class OnlineActivity extends CommonActivity { private String m_lastImageHitTestUrl; private ConnectivityManager m_cmgr; + public void catchupDialog(final Feed feed) { + + if (getApiLevel() >= 15) { + + int selectedIndex = 0; + + AlertDialog.Builder builder = new AlertDialog.Builder(this) + .setTitle(getString(R.string.catchup_dialog_title, feed.title)) + .setSingleChoiceItems( + new String[] { + getString(R.string.catchup_dialog_all_articles), + getString(R.string.catchup_dialog_1day), + getString(R.string.catchup_dialog_1week), + getString(R.string.catchup_dialog_2week) + }, + selectedIndex, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, + int which) { + } + }) + .setPositiveButton(R.string.catchup, + new OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + ListView list = ((AlertDialog)dialog).getListView(); + + if (list.getCheckedItemCount() > 0) { + int position = list.getCheckedItemPosition(); + + String[] catchupModes = { "all", "1day", "1week", "2week" }; + String mode = catchupModes[position]; + + catchupFeed(feed, mode); + } + } + }) + .setNegativeButton(R.string.dialog_cancel, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + } + }); + + Dialog dialog = builder.create(); + dialog.show(); + + } else { + AlertDialog.Builder builder = new AlertDialog.Builder( + this) + .setMessage(getString(R.string.catchup_dialog_title, feed.title)) + .setPositiveButton(R.string.catchup, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + catchupFeed(feed, "all"); + + } + }) + .setNegativeButton(R.string.dialog_cancel, + new Dialog.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + + } + }); + + AlertDialog dialog = builder.create(); + dialog.show(); + } + + /* 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); + } */ + } + //protected PullToRefreshAttacher m_pullToRefreshAttacher; protected abstract class OnLoginFinishedListener { @@ -608,9 +711,15 @@ public class OnlineActivity extends CommonActivity { return true; case R.id.headlines_mark_as_read: if (hf != null) { - - int count = hf.getUnreadArticles().size(); - + + Feed feed = hf.getFeed(); + + if (feed != null) { + catchupDialog(hf.getFeed()); + } + + /*int count = hf.getUnreadArticles().size(); + boolean confirm = m_prefs.getBoolean("confirm_headlines_catchup", true); if (count > 0) { @@ -640,7 +749,7 @@ public class OnlineActivity extends CommonActivity { } else { catchupVisibleArticles(); } - } + } */ } return true; case R.id.headlines_view_mode: @@ -897,7 +1006,7 @@ public class OnlineActivity extends CommonActivity { } } - protected void catchupVisibleArticles() { + /* protected void catchupVisibleArticles() { final HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); if (hf != null) { @@ -928,7 +1037,7 @@ public class OnlineActivity extends CommonActivity { }; req.execute(map); } - } + } */ public void editArticleNote(final Article article) { String note = ""; @@ -1275,8 +1384,8 @@ public class OnlineActivity extends CommonActivity { return super.onKeyUp(keyCode, event); } - public void catchupFeed(final Feed feed) { - Log.d(TAG, "catchupFeed=" + feed); + public void catchupFeed(final Feed feed, final String mode) { + Log.d(TAG, "catchupFeed=" + feed + "; mode=" + mode); ApiRequest req = new ApiRequest(getApplicationContext()) { protected void onPostExecute(JsonElement result) { @@ -1290,6 +1399,7 @@ public class OnlineActivity extends CommonActivity { put("sid", getSessionId()); put("op", "catchupFeed"); put("feed_id", String.valueOf(feed.id)); + put("mode", mode); if (feed.is_cat) put("is_cat", "1"); } diff --git a/org.fox.ttrss/src/main/res/values/strings.xml b/org.fox.ttrss/src/main/res/values/strings.xml index 12604d45..e2a6ca8e 100755 --- a/org.fox.ttrss/src/main/res/values/strings.xml +++ b/org.fox.ttrss/src/main/res/values/strings.xml @@ -284,4 +284,10 @@ Inline video player On tablet devices Force phone layout + + Mark %1$s as read? + All articles + Older than one day + Older than one week + Older than two weeks -- cgit v1.2.3