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:
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java72
1 files changed, 30 insertions, 42 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java
index e6abf0ccc..b5034ebfa 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/archivedcards/ArchivedCardsAdapter.java
@@ -1,67 +1,55 @@
package it.niedermann.nextcloud.deck.ui.archivedcards;
import android.content.Context;
-import android.view.Menu;
import android.view.MenuItem;
-import android.view.View;
-import android.widget.PopupMenu;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.LifecycleOwner;
-import org.jetbrains.annotations.NotNull;
-
import it.niedermann.nextcloud.deck.R;
-import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
+import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.WrappedLiveData;
+import it.niedermann.nextcloud.deck.ui.MainViewModel;
+import it.niedermann.nextcloud.deck.ui.card.AbstractCardViewHolder;
import it.niedermann.nextcloud.deck.ui.card.CardAdapter;
-import it.niedermann.nextcloud.deck.ui.card.ItemCardViewHolder;
+import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment;
+
+import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
public class ArchivedCardsAdapter extends CardAdapter {
@SuppressWarnings("WeakerAccess")
- public ArchivedCardsAdapter(@NonNull Context context, @NonNull FragmentManager fragmentManager, @NonNull Account account, long boardId, boolean canEdit, @NonNull SyncManager syncManager, @NonNull LifecycleOwner lifecycleOwner) {
- super(context, fragmentManager, account, boardId, 0L, 0L, canEdit, syncManager, lifecycleOwner, null);
+ public ArchivedCardsAdapter(@NonNull Context context, @NonNull FragmentManager fragmentManager, @NonNull MainViewModel viewModel, @NonNull LifecycleOwner lifecycleOwner) {
+ super(context, fragmentManager, 0L, viewModel, lifecycleOwner, null);
}
@Override
- public void onBindViewHolder(@NonNull ItemCardViewHolder viewHolder, int position) {
- super.onBindViewHolder(viewHolder, position);
- viewHolder.binding.card.setOnClickListener(null);
- viewHolder.binding.card.setOnLongClickListener(null);
- }
-
- protected void onOverflowIconClicked(@NotNull View view, FullCard card) {
- final Context context = view.getContext();
- final PopupMenu popup = new PopupMenu(context, view);
- popup.inflate(R.menu.card_menu);
- prepareOptionsMenu(popup.getMenu(), card);
-
- popup.setOnMenuItemClickListener(item -> optionsItemSelected(context, item, card));
- popup.show();
- }
-
- protected void prepareOptionsMenu(Menu menu, @NotNull FullCard card) {
- // Nothing to do
+ public void onBindViewHolder(@NonNull AbstractCardViewHolder viewHolder, int position) {
+ viewHolder.bind(cardList.get(position), mainViewModel.getCurrentAccount(), mainViewModel.getCurrentBoardRemoteId(), false, R.menu.archived_card_menu, this, counterMaxValue, mainColor);
}
- protected boolean optionsItemSelected(@NonNull Context context, @NotNull MenuItem item, FullCard fullCard) {
- switch (item.getItemId()) {
- case R.id.action_card_dearchive: {
- // TODO error handling
- new Thread(() -> syncManager.dearchiveCard(fullCard)).start();
- return true;
- }
- case R.id.action_card_delete: {
- // TODO error handling
- syncManager.deleteCard(fullCard.getCard());
- return true;
- }
- default: {
- return false;
- }
+ @Override
+ public boolean onCardOptionsItemSelected(@NonNull MenuItem menuItem, @NonNull FullCard fullCard) {
+ int itemId = menuItem.getItemId();
+ if (itemId == R.id.action_card_dearchive) {
+ final WrappedLiveData<FullCard> liveData = mainViewModel.dearchiveCard(fullCard);
+ observeOnce(liveData, lifecycleOwner, (next) -> {
+ if (liveData.hasError()) {
+ ExceptionDialogFragment.newInstance(liveData.getError(), mainViewModel.getCurrentAccount()).show(fragmentManager, ExceptionDialogFragment.class.getSimpleName());
+ }
+ });
+ return true;
+ } else if (itemId == R.id.action_card_delete) {
+ final WrappedLiveData<Void> liveData = mainViewModel.deleteCard(fullCard.getCard());
+ observeOnce(liveData, lifecycleOwner, (next) -> {
+ if (liveData.hasError() && !SyncManager.ignoreExceptionOnVoidError(liveData.getError())) {
+ ExceptionDialogFragment.newInstance(liveData.getError(), mainViewModel.getCurrentAccount()).show(fragmentManager, ExceptionDialogFragment.class.getSimpleName());
+ }
+ });
+ return true;
}
+ return super.onCardOptionsItemSelected(menuItem, fullCard);
}
}