diff options
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud/notes')
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; } |