diff options
6 files changed, 36 insertions, 11 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 d9ccc2b1e..5a45f2d7f 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 @@ -371,6 +371,11 @@ public class SyncManager { return dataBaseAdapter.readAccount(id); } + @WorkerThread + public Account readAccountDirectly(long id) { + return dataBaseAdapter.readAccountDirectly(id); + } + @AnyThread public LiveData<Account> readAccount(@Nullable String name) { return dataBaseAdapter.readAccount(name); @@ -822,6 +827,11 @@ public class SyncManager { return dataBaseAdapter.getStack(accountId, localStackId); } + @WorkerThread + public Long getBoardLocalIdByLocalCardIdDirectly(long localCardId) { + return dataBaseAdapter.getBoardLocalIdByLocalCardIdDirectly(localCardId); + } + @AnyThread public WrappedLiveData<AccessControl> createAccessControl(long accountId, AccessControl entity) { WrappedLiveData<AccessControl> liveData = new WrappedLiveData<>(); 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 7ee84817a..ee2623372 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 @@ -863,6 +863,11 @@ public class DataBaseAdapter { } @WorkerThread + public Long getBoardLocalIdByLocalCardIdDirectly(long localCardId) { + return db.getBoardDao().getBoardLocalIdByLocalCardIdDirectly(localCardId); + } + + @WorkerThread public FullBoard getFullBoardByLocalCardIdDirectly(long localCardId) { return db.getBoardDao().getFullBoardByLocalCardIdDirectly(localCardId); } 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 02e5b5aa3..9c60d9d2f 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 @@ -55,6 +55,9 @@ public interface BoardDao extends GenericDao<Board> { @Query("SELECT b.* FROM board b JOIN stack s ON s.boardId = b.localId JOIN card c ON c.localId = :localCardId") Board getBoardByLocalCardIdDirectly(long localCardId); + @Query("SELECT b.localId FROM board b JOIN stack s ON s.boardId = b.localId JOIN card c ON c.localId = :localCardId") + Long getBoardLocalIdByLocalCardIdDirectly(long localCardId); + @Transaction @Query("SELECT b.* FROM board b JOIN stack s ON s.boardId = b.localId JOIN card c ON c.localId = :localCardId and c.stackId = s.localId") FullBoard getFullBoardByLocalCardIdDirectly(long localCardId); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/PickStackActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/PickStackActivity.java index 5103cf3c1..584676337 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/PickStackActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/PickStackActivity.java @@ -108,7 +108,7 @@ public abstract class PickStackActivity extends AppCompatActivity implements Bra } } - abstract protected void onSubmit(Account account, long boardId, long stackId); + abstract protected void onSubmit(Account account, long boardLocalId, long stackId); abstract protected boolean showBoardsWithoutEditPermission(); }
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java index 9f170af1e..c009c6bfa 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java @@ -303,27 +303,27 @@ public class EditActivity extends BrandedActivity { } @NonNull - public static Intent createNewCardIntent(@NonNull Context context, @NonNull Account account, Long boardId, Long stackId, @NonNull String title) { - return createNewCardIntent(context, account, boardId, stackId) + public static Intent createNewCardIntent(@NonNull Context context, @NonNull Account account, Long boardLocalId, Long stackId, @NonNull String title) { + return createNewCardIntent(context, account, boardLocalId, stackId) .putExtra(BUNDLE_KEY_TITLE, title); } @NonNull - public static Intent createNewCardIntent(@NonNull Context context, @NonNull Account account, Long boardId, Long stackId) { - return createBasicIntent(context, account, boardId) + public static Intent createNewCardIntent(@NonNull Context context, @NonNull Account account, Long boardLocalId, Long stackId) { + return createBasicIntent(context, account, boardLocalId) .putExtra(BUNDLE_KEY_STACK_ID, stackId); } @NonNull - public static Intent createEditCardIntent(@NonNull Context context, @NonNull Account account, Long boardId, Long cardId) { - return createBasicIntent(context, account, boardId) + public static Intent createEditCardIntent(@NonNull Context context, @NonNull Account account, Long boardLocalId, Long cardId) { + return createBasicIntent(context, account, boardLocalId) .putExtra(BUNDLE_KEY_CARD_ID, cardId); } - private static Intent createBasicIntent(@NonNull Context context, @NonNull Account account, Long boardId) { + private static Intent createBasicIntent(@NonNull Context context, @NonNull Account account, Long boardLocalId) { return new Intent(context, EditActivity.class) .putExtra(BUNDLE_KEY_ACCOUNT, account) - .putExtra(BUNDLE_KEY_BOARD_ID, boardId) + .putExtra(BUNDLE_KEY_BOARD_ID, boardLocalId) .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidgetFactory.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidgetFactory.java index b572ad4d3..0cdae2dc2 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidgetFactory.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidgetFactory.java @@ -4,6 +4,7 @@ import android.appwidget.AppWidgetManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.net.Uri; import android.widget.RemoteViews; import android.widget.RemoteViewsService; @@ -24,12 +25,14 @@ import it.niedermann.nextcloud.deck.model.enums.EDueType; import it.niedermann.nextcloud.deck.model.full.FullCard; import it.niedermann.nextcloud.deck.model.widget.filter.dto.FilterWidgetCard; import it.niedermann.nextcloud.deck.persistence.sync.SyncManager; +import it.niedermann.nextcloud.deck.ui.card.EditActivity; import static java.time.temporal.ChronoUnit.DAYS; public class UpcomingWidgetFactory implements RemoteViewsService.RemoteViewsFactory { private final Context context; private final int appWidgetId; + private final SyncManager syncManager; @NonNull private final List<Object> data = new ArrayList<>(); @@ -37,12 +40,11 @@ public class UpcomingWidgetFactory implements RemoteViewsService.RemoteViewsFact UpcomingWidgetFactory(@NonNull Context context, Intent intent) { this.context = context; this.appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); + this.syncManager = new SyncManager(context); } @Override public void onCreate() { - final SyncManager syncManager = new SyncManager(context); - syncManager.getCardsForFilterWidget(appWidgetId, new IResponseCallback<List<FilterWidgetCard>>(null) { @Override public void onResponse(List<FilterWidgetCard> response) { @@ -103,6 +105,11 @@ public class UpcomingWidgetFactory implements RemoteViewsService.RemoteViewsFact final FullCard card = ((FilterWidgetCard) data.get(i)).getCard(); widget_entry = new RemoteViews(context.getPackageName(), R.layout.widget_stack_entry); widget_entry.setTextViewText(R.id.widget_entry_content_tv, card.getCard().getTitle()); + + final Long localCardId = card.getCard().getLocalId(); + final Intent intent = EditActivity.createEditCardIntent(context, syncManager.readAccountDirectly(card.getAccountId()), syncManager.getBoardLocalIdByLocalCardIdDirectly(localCardId), localCardId); + intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME))); + widget_entry.setOnClickFillInIntent(R.id.widget_stack_entry, intent); } return widget_entry; } |