Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/news-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Luhmer <david-dev@live.de>2021-01-26 17:53:16 +0300
committerGitHub <noreply@github.com>2021-01-26 17:53:16 +0300
commitef5a482d7787dfc838cc004947061ecd617c7b42 (patch)
tree77b7446a061a6cd814cfbf6e954f7a66fba3dc18 /News-Android-App/src/main/java
parentff89c6cfa9aa90c7f0a6668a9175c4059374281a (diff)
parent889c7ceaa0875a00ec79afbc8461a04ae228def8 (diff)
Merge branch 'master' into use-viewbinding
Diffstat (limited to 'News-Android-App/src/main/java')
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/Constants.java3
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java59
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java32
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java3
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java8
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/PodcastFragmentActivity.java2
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/authentication/OwnCloudSyncAdapter.java2
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java22
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/DatabaseUtils.java52
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/NotificationActionReceiver.java24
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/NotificationActionReceiverDownloadWebPage.java27
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/Search.java4
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/notification/NextcloudNotificationManager.java21
13 files changed, 179 insertions, 80 deletions
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/Constants.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/Constants.java
index 6fe1b75f..1d42285a 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/Constants.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/Constants.java
@@ -1,8 +1,6 @@
package de.luhmer.owncloudnewsreader;
-import android.content.Context;
import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -13,6 +11,7 @@ public class Constants {
public static final int maxItemsCount = 1500;
public static final String LAST_UPDATE_NEW_ITEMS_COUNT_STRING = "LAST_UPDATE_NEW_ITEMS_COUNT_STRING";
public static final String NOTIFICATION_ACTION_STOP_STRING = "NOTIFICATION_STOP";
+ public static final String NOTIFICATION_ACTION_MARK_ALL_AS_READ_STRING = "NOTIFICATION_MARK_ALL_AS_READ";
protected static final String NEWS_WEB_VERSION_NUMBER_STRING = "NewsWebVersionNumber";
protected static final int MIN_NEXTCLOUD_FILES_APP_VERSION_CODE = 30030052;
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java
index d114fc8c..7f35bd06 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewFeedActivity.java
@@ -43,6 +43,7 @@ import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -223,7 +224,7 @@ public class NewFeedActivity extends AppCompatActivity {
}
}
- public class ImportOpmlSubscriptionsTask extends AsyncTask<Void, Void, Boolean> {
+ public class ImportOpmlSubscriptionsTask extends AsyncTask<Void, List<String>, Boolean> {
private final String mUrlToFile;
private HashMap<String, String> extractedUrls;
@@ -241,7 +242,7 @@ public class NewFeedActivity extends AppCompatActivity {
pd.setTitle("Parsing OMPL...");
pd.setMessage("Please wait.");
pd.setCancelable(false);
- pd.setIndeterminate(true);
+ pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.show();
super.onPreExecute();
@@ -264,34 +265,49 @@ public class NewFeedActivity extends AppCompatActivity {
parser.nextTag();
extractedUrls = OpmlXmlParser.ReadFeed(parser);
- publishProgress();
+ List<String> result = new ArrayList<>();
+ publishProgress(result);
final HashMap<String, Long> existingFolders = new HashMap<>();
mApi.getNewsAPI().folders().blockingSubscribe(folders -> {
- for(Folder folder : folders) {
+ for (Folder folder : folders) {
existingFolders.put(folder.getLabel(), folder.getId());
}
});
- for(String feedUrl : extractedUrls.keySet()) {
+ for (String feedUrl : extractedUrls.keySet()) {
long folderId = 0; //id of the parent folder, 0 for root
String folderName = extractedUrls.get(feedUrl);
if(folderName != null) { //Get Folder ID (create folder if not exists)
- if(existingFolders.containsKey(folderName)) { //Check if folder exists
- folderId = existingFolders.get(folderName);
- } else { //If not, create a new one on the server
- //mApi.getAPI().createFolder(foldername) // HttpJsonRequest.getInstance().performCreateFolderRequest(api.getFolderUrl(), folderName);
- final Map<String, Object> folderMap = new HashMap<>(2);
+ if (!existingFolders.containsKey(folderName)) {
+ // If folder does not exist, create a new one on the server
+ final Map<String, Object> folderMap = new HashMap<>(1);
folderMap.put("name", folderName);
Folder folder = mApi.getNewsAPI().createFolder(folderMap).execute().body().get(0);
- //TODO test this!!!
- existingFolders.put(folder.getLabel(), folder.getId()); //Add folder to list of existing folder in order to prevent that the method tries to create it multiple times
+ folderId = folder.getId();
+ // Add folder to list of existing folder in order to prevent that the method tries to create it multiple times
+ existingFolders.put(folder.getLabel(), folderId);
}
+
+ folderId = existingFolders.get(folderName);
+ }
+
+ Response<List<Feed>> response = mApi.getNewsAPI().createFeed(feedUrl, folderId).execute();
+ if (response.isSuccessful()) {
+ Feed feed = response.body().get(0);
+ result.add("✓ " + feed.getLink());
+ Log.e(TAG, "Successfully imported feed: " + feedUrl + " - Feed-ID: " + feed.getId());
+ } else if (response.code() == 409) {
+ // already exists
+ result.add("✓ " + " - " + feedUrl);
+ } else {
+ result.add("✗ " + response.code() + " - " + feedUrl);
+ Log.e(TAG, "Failed to import feed: " + feedUrl + " - Status-Code: " + response.code());
+ Log.e(TAG, response.errorBody().string());
}
- Feed feed = mApi.getNewsAPI().createFeed(feedUrl, folderId).execute().body().get(0);
- Log.v(TAG, "New Feed-ID: " + feed.getId());
+ publishProgress(result);
}
} catch (Exception e) {
e.printStackTrace();
@@ -301,11 +317,16 @@ public class NewFeedActivity extends AppCompatActivity {
}
@Override
- protected void onProgressUpdate(Void... values) {
- String text = "Extracted the following feeds:\n";
- for (String url : extractedUrls.keySet()) {
- text += "\n" + url;
+ protected void onProgressUpdate(List<String>... values) {
+ String text = "This might take a few minutes.. please wait:\n";
+
+ List<String> log = values[0];
+ for (String line : log) {
+ text += "\n" + line;
}
+
+ pd.setMax(extractedUrls.size());
+ pd.setProgress(log.size());
pd.setMessage(text);
super.onProgressUpdate(values);
@@ -320,7 +341,7 @@ public class NewFeedActivity extends AppCompatActivity {
if(!result) {
Toast.makeText(mContext, "Failed to parse OPML file", Toast.LENGTH_SHORT).show();
} else {
- Toast.makeText(mContext, "Successfully imported OPML!", Toast.LENGTH_LONG).show();
+ Toast.makeText(mContext, "Imported done!", Toast.LENGTH_LONG).show();
}
super.onPostExecute(result);
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java
index c9fc72c6..980d1244 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsDetailActivity.java
@@ -51,7 +51,6 @@ import javax.inject.Inject;
import de.greenrobot.dao.query.LazyList;
import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm;
-import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm.SORT_DIRECTION;
import de.luhmer.owncloudnewsreader.database.model.RssItem;
import de.luhmer.owncloudnewsreader.databinding.ActivityNewsDetailBinding;
import de.luhmer.owncloudnewsreader.helper.ThemeUtils;
@@ -94,23 +93,7 @@ public class NewsDetailActivity extends PodcastFragmentActivity {
SharedPreferences mPrefs;
private boolean mShowFastActions;
- //public static final String DATABASE_IDS_OF_ITEMS = "DATABASE_IDS_OF_ITEMS";
- private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
-
- @Override
- public void onPageSelected(int pos) {
- pageChanged(pos);
- }
-
- @Override
- public void onPageScrolled(int arg0, float arg1, int arg2) {
- }
-
- @Override
- public void onPageScrollStateChanged(int arg0) {
- }
- };
-
+
public static SORT_DIRECTION getSortDirectionFromSettings(SharedPreferences prefs) {
SORT_DIRECTION sDirection = SORT_DIRECTION.asc;
String sortDirection = prefs.getString(SettingsActivity.SP_SORT_ORDER, "1");
@@ -309,6 +292,19 @@ public class NewsDetailActivity extends PodcastFragmentActivity {
rssItems.close();
}
+ private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {
+
+ @Override
+ public void onPageSelected(int pos) {
+ pageChanged(pos);
+ }
+
+ @Override public void onPageScrolled(int arg0, float arg1, int arg2) { }
+
+ @Override public void onPageScrollStateChanged(int arg0) { }
+ };
+
+
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (mPrefs.getBoolean(SettingsActivity.CB_NAVIGATE_WITH_VOLUME_BUTTONS_STRING, false)) {
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java
index baad3656..86859afb 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderDetailFragment.java
@@ -69,6 +69,7 @@ import de.luhmer.owncloudnewsreader.database.model.RssItem;
import de.luhmer.owncloudnewsreader.database.model.RssItemDao;
import de.luhmer.owncloudnewsreader.databinding.FragmentNewsreaderDetailBinding;
import de.luhmer.owncloudnewsreader.helper.AsyncTaskHelper;
+import de.luhmer.owncloudnewsreader.helper.DatabaseUtils;
import de.luhmer.owncloudnewsreader.helper.PostDelayHandler;
import de.luhmer.owncloudnewsreader.helper.Search;
import de.luhmer.owncloudnewsreader.helper.StopWatch;
@@ -155,7 +156,7 @@ public class NewsReaderDetailFragment extends Fragment {
public static SORT_DIRECTION getSortDirection(SharedPreferences prefs) {
- return NewsDetailActivity.getSortDirectionFromSettings(prefs);
+ return DatabaseUtils.getSortDirectionFromSettings(prefs);
}
/**
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
index 69a5ae06..eabe0075 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
@@ -476,13 +476,15 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(SyncStartedEvent event) {
- updateButtonLayout();
+ Log.d(TAG, "onEventMainThread - SyncStartedEvent");
+ updateButtonLayout();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(SyncFinishedEvent event) {
- updateButtonLayout();
- syncFinishedHandler();
+ Log.d(TAG, "onEventMainThread - SyncFinishedEvent");
+ updateButtonLayout();
+ syncFinishedHandler();
}
/**
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/PodcastFragmentActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/PodcastFragmentActivity.java
index 4c264e0c..d69e7c68 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/PodcastFragmentActivity.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/PodcastFragmentActivity.java
@@ -152,7 +152,7 @@ public abstract class PodcastFragmentActivity extends AppCompatActivity implemen
if (NextcloudNotificationManager.isUnreadRssCountNotificationVisible(this)) {
DatabaseConnectionOrm dbConn = new DatabaseConnectionOrm(this);
int count = Integer.parseInt(dbConn.getUnreadItemsCountForSpecificFolder(SubscriptionExpandableListAdapter.SPECIAL_FOLDERS.ALL_UNREAD_ITEMS));
- NextcloudNotificationManager.showUnreadRssItemsNotification(this, count);
+ NextcloudNotificationManager.showUnreadRssItemsNotification(this, count, mPrefs);
if (count == 0) {
NextcloudNotificationManager.removeRssItemsNotification(this);
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/authentication/OwnCloudSyncAdapter.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/authentication/OwnCloudSyncAdapter.java
index 48e6fb99..0ad3dde7 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/authentication/OwnCloudSyncAdapter.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/authentication/OwnCloudSyncAdapter.java
@@ -236,7 +236,7 @@ public class OwnCloudSyncAdapter extends AbstractThreadedSyncAdapter {
boolean showNotificationOnNewArticles = mPrefs.getBoolean(SettingsActivity.CB_SHOW_NOTIFICATION_NEW_ARTICLES_STRING, true);
// If another app is opened show a notification
if (!ForegroundListener.isInForeground() && showNotificationOnNewArticles) {
- NextcloudNotificationManager.showUnreadRssItemsNotification(getContext(), newItemsCount);
+ NextcloudNotificationManager.showUnreadRssItemsNotification(getContext(), newItemsCount, mPrefs);
}
}
}
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java
index 12a36a22..0589ee7b 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/database/DatabaseConnectionOrm.java
@@ -17,6 +17,7 @@ import javax.inject.Inject;
import javax.inject.Named;
import de.greenrobot.dao.query.LazyList;
+import de.greenrobot.dao.query.QueryBuilder;
import de.greenrobot.dao.query.WhereCondition;
import de.luhmer.owncloudnewsreader.Constants;
import de.luhmer.owncloudnewsreader.NewsReaderApplication;
@@ -353,8 +354,25 @@ public class DatabaseConnectionOrm {
return daoSession.getRssItemDao().queryBuilder().where(RssItemDao.Properties.Read_temp.eq(false)).limit(100).orderDesc(RssItemDao.Properties.PubDate).listLazy();
}
- public LazyList<RssItem> getAllUnreadRssItemsForNotification() {
- return daoSession.getRssItemDao().queryBuilder().where(RssItemDao.Properties.Read_temp.eq(false)).limit(6).orderDesc(RssItemDao.Properties.PubDate).listLazy();
+ public LazyList<RssItem> getAllUnreadRssItemsForNotification(SORT_DIRECTION sortDirection) {
+ QueryBuilder<RssItem> qb = daoSession.getRssItemDao().queryBuilder().where(RssItemDao.Properties.Read_temp.eq(false)).limit(6);
+ if (sortDirection == SORT_DIRECTION.asc) {
+ qb = qb.orderAsc(RssItemDao.Properties.PubDate);
+ } else {
+ qb = qb.orderDesc(RssItemDao.Properties.PubDate);
+ }
+ return qb.listLazy();
+ }
+
+ public void markAllItemsAsRead() {
+ StopWatch sw = new StopWatch();
+ sw.start();
+
+ String sql = "UPDATE " + RssItemDao.TABLENAME + " SET " + RssItemDao.Properties.Read_temp.columnName + " = 1 WHERE " + RssItemDao.Properties.Read_temp.columnName + " = 0";
+ daoSession.getDatabase().execSQL(sql);
+
+ sw.stop();
+ Log.v(TAG, "Time needed for marking all unread items as read: " + sw.toString());
}
public LazyList<RssItem> getAllUnreadRssItemsForDownloadWebPageService() {
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/DatabaseUtils.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/DatabaseUtils.java
index 2958524f..ea73cf04 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/DatabaseUtils.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/DatabaseUtils.java
@@ -22,37 +22,47 @@
package de.luhmer.owncloudnewsreader.helper;
import android.content.Context;
+import android.content.SharedPreferences;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
+import de.luhmer.owncloudnewsreader.SettingsActivity;
+import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm;
+
public class DatabaseUtils {
- public static final String DATABASE_NAME = "OwncloudNewsReader.db";
+ public static final String DATABASE_NAME = "OwncloudNewsReader.db";
- public static boolean CopyDatabaseToSdCard(Context context)
- {
+ public static boolean CopyDatabaseToSdCard(Context context) {
String path = context.getDatabasePath(DATABASE_NAME).getPath();
- File db = new File(path);
- File backupDb = GetPath(context);
- if (db.exists()) {
- try
- {
- File parentFolder = backupDb.getParentFile();
- parentFolder.mkdirs();
-
- NewsFileUtils.copyFile(new FileInputStream(db), new FileOutputStream(backupDb));
- return true;
- } catch(Exception ex) {
- ex.printStackTrace();
- }
- }
- return false;
+ File db = new File(path);
+ File backupDb = GetPath(context);
+ if (db.exists()) {
+ try {
+ File parentFolder = backupDb.getParentFile();
+ parentFolder.mkdirs();
+
+ NewsFileUtils.copyFile(new FileInputStream(db), new FileOutputStream(backupDb));
+ return true;
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+ return false;
}
- public static File GetPath(Context context) {
- return new File(NewsFileUtils.getCacheDirPath(context) + "/dbBackup/" + DATABASE_NAME);
- }
+ public static File GetPath(Context context) {
+ return new File(NewsFileUtils.getCacheDirPath(context) + "/dbBackup/" + DATABASE_NAME);
+ }
+
+ public static DatabaseConnectionOrm.SORT_DIRECTION getSortDirectionFromSettings(SharedPreferences prefs) {
+ DatabaseConnectionOrm.SORT_DIRECTION sDirection = DatabaseConnectionOrm.SORT_DIRECTION.asc;
+ String sortDirection = prefs.getString(SettingsActivity.SP_SORT_ORDER, "1");
+ if ("1".equals(sortDirection))
+ sDirection = DatabaseConnectionOrm.SORT_DIRECTION.desc;
+ return sDirection;
+ }
}
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/NotificationActionReceiver.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/NotificationActionReceiver.java
index 237a65e1..43672dc9 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/NotificationActionReceiver.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/NotificationActionReceiver.java
@@ -1,22 +1,38 @@
package de.luhmer.owncloudnewsreader.helper;
+import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.util.Log;
import org.greenrobot.eventbus.EventBus;
-import de.luhmer.owncloudnewsreader.services.events.StopWebArchiveDownloadEvent;
+import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm;
+import de.luhmer.owncloudnewsreader.services.events.SyncFinishedEvent;
-import static de.luhmer.owncloudnewsreader.Constants.NOTIFICATION_ACTION_STOP_STRING;
+import static android.app.Notification.EXTRA_NOTIFICATION_ID;
+import static de.luhmer.owncloudnewsreader.Constants.NOTIFICATION_ACTION_MARK_ALL_AS_READ_STRING;
public class NotificationActionReceiver extends BroadcastReceiver {
+ private static final String TAG = NotificationActionReceiver.class.getCanonicalName();
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
- if (NOTIFICATION_ACTION_STOP_STRING.equals(action)) {
- EventBus.getDefault().post(new StopWebArchiveDownloadEvent());
+ if (NOTIFICATION_ACTION_MARK_ALL_AS_READ_STRING.equals(action)) {
+ DatabaseConnectionOrm dbConn = new DatabaseConnectionOrm(context);
+ Log.d(TAG, "NOTIFICATION_ACTION_MARK_ALL_AS_READ_STRING");
+ dbConn.markAllItemsAsRead();
+ EventBus.getDefault().post(new SyncFinishedEvent());
+
+ Integer notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, -1);
+ if (notificationId != -1) {
+ NotificationManager nMgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+ nMgr.cancel(notificationId);
+ }
+ } else {
+ Log.d(TAG, action);
}
}
}
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/NotificationActionReceiverDownloadWebPage.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/NotificationActionReceiverDownloadWebPage.java
new file mode 100644
index 00000000..3a6ad407
--- /dev/null
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/NotificationActionReceiverDownloadWebPage.java
@@ -0,0 +1,27 @@
+package de.luhmer.owncloudnewsreader.helper;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+import org.greenrobot.eventbus.EventBus;
+
+import de.luhmer.owncloudnewsreader.services.events.StopWebArchiveDownloadEvent;
+
+import static de.luhmer.owncloudnewsreader.Constants.NOTIFICATION_ACTION_STOP_STRING;
+
+public class NotificationActionReceiverDownloadWebPage extends BroadcastReceiver {
+ private static final String TAG = NotificationActionReceiver.class.getCanonicalName();
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (NOTIFICATION_ACTION_STOP_STRING.equals(action)) {
+ Log.d(TAG, "NOTIFICATION_ACTION_STOP_STRING");
+ EventBus.getDefault().post(new StopWebArchiveDownloadEvent());
+ } else {
+ Log.d(TAG, action);
+ }
+ }
+}
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/Search.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/Search.java
index 38a751a9..e5646a11 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/Search.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/Search.java
@@ -2,12 +2,10 @@ package de.luhmer.owncloudnewsreader.helper;
import android.content.Context;
import android.content.SharedPreferences;
-import android.preference.PreferenceManager;
import java.util.ArrayList;
import java.util.List;
-import de.luhmer.owncloudnewsreader.NewsDetailActivity;
import de.luhmer.owncloudnewsreader.SettingsActivity;
import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm;
import de.luhmer.owncloudnewsreader.database.model.RssItem;
@@ -19,7 +17,7 @@ public class Search {
private static final String SEARCH_IN_BODY = "1";
public static List<RssItem> PerformSearch(Context context, Long idFolder, Long idFeed, String searchString, SharedPreferences mPrefs) {
- DatabaseConnectionOrm.SORT_DIRECTION sortDirection = NewsDetailActivity.getSortDirectionFromSettings(mPrefs);
+ DatabaseConnectionOrm.SORT_DIRECTION sortDirection = DatabaseUtils.getSortDirectionFromSettings(mPrefs);
DatabaseConnectionOrm dbConn = new DatabaseConnectionOrm(context);
String sqlSelectStatement = null;
if (idFeed != null) {
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/notification/NextcloudNotificationManager.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/notification/NextcloudNotificationManager.java
index 105f5059..1671a6fe 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/notification/NextcloudNotificationManager.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/notification/NextcloudNotificationManager.java
@@ -6,6 +6,7 @@ import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -36,6 +37,11 @@ import de.luhmer.owncloudnewsreader.NewsReaderListActivity;
import de.luhmer.owncloudnewsreader.R;
import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm;
import de.luhmer.owncloudnewsreader.database.model.RssItem;
+import de.luhmer.owncloudnewsreader.helper.DatabaseUtils;
+import de.luhmer.owncloudnewsreader.helper.NotificationActionReceiver;
+
+import static android.app.Notification.EXTRA_NOTIFICATION_ID;
+import static de.luhmer.owncloudnewsreader.Constants.NOTIFICATION_ACTION_MARK_ALL_AS_READ_STRING;
public class NextcloudNotificationManager {
@@ -251,9 +257,7 @@ public class NextcloudNotificationManager {
}
-
-
- public static void showUnreadRssItemsNotification(Context context, int newItemsCount) {
+ public static void showUnreadRssItemsNotification(Context context, int newItemsCount, SharedPreferences mPrefs) {
Resources res = context.getResources();
String tickerMessage = res.getQuantityString(R.plurals.notification_new_items_ticker, newItemsCount, newItemsCount);
String contentText = res.getQuantityString(R.plurals.notification_new_items_text, newItemsCount, newItemsCount);
@@ -262,21 +266,28 @@ public class NextcloudNotificationManager {
NotificationManager notificationManager = getNotificationManagerAndCreateChannel(context, channelId);
DatabaseConnectionOrm dbConn = new DatabaseConnectionOrm(context);
- List<RssItem> items = dbConn.getAllUnreadRssItemsForNotification();
+ DatabaseConnectionOrm.SORT_DIRECTION sortDirection = DatabaseUtils.getSortDirectionFromSettings(mPrefs);
+ List<RssItem> items = dbConn.getAllUnreadRssItemsForNotification(sortDirection);
List<String> previewLines = new ArrayList<>();
- for(RssItem item : items) {
+ for (RssItem item : items) {
// • = \u2022, ● = \u25CF, ○ = \u25CB, ▪ = \u25AA, ■ = \u25A0, □ = \u25A1, ► = \u25BA
previewLines.add("\u2022 " + item.getTitle().trim());
}
String previewText = TextUtils.join("\n", previewLines);
+ Intent markAllAsReadIntent = new Intent(context, NotificationActionReceiver.class);
+ markAllAsReadIntent.setAction(NOTIFICATION_ACTION_MARK_ALL_AS_READ_STRING);
+ markAllAsReadIntent.putExtra(EXTRA_NOTIFICATION_ID, UNREAD_RSS_ITEMS_NOTIFICATION_ID);
+ PendingIntent markAllAsReadPendingIntent = PendingIntent.getBroadcast(context, 0, markAllAsReadIntent, PendingIntent.FLAG_ONE_SHOT);
+
NotificationCompat.Builder builder =
new NotificationCompat.Builder(context, channelId)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(tickerMessage)
.setStyle(new NotificationCompat.BigTextStyle().bigText(previewText))
//.setDefaults(Notification.DEFAULT_ALL)
+ .addAction(R.drawable.ic_check_box_white, context.getString(R.string.menu_markAllAsRead), markAllAsReadPendingIntent)
.setAutoCancel(true)
.setNumber(newItemsCount)
.setContentText(contentText);