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
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java12
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/DeleteBoardDialogFragment.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java14
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlDialogFragment.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/EditLabelDialogFragment.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/ManageLabelsDialogFragment.java11
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedAlertDialogBuilder.java48
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java6
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java (renamed from app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDeleteAlertDialogBuilder.java)21
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/EditActivity.java8
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/assignee/CardAssigneeDialog.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DeleteAttachmentDialogFragment.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/previewdialog/PreviewDialog.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsEditDialogFragment.java8
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java25
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java3
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareTargetActivity.java6
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/DeleteStackDialogFragment.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java7
-rw-r--r--app/src/main/res/color/text_input_layout_color.xml4
-rw-r--r--app/src/main/res/layout/activity_edit.xml1
-rw-r--r--app/src/main/res/layout/dialog_add_comment.xml9
-rw-r--r--app/src/main/res/layout/dialog_board_manage_labels.xml20
-rw-r--r--app/src/main/res/layout/dialog_stack_create.xml10
-rw-r--r--app/src/main/res/layout/dialog_text_color_input.xml23
-rw-r--r--app/src/main/res/layout/fragment_card_edit_tab_comments.xml33
-rw-r--r--app/src/main/res/layout/fragment_card_edit_tab_details.xml204
-rw-r--r--app/src/main/res/values/styles.xml7
30 files changed, 261 insertions, 250 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
index ee3be1cb9..80ae13790 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java
@@ -27,6 +27,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
@@ -84,7 +85,6 @@ import it.niedermann.nextcloud.deck.ui.board.ArchiveBoardListener;
import it.niedermann.nextcloud.deck.ui.board.DeleteBoardListener;
import it.niedermann.nextcloud.deck.ui.board.EditBoardDialogFragment;
import it.niedermann.nextcloud.deck.ui.board.EditBoardListener;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.branding.BrandedSnackbar;
import it.niedermann.nextcloud.deck.ui.card.CardAdapter;
import it.niedermann.nextcloud.deck.ui.card.EditActivity;
@@ -717,7 +717,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
final Stack stack = stackAdapter.getItem(binding.viewPager.getCurrentItem());
final long stackLocalId = stack.getLocalId();
observeOnce(mainViewModel.countCardsInStack(mainViewModel.getCurrentAccount().getId(), stackLocalId), MainActivity.this, (numberOfCards) -> {
- new BrandedAlertDialogBuilder(this)
+ new AlertDialog.Builder(this)
.setTitle(R.string.archive_cards)
.setMessage(getString(FilterInformation.hasActiveFilter(filterViewModel.getFilterInformation().getValue())
? R.string.do_you_want_to_archive_all_cards_of_the_filtered_list
@@ -865,7 +865,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
});
} else {
DeckLog.warn("Cannot import account because server version is too low (" + response.getDeckVersion() + "). Minimum server version is currently", Version.minimumSupported());
- runOnUiThread(() -> new BrandedAlertDialogBuilder(MainActivity.this)
+ runOnUiThread(() -> new AlertDialog.Builder(MainActivity.this)
.setTitle(R.string.update_deck)
.setMessage(getString(R.string.deck_outdated_please_update, response.getDeckVersion().getOriginalVersion()))
.setNegativeButton(R.string.simple_discard, null)
@@ -879,7 +879,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
}
} else {
DeckLog.warn("Cannot import account because server version is currently in maintenance mode.");
- runOnUiThread(() -> new BrandedAlertDialogBuilder(MainActivity.this)
+ runOnUiThread(() -> new AlertDialog.Builder(MainActivity.this)
.setTitle(R.string.maintenance_mode)
.setMessage(getString(R.string.maintenance_mode_explanation, createdAccount.getUrl()))
.setPositiveButton(R.string.simple_close, null)
@@ -894,7 +894,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
mainViewModel.deleteAccount(createdAccount.getId());
if (throwable instanceof OfflineException) {
DeckLog.warn("Cannot import account because device is currently offline.");
- runOnUiThread(() -> new BrandedAlertDialogBuilder(MainActivity.this)
+ runOnUiThread(() -> new AlertDialog.Builder(MainActivity.this)
.setTitle(R.string.you_are_currently_offline)
.setMessage(R.string.you_have_to_be_connected_to_the_internet_in_order_to_add_an_account)
.setPositiveButton(R.string.simple_close, null)
@@ -1078,7 +1078,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
public void onClone(Board board) {
final String[] animals = {getString(R.string.clone_cards)};
final boolean[] checkedItems = {false};
- new BrandedAlertDialogBuilder(this)
+ new AlertDialog.Builder(this)
.setTitle(R.string.clone_board)
.setMultiChoiceItems(animals, checkedItems, (dialog, which, isChecked) -> checkedItems[0] = isChecked)
.setPositiveButton(R.string.simple_clone, (dialog, which) -> {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/DeleteBoardDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/DeleteBoardDialogFragment.java
index ee9519489..075439b15 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/DeleteBoardDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/DeleteBoardDialogFragment.java
@@ -10,7 +10,7 @@ import androidx.fragment.app.DialogFragment;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.model.Board;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedDeleteAlertDialogBuilder;
+import it.niedermann.nextcloud.deck.ui.branding.DeleteAlertDialogBuilder;
public class DeleteBoardDialogFragment extends DialogFragment {
@@ -38,7 +38,7 @@ public class DeleteBoardDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder builder = new BrandedDeleteAlertDialogBuilder(requireContext())
+ AlertDialog.Builder builder = new DeleteAlertDialogBuilder(requireContext())
.setTitle(getString(R.string.delete_something, board.getTitle()))
.setMessage(R.string.delete_board_message)
.setPositiveButton(R.string.simple_delete, (dialog, which) -> deleteBoardListener.onBoardDeleted(board))
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java
index 9da836c4c..d084e65b9 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java
@@ -15,12 +15,10 @@ import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogTextColorInputBinding;
import it.niedermann.nextcloud.deck.model.full.FullBoard;
import it.niedermann.nextcloud.deck.ui.MainViewModel;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditText;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditTextInputLayout;
-public class EditBoardDialogFragment extends BrandedDialogFragment {
+public class EditBoardDialogFragment extends DialogFragment {
private DialogTextColorInputBinding binding;
@@ -48,7 +46,7 @@ public class EditBoardDialogFragment extends BrandedDialogFragment {
final Bundle args = getArguments();
- AlertDialog.Builder dialogBuilder = new BrandedAlertDialogBuilder(requireContext());
+ final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext());
if (args != null && args.containsKey(KEY_BOARD_ID)) {
dialogBuilder.setTitle(R.string.edit_board);
@@ -64,6 +62,7 @@ public class EditBoardDialogFragment extends BrandedDialogFragment {
String title = this.fullBoard.getBoard().getTitle();
binding.input.setText(title);
binding.input.setSelection(title.length());
+ applyBrandToEditTextInputLayout(fb.getBoard().getColor(), binding.inputWrapper);
binding.colorChooser.selectColor(fullBoard.getBoard().getColor());
}
});
@@ -94,9 +93,4 @@ public class EditBoardDialogFragment extends BrandedDialogFragment {
public static DialogFragment newInstance() {
return newInstance(null);
}
-
- @Override
- public void applyBrand(int mainColor) {
- applyBrandToEditText(mainColor, binding.input);
- }
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlDialogFragment.java
index 44bbcfe19..f3232c95e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlDialogFragment.java
@@ -25,7 +25,6 @@ import it.niedermann.nextcloud.deck.model.User;
import it.niedermann.nextcloud.deck.model.full.FullBoard;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import it.niedermann.nextcloud.deck.ui.MainViewModel;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment;
import it.niedermann.nextcloud.deck.ui.branding.BrandedSnackbar;
import it.niedermann.nextcloud.deck.ui.card.UserAutoCompleteAdapter;
@@ -67,7 +66,7 @@ public class AccessControlDialogFragment extends BrandedDialogFragment implement
super.onCreate(savedInstanceState);
viewModel = new ViewModelProvider(requireActivity()).get(MainViewModel.class);
- final AlertDialog.Builder dialogBuilder = new BrandedAlertDialogBuilder(requireContext());
+ final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext());
binding = DialogBoardShareBinding.inflate(requireActivity().getLayoutInflater());
adapter = new AccessControlAdapter(viewModel.getCurrentAccount(), this, requireContext());
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/EditLabelDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/EditLabelDialogFragment.java
index 2dacfe6ac..6c83ea8cb 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/EditLabelDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/EditLabelDialogFragment.java
@@ -11,7 +11,6 @@ import androidx.fragment.app.DialogFragment;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogTextColorInputBinding;
import it.niedermann.nextcloud.deck.model.Label;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditText;
@@ -54,7 +53,7 @@ public class EditLabelDialogFragment extends BrandedDialogFragment {
super.onCreate(savedInstanceState);
binding = DialogTextColorInputBinding.inflate(requireActivity().getLayoutInflater());
- AlertDialog.Builder dialogBuilder = new BrandedAlertDialogBuilder(requireContext());
+ final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext());
dialogBuilder.setTitle(getString(R.string.edit_tag, label.getTitle()));
dialogBuilder.setPositiveButton(R.string.simple_save, (dialog, which) -> {
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 79870514a..6d367b8c2 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
@@ -23,12 +23,11 @@ import it.niedermann.nextcloud.deck.databinding.DialogBoardManageLabelsBinding;
import it.niedermann.nextcloud.deck.model.Label;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
import it.niedermann.nextcloud.deck.ui.MainViewModel;
-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 it.niedermann.nextcloud.deck.ui.branding.DeleteAlertDialogBuilder;
import static it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper.observeOnce;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditText;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditTextInputLayout;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToFAB;
public class ManageLabelsDialogFragment extends BrandedDialogFragment implements ManageLabelListener, EditLabelListener {
@@ -64,7 +63,7 @@ public class ManageLabelsDialogFragment extends BrandedDialogFragment implements
super.onCreate(savedInstanceState);
viewModel = new ViewModelProvider(requireActivity()).get(MainViewModel.class);
- final AlertDialog.Builder dialogBuilder = new BrandedAlertDialogBuilder(requireContext());
+ final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext());
binding = DialogBoardManageLabelsBinding.inflate(requireActivity().getLayoutInflater());
colors = getResources().getStringArray(R.array.board_default_colors);
adapter = new ManageLabelsAdapter(this, requireContext());
@@ -116,7 +115,7 @@ public class ManageLabelsDialogFragment extends BrandedDialogFragment implements
@Override
public void applyBrand(int mainColor) {
applyBrandToFAB(mainColor, binding.fab);
- applyBrandToEditText(mainColor, binding.addLabelTitle);
+ applyBrandToEditTextInputLayout(mainColor, binding.addLabelTitleWrapper);
}
public static DialogFragment newInstance(long boardLocalId) {
@@ -133,7 +132,7 @@ public class ManageLabelsDialogFragment extends BrandedDialogFragment implements
public void requestDelete(@NonNull Label label) {
observeOnce(viewModel.countCardsWithLabel(label.getLocalId()), this, (count) -> {
if (count > 0) {
- new BrandedDeleteAlertDialogBuilder(requireContext())
+ new DeleteAlertDialogBuilder(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))
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedAlertDialogBuilder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedAlertDialogBuilder.java
deleted file mode 100644
index 880e21073..000000000
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedAlertDialogBuilder.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package it.niedermann.nextcloud.deck.ui.branding;
-
-import android.content.Context;
-import android.content.DialogInterface;
-import android.widget.Button;
-
-import androidx.annotation.CallSuper;
-import androidx.annotation.ColorInt;
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
-
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
-
-public class BrandedAlertDialogBuilder extends AlertDialog.Builder implements Branded {
-
- protected AlertDialog dialog;
-
- public BrandedAlertDialogBuilder(Context context) {
- super(context);
- }
-
- @NonNull
- @Override
- public AlertDialog create() {
- this.dialog = super.create();
-
- @NonNull Context context = getContext();
- @ColorInt final int mainColor = readBrandMainColor(context);
- applyBrand(mainColor);
- dialog.setOnShowListener(dialog -> applyBrand(mainColor));
- return dialog;
- }
-
- @CallSuper
- @Override
- public void applyBrand(int mainColor) {
- final Button[] buttons = new Button[3];
- buttons[0] = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
- buttons[1] = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
- buttons[2] = dialog.getButton(DialogInterface.BUTTON_NEUTRAL);
- for (Button button : buttons) {
- if (button != null) {
- button.setTextColor(getSecondaryForegroundColorDependingOnTheme(button.getContext(), mainColor));
- }
- }
- }
-}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java
index 768ba13e0..b20e437f8 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java
@@ -16,6 +16,7 @@ import androidx.preference.PreferenceManager;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.tabs.TabLayout;
+import com.google.android.material.textfield.TextInputLayout;
import it.niedermann.android.util.ColorUtil;
import it.niedermann.nextcloud.deck.DeckLog;
@@ -99,6 +100,11 @@ public abstract class BrandingUtil {
));
}
+ public static void applyBrandToEditTextInputLayout(@ColorInt int color, @NonNull TextInputLayout til) {
+ til.setBoxStrokeColor(contrastRatioIsSufficientBigAreas(color, ContextCompat.getColor(til.getContext(), R.color.primary)) ? color : ContextCompat.getColor(til.getContext(), R.color.accent));
+ til.setHintTextColor(ColorStateList.valueOf(contrastRatioIsSufficient(color, ContextCompat.getColor(til.getContext(), R.color.primary)) ? color : ContextCompat.getColor(til.getContext(), R.color.accent)));
+ }
+
public static void tintMenuIcon(@NonNull MenuItem menuItem, @ColorInt int color) {
Drawable drawable = menuItem.getIcon();
if (drawable != null) {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDeleteAlertDialogBuilder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java
index d88fdd6cc..377c34363 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDeleteAlertDialogBuilder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java
@@ -4,21 +4,30 @@ import android.content.Context;
import android.content.DialogInterface;
import android.widget.Button;
-import androidx.annotation.CallSuper;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
import it.niedermann.nextcloud.deck.R;
-public class BrandedDeleteAlertDialogBuilder extends BrandedAlertDialogBuilder {
+public class DeleteAlertDialogBuilder extends AlertDialog.Builder {
- public BrandedDeleteAlertDialogBuilder(Context context) {
+ protected AlertDialog dialog;
+
+ public DeleteAlertDialogBuilder(Context context) {
super(context);
}
- @CallSuper
+ @NonNull
@Override
- public void applyBrand(int mainColor) {
- super.applyBrand(mainColor);
+ public AlertDialog create() {
+ this.dialog = super.create();
+ applyBrand();
+ dialog.setOnShowListener(dialog -> applyBrand());
+ return dialog;
+ }
+
+ public void applyBrand() {
final Button positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
if (positiveButton != null) {
positiveButton.setTextColor(ContextCompat.getColor(getContext(), R.color.danger));
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 4ecd914fe..9646bae56 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
@@ -15,6 +15,7 @@ import android.view.WindowManager;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
@@ -30,7 +31,6 @@ import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.Card;
import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.model.ocs.Version;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
import it.niedermann.nextcloud.deck.util.CardUtil;
@@ -138,7 +138,7 @@ public class EditActivity extends AppCompatActivity {
} else {
observeOnce(viewModel.getFullCardWithProjectsByLocalId(account.getId(), cardId), EditActivity.this, (fullCard) -> {
if (fullCard == null) {
- new BrandedAlertDialogBuilder(this)
+ new AlertDialog.Builder(this)
.setTitle(R.string.card_not_found)
.setMessage(R.string.card_not_found_message)
.setPositiveButton(R.string.simple_close, (a, b) -> super.finish())
@@ -225,7 +225,7 @@ public class EditActivity extends AppCompatActivity {
viewModel.getFullCard().getCard().setTitle(viewModel.getFullCard().getCard().getTitle().trim());
binding.title.setText(viewModel.getFullCard().getCard().getTitle());
if (viewModel.getFullCard().getCard().getTitle().isEmpty()) {
- new BrandedAlertDialogBuilder(this)
+ new AlertDialog.Builder(this)
.setTitle(R.string.title_is_mandatory)
.setMessage(R.string.provide_at_least_a_title_or_description)
.setPositiveButton(android.R.string.ok, null)
@@ -303,7 +303,7 @@ public class EditActivity extends AppCompatActivity {
@Override
public void finish() {
if (!viewModel.hasChanges() && viewModel.canEdit()) {
- new BrandedAlertDialogBuilder(this)
+ new AlertDialog.Builder(this)
.setTitle(R.string.simple_save)
.setMessage(R.string.do_you_want_to_save_your_changes)
.setPositiveButton(R.string.simple_save, (dialog, whichButton) -> saveAndFinish())
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/assignee/CardAssigneeDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/assignee/CardAssigneeDialog.java
index db24f8112..c86807cb2 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/assignee/CardAssigneeDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/assignee/CardAssigneeDialog.java
@@ -21,7 +21,7 @@ import java.io.Serializable;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogPreviewBinding;
import it.niedermann.nextcloud.deck.model.User;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedDeleteAlertDialogBuilder;
+import it.niedermann.nextcloud.deck.ui.branding.DeleteAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.card.EditCardViewModel;
import it.niedermann.nextcloud.deck.ui.card.attachments.previewdialog.PreviewDialog;
@@ -69,7 +69,7 @@ public class CardAssigneeDialog extends DialogFragment {
binding = DialogPreviewBinding.inflate(LayoutInflater.from(requireContext()));
viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class);
- AlertDialog.Builder dialogBuilder = new BrandedDeleteAlertDialogBuilder(requireContext());
+ AlertDialog.Builder dialogBuilder = new DeleteAlertDialogBuilder(requireContext());
if (viewModel.canEdit() && cardAssigneeListener != null) {
dialogBuilder.setPositiveButton(R.string.simple_unassign, (d, w) -> cardAssigneeListener.onUnassignUser(user));
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DeleteAttachmentDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DeleteAttachmentDialogFragment.java
index 02cec5771..270c0a138 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DeleteAttachmentDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/DeleteAttachmentDialogFragment.java
@@ -10,7 +10,7 @@ import androidx.fragment.app.DialogFragment;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.model.Attachment;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedDeleteAlertDialogBuilder;
+import it.niedermann.nextcloud.deck.ui.branding.DeleteAlertDialogBuilder;
public class DeleteAttachmentDialogFragment extends DialogFragment {
@@ -40,7 +40,7 @@ public class DeleteAttachmentDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder builder = new BrandedDeleteAlertDialogBuilder(requireContext())
+ AlertDialog.Builder builder = new DeleteAlertDialogBuilder(requireContext())
.setTitle(getString(R.string.delete_something, attachment.getFilename()))
.setMessage(R.string.attachment_delete_message)
.setPositiveButton(R.string.simple_delete, (dialog, whichButton) -> deleteAttachmentListener.onAttachmentDeleted(attachment))
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/previewdialog/PreviewDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/previewdialog/PreviewDialog.java
index e2f2f3e28..1f425f728 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/previewdialog/PreviewDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/previewdialog/PreviewDialog.java
@@ -9,6 +9,7 @@ import android.text.TextUtils;
import android.view.LayoutInflater;
import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModelProvider;
@@ -18,7 +19,6 @@ import com.bumptech.glide.RequestBuilder;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogPreviewBinding;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
@@ -65,7 +65,7 @@ public class PreviewDialog extends DialogFragment {
}
});
- return new BrandedAlertDialogBuilder(requireContext())
+ return new AlertDialog.Builder(requireContext())
.setPositiveButton(R.string.simple_attach, (d, w) -> {
viewModel.setResult(true);
dismiss();
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsEditDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsEditDialogFragment.java
index 692f8eb8f..a61d7c1ba 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsEditDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsEditDialogFragment.java
@@ -10,16 +10,16 @@ import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import java.util.Objects;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogAddCommentBinding;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditText;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditTextInputLayout;
public class CardCommentsEditDialogFragment extends BrandedDialogFragment {
private static final String BUNDLE_KEY_COMMENT_ID = "commentId";
@@ -50,7 +50,7 @@ public class CardCommentsEditDialogFragment extends BrandedDialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
binding = DialogAddCommentBinding.inflate(requireActivity().getLayoutInflater());
- return new BrandedAlertDialogBuilder(requireActivity())
+ return new AlertDialog.Builder(requireActivity())
.setView(binding.getRoot())
.setTitle(R.string.simple_comment)
.setNeutralButton(android.R.string.cancel, null)
@@ -80,7 +80,7 @@ public class CardCommentsEditDialogFragment extends BrandedDialogFragment {
@Override
public void applyBrand(int mainColor) {
- applyBrandToEditText(mainColor, binding.input);
+ applyBrandToEditTextInputLayout(mainColor, binding.inputWrapper);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java
index a091b852d..33a19fe2d 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java
@@ -33,6 +33,7 @@ import it.niedermann.nextcloud.deck.util.ViewUtil;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditText;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditTextInputLayout;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToFAB;
public class CardCommentsFragment extends Fragment implements CommentEditedListener, CommentDeletedListener, CommentSelectAsReplyListener {
@@ -160,6 +161,7 @@ public class CardCommentsFragment extends Fragment implements CommentEditedListe
private void applyBrand(int mainColor) {
applyBrandToEditText(mainColor, binding.message);
applyBrandToFAB(mainColor, binding.fab);
+ applyBrandToEditTextInputLayout(mainColor, binding.messageWrapper);
}
@Override
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
index 06fe1cd40..173b2d8fb 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/details/CardDetailsFragment.java
@@ -59,8 +59,9 @@ import it.niedermann.nextcloud.deck.ui.card.assignee.CardAssigneeListener;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment;
import static android.view.View.GONE;
+import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditText;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditTextInputLayout;
public class CardDetailsFragment extends Fragment implements OnDateSetListener, OnTimeSetListener, CardAssigneeListener {
@@ -132,10 +133,11 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
private void applyBrand(@ColorInt int boardColor) {
// TODO apply correct branding on the BrandedDatePicker
- applyBrandToEditText(boardColor, binding.labels);
- applyBrandToEditText(boardColor, binding.dueDateDate);
- applyBrandToEditText(boardColor, binding.dueDateTime);
- applyBrandToEditText(boardColor, binding.people);
+ applyBrandToEditTextInputLayout(boardColor, binding.labelsWrapper);
+ applyBrandToEditTextInputLayout(boardColor, binding.dueDateDateWrapper);
+ applyBrandToEditTextInputLayout(boardColor, binding.dueDateTimeWrapper);
+ applyBrandToEditTextInputLayout(boardColor, binding.peopleWrapper);
+ applyBrandToEditTextInputLayout(boardColor, binding.descriptionEditorWrapper);
binding.descriptionEditor.setSearchColor(boardColor);
binding.descriptionViewer.setSearchColor(boardColor);
}
@@ -143,19 +145,16 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
private void setupDescription() {
if (viewModel.canEdit()) {
binding.descriptionViewer.setMovementMethod(LinkMovementMethod.getInstance());
- binding.descriptionBar.setOnClickListener((v) -> binding.descriptionEditor.requestFocus());
binding.descriptionToggle.setOnClickListener((v) -> {
editorActive = !editorActive;
if (editorActive) {
binding.descriptionEditor.setMarkdownString(viewModel.getFullCard().getCard().getDescription());
- binding.descriptionBar.setOnClickListener((view) -> binding.descriptionEditor.requestFocus());
- binding.descriptionEditor.setVisibility(VISIBLE);
+ binding.descriptionEditorWrapper.setVisibility(VISIBLE);
binding.descriptionViewer.setVisibility(GONE);
binding.descriptionToggle.setImageResource(R.drawable.ic_baseline_eye_24);
} else {
binding.descriptionViewer.setMarkdownString(viewModel.getFullCard().getCard().getDescription());
- binding.descriptionBar.setOnClickListener(null);
- binding.descriptionEditor.setVisibility(GONE);
+ binding.descriptionEditorWrapper.setVisibility(GONE);
binding.descriptionViewer.setVisibility(VISIBLE);
binding.descriptionToggle.setImageResource(R.drawable.ic_edit_grey600_24dp);
}
@@ -168,13 +167,13 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
} else {
ExceptionDialogFragment.newInstance(new IllegalStateException(FullCard.class.getSimpleName() + " was empty when trying to setup description"), viewModel.getAccount()).show(getChildFragmentManager(), ExceptionDialogFragment.class.getSimpleName());
}
- binding.descriptionToggle.setVisibility(TextUtils.isEmpty(description) ? GONE : VISIBLE);
+ binding.descriptionToggle.setVisibility(TextUtils.isEmpty(description) ? INVISIBLE : VISIBLE);
};
binding.descriptionEditor.getMarkdownString().observe(getViewLifecycleOwner(), descriptionObserver);
binding.descriptionViewer.getMarkdownString().observe(getViewLifecycleOwner(), descriptionObserver);
} else {
binding.descriptionEditor.setEnabled(false);
- binding.descriptionEditor.setVisibility(VISIBLE);
+ binding.descriptionEditorWrapper.setVisibility(VISIBLE);
binding.descriptionViewer.setEnabled(false);
binding.descriptionViewer.setVisibility(GONE);
binding.descriptionViewer.setMarkdownString(viewModel.getFullCard().getCard().getDescription());
@@ -282,7 +281,7 @@ public class CardDetailsFragment extends Fragment implements OnDateSetListener,
}
binding.labelsGroup.setVisibility(VISIBLE);
} else {
- binding.labelsGroup.setVisibility(View.INVISIBLE);
+ binding.labelsGroup.setVisibility(INVISIBLE);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java
index 7434b6518..a6c1df4fe 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java
@@ -18,7 +18,6 @@ import java.util.Objects;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogProjectResourcesBinding;
import it.niedermann.nextcloud.deck.model.ocs.projects.OcsProjectResource;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.card.EditCardViewModel;
public class CardProjectResourcesDialog extends DialogFragment {
@@ -50,7 +49,7 @@ public class CardProjectResourcesDialog extends DialogFragment {
binding = DialogProjectResourcesBinding.inflate(LayoutInflater.from(requireContext()));
viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class);
- AlertDialog.Builder dialogBuilder = new BrandedAlertDialogBuilder(requireContext());
+ final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext());
return dialogBuilder
.setTitle(projectName)
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
index bc730363e..6bdd7a588 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java
@@ -23,7 +23,6 @@ import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogFilterBinding;
import it.niedermann.nextcloud.deck.model.enums.EDueType;
import it.niedermann.nextcloud.deck.model.internal.FilterInformation;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme;
@@ -51,7 +50,7 @@ public class FilterDialogFragment extends BrandedDialogFragment {
filterViewModel = new ViewModelProvider(requireActivity()).get(FilterViewModel.class);
- final AlertDialog.Builder dialogBuilder = new BrandedAlertDialogBuilder(requireContext());
+ final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext());
binding = DialogFilterBinding.inflate(requireActivity().getLayoutInflater());
binding.viewPager.setAdapter(new TabsPagerAdapter(this));
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareTargetActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareTargetActivity.java
index 332c3f194..fec92f7d4 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareTargetActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareTargetActivity.java
@@ -11,6 +11,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.ViewModelProvider;
import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException;
@@ -31,7 +32,6 @@ import it.niedermann.nextcloud.deck.model.Board;
import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment;
import it.niedermann.nextcloud.deck.ui.MainActivity;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.card.SelectCardListener;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionDialogFragment;
import it.niedermann.nextcloud.deck.util.MimeTypeUtil;
@@ -67,7 +67,7 @@ public class ShareTargetActivity extends MainActivity implements SelectCardListe
mStreamsToUpload.addAll(listOfParcelables);
}
} else {
- new BrandedAlertDialogBuilder(this)
+ new AlertDialog.Builder(this)
.setTitle(R.string.error)
.setMessage(R.string.operation_not_yet_supported)
.setPositiveButton(R.string.simple_close, (a, b) -> finish())
@@ -151,7 +151,7 @@ public class ShareTargetActivity extends MainActivity implements SelectCardListe
private void appendTextAndFinish(@NonNull FullCard fullCard, @NonNull String receivedText) {
final String[] animals = {getString(R.string.append_text_to_description), getString(R.string.add_text_as_comment)};
- new BrandedAlertDialogBuilder(this)
+ new AlertDialog.Builder(this)
.setOnCancelListener(dialog -> cardSelected = false)
.setItems(animals, (dialog, which) -> {
switch (which) {
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/DeleteStackDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/DeleteStackDialogFragment.java
index 066fb82d8..f32be185a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/DeleteStackDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/DeleteStackDialogFragment.java
@@ -9,7 +9,7 @@ import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import it.niedermann.nextcloud.deck.R;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedDeleteAlertDialogBuilder;
+import it.niedermann.nextcloud.deck.ui.branding.DeleteAlertDialogBuilder;
public class DeleteStackDialogFragment extends DialogFragment {
@@ -42,7 +42,7 @@ public class DeleteStackDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder builder = new BrandedDeleteAlertDialogBuilder(requireContext())
+ AlertDialog.Builder builder = new DeleteAlertDialogBuilder(requireContext())
.setTitle(R.string.delete_list)
.setMessage(getResources().getQuantityString(R.plurals.do_you_want_to_delete_the_current_list, numberCards, numberCards))
.setPositiveButton(R.string.simple_delete, (dialog, whichButton) -> deleteStackListener.onStackDeleted(stackId))
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java
index 6bedd0a0f..391c40c09 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/stack/EditStackDialogFragment.java
@@ -17,11 +17,10 @@ import java.util.Objects;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogStackCreateBinding;
-import it.niedermann.nextcloud.deck.ui.branding.BrandedAlertDialogBuilder;
import it.niedermann.nextcloud.deck.ui.branding.BrandedDialogFragment;
import static it.niedermann.nextcloud.deck.DeckApplication.NO_STACK_ID;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditText;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.applyBrandToEditTextInputLayout;
public class EditStackDialogFragment extends BrandedDialogFragment {
private static final String KEY_STACK_ID = "stack_id";
@@ -46,7 +45,7 @@ public class EditStackDialogFragment extends BrandedDialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
binding = DialogStackCreateBinding.inflate(requireActivity().getLayoutInflater());
- AlertDialog.Builder builder = new BrandedAlertDialogBuilder(requireActivity())
+ final AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity())
.setView(binding.getRoot())
.setNeutralButton(android.R.string.cancel, null);
if (getArguments() == null) {
@@ -91,6 +90,6 @@ public class EditStackDialogFragment extends BrandedDialogFragment {
@Override
public void applyBrand(int mainColor) {
- applyBrandToEditText(mainColor, binding.input);
+ applyBrandToEditTextInputLayout(mainColor, binding.inputWrapper);
}
}
diff --git a/app/src/main/res/color/text_input_layout_color.xml b/app/src/main/res/color/text_input_layout_color.xml
new file mode 100644
index 000000000..a6dc6e706
--- /dev/null
+++ b/app/src/main/res/color/text_input_layout_color.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="@color/accent" />
+</selector>
diff --git a/app/src/main/res/layout/activity_edit.xml b/app/src/main/res/layout/activity_edit.xml
index 4d59b296f..447cfefb8 100644
--- a/app/src/main/res/layout/activity_edit.xml
+++ b/app/src/main/res/layout/activity_edit.xml
@@ -21,6 +21,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
+ android:hint="@string/simple_title"
android:importantForAutofill="no"
android:inputType="textMultiLine"
android:maxLines="5"
diff --git a/app/src/main/res/layout/dialog_add_comment.xml b/app/src/main/res/layout/dialog_add_comment.xml
index 1172943f4..8d84816a0 100644
--- a/app/src/main/res/layout/dialog_add_comment.xml
+++ b/app/src/main/res/layout/dialog_add_comment.xml
@@ -1,16 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<com.google.android.material.textfield.TextInputLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/inputWrapper"
+ style="@style/TextInputLayoutStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:hint="@string/simple_comment"
+ android:labelFor="@id/input"
android:padding="?attr/dialogPreferredPadding">
<EditText
android:id="@+id/input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:hint="@string/simple_comment"
android:imeOptions="actionDone"
android:importantForAutofill="no"
android:inputType="text" />
-</FrameLayout> \ No newline at end of file
+</com.google.android.material.textfield.TextInputLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_board_manage_labels.xml b/app/src/main/res/layout/dialog_board_manage_labels.xml
index ccd4481bc..2d3afa3ab 100644
--- a/app/src/main/res/layout/dialog_board_manage_labels.xml
+++ b/app/src/main/res/layout/dialog_board_manage_labels.xml
@@ -13,15 +13,24 @@
android:layout_marginBottom="@dimen/spacer_2x"
android:orientation="horizontal">
- <EditText
- android:id="@+id/add_label_title"
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/addLabelTitleWrapper"
+ style="@style/TextInputLayoutStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:layout_marginEnd="@dimen/spacer_1x"
android:layout_weight="1"
android:hint="@string/add_tag"
- android:imeOptions="actionSend"
- android:importantForAutofill="no"
- android:inputType="text" />
+ android:labelFor="@id/add_label_title">
+
+ <EditText
+ android:id="@+id/add_label_title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:imeOptions="actionSend"
+ android:importantForAutofill="no"
+ android:inputType="text" />
+ </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
@@ -29,6 +38,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@string/add_comment"
+ android:translationY="@dimen/spacer_1qx"
app:backgroundTint="@color/defaultBrand"
app:fabSize="mini"
app:srcCompat="@drawable/ic_send_white_24dp" />
diff --git a/app/src/main/res/layout/dialog_stack_create.xml b/app/src/main/res/layout/dialog_stack_create.xml
index 2f8a273b4..8c14e4177 100644
--- a/app/src/main/res/layout/dialog_stack_create.xml
+++ b/app/src/main/res/layout/dialog_stack_create.xml
@@ -1,16 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<com.google.android.material.textfield.TextInputLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/inputWrapper"
+ style="@style/TextInputLayoutStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:hint="@string/simple_title"
+ android:labelFor="@id/input"
android:padding="?attr/dialogPreferredPadding">
<EditText
android:id="@+id/input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:hint="@string/simple_title"
android:imeOptions="actionDone"
android:importantForAutofill="no"
android:inputType="text" />
-
-</FrameLayout> \ No newline at end of file
+</com.google.android.material.textfield.TextInputLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_text_color_input.xml b/app/src/main/res/layout/dialog_text_color_input.xml
index fdaed6874..b7f482b4c 100644
--- a/app/src/main/res/layout/dialog_text_color_input.xml
+++ b/app/src/main/res/layout/dialog_text_color_input.xml
@@ -6,17 +6,26 @@
android:orientation="vertical"
android:padding="?attr/dialogPreferredPadding">
- <EditText
- android:id="@+id/input"
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/inputWrapper"
+ style="@style/TextInputLayoutStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/simple_title"
- android:imeOptions="actionDone"
- android:importantForAutofill="no"
- android:inputType="text">
+ android:labelFor="@id/input">
- <requestFocus />
- </EditText>
+ <EditText
+ android:id="@+id/input"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:imeOptions="actionDone"
+ android:importantForAutofill="no"
+ android:inputType="text">
+
+ <requestFocus />
+ </EditText>
+
+ </com.google.android.material.textfield.TextInputLayout>
<it.niedermann.nextcloud.deck.ui.view.ColorChooser
android:id="@+id/colorChooser"
diff --git a/app/src/main/res/layout/fragment_card_edit_tab_comments.xml b/app/src/main/res/layout/fragment_card_edit_tab_comments.xml
index 3897cef37..f1c52d220 100644
--- a/app/src/main/res/layout/fragment_card_edit_tab_comments.xml
+++ b/app/src/main/res/layout/fragment_card_edit_tab_comments.xml
@@ -109,7 +109,10 @@
android:layout_height="wrap_content"
android:clipToPadding="false"
android:orientation="horizontal"
- android:padding="@dimen/spacer_2x">
+ android:paddingStart="@dimen/spacer_2x"
+ android:paddingTop="@dimen/spacer_1x"
+ android:paddingEnd="@dimen/spacer_2x"
+ android:paddingBottom="@dimen/spacer_1x">
<ImageView
android:id="@+id/avatar"
@@ -118,27 +121,34 @@
android:layout_gravity="center"
android:layout_margin="@dimen/spacer_1x"
android:contentDescription="@null"
+ android:translationY="@dimen/spacer_1qx"
app:srcCompat="@drawable/ic_person_grey600_24dp"
tools:srcCompat="@tools:sample/avatars" />
- <EditText
- android:id="@+id/message"
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/messageWrapper"
+ style="@style/TextInputLayoutStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="@dimen/spacer_1x"
android:layout_marginEnd="@dimen/spacer_2x"
android:layout_weight="1"
- android:autofillHints="@null"
android:hint="@string/add_comment"
- android:imeOptions="flagNoExtractUi|actionSend"
- android:inputType="text"
- android:maxLength="@integer/comment_max_length"
- android:paddingEnd="@dimen/spacer_1x"
- tools:ignore="RtlSymmetry">
+ android:labelFor="@id/message">
+
+ <EditText
+ android:id="@+id/message"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:autofillHints="@null"
+ android:imeOptions="flagNoExtractUi|actionSend"
+ android:inputType="text"
+ android:maxLength="@integer/comment_max_length">
- <requestFocus />
- </EditText>
+ <requestFocus />
+ </EditText>
+ </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
@@ -146,6 +156,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@string/add_comment"
+ android:translationY="@dimen/spacer_1qx"
app:backgroundTint="@color/defaultBrand"
app:fabSize="mini"
app:srcCompat="@drawable/ic_send_white_24dp" />
diff --git a/app/src/main/res/layout/fragment_card_edit_tab_details.xml b/app/src/main/res/layout/fragment_card_edit_tab_details.xml
index a2f5e5b21..66b58dbd9 100644
--- a/app/src/main/res/layout/fragment_card_edit_tab_details.xml
+++ b/app/src/main/res/layout/fragment_card_edit_tab_details.xml
@@ -17,33 +17,28 @@
android:orientation="vertical"
android:padding="@dimen/spacer_2x">
- <LinearLayout
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/labelsWrapper"
+ style="@style/TextInputLayoutStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacer_2x"
- android:orientation="horizontal">
-
- <ImageView
- android:layout_width="@dimen/icon_size_details"
- android:layout_height="match_parent"
- android:layout_marginEnd="@dimen/spacer_2x"
- android:contentDescription="@null"
- app:srcCompat="@drawable/ic_label_grey600_24dp" />
+ android:hint="@string/label_labels"
+ app:startIconDrawable="@drawable/ic_label_grey600_24dp">
<it.niedermann.nextcloud.deck.ui.view.ToggleAutoCompleteTextView
android:id="@+id/labels"
+ style="@style/Widget.MaterialComponents.AutoCompleteTextView.OutlinedBox.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
- android:hint="@string/label_labels"
android:inputType="text" />
- </LinearLayout>
+ </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.chip.ChipGroup
android:id="@+id/labelsGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginStart="40dp"
android:animateLayoutChanges="true" />
<LinearLayout
@@ -52,135 +47,148 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacer_2x">
-
- <ImageView
- android:layout_width="@dimen/icon_size_details"
- android:layout_height="match_parent"
- android:layout_marginEnd="@dimen/spacer_2x"
- android:contentDescription="@null"
- app:srcCompat="@drawable/calendar_blank_grey600_24dp" />
-
- <EditText
- android:id="@+id/dueDateDate"
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/dueDateDateWrapper"
+ style="@style/TextInputLayoutStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2"
- android:enabled="true"
- android:focusable="false"
android:hint="@string/hint_due_date_date"
- android:importantForAutofill="no"
- android:inputType="date"
- android:maxLines="1"
- tools:text="01/07/2020" />
-
- <EditText
- android:id="@+id/dueDateTime"
+ android:labelFor="@id/dueDateDate"
+ android:paddingStart="0dp"
+ android:paddingEnd="@dimen/spacer_2x"
+ app:startIconDrawable="@drawable/calendar_blank_grey600_24dp">
+
+ <EditText
+ android:id="@+id/dueDateDate"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:enabled="true"
+ android:focusable="false"
+ android:importantForAutofill="no"
+ android:inputType="date"
+ android:maxLines="1"
+ tools:text="01/07/2020" />
+ </com.google.android.material.textfield.TextInputLayout>
+
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/dueDateTimeWrapper"
+ style="@style/TextInputLayoutStyle"
android:layout_width="wrap_content"
- android:layout_height="wrap_content"
+ android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
- android:enabled="true"
- android:focusable="false"
android:hint="@string/hint_due_date_time"
- android:importantForAutofill="no"
- android:inputType="datetime"
- android:maxLines="1"
- android:minLines="0"
- android:textAlignment="center"
- tools:text="11:45" />
+ android:labelFor="@id/dueDateTime">
+
+ <EditText
+ android:id="@+id/dueDateTime"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:enabled="true"
+ android:focusable="false"
+ android:importantForAutofill="no"
+ android:inputType="datetime"
+ android:maxLines="1"
+ android:minLines="0"
+ android:textAlignment="center"
+ tools:text="11:45" />
+ </com.google.android.material.textfield.TextInputLayout>
<ImageView
android:id="@+id/clearDueDate"
android:layout_width="wrap_content"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
android:contentDescription="@string/label_clear_due_date"
- android:paddingStart="@dimen/spacer_1x"
+ android:paddingStart="@dimen/spacer_2x"
+ android:paddingTop="@dimen/spacer_1x"
android:paddingEnd="@dimen/spacer_1x"
+ android:paddingBottom="@dimen/spacer_1x"
+ android:translationY="@dimen/spacer_1hx"
app:srcCompat="@drawable/ic_close_circle_grey600" />
</LinearLayout>
- <LinearLayout
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/peopleWrapper"
+ style="@style/TextInputLayoutStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacer_2x"
- android:orientation="horizontal">
-
- <ImageView
- android:layout_width="@dimen/icon_size_details"
- android:layout_height="match_parent"
- android:layout_marginEnd="@dimen/spacer_2x"
- android:contentDescription="@null"
- app:srcCompat="@drawable/ic_person_grey600_24dp" />
+ android:hint="@string/hint_assign_people"
+ app:startIconDrawable="@drawable/ic_person_grey600_24dp">
<it.niedermann.nextcloud.deck.ui.view.ToggleAutoCompleteTextView
android:id="@+id/people"
+ style="@style/Widget.MaterialComponents.AutoCompleteTextView.OutlinedBox.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
- android:hint="@string/hint_assign_people"
android:inputType="text" />
- </LinearLayout>
+ </com.google.android.material.textfield.TextInputLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/assignees"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginStart="40dp"
android:layout_marginTop="@dimen/spacer_1x"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
tools:listitem="@tools:sample/avatars" />
- <LinearLayout
- android:id="@+id/descriptionBar"
+ <RelativeLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
-
- <ImageView
- android:layout_width="@dimen/icon_size_details"
- android:layout_height="wrap_content"
- android:layout_marginEnd="@dimen/spacer_2x"
- android:contentDescription="@null"
- app:srcCompat="@drawable/ic_baseline_subject_24" />
+ android:layout_height="wrap_content">
- <LinearLayout
- android:layout_width="0dp"
+ <com.google.android.material.textfield.TextInputLayout
+ android:id="@+id/descriptionEditorWrapper"
+ style="@style/TextInputLayoutStyle"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_weight="1"
- android:gravity="end"
- android:orientation="horizontal">
+ android:layout_marginTop="@dimen/spacer_1x"
+ android:hint="@string/label_description">
- <ImageView
- android:id="@+id/descriptionToggle"
- android:layout_width="wrap_content"
+ <it.niedermann.android.markdown.MarkdownEditorImpl
+ android:id="@+id/descriptionEditor"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="?attr/selectableItemBackgroundBorderless"
- android:contentDescription="@string/edit_description"
- android:paddingStart="@dimen/spacer_1x"
- android:paddingEnd="@dimen/spacer_1x"
- android:visibility="gone"
- app:srcCompat="@drawable/ic_baseline_eye_24"
- tools:visibility="gone" />
- </LinearLayout>
- </LinearLayout>
+ android:layout_marginTop="@dimen/spacer_1x"
+ android:padding="@dimen/spacer_2x"
+ android:textColor="?attr/colorAccent"
+ android:textSize="@dimen/font_size_description" />
- <it.niedermann.android.markdown.MarkdownEditorImpl
- android:id="@+id/descriptionEditor"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/spacer_1x"
- android:textColor="?attr/colorAccent"
- android:textSize="@dimen/font_size_description" />
+ </com.google.android.material.textfield.TextInputLayout>
- <it.niedermann.android.markdown.MarkdownViewerImpl
- android:id="@+id/descriptionViewer"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/spacer_2x"
- android:textColor="?attr/colorAccent"
- android:textIsSelectable="true"
- android:textSize="@dimen/font_size_description"
- android:visibility="gone" />
+ <it.niedermann.android.markdown.MarkdownViewerImpl
+ android:id="@+id/descriptionViewer"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="12dp"
+ android:padding="@dimen/spacer_2x"
+ android:textColor="?attr/colorAccent"
+ android:textIsSelectable="true"
+ android:textSize="@dimen/font_size_description"
+ android:translationY="1dp"
+ android:visibility="gone" />
+
+ <ImageButton
+ android:id="@+id/descriptionToggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true"
+ android:layout_alignParentEnd="true"
+ android:layout_gravity="bottom"
+ android:layout_marginEnd="6dp"
+ android:background="?attr/colorPrimary"
+ android:contentDescription="@string/edit_description"
+ android:paddingStart="@dimen/spacer_1hx"
+ android:paddingTop="@dimen/spacer_1x"
+ android:paddingEnd="@dimen/spacer_1hx"
+ android:paddingBottom="@dimen/spacer_1hx"
+ android:translationY="-7dp"
+ android:visibility="invisible"
+ app:srcCompat="@drawable/ic_baseline_eye_24"
+ tools:visibility="visible" />
+ </RelativeLayout>
</LinearLayout>
<TextView
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 9881f8e76..9f0cfdff8 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -8,6 +8,8 @@
<item name="android:windowBackground">?attr/colorPrimary</item>
<item name="textAppearanceHeadline1">@style/Deck.TextAppearance.Headline1</item>
<item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme</item>
+ <item name="android:colorControlNormal">?attr/colorAccent</item>
+ <item name="android:colorControlActivated">?attr/colorAccent</item>
</style>
<style name="AppBottomSheetDialogTheme" parent="Theme.MaterialComponents.DayNight.BottomSheetDialog">
@@ -22,6 +24,11 @@
<item name="android:background">?attr/colorPrimary</item>
</style>
+ <style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
+ <item name="boxStrokeColor">@color/text_input_layout_color</item>
+ <item name="hintTextColor">@color/text_input_layout_color</item>
+ </style>
+
<!-- Default is a light theme with the dark blue brand -->
<style name="AppTheme" parent="BaseTheme" />