diff options
4 files changed, 32 insertions, 0 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 293fcd8ab..eefd50df8 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 @@ -628,6 +628,10 @@ public class SyncManager { return dataBaseAdapter.countCardsInStack(accountId, localStackId); } + public LiveData<Integer> countCardsWithLabel(long accountId, long localLabelId) { + return dataBaseAdapter.countCardsWithLabel(accountId, localLabelId); + } + // TODO implement, see https://github.com/stefan-niedermann/nextcloud-deck/issues/395 public LiveData<List<FullCard>> getArchivedFullCardsForBoard(long accountId, long localBoardId) { MutableLiveData<List<FullCard>> dummyData = new MutableLiveData<>(); 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 08907a1b6..adecfafb0 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 @@ -4,6 +4,7 @@ import android.content.Context; import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; import androidx.sqlite.db.SimpleSQLiteQuery; import org.jetbrains.annotations.NotNull; @@ -791,4 +792,11 @@ public class DataBaseAdapter { public LiveData<Integer> countCardsInStack(long accountId, long localStackId) { return db.getCardDao().countCardsInStack(accountId, localStackId); } + + public LiveData<Integer> countCardsWithLabel(long accountId, long localStackId) { + // TODO implement + MutableLiveData<Integer> testLiveData = new MutableLiveData<>(); + testLiveData.postValue(5); + return testLiveData; + } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/ManageLabelsDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/ManageLabelsDialogFragment.java index d2d2f0fe3..1b2bb64c6 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/ManageLabelsDialogFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/ManageLabelsDialogFragment.java @@ -22,6 +22,7 @@ import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.WrappedLiv import it.niedermann.nextcloud.deck.ui.MainViewModel; import it.niedermann.nextcloud.deck.ui.branding.BrandedActivity; import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder; +import it.niedermann.nextcloud.deck.ui.branding.BrandedDeleteAlertDialogBuilder; import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment; import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce; @@ -123,6 +124,21 @@ public class ManageLabelsDialogFragment extends BrandedDialogFragment implements @Override public void requestDelete(@NonNull Label label) { + observeOnce(syncManager.countCardsWithLabel(viewModel.getCurrentAccount().getId(), label.getLocalId()), this, (count) -> { + if (count > 0) { + new BrandedDeleteAlertDialogBuilder(requireContext()) + .setTitle(getString(R.string.delete_something, label.getTitle())) + .setMessage(getResources().getQuantityString(R.plurals.do_you_want_to_delete_the_label, count, count)) + .setPositiveButton(R.string.simple_delete, (dialog, which) -> deleteLabel(label)) + .setNeutralButton(android.R.string.cancel, null) + .show(); + } else { + deleteLabel(label); + } + }); + } + + private void deleteLabel(@NonNull Label label) { final WrappedLiveData<Void> deleteLiveData = syncManager.deleteLabel(label); observeOnce(deleteLiveData, this, (v) -> { if (deleteLiveData.hasError()) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6b618c1a1..6258a0ff7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -142,6 +142,10 @@ <item quantity="one">This will permanently delete %1$d card of this list.</item> <item quantity="other">This will permanently delete all %1$d cards of this list.</item> </plurals> + <plurals name="do_you_want_to_delete_the_label"> + <item quantity="one">This will remove the label from %1$d card.</item> + <item quantity="other">This will remove the label from %1$d cards.</item> + </plurals> <string name="add_a_new_list_using_the_button">Add a new list using the + button</string> <string name="add_a_new_card_using_the_button">Add a new card using the + button</string> <string name="update_deck">Update deck</string> |