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>2020-10-10 18:40:31 +0300
committerStefan Niedermann <info@niedermann.it>2020-10-10 18:40:31 +0300
commitcd90f4dc840247ac7e35ed984376317cdfd01594 (patch)
tree1ea38656323340218a8a1316a06750906713c7d0 /app/src/main/java/it/niedermann/owncloud/notes/widget
parent287300a94fdd3890a0d6877355b071996784ea30 (diff)
#831 Migrate from SQLiteOpenHelper to Room
List widget
Diffstat (limited to 'app/src/main/java/it/niedermann/owncloud/notes/widget')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetConfigurationActivity.java111
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetFactory.java32
2 files changed, 70 insertions, 73 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetConfigurationActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetConfigurationActivity.java
index 80d402ef..7b513feb 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetConfigurationActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/widget/notelist/NoteListWidgetConfigurationActivity.java
@@ -3,7 +3,6 @@ package it.niedermann.owncloud.notes.widget.notelist;
import android.app.Activity;
import android.appwidget.AppWidgetManager;
import android.content.Intent;
-import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
@@ -30,9 +29,13 @@ import it.niedermann.owncloud.notes.persistence.NotesDatabase;
import it.niedermann.owncloud.notes.persistence.entity.Account;
import it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData;
+import static androidx.lifecycle.Transformations.distinctUntilChanged;
+import static androidx.lifecycle.Transformations.map;
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 static it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType.FAVORITES;
+import static it.niedermann.owncloud.notes.shared.model.ENavigationCategoryType.RECENT;
import static it.niedermann.owncloud.notes.shared.util.DisplayUtils.convertToCategoryNavigationItem;
@@ -44,8 +47,6 @@ public class NoteListWidgetConfigurationActivity extends LockedActivity {
private Account localAccount = null;
private NavigationAdapter adapterCategories;
- private NavigationItem itemRecent;
- private NavigationItem itemFavorites;
private NotesDatabase db = null;
@Override
@@ -77,14 +78,6 @@ public class NoteListWidgetConfigurationActivity extends LockedActivity {
finish();
}
- itemRecent = new NavigationItem(MainActivity.ADAPTER_KEY_RECENT,
- getString(R.string.label_all_notes),
- null,
- R.drawable.ic_access_time_grey600_24dp);
- itemFavorites = new NavigationItem(MainActivity.ADAPTER_KEY_STARRED,
- getString(R.string.label_favorites),
- null,
- R.drawable.ic_star_yellow_24dp);
RecyclerView recyclerView;
RecyclerView.LayoutManager layoutManager;
@@ -94,17 +87,30 @@ public class NoteListWidgetConfigurationActivity extends LockedActivity {
NotesListWidgetData data = new NotesListWidgetData();
data.setId(appWidgetId);
- if (itemRecent.equals(item)) {
- data.setMode(MODE_DISPLAY_ALL);
- } else if (itemFavorites.equals(item)) {
- data.setMode(MODE_DISPLAY_STARRED);
- } else {
- data.setMode(MODE_DISPLAY_CATEGORY);
- if (item instanceof NavigationItem.CategoryNavigationItem) {
- data.setCategoryId(((NavigationItem.CategoryNavigationItem) item).categoryId);
- } else {
- throw new IllegalStateException("Tried to choose a category, but ");
+ if (item.type != null) {
+ switch (item.type) {
+ case RECENT: {
+ data.setMode(MODE_DISPLAY_ALL);
+ break;
+ }
+ case FAVORITES: {
+ data.setMode(MODE_DISPLAY_STARRED);
+ break;
+ }
+ case UNCATEGORIZED:
+ default: {
+ if (item.getClass() == NavigationItem.CategoryNavigationItem.class) {
+ data.setMode(MODE_DISPLAY_CATEGORY);
+ data.setCategoryId(((NavigationItem.CategoryNavigationItem) item).categoryId);
+ } else {
+ data.setMode(MODE_DISPLAY_ALL);
+ Log.e(TAG, "Unknown item navigation type. Fallback to show " + RECENT);
+ }
+ }
}
+ } else {
+ data.setMode(MODE_DISPLAY_ALL);
+ Log.e(TAG, "Unknown item navigation type. Fallback to show " + RECENT);
}
data.setAccountId(localAccount.getId());
@@ -130,53 +136,30 @@ public class NoteListWidgetConfigurationActivity extends LockedActivity {
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(adapterCategories);
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- new LoadCategoryListTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
- }
-
- @Override
- public void applyBrand(int mainColor, int textColor) {
- }
+ distinctUntilChanged(
+ map(db.getCategoryDao().getCategoriesLiveData(localAccount.getId()), fromDatabase -> {
+ List<NavigationItem.CategoryNavigationItem> categories = convertToCategoryNavigationItem(NoteListWidgetConfigurationActivity.this, fromDatabase);
- private class LoadCategoryListTask extends AsyncTask<Void, Void, List<NavigationItem>> {
- @Override
- protected List<NavigationItem> doInBackground(Void... voids) {
- if (localAccount == null) {
- return new ArrayList<>();
- }
- NavigationItem itemUncategorized;
- List<NavigationItem.CategoryNavigationItem> categories = convertToCategoryNavigationItem(NoteListWidgetConfigurationActivity.this, db.getCategoryDao().getCategories(localAccount.getId()));
-
- if (!categories.isEmpty() && categories.get(0).label.isEmpty()) {
- itemUncategorized = categories.get(0);
- itemUncategorized.label = getString(R.string.action_uncategorized);
- itemUncategorized.icon = NavigationAdapter.ICON_NOFOLDER;
- }
+ ArrayList<NavigationItem> items = new ArrayList<>(fromDatabase.size() + 3);
+ items.add(new NavigationItem(MainActivity.ADAPTER_KEY_RECENT, getString(R.string.label_all_notes), db.getNoteDao().count(localAccount.getId()), R.drawable.ic_access_time_grey600_24dp, RECENT));
+ items.add(new NavigationItem(MainActivity.ADAPTER_KEY_STARRED, getString(R.string.label_favorites), db.getNoteDao().getFavoritesCount(localAccount.getId()), R.drawable.ic_star_yellow_24dp, FAVORITES));
- itemFavorites.count = db.getNoteDao().getFavoritesCount(localAccount.getId());
- itemRecent.count = db.getNoteDao().count(localAccount.getId());
-
- ArrayList<NavigationItem> items = new ArrayList<>();
- items.add(itemRecent);
- items.add(itemFavorites);
+ if (categories.size() > 2 && categories.get(2).label.isEmpty()) {
+ items.add(new NavigationItem(MainActivity.ADAPTER_KEY_UNCATEGORIZED, getString(R.string.action_uncategorized), null, NavigationAdapter.ICON_NOFOLDER));
+ }
- for (NavigationItem item : categories) {
- int slashIndex = item.label.indexOf('/');
+ for (NavigationItem item : categories) {
+ int slashIndex = item.label.indexOf('/');
- item.label = slashIndex < 0 ? item.label : item.label.substring(0, slashIndex);
- item.id = "category:" + item.label;
- items.add(item);
- }
- return items;
- }
+ item.label = slashIndex < 0 ? item.label : item.label.substring(0, slashIndex);
+ item.id = "category:" + item.label;
+ items.add(item);
+ }
+ return items;
+ })).observe(this, (navigationItems) -> adapterCategories.setItems(navigationItems));
+ }
- @Override
- protected void onPostExecute(List<NavigationItem> items) {
- adapterCategories.setItems(items);
- }
+ @Override
+ public void applyBrand(int mainColor, int textColor) {
}
}
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 7208bbe9..64018ab1 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
@@ -9,6 +9,9 @@ import android.util.Log;
import android.widget.RemoteViews;
import android.widget.RemoteViewsService;
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.Observer;
+
import java.util.List;
import it.niedermann.owncloud.notes.NotesApplication;
@@ -16,8 +19,10 @@ 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.NoteWithCategory;
import it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData;
import it.niedermann.owncloud.notes.preferences.DarkModeSetting;
+import it.niedermann.owncloud.notes.shared.model.CategorySortingMethod;
import static it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData.MODE_DISPLAY_ALL;
import static it.niedermann.owncloud.notes.persistence.entity.NotesListWidgetData.MODE_DISPLAY_CATEGORY;
@@ -31,7 +36,9 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact
private final NotesListWidgetData data;
private final boolean darkTheme;
private NotesDatabase db;
- private List<Note> noteEntities;
+ private LiveData<List<NoteWithCategory>> noteEntitiesLiveData;
+ private Observer<List<NoteWithCategory>> noteEntitiesObserver = (notes) -> this.noteEntities = notes;
+ private List<NoteWithCategory> noteEntities;
NoteListWidgetFactory(Context context, Intent intent) {
this.context = context;
@@ -46,28 +53,35 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact
@Override
public void onCreate() {
- }
-
- @Override
- public void onDataSetChanged() {
+ if (noteEntitiesLiveData != null) {
+ noteEntitiesLiveData.removeObserver(noteEntitiesObserver);
+ }
try {
Log.v(TAG, "--- data - " + data);
switch (data.getMode()) {
case MODE_DISPLAY_ALL:
- noteEntities = db.getNoteDao().getNotes(data.getAccountId());
+ noteEntitiesLiveData = db.getNoteDao().searchRecent(data.getAccountId(), "%", CategorySortingMethod.SORT_MODIFIED_DESC.getSorder());
break;
case MODE_DISPLAY_STARRED:
- noteEntities = db.getNoteDao().searchNotes(data.getAccountId(), null, null, true, null);
+ noteEntitiesLiveData = db.getNoteDao().searchFavorites(data.getAccountId(), "%", CategorySortingMethod.SORT_MODIFIED_DESC.getSorder());
break;
case MODE_DISPLAY_CATEGORY:
if (data.getCategoryId() != null) {
- noteEntities = db.getNoteDao().searchNotes(data.getAccountId(), null, db.getCategoryDao().getCategoryTitleById(data.getCategoryId()), null, null);
+ // FIXME
+ noteEntitiesLiveData = db.getNoteDao().searchByCategory(data.getAccountId(), "%", db.getCategoryDao().getCategoryTitleById(data.getCategoryId()), CategorySortingMethod.SORT_MODIFIED_DESC.getSorder());
+ } else {
+ noteEntitiesLiveData = db.getNoteDao().searchUncategorized(data.getAccountId(), "%", CategorySortingMethod.SORT_MODIFIED_DESC.getSorder());
}
break;
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
+ noteEntitiesLiveData.observeForever(noteEntitiesObserver);
+ }
+
+ @Override
+ public void onDataSetChanged() {
}
@Override
@@ -98,7 +112,7 @@ public class NoteListWidgetFactory implements RemoteViewsService.RemoteViewsFact
return null;
}
- Note note = noteEntities.get(position);
+ Note note = noteEntities.get(position).getNote();
final Intent fillInIntent = new Intent();
final Bundle extras = new Bundle();