diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-03-04 02:06:44 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-03-04 02:06:44 +0300 |
commit | fb2cdc5a291d20ce982feaeb436bdab42829e76e (patch) | |
tree | 52651ae3d140a229acf1ca44c360067e7e51dbf1 | |
parent | cee25969297ef20d935010161ee15efa5345209f (diff) |
#767 Migrate StackWidget to FilterWidget infrastructure
Signed-off-by: Stefan Niedermann <info@niedermann.it>
4 files changed, 36 insertions, 5 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java index cc2e6da8c..c80d31c21 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java @@ -2060,4 +2060,15 @@ public class SyncManager { public static boolean ignoreExceptionOnVoidError(Throwable t) { return t instanceof NullPointerException && "Attempt to invoke interface method 'void io.reactivex.disposables.Disposable.dispose()' on a null object reference".equals(t.getMessage()); } + + @WorkerThread + public Stack getStackDirectly(long stackLocalId) { + return dataBaseAdapter.getStackByLocalIdDirectly(stackLocalId); + } + + @ColorInt + @WorkerThread + public Integer getBoardColorDirectly(long accountId, long localBoardId) { + return dataBaseAdapter.getBoardColorDirectly(accountId, localBoardId); + } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java index 149f33bac..2d1900ad8 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import androidx.annotation.AnyThread; +import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.WorkerThread; @@ -1441,4 +1442,9 @@ public class DataBaseAdapter { /// FIXME StackWidget.notifyDatasetChanged(context); // UpcomingWidget.notifyDatasetChanged(context); } + + @ColorInt + public Integer getBoardColorDirectly(long accountId, long localBoardId) { + return db.getBoardDao().getBoardColorByLocalIdDirectly(accountId, localBoardId); + } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java index fcb662b1d..89ada6e18 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java @@ -51,7 +51,6 @@ public interface BoardDao extends GenericDao<Board> { @Query("SELECT * FROM board WHERE accountId = :accountId and localId = :localId") LiveData<FullBoard> getFullBoardById(final long accountId, final long localId); - @Query("SELECT b.* FROM board b JOIN stack s ON s.boardId = b.localId JOIN card c ON s.localId = c.stackId where c.localId = :localCardId") Board getBoardByLocalCardIdDirectly(long localCardId); @@ -69,7 +68,6 @@ public interface BoardDao extends GenericDao<Board> { @Query("SELECT * FROM board WHERE accountId = :accountId and archived = 0 and permissionEdit = 1 and (deletedAt = 0 or deletedAt is null) and status <> 3 order by title asc") LiveData<List<Board>> getBoardsWithEditPermissionsForAccount(long accountId); - @Query("SELECT b.localId " + "FROM card c " + "inner join stack s on s.localId = c.stackId " + @@ -82,4 +80,7 @@ public interface BoardDao extends GenericDao<Board> { @Query("SELECT * FROM board WHERE accountId = :accountId and title = :title") Board getBoardForAccountByNameDirectly(long accountId, String title); + + @Query("SELECT b.color FROM board b where b.localId = :localBoardId and b.accountId = :accountId") + Integer getBoardColorByLocalIdDirectly(long accountId, long localBoardId); }
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidget.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidget.java index 5e60dc31b..38f592adb 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidget.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidget.java @@ -9,9 +9,13 @@ import android.content.Intent; import android.net.Uri; import android.widget.RemoteViews; +import androidx.annotation.ColorInt; + import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.api.IResponseCallback; +import it.niedermann.nextcloud.deck.model.Stack; +import it.niedermann.nextcloud.deck.model.widget.filter.FilterWidget; import it.niedermann.nextcloud.deck.persistence.sync.SyncManager; import it.niedermann.nextcloud.deck.ui.MainActivity; import it.niedermann.nextcloud.deck.ui.card.EditActivity; @@ -81,13 +85,22 @@ public class StackWidget extends AppWidgetProvider { views.setOnClickPendingIntent(R.id.widget_stack_header_rl, pendingIntent); - views.setPendingIntentTemplate(R.id.stack_widget_lv, templatePI); views.setRemoteAdapter(R.id.stack_widget_lv, serviceIntent); views.setEmptyView(R.id.stack_widget_lv, R.id.widget_stack_placeholder_iv); - awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.stack_widget_lv); - awm.updateAppWidget(appWidgetId, views); + syncManager.getFilterWidget(appWidgetId, new IResponseCallback<FilterWidget>(null) { + @Override + public void onResponse(FilterWidget response) { + final Stack stack = syncManager.getStackDirectly(response.getAccounts().get(0).getBoards().get(0).getStacks().get(0).getStackId()); + @ColorInt final Integer boardColor = syncManager.getBoardColorDirectly(response.getAccounts().get(0).getAccountId(), response.getAccounts().get(0).getBoards().get(0).getBoardId()); + views.setTextViewText(R.id.widget_stack_title_tv, stack.getTitle()); + views.setInt(R.id.widget_stack_header_icon, "setColorFilter", boardColor); + + awm.notifyAppWidgetViewDataChanged(appWidgetId, R.id.stack_widget_lv); + awm.updateAppWidget(appWidgetId, views); + } + }); } else { DeckLog.warn("Does not yet exist"); } |