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

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-03-04 02:06:44 +0300
committerStefan Niedermann <info@niedermann.it>2021-03-04 02:06:44 +0300
commitfb2cdc5a291d20ce982feaeb436bdab42829e76e (patch)
tree52651ae3d140a229acf1ca44c360067e7e51dbf1
parentcee25969297ef20d935010161ee15efa5345209f (diff)
#767 Migrate StackWidget to FilterWidget infrastructure
Signed-off-by: Stefan Niedermann <info@niedermann.it>
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java11
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java6
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidget.java19
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");
}