diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-07-04 19:51:27 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-07-04 19:51:27 +0300 |
commit | d06d1ec91f49300ed370473261ac6d17730a1bf2 (patch) | |
tree | 8e1ec5832d6655a52ee480f2cb235472cc1d58be /app/src/main/java/it/niedermann/nextcloud/deck/ui/movecard/MoveCardDialogFragment.java | |
parent | 04ef1b9595e544bb95f8e7d1d6ee6cdddce3a18a (diff) |
#453 🔀 Move cards to other boards and accounts - UI to move to different accounts and boards
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui/movecard/MoveCardDialogFragment.java')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/ui/movecard/MoveCardDialogFragment.java | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/movecard/MoveCardDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/movecard/MoveCardDialogFragment.java new file mode 100644 index 000000000..6a6c12888 --- /dev/null +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/movecard/MoveCardDialogFragment.java @@ -0,0 +1,110 @@ +package it.niedermann.nextcloud.deck.ui.movecard; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; + +import it.niedermann.nextcloud.deck.DeckLog; +import it.niedermann.nextcloud.deck.R; +import it.niedermann.nextcloud.deck.databinding.DialogMoveCardBinding; +import it.niedermann.nextcloud.deck.model.Account; +import it.niedermann.nextcloud.deck.model.Board; +import it.niedermann.nextcloud.deck.model.Stack; +import it.niedermann.nextcloud.deck.model.full.FullStack; +import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment; +import it.niedermann.nextcloud.deck.ui.branding.BrandingUtil; +import it.niedermann.nextcloud.deck.ui.pickstack.PickStackFragment; +import it.niedermann.nextcloud.deck.ui.pickstack.PickStackListener; + +public class MoveCardDialogFragment extends BrandedDialogFragment implements PickStackListener { + + private static final String KEY_ORIGIN_CARD_LOCAL_ID = "card_local_id"; + private static final String KEY_ORIGIN_ACCOUNT_ID = "account_id"; + private Long originCardLocalId; + private Long originAccountId; + + private DialogMoveCardBinding binding; + private PickStackFragment fragment; + private MoveCardListener moveCardListener; + + private Account selectedAccount; + private Board selectedBoard; + private FullStack selectedStack; + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + if (getParentFragment() instanceof MoveCardListener) { + this.moveCardListener = (MoveCardListener) getParentFragment(); + } else if (context instanceof MoveCardListener) { + this.moveCardListener = (MoveCardListener) context; + } else { + throw new IllegalArgumentException("Caller must implement " + MoveCardListener.class.getSimpleName()); + } + + final Bundle args = requireArguments(); + originAccountId = args.getLong(KEY_ORIGIN_ACCOUNT_ID, -1L); + if (originAccountId < 0) { + throw new IllegalArgumentException("Missing " + KEY_ORIGIN_ACCOUNT_ID); + } + originCardLocalId = args.getLong(KEY_ORIGIN_CARD_LOCAL_ID, -1L); + if (originCardLocalId < 0) { + throw new IllegalArgumentException("Missing " + KEY_ORIGIN_CARD_LOCAL_ID); + } + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + binding = DialogMoveCardBinding.inflate(inflater); + binding.submit.setOnClickListener((v) -> { + DeckLog.verbose("MOVE - Attempt to move to " + Stack.class.getSimpleName() + " #" + selectedStack.getLocalId()); + this.moveCardListener.move(originAccountId, originCardLocalId, selectedAccount.getId(), selectedBoard.getLocalId(), selectedStack.getLocalId()); + dismiss(); + }); + return binding.getRoot(); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + fragment = new PickStackFragment(); + getChildFragmentManager() + .beginTransaction() + .add(R.id.fragment_container, fragment) + .commit(); + } + + @Override + public void onStackPicked(@NonNull Account account, @Nullable Board board, @Nullable FullStack fullStack) { + this.selectedAccount = account; + this.selectedBoard = board; + this.selectedStack = fullStack; +// DeckLog.log("MOVE - Stack changed to " + fullStack.getStack().getTitle()); + if (board == null || fullStack == null) { + binding.submit.setEnabled(false); + } else { + binding.submit.setEnabled(true); + } + } + + @Override + public void applyBrand(int mainColor) { + binding.submit.setTextColor(ColorStateList.valueOf(BrandingUtil.getSecondaryForegroundColorDependingOnTheme(requireContext(), mainColor))); + } + + public static DialogFragment newInstance(long originAccountId, Long originCardLocalId) { + final DialogFragment dialogFragment = new MoveCardDialogFragment(); + final Bundle args = new Bundle(); + args.putLong(KEY_ORIGIN_ACCOUNT_ID, originAccountId); + args.putLong(KEY_ORIGIN_CARD_LOCAL_ID, originCardLocalId); + dialogFragment.setArguments(args); + return dialogFragment; + } +} |