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

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-03-13 14:28:23 +0300
committerStefan Niedermann <info@niedermann.it>2021-03-13 14:28:23 +0300
commit56c28a296b4624077fb9a7231dea063d49ddd374 (patch)
treec60e6f628c7540224d01af7279c074e068183997 /app/src/main/java/it/niedermann
parent0c01f258c25d6fa2b162730324ea0e3a821c8fd6 (diff)
parent40f8fe69de96b228b5cabbe7f7b292181a2d3fd8 (diff)
Merge branch 'master' into 831-room
# Conflicts: # app/build.gradle # app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java # app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidget.java # app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetFactory.java # app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidget.java # app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetFactory.java # app/src/test/java/android/text/TextUtils.java
Diffstat (limited to 'app/src/main/java/it/niedermann')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java2
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/exception/tips/TipsAdapter.java4
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java5
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidget.java144
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetFactory.java134
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidget.java57
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetFactory.java32
7 files changed, 145 insertions, 233 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java b/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java
index 5ae9b22a..bfbb798b 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/edit/SearchableBaseNoteFragment.java
@@ -127,7 +127,7 @@ public abstract class SearchableBaseNoteFragment extends BaseNoteFragment {
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
private DelayQueryRunnable delayQueryTask;
- private Handler handler = new Handler();
+ private final Handler handler = new Handler();
@Override
public boolean onQueryTextSubmit(@NonNull String query) {
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/exception/tips/TipsAdapter.java b/app/src/main/java/it/niedermann/owncloud/notes/exception/tips/TipsAdapter.java
index 2f7b9845..694d8a33 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/exception/tips/TipsAdapter.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/exception/tips/TipsAdapter.java
@@ -81,6 +81,10 @@ public class TipsAdapter extends RecyclerView.Adapter<TipsViewHolder> {
}
add(R.string.error_dialog_tip_files_force_stop);
add(R.string.error_dialog_tip_files_delete_storage);
+ Intent intent = new Intent(ACTION_APPLICATION_DETAILS_SETTINGS)
+ .setData(Uri.parse("package:" + BuildConfig.APPLICATION_ID))
+ .putExtra(INTENT_EXTRA_BUTTON_TEXT, R.string.error_action_open_deck_info);
+ add(R.string.error_dialog_tip_clear_storage, intent);
} else if (t instanceof SocketTimeoutException || t instanceof ConnectException) {
add(R.string.error_dialog_timeout_instance);
add(R.string.error_dialog_timeout_toggle, new Intent(Settings.ACTION_WIFI_SETTINGS).putExtra(INTENT_EXTRA_BUTTON_TEXT, R.string.error_action_open_network));
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java
index 32caeaaf..e5b8afae 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/NoteUtil.java
@@ -10,6 +10,7 @@ import androidx.annotation.Nullable;
import it.niedermann.owncloud.notes.R;
import static it.niedermann.android.markdown.MarkdownUtil.removeMarkdown;
+import static it.niedermann.android.markdown.MarkdownUtil.replaceCheckboxesWithEmojis;
/**
* Provides basic functionality for Note operations.
@@ -63,12 +64,12 @@ public class NoteUtil {
*/
@NonNull
public static String generateNoteExcerpt(@NonNull String content, @Nullable String title) {
- content = removeMarkdown(content.trim());
+ content = removeMarkdown(replaceCheckboxesWithEmojis(content.trim()));
if (TextUtils.isEmpty(content)) {
return "";
}
if (!TextUtils.isEmpty(title)) {
- final String trimmedTitle = removeMarkdown(title.trim());
+ final String trimmedTitle = removeMarkdown(replaceCheckboxesWithEmojis(title.trim()));
if (content.startsWith(trimmedTitle)) {
content = content.substring(trimmedTitle.length());
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidget.java
index e4b60ef8..98ebf2fe 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidget.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidget.java
@@ -6,129 +6,46 @@ import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
-import android.graphics.Color;
import android.net.Uri;
import android.util.Log;
import android.widget.RemoteViews;
-import androidx.core.content.ContextCompat;
+import java.util.NoSuchElementException;
-import it.niedermann.owncloud.notes.NotesApplication;
import it.niedermann.owncloud.notes.R;
-import it.niedermann.owncloud.notes.branding.BrandingUtil;
-import it.niedermann.owncloud.notes.edit.EditNoteActivity;
-import it.niedermann.owncloud.notes.main.MainActivity;
import it.niedermann.owncloud.notes.persistence.NotesDatabase;
-import it.niedermann.owncloud.notes.persistence.entity.Account;
import it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData;
-import it.niedermann.owncloud.notes.preferences.DarkModeSetting;
-import it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType;
-import it.niedermann.owncloud.notes.shared.model.NavigationCategory;
-
-import static it.niedermann.owncloud.notes.edit.EditNoteActivity.PARAM_CATEGORY;
-import static it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData.MODE_DISPLAY_ALL;
-import static it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData.MODE_DISPLAY_CATEGORY;
-import static it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData.MODE_DISPLAY_STARRED;
public class NoteListWidget extends AppWidgetProvider {
private static final String TAG = NoteListWidget.class.getSimpleName();
- public static final int PENDING_INTENT_NEW_NOTE_RQ = 0;
- public static final int PENDING_INTENT_EDIT_NOTE_RQ = 1;
- public static final int PENDING_INTENT_OPEN_APP_RQ = 2;
-
static void updateAppWidget(Context context, AppWidgetManager awm, int[] appWidgetIds) {
final NotesDatabase db = NotesDatabase.getInstance(context);
+ RemoteViews views;
+
for (int appWidgetId : appWidgetIds) {
- new Thread(() -> {
- RemoteViews views;
- DarkModeSetting darkTheme;
+ try {
final NotesListWidgetData data = db.getWidgetNotesListDao().getNoteListWidgetData(appWidgetId);
- if (data != null) {
- final Account localAccount = db.getAccountDao().getAccountById(data.getAccountId());
-
- String category = data.getCategory();
-
- darkTheme = DarkModeSetting.fromModeID(data.getThemeMode());
-
- Intent serviceIntent = new Intent(context, NoteListWidgetService.class);
- serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
- serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
-
- // Launch application when user taps the header icon or app title
- Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.setComponent(new ComponentName(context.getPackageName(),
- MainActivity.class.getName()));
-
- // Open the main app if the user taps the widget header
- PendingIntent openAppI = PendingIntent.getActivity(context, PENDING_INTENT_OPEN_APP_RQ,
- intent,
- PendingIntent.FLAG_UPDATE_CURRENT);
-
- // Launch create note activity if user taps "+" icon on header
- PendingIntent newNoteI = PendingIntent.getActivity(context, (PENDING_INTENT_NEW_NOTE_RQ + appWidgetId),
- new Intent(context, EditNoteActivity.class).putExtra(PARAM_CATEGORY,
- data.getMode() == MODE_DISPLAY_STARRED
- ? new NavigationCategory(ENavigationCategoryType.FAVORITES)
- : new NavigationCategory(localAccount.getId(), category)),
- PendingIntent.FLAG_UPDATE_CURRENT);
-
- PendingIntent templatePI = PendingIntent.getActivity(context, PENDING_INTENT_EDIT_NOTE_RQ,
- new Intent(context, EditNoteActivity.class),
- PendingIntent.FLAG_UPDATE_CURRENT);
-
- Log.v(TAG, "-- data - " + data);
-
- if (NotesApplication.isDarkThemeActive(context, darkTheme)) {
- views = new RemoteViews(context.getPackageName(), R.layout.widget_note_list_dark);
- views.setTextViewText(R.id.widget_note_list_title_tv_dark, getWidgetTitle(context, data.getMode(), category));
- views.setOnClickPendingIntent(R.id.widget_note_header_icon_dark, openAppI);
- views.setOnClickPendingIntent(R.id.widget_note_list_title_tv_dark, openAppI);
- views.setOnClickPendingIntent(R.id.widget_note_list_create_icon_dark, newNoteI);
- views.setPendingIntentTemplate(R.id.note_list_widget_lv_dark, templatePI);
- views.setRemoteAdapter(R.id.note_list_widget_lv_dark, serviceIntent);
- views.setEmptyView(R.id.note_list_widget_lv_dark, R.id.widget_note_list_placeholder_tv_dark);
- awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv_dark);
- if (BrandingUtil.isBrandingEnabled(context)) {
- views.setInt(R.id.widget_note_header_dark, "setBackgroundColor", localAccount.getColor());
- views.setInt(R.id.widget_note_header_icon_dark, "setColorFilter", localAccount.getTextColor());
- views.setInt(R.id.widget_note_list_create_icon_dark, "setColorFilter", localAccount.getTextColor());
- views.setTextColor(R.id.widget_note_list_title_tv_dark, localAccount.getTextColor());
- } else {
- views.setInt(R.id.widget_note_header_dark, "setBackgroundColor", ContextCompat.getColor(context, R.color.defaultBrand));
- views.setInt(R.id.widget_note_header_icon_dark, "setColorFilter", Color.WHITE);
- views.setInt(R.id.widget_note_list_create_icon_dark, "setColorFilter", Color.WHITE);
- views.setTextColor(R.id.widget_note_list_title_tv_dark, Color.WHITE);
- }
- } else {
- views = new RemoteViews(context.getPackageName(), R.layout.widget_note_list);
- views.setTextViewText(R.id.widget_note_list_title_tv, getWidgetTitle(context, data.getMode(), category));
- views.setOnClickPendingIntent(R.id.widget_note_header_icon, openAppI);
- views.setOnClickPendingIntent(R.id.widget_note_list_title_tv, openAppI);
- views.setOnClickPendingIntent(R.id.widget_note_list_create_icon, newNoteI);
- views.setPendingIntentTemplate(R.id.note_list_widget_lv, templatePI);
- views.setRemoteAdapter(R.id.note_list_widget_lv, serviceIntent);
- views.setEmptyView(R.id.note_list_widget_lv, R.id.widget_note_list_placeholder_tv);
- awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv);
- if (BrandingUtil.isBrandingEnabled(context)) {
- views.setInt(R.id.widget_note_header, "setBackgroundColor", localAccount.getColor());
- views.setInt(R.id.widget_note_header_icon, "setColorFilter", localAccount.getTextColor());
- views.setInt(R.id.widget_note_list_create_icon, "setColorFilter", localAccount.getTextColor());
- views.setTextColor(R.id.widget_note_list_title_tv, localAccount.getTextColor());
- } else {
- views.setInt(R.id.widget_note_header, "setBackgroundColor", ContextCompat.getColor(context, R.color.defaultBrand));
- views.setInt(R.id.widget_note_header_icon, "setColorFilter", Color.WHITE);
- views.setInt(R.id.widget_note_list_create_icon, "setColorFilter", Color.WHITE);
- views.setTextColor(R.id.widget_note_list_title_tv, Color.WHITE);
- }
- }
- awm.updateAppWidget(appWidgetId, views);
- } else {
- Log.i(TAG, "onUpdate has been triggered before the user finished configuring the widget");
- }
- }).start();
+ final Intent serviceIntent = new Intent(context, NoteListWidgetService.class);
+ serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
+ serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
+
+ final PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, new Intent(), PendingIntent.FLAG_UPDATE_CURRENT | Intent.FILL_IN_COMPONENT);
+
+ Log.v(TAG, "-- data - " + data);
+
+ views = new RemoteViews(context.getPackageName(), R.layout.widget_note_list);
+ views.setRemoteAdapter(R.id.note_list_widget_lv, serviceIntent);
+ views.setPendingIntentTemplate(R.id.note_list_widget_lv, pendingIntent);
+ views.setEmptyView(R.id.note_list_widget_lv, R.id.widget_note_list_placeholder_tv);
+
+ awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.note_list_widget_lv);
+ awm.updateAppWidget(appWidgetId, views);
+ } catch (NoSuchElementException e) {
+ Log.i(TAG, "onUpdate has been triggered before the user finished configuring the widget");
+ }
}
}
@@ -170,23 +87,6 @@ public class NoteListWidget extends AppWidgetProvider {
}
}
- private static String getWidgetTitle(Context context, int displayMode, String category) {
- switch (displayMode) {
- case MODE_DISPLAY_ALL:
- return context.getString(R.string.app_name);
- case MODE_DISPLAY_STARRED:
- return context.getString(R.string.label_favorites);
- case MODE_DISPLAY_CATEGORY:
- if ("".equals(category)) {
- return context.getString(R.string.action_uncategorized);
- } else {
- return category;
- }
- default:
- return null;
- }
- }
-
/**
* Update note list widgets, if the note data was changed.
*/
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetFactory.java b/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetFactory.java
index 21c7788c..40b0a6a4 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetFactory.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetFactory.java
@@ -1,6 +1,7 @@
package it.niedermann.owncloud.notes.widget.notelist;
import android.appwidget.AppWidgetManager;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
@@ -10,65 +11,61 @@ import android.widget.RemoteViews;
import android.widget.RemoteViewsService;
import androidx.annotation.NonNull;
+import androidx.core.content.ContextCompat;
import java.util.ArrayList;
import java.util.List;
-import it.niedermann.owncloud.notes.NotesApplication;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.edit.EditNoteActivity;
+import it.niedermann.owncloud.notes.main.MainActivity;
import it.niedermann.owncloud.notes.persistence.NotesDatabase;
+import it.niedermann.owncloud.notes.persistence.entity.Account;
import it.niedermann.owncloud.notes.persistence.entity.Note;
import it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData;
-import it.niedermann.owncloud.notes.preferences.DarkModeSetting;
-
-import static it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData.MODE_DISPLAY_ALL;
-import static it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData.MODE_DISPLAY_CATEGORY;
-import static it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData.MODE_DISPLAY_STARRED;
+import it.niedermann.owncloud.notes.shared.util.NotesColorUtil;
+import static it.niedermann.owncloud.notes.edit.EditNoteActivity.PARAM_CATEGORY;
public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFactory {
private static final String TAG = NoteListWidgetFactory.class.getSimpleName();
- private final NotesDatabase db;
- private final int appWidgetId;
private final Context context;
- private boolean darkTheme;
+ private final int appWidgetId;
+ private final NotesDatabase db;
@NonNull
- private final List<Note> noteEntities = new ArrayList<>();
+ private final List<Note> dbNotes = new ArrayList<>();
NoteListWidgetFactory(Context context, Intent intent) {
this.context = context;
-
this.appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
- this.db = NotesDatabase.getInstance(context);
+ db = NotesDatabase.getInstance(context);
}
@Override
public void onCreate() {
- // NoOp
+ // Nothing to do hereā€¦
}
@Override
public void onDataSetChanged() {
- noteEntities.clear();
+ dbNotes.clear();
try {
final NotesListWidgetData data = db.getWidgetNotesListDao().getNoteListWidgetData(appWidgetId);
- darkTheme = NotesApplication.isDarkThemeActive(context, DarkModeSetting.fromModeID(data.getThemeMode()));
Log.v(TAG, "--- data - " + data);
switch (data.getMode()) {
- case MODE_DISPLAY_ALL:
- noteEntities.addAll(db.getNoteDao().searchRecentByModified(data.getAccountId(), "%"));
+ case NotesListWidgetData.MODE_DISPLAY_ALL:
+ dbNotes.addAll(db.getNoteDao().searchRecentByModified(data.getAccountId(), "%"));
break;
- case MODE_DISPLAY_STARRED:
- noteEntities.addAll(db.getNoteDao().searchFavoritesByModified(data.getAccountId(), "%"));
+ case NotesListWidgetData.MODE_DISPLAY_STARRED:
+ dbNotes.addAll(db.getNoteDao().searchFavoritesByModified(data.getAccountId(), "%"));
break;
- case MODE_DISPLAY_CATEGORY:
+ case NotesListWidgetData.MODE_DISPLAY_CATEGORY:
default:
if (data.getCategory() != null) {
- noteEntities.addAll(db.getNoteDao().searchCategoryByModified(data.getAccountId(), "%", data.getCategory()));
+ dbNotes.addAll(db.getNoteDao().searchCategoryByModified(data.getAccountId(), "%", data.getCategory()));
} else {
- noteEntities.addAll(db.getNoteDao().searchUncategorizedByModified(data.getAccountId(), "%"));
+ dbNotes.addAll(db.getNoteDao().searchUncategorizedByModified(data.getAccountId(), "%"));
}
break;
}
@@ -79,44 +76,58 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact
@Override
public void onDestroy() {
- // NoOp
+ //NoOp
}
@Override
public int getCount() {
- return noteEntities.size();
+ return dbNotes.size() + 1;
}
@Override
public RemoteViews getViewAt(int position) {
- RemoteViews note_content;
-
- if (position > noteEntities.size() - 1 || noteEntities.get(position) == null) {
- Log.e(TAG, "Could not find position \"" + position + "\" in dbNotes list.");
- return null;
- }
+ final RemoteViews note_content;
+
+ if (position == 0) {
+ final Account localAccount = db.getAccountDao().getAccountById(data.getAccountId());
+ final Intent openIntent = new Intent(Intent.ACTION_MAIN).setComponent(new ComponentName(context.getPackageName(), MainActivity.class.getName()));
+ final Intent createIntent = new Intent(context, EditNoteActivity.class);
+ final Bundle extras = new Bundle();
+
+ extras.putSerializable(PARAM_CATEGORY, new Category(category, data.getMode() == MODE_DISPLAY_STARRED));
+ extras.putLong(EditNoteActivity.PARAM_ACCOUNT_ID, data.getAccountId());
+
+ createIntent.putExtras(extras);
+ createIntent.setData(Uri.parse(createIntent.toUri(Intent.URI_INTENT_SCHEME)));
+
+ note_content = new RemoteViews(context.getPackageName(), R.layout.widget_entry_add);
+ note_content.setOnClickFillInIntent(R.id.widget_entry_content_tv, openIntent);
+ note_content.setOnClickFillInIntent(R.id.widget_entry_fav_icon, createIntent);
+ note_content.setTextViewText(R.id.widget_entry_content_tv, getCategoryTitle(context, data.getMode(), category));
+ note_content.setImageViewResource(R.id.widget_entry_fav_icon, R.drawable.ic_add_blue_24dp);
+ note_content.setInt(R.id.widget_entry_fav_icon, "setColorFilter", NotesColorUtil.contrastRatioIsSufficient(ContextCompat.getColor(context, R.color.widget_background), localAccount.getColor())
+ ? localAccount.getColor()
+ : ContextCompat.getColor(context, R.color.widget_foreground));
+ } else {
+ position--;
+ if (position > dbNotes.size() - 1 || dbNotes.get(position) == null) {
+ Log.e(TAG, "Could not find position \"" + position + "\" in dbNotes list.");
+ return null;
+ }
- final Note note = noteEntities.get(position);
- final Intent fillInIntent = new Intent();
- final Bundle extras = new Bundle();
+ final Note note = dbNotes.get(position);
+ final Intent fillInIntent = new Intent(context, EditNoteActivity.class);
+ final Bundle extras = new Bundle();
+ extras.putLong(EditNoteActivity.PARAM_NOTE_ID, note.getId());
+ extras.putLong(EditNoteActivity.PARAM_ACCOUNT_ID, note.getAccountId());
- extras.putLong(EditNoteActivity.PARAM_NOTE_ID, note.getId());
- extras.putLong(EditNoteActivity.PARAM_ACCOUNT_ID, note.getAccountId());
- fillInIntent.putExtras(extras);
- fillInIntent.setData(Uri.parse(fillInIntent.toUri(Intent.URI_INTENT_SCHEME)));
+ fillInIntent.putExtras(extras);
+ fillInIntent.setData(Uri.parse(fillInIntent.toUri(Intent.URI_INTENT_SCHEME)));
- if (darkTheme) {
- note_content = new RemoteViews(context.getPackageName(), R.layout.widget_entry_dark);
- note_content.setOnClickFillInIntent(R.id.widget_note_list_entry_dark, fillInIntent);
- note_content.setTextViewText(R.id.widget_entry_content_tv_dark, note.getTitle());
- note_content.setImageViewResource(R.id.widget_entry_fav_icon_dark, note.getFavorite()
- ? R.drawable.ic_star_yellow_24dp
- : R.drawable.ic_star_grey_ccc_24dp);
- } else {
note_content = new RemoteViews(context.getPackageName(), R.layout.widget_entry);
note_content.setOnClickFillInIntent(R.id.widget_note_list_entry, fillInIntent);
note_content.setTextViewText(R.id.widget_entry_content_tv, note.getTitle());
- note_content.setImageViewResource(R.id.widget_entry_fav_icon, note.getFavorite()
+ note_content.setImageViewResource(R.id.widget_entry_fav_icon, note.isFavorite()
? R.drawable.ic_star_yellow_24dp
: R.drawable.ic_star_grey_ccc_24dp);
}
@@ -125,6 +136,21 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact
}
+ @NonNull
+ private static String getCategoryTitle(@NonNull Context context, int displayMode, String category) {
+ switch (displayMode) {
+ case MODE_DISPLAY_STARRED:
+ return context.getString(R.string.label_favorites);
+ case MODE_DISPLAY_CATEGORY:
+ return "".equals(category)
+ ? context.getString(R.string.action_uncategorized)
+ : category;
+ case MODE_DISPLAY_ALL:
+ default:
+ return context.getString(R.string.app_name);
+ }
+ }
+
@Override
public RemoteViews getLoadingView() {
return null;
@@ -132,12 +158,22 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact
@Override
public int getViewTypeCount() {
- return 1;
+ return 2;
}
@Override
- public long getItemId(int i) {
- return i;
+ public long getItemId(int position) {
+ if (position == 0) {
+ return -1;
+ } else {
+ position--;
+ if (position > dbNotes.size() - 1 || dbNotes.get(position) == null) {
+ Log.e(TAG, "Could not find position \"" + position + "\" in dbNotes list.");
+ return -2;
+ }
+ DBNote note = dbNotes.get(position);
+ return note.getId();
+ }
}
@Override
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidget.java b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidget.java
index 3637f72d..3ad56c76 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidget.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidget.java
@@ -10,13 +10,11 @@ import android.net.Uri;
import android.util.Log;
import android.widget.RemoteViews;
-import it.niedermann.owncloud.notes.NotesApplication;
import it.niedermann.owncloud.notes.R;
-import it.niedermann.owncloud.notes.edit.BaseNoteFragment;
import it.niedermann.owncloud.notes.edit.EditNoteActivity;
+import it.niedermann.owncloud.notes.edit.BaseNoteFragment;
import it.niedermann.owncloud.notes.persistence.NotesDatabase;
import it.niedermann.owncloud.notes.persistence.entity.SingleNoteWidgetData;
-import it.niedermann.owncloud.notes.preferences.DarkModeSetting;
public class SingleNoteWidget extends AppWidgetProvider {
@@ -27,38 +25,27 @@ public class SingleNoteWidget extends AppWidgetProvider {
final NotesDatabase db = NotesDatabase.getInstance(context);
for (int appWidgetId : appWidgetIds) {
- new Thread(() -> {
- final SingleNoteWidgetData data = db.getWidgetSingleNoteDao().getSingleNoteWidgetData(appWidgetId);
- if (data != null) {
- templateIntent.putExtra(BaseNoteFragment.PARAM_ACCOUNT_ID, data.getAccountId());
-
- final PendingIntent templatePendingIntent = PendingIntent.getActivity(context, appWidgetId, templateIntent,
- PendingIntent.FLAG_UPDATE_CURRENT);
-
- Intent serviceIntent = new Intent(context, SingleNoteWidgetService.class);
- serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
- serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
-
- RemoteViews views;
-
- if (NotesApplication.isDarkThemeActive(context, DarkModeSetting.fromModeID(data.getThemeMode()))) {
- views = new RemoteViews(context.getPackageName(), R.layout.widget_single_note_dark);
- views.setPendingIntentTemplate(R.id.single_note_widget_lv_dark, templatePendingIntent);
- views.setRemoteAdapter(R.id.single_note_widget_lv_dark, serviceIntent);
- views.setEmptyView(R.id.single_note_widget_lv_dark, R.id.widget_single_note_placeholder_tv_dark);
- awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.single_note_widget_lv_dark);
- } else {
- views = new RemoteViews(context.getPackageName(), R.layout.widget_single_note);
- views.setPendingIntentTemplate(R.id.single_note_widget_lv, templatePendingIntent);
- views.setRemoteAdapter(R.id.single_note_widget_lv, serviceIntent);
- views.setEmptyView(R.id.single_note_widget_lv, R.id.widget_single_note_placeholder_tv);
- awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.single_note_widget_lv);
- }
- awm.updateAppWidget(appWidgetId, views);
- } else {
- Log.i(TAG, "onUpdate has been triggered before the user finished configuring the widget");
- }
- }).start();
+ final SingleNoteWidgetData data = db.getWidgetSingleNoteDao().getSingleNoteWidgetData(appWidgetId);
+ if(data != null) {
+ templateIntent.putExtra(BaseNoteFragment.PARAM_ACCOUNT_ID, data.getAccountId());
+
+ final PendingIntent templatePendingIntent = PendingIntent.getActivity(context, appWidgetId, templateIntent,
+ PendingIntent.FLAG_UPDATE_CURRENT);
+
+ final Intent serviceIntent = new Intent(context, SingleNoteWidgetService.class);
+ serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
+ serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
+
+ final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_single_note);
+ views.setPendingIntentTemplate(R.id.single_note_widget_lv, templatePendingIntent);
+ views.setRemoteAdapter(R.id.single_note_widget_lv, serviceIntent);
+ views.setEmptyView(R.id.single_note_widget_lv, R.id.widget_single_note_placeholder_tv);
+
+ awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.single_note_widget_lv);
+ awm.updateAppWidget(appWidgetId, views);
+ } else {
+ Log.i(TAG, "onUpdate has been triggered before the user finished configuring the widget");
+ }
}
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetFactory.java b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetFactory.java
index 75afc57b..db26da24 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetFactory.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/widget/singlenote/SingleNoteWidgetFactory.java
@@ -8,24 +8,23 @@ import android.util.Log;
import android.widget.RemoteViews;
import android.widget.RemoteViewsService;
+import androidx.annotation.Nullable;
+
import it.niedermann.android.markdown.MarkdownUtil;
-import it.niedermann.owncloud.notes.NotesApplication;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.edit.EditNoteActivity;
import it.niedermann.owncloud.notes.persistence.NotesDatabase;
import it.niedermann.owncloud.notes.persistence.entity.Note;
import it.niedermann.owncloud.notes.persistence.entity.SingleNoteWidgetData;
-import it.niedermann.owncloud.notes.preferences.DarkModeSetting;
-
public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFactory {
private final Context context;
private final int appWidgetId;
- private NotesDatabase db;
+ private final NotesDatabase db;
+ @Nullable
private Note note;
- private boolean darkModeActive = false;
private static final String TAG = SingleNoteWidget.class.getSimpleName();
@@ -33,12 +32,6 @@ public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFa
this.context = context;
this.appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
this.db = NotesDatabase.getInstance(context);
-// final SingleNoteWidgetData data = db.getWidgetSingleNoteDao().getSingleNoteWidgetData(appWidgetId);
-// if (data != null) {
-// darkModeActive = NotesApplication.isDarkThemeActive(context, DarkModeSetting.fromModeID(data.getThemeMode()));
-// } else {
-// Log.w(TAG, "Widget with ID " + appWidgetId + " seems to be not configured yet.");
-// }
}
@Override
@@ -49,8 +42,7 @@ public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFa
@Override
public void onDataSetChanged() {
final SingleNoteWidgetData data = db.getWidgetSingleNoteDao().getSingleNoteWidgetData(appWidgetId);
- if (data != null) {
- darkModeActive = NotesApplication.isDarkThemeActive(context, DarkModeSetting.fromModeID(data.getThemeMode()));
+ if(data != null) {
final long noteId = data.getNoteId();
Log.v(TAG, "Fetch note with id " + noteId);
note = db.getNoteDao().getNoteById(noteId);
@@ -90,24 +82,16 @@ public class SingleNoteWidgetFactory implements RemoteViewsService.RemoteViewsFa
return null;
}
- RemoteViews note_content;
-
final Intent fillInIntent = new Intent();
final Bundle extras = new Bundle();
extras.putLong(EditNoteActivity.PARAM_NOTE_ID, note.getId());
extras.putLong(EditNoteActivity.PARAM_ACCOUNT_ID, note.getAccountId());
fillInIntent.putExtras(extras);
- if (darkModeActive) {
- note_content = new RemoteViews(context.getPackageName(), R.layout.widget_single_note_content_dark);
- note_content.setOnClickFillInIntent(R.id.single_note_content_tv_dark, fillInIntent);
- note_content.setTextViewText(R.id.single_note_content_tv_dark, MarkdownUtil.renderForRemoteView(context, note.getContent()));
- } else {
- note_content = new RemoteViews(context.getPackageName(), R.layout.widget_single_note_content);
- note_content.setOnClickFillInIntent(R.id.single_note_content_tv, fillInIntent);
- note_content.setTextViewText(R.id.single_note_content_tv, MarkdownUtil.renderForRemoteView(context, note.getContent()));
- }
+ final RemoteViews note_content = new RemoteViews(context.getPackageName(), R.layout.widget_single_note_content);
+ note_content.setOnClickFillInIntent(R.id.single_note_content_tv, fillInIntent);
+ note_content.setTextViewText(R.id.single_note_content_tv, MarkdownUtil.renderForRemoteView(context, note.getContent()));
return note_content;
}