diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-07-05 15:35:41 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-07-05 15:35:41 +0300 |
commit | f1f1f0e621e00e1a9bdebaddcf39675f8fbf5734 (patch) | |
tree | d7ba9ad2bd05326b8557528204ce28759e065a90 | |
parent | 74f1e7974aab8f00ce3366cd883695f329090294 (diff) |
Display warning when moving cards to another board
4 files changed, 64 insertions, 12 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java index 98a992b93..219f8a0d1 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/CardAdapter.java @@ -292,7 +292,7 @@ public class CardAdapter extends RecyclerView.Adapter<ItemCardViewHolder> implem } case R.id.action_card_move: { DeckLog.verbose("MOVE - Attempt to move " + Card.class.getSimpleName() + " " + fullCard.getCard() + " (#" + fullCard.getLocalId() + ") from " + Stack.class.getSimpleName() + " #" + +stackId); - MoveCardDialogFragment.newInstance(fullCard.getAccountId(), fullCard.getLocalId()).show(fragmentManager, MoveCardDialogFragment.class.getSimpleName()); + MoveCardDialogFragment.newInstance(fullCard.getAccountId(), boardId, fullCard.getLocalId()).show(fragmentManager, MoveCardDialogFragment.class.getSimpleName()); return true; } case R.id.action_card_archive: { 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 index 6a6c12888..e3704888a 100644 --- 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 @@ -23,12 +23,17 @@ import it.niedermann.nextcloud.deck.ui.branding.BrandingUtil; import it.niedermann.nextcloud.deck.ui.pickstack.PickStackFragment; import it.niedermann.nextcloud.deck.ui.pickstack.PickStackListener; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; + 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 static final String KEY_ORIGIN_BOARD_LOCAL_ID = "board_local_id"; + private static final String KEY_ORIGIN_CARD_LOCAL_ID = "card_local_id"; private Long originAccountId; + private Long originBoardLocalId; + private Long originCardLocalId; private DialogMoveCardBinding binding; private PickStackFragment fragment; @@ -58,6 +63,10 @@ public class MoveCardDialogFragment extends BrandedDialogFragment implements Pic if (originCardLocalId < 0) { throw new IllegalArgumentException("Missing " + KEY_ORIGIN_CARD_LOCAL_ID); } + originBoardLocalId = args.getLong(KEY_ORIGIN_BOARD_LOCAL_ID, -1L); + if (originBoardLocalId < 0) { + throw new IllegalArgumentException("Missing " + KEY_ORIGIN_BOARD_LOCAL_ID); + } } @Nullable @@ -69,6 +78,7 @@ public class MoveCardDialogFragment extends BrandedDialogFragment implements Pic this.moveCardListener.move(originAccountId, originCardLocalId, selectedAccount.getId(), selectedBoard.getLocalId(), selectedStack.getLocalId()); dismiss(); }); + binding.cancel.setOnClickListener((v) -> dismiss()); return binding.getRoot(); } @@ -89,20 +99,25 @@ public class MoveCardDialogFragment extends BrandedDialogFragment implements Pic // DeckLog.log("MOVE - Stack changed to " + fullStack.getStack().getTitle()); if (board == null || fullStack == null) { binding.submit.setEnabled(false); + binding.moveWarning.setVisibility(GONE); } else { binding.submit.setEnabled(true); + binding.moveWarning.setVisibility(board.getLocalId().equals(originBoardLocalId) ? GONE : VISIBLE); } } @Override public void applyBrand(int mainColor) { - binding.submit.setTextColor(ColorStateList.valueOf(BrandingUtil.getSecondaryForegroundColorDependingOnTheme(requireContext(), mainColor))); + final ColorStateList mainColorStateList = ColorStateList.valueOf(BrandingUtil.getSecondaryForegroundColorDependingOnTheme(requireContext(), mainColor)); + binding.cancel.setTextColor(mainColorStateList); + binding.submit.setTextColor(mainColorStateList); } - public static DialogFragment newInstance(long originAccountId, Long originCardLocalId) { + public static DialogFragment newInstance(long originAccountId, long originBoardLocalId, Long originCardLocalId) { final DialogFragment dialogFragment = new MoveCardDialogFragment(); final Bundle args = new Bundle(); args.putLong(KEY_ORIGIN_ACCOUNT_ID, originAccountId); + args.putLong(KEY_ORIGIN_BOARD_LOCAL_ID, originBoardLocalId); args.putLong(KEY_ORIGIN_CARD_LOCAL_ID, originCardLocalId); dialogFragment.setArguments(args); return dialogFragment; diff --git a/app/src/main/res/layout/dialog_move_card.xml b/app/src/main/res/layout/dialog_move_card.xml index b4c2beea0..21b1327a6 100644 --- a/app/src/main/res/layout/dialog_move_card.xml +++ b/app/src/main/res/layout/dialog_move_card.xml @@ -1,8 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="match_parent" - android:orientation="vertical"> + android:orientation="vertical" + android:padding="@dimen/spacer_1x"> <ScrollView android:layout_width="wrap_content" @@ -14,12 +17,45 @@ android:layout_height="wrap_content" /> </ScrollView> - <Button - android:id="@+id/submit" - style="@style/Widget.MaterialComponents.Button.TextButton" + <TextView + android:id="@+id/move_warning" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="end" - android:text="@string/action_card_move" - android:textColor="@color/defaultBrand" /> + android:layout_marginTop="@dimen/spacer_2x" + android:drawableStart="@drawable/ic_warning_white_24dp" + android:drawablePadding="@dimen/spacer_3x" + android:paddingStart="@dimen/spacer_3x" + android:paddingEnd="@dimen/spacer_1x" + android:text="@string/move_warning" + android:textColor="@color/danger" + android:visibility="gone" + app:drawableTint="@color/danger" + tools:visibility="visible" /> + + <com.google.android.flexbox.FlexboxLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacer_1x" + android:orientation="horizontal" + app:justifyContent="space_between"> + + <Button + android:id="@+id/cancel" + style="@style/Widget.MaterialComponents.Button.TextButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="start" + android:layout_marginEnd="@dimen/spacer_1x" + android:text="@android:string/cancel" + android:textColor="@color/defaultBrand" /> + + <Button + android:id="@+id/submit" + style="@style/Widget.MaterialComponents.Button.TextButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="end" + android:text="@string/action_card_move" + android:textColor="@color/defaultBrand" /> + </com.google.android.flexbox.FlexboxLayout> </LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 256f9bc91..aaaf1edec 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -281,4 +281,5 @@ </plurals> <string name="simple_report">Report</string> <string name="error_action_open_battery_settings">Battery settings</string> + <string name="move_warning">Neither comments nor attachments can be transferred when moving the card to another board.</string> </resources> |