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:
authorStefan Niedermann <info@niedermann.it>2022-11-04 12:25:13 +0300
committerStefan Niedermann <info@niedermann.it>2022-11-04 12:25:13 +0300
commit7183470a252173adc4231bd5373c6805c3709b11 (patch)
tree99e8ffe0b9d709ef6553988f228dc2503eb77cd0 /app/src/main/java
parent6a14c4f6ce235807241694f0290f3bd2f312bfc2 (diff)
Fix #1330 Update to The Material Design 3
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/MainActivity.java38
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/DeleteBoardDialogFragment.java7
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/EditBoardDialogFragment.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/accesscontrol/AccessControlDialogFragment.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/EditLabelDialogFragment.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/board/managelabels/ManageLabelsDialogFragment.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDialogFragment.java6
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java23
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandingUtil.java9
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java4
-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/NewCardDialog.java5
-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.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/projectresources/CardProjectResourcesDialog.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionDialogFragment.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/filter/FilterDialogFragment.java4
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareProgressDialogFragment.java5
-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/EditStackDialogFragment.java5
21 files changed, 100 insertions, 62 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 7e25beeb9..8d91048cd 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
@@ -39,7 +39,6 @@ import android.net.Uri;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
-import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -54,7 +53,6 @@ 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;
@@ -70,6 +68,7 @@ import androidx.viewpager2.widget.ViewPager2;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.navigation.NavigationView.OnNavigationItemSelectedListener;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.tabs.TabLayoutMediator;
@@ -114,6 +113,7 @@ 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.BrandedSnackbar;
+import it.niedermann.nextcloud.deck.ui.branding.BrandingUtil;
import it.niedermann.nextcloud.deck.ui.card.CardAdapter;
import it.niedermann.nextcloud.deck.ui.card.CreateCardListener;
import it.niedermann.nextcloud.deck.ui.card.NewCardDialog;
@@ -196,10 +196,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
setTheme(R.style.AppTheme);
-
- final var typedValue = new TypedValue();
- getTheme().resolveAttribute(R.attr.colorAccent, typedValue, true);
- colorAccent = typedValue.data;
+ colorAccent = BrandingUtil.getAttribute(this, R.attr.colorAccent);
binding = ActivityMainBinding.inflate(getLayoutInflater());
headerBinding = NavHeaderMainBinding.bind(binding.navigationView.getHeaderView(0));
@@ -501,6 +498,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
IResponseCallback.super.onError(error);
runOnUiThread(() -> BrandedSnackbar.make(binding.coordinatorLayout, Objects.requireNonNull(error.getLocalizedMessage()), Snackbar.LENGTH_LONG)
.setAction(R.string.simple_more, v -> ExceptionDialogFragment.newInstance(error, mainViewModel.getCurrentAccount()).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()))
+ .setAnchorView(binding.fab)
.show());
}
});
@@ -551,6 +549,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
IResponseCallback.super.onError(throwable);
runOnUiThread(() -> BrandedSnackbar.make(binding.coordinatorLayout, R.string.synchronization_failed, Snackbar.LENGTH_LONG)
.setAction(R.string.simple_more, v -> ExceptionDialogFragment.newInstance(throwable, mainViewModel.getCurrentAccount()).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()))
+ .setAnchorView(binding.fab)
.show());
}
});
@@ -750,7 +749,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
final var stack = stackAdapter.getItem(binding.viewPager.getCurrentItem());
final var stackLocalId = stack.getLocalId();
mainViewModel.countCardsInStack(mainViewModel.getCurrentAccount().getId(), stackLocalId, (numberOfCards) -> runOnUiThread(() ->
- new AlertDialog.Builder(this)
+ new MaterialAlertDialogBuilder(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
@@ -857,13 +856,15 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
if (!response.isMaintenanceEnabled()) {
if (response.getDeckVersion().isSupported()) {
runOnUiThread(() -> {
- final var importSnackbar = BrandedSnackbar.make(binding.coordinatorLayout, R.string.account_is_getting_imported, Snackbar.LENGTH_INDEFINITE);
+ final var importSnackbar = BrandedSnackbar.make(binding.coordinatorLayout, R.string.account_is_getting_imported, Snackbar.LENGTH_INDEFINITE)
+ .setAnchorView(binding.fab);
importSnackbar.show();
importSyncManager.synchronize(new ResponseCallback<>(createdAccount) {
@Override
public void onResponse(Boolean syncSuccess) {
importSnackbar.dismiss();
runOnUiThread(() -> BrandedSnackbar.make(binding.coordinatorLayout, getString(R.string.account_imported), Snackbar.LENGTH_LONG)
+ .setAnchorView(binding.fab)
.setAction(R.string.simple_switch, (a) -> {
createdAccount.setColor(response.getColor());
mainViewModel.setSyncManager(importSyncManager);
@@ -884,7 +885,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 AlertDialog.Builder(MainActivity.this)
+ runOnUiThread(() -> new MaterialAlertDialogBuilder(MainActivity.this)
.setTitle(R.string.update_deck)
.setMessage(getString(R.string.deck_outdated_please_update, response.getDeckVersion().getOriginalVersion()))
.setNegativeButton(R.string.simple_discard, null)
@@ -898,7 +899,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
}
} else {
DeckLog.warn("Cannot import account because server version is currently in maintenance mode.");
- runOnUiThread(() -> new AlertDialog.Builder(MainActivity.this)
+ runOnUiThread(() -> new MaterialAlertDialogBuilder(MainActivity.this)
.setTitle(R.string.maintenance_mode)
.setMessage(getString(R.string.maintenance_mode_explanation, createdAccount.getUrl()))
.setPositiveButton(R.string.simple_close, null)
@@ -913,7 +914,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 AlertDialog.Builder(MainActivity.this)
+ runOnUiThread(() -> new MaterialAlertDialogBuilder(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)
@@ -930,7 +931,9 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
IResponseCallback.super.onError(error);
if (error instanceof SQLiteConstraintException) {
DeckLog.warn("Account already added");
- BrandedSnackbar.make(binding.coordinatorLayout, R.string.account_already_added, Snackbar.LENGTH_LONG).show();
+ BrandedSnackbar.make(binding.coordinatorLayout, R.string.account_already_added, Snackbar.LENGTH_LONG)
+ .setAnchorView(binding.fab)
+ .show();
} else {
ExceptionDialogFragment.newInstance(error, accountToCreate).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName());
}
@@ -1020,6 +1023,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
/**
* Find a StackFragment by it's ID, may return null.
+ *
* @param stackId ID of the stack to find
* @return Instance of StackFragment
*/
@@ -1030,6 +1034,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
/**
* This method is called when a new Card is created
+ *
* @param createdCard The new Card's data
*/
@Override
@@ -1116,7 +1121,8 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
if (binding != null) { // Can be null in case the activity has been destroyed before the synchronization process has been finished
BrandedSnackbar.make(binding.coordinatorLayout, R.string.synchronization_failed, Snackbar.LENGTH_LONG)
.setAction(R.string.simple_more, v -> ExceptionDialogFragment.newInstance(throwable, mainViewModel.getCurrentAccount()).show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()))
- .show();
+ .setAnchorView(binding.fab)
+ .show();
}
});
}
@@ -1142,12 +1148,13 @@ 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 AlertDialog.Builder(this)
+ new MaterialAlertDialogBuilder(this)
.setTitle(R.string.clone_board)
.setMultiChoiceItems(animals, checkedItems, (dialog, which, isChecked) -> checkedItems[0] = isChecked)
.setPositiveButton(R.string.simple_clone, (dialog, which) -> {
binding.drawerLayout.closeDrawer(GravityCompat.START);
- final var snackbar = BrandedSnackbar.make(binding.coordinatorLayout, getString(R.string.cloning_board, board.getTitle()), Snackbar.LENGTH_INDEFINITE);
+ final var snackbar = BrandedSnackbar.make(binding.coordinatorLayout, getString(R.string.cloning_board, board.getTitle()), Snackbar.LENGTH_INDEFINITE)
+ .setAnchorView(binding.fab);
snackbar.show();
mainViewModel.cloneBoard(board.getAccountId(), board.getLocalId(), board.getAccountId(), board.getColor(), checkedItems[0], new IResponseCallback<>() {
@Override
@@ -1157,6 +1164,7 @@ public class MainActivity extends AppCompatActivity implements DeleteStackListen
setCurrentBoard(response.getBoard());
BrandedSnackbar.make(binding.coordinatorLayout, getString(R.string.successfully_cloned_board, response.getBoard().getTitle()), Snackbar.LENGTH_LONG)
.setAction(R.string.edit, v -> EditBoardDialogFragment.newInstance(response.getLocalId()).show(getSupportFragmentManager(), EditBoardDialogFragment.class.getSimpleName()))
+ .setAnchorView(binding.fab)
.show();
});
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java
index 98690e0ca..12150641a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/accountswitcher/AccountSwitcherDialog.java
@@ -8,12 +8,12 @@ import android.os.Bundle;
import android.text.TextUtils;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.ViewModelProvider;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.nextcloud.android.sso.AccountImporter;
import com.nextcloud.android.sso.exceptions.AndroidGetAccountsPermissionNotGranted;
import com.nextcloud.android.sso.exceptions.NextcloudFilesAppNotInstalledException;
@@ -93,7 +93,7 @@ public class AccountSwitcherDialog extends DialogFragment {
dismiss();
});
- return new AlertDialog.Builder(requireContext())
+ return new MaterialAlertDialogBuilder(requireContext())
.setView(binding.getRoot())
.create();
}
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 075439b15..b81c6471e 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
@@ -5,7 +5,6 @@ import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import it.niedermann.nextcloud.deck.R;
@@ -38,12 +37,12 @@ public class DeleteBoardDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder builder = new DeleteAlertDialogBuilder(requireContext())
+ return 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))
- .setNeutralButton(android.R.string.cancel, null);
- return builder.create();
+ .setNeutralButton(android.R.string.cancel, null)
+ .create();
}
public static DialogFragment newInstance(@NonNull Board 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 c6f47fbb1..894f0d835 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
@@ -12,11 +12,12 @@ import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.ViewModelProvider;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import java.util.Objects;
import it.niedermann.nextcloud.deck.R;
@@ -50,7 +51,7 @@ public class EditBoardDialogFragment extends DialogFragment {
super.onCreate(savedInstanceState);
binding = DialogTextColorInputBinding.inflate(requireActivity().getLayoutInflater());
- final var builder = new AlertDialog.Builder(requireContext())
+ final var builder = new MaterialAlertDialogBuilder(requireContext())
.setView(binding.getRoot())
.setNeutralButton(android.R.string.cancel, null);
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 17f8e6891..74c0ad2a3 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
@@ -12,10 +12,10 @@ import android.widget.AdapterView.OnItemClickListener;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.ViewModelProvider;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.snackbar.Snackbar;
import java.util.List;
@@ -66,7 +66,7 @@ public class AccessControlDialogFragment extends DialogFragment implements Acces
super.onCreate(savedInstanceState);
viewModel = new ViewModelProvider(requireActivity()).get(MainViewModel.class);
- final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext());
+ final var dialogBuilder = new MaterialAlertDialogBuilder(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 b372e04c7..1b8c1e0b1 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
@@ -7,9 +7,10 @@ import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogTextColorInputBinding;
import it.niedermann.nextcloud.deck.model.Label;
@@ -53,7 +54,7 @@ public class EditLabelDialogFragment extends BrandedDialogFragment {
super.onCreate(savedInstanceState);
binding = DialogTextColorInputBinding.inflate(requireActivity().getLayoutInflater());
- final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext());
+ final var dialogBuilder = new MaterialAlertDialogBuilder(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 34abebf8e..53cbe09b9 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
@@ -13,10 +13,11 @@ import androidx.annotation.AnyThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.ViewModelProvider;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import java.util.Random;
import it.niedermann.nextcloud.deck.DeckLog;
@@ -62,7 +63,7 @@ public class ManageLabelsDialogFragment extends BrandedDialogFragment implements
super.onCreate(savedInstanceState);
viewModel = new ViewModelProvider(requireActivity()).get(MainViewModel.class);
- final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(requireContext());
+ final var dialogBuilder = new MaterialAlertDialogBuilder(requireContext());
binding = DialogBoardManageLabelsBinding.inflate(requireActivity().getLayoutInflater());
colors = getResources().getStringArray(R.array.board_default_colors);
adapter = new ManageLabelsAdapter(this, requireContext());
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDialogFragment.java
index 28d4da9ee..4b35351b4 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedDialogFragment.java
@@ -1,19 +1,17 @@
package it.niedermann.nextcloud.deck.ui.branding;
-import android.content.Context;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
-import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
-
public abstract class BrandedDialogFragment extends DialogFragment implements Branded {
@Override
public void onStart() {
super.onStart();
- @Nullable Context context = getContext();
+ @Nullable final var context = getContext();
if (context != null) {
applyBrand(readBrandMainColor(context));
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java
index 125c9dc23..adc4ea65f 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/BrandedSnackbar.java
@@ -1,6 +1,9 @@
package it.niedermann.nextcloud.deck.ui.branding;
+import static it.niedermann.nextcloud.deck.DeckApplication.isDarkTheme;
+import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.getAttribute;
import static it.niedermann.nextcloud.deck.ui.branding.BrandingUtil.readBrandMainColor;
+import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSufficient;
import android.graphics.Color;
import android.view.View;
@@ -12,16 +15,27 @@ import androidx.annotation.StringRes;
import com.google.android.material.snackbar.BaseTransientBottomBar;
import com.google.android.material.snackbar.Snackbar;
-import it.niedermann.android.util.ColorUtil;
+import it.niedermann.nextcloud.deck.R;
public class BrandedSnackbar {
@NonNull
- public static Snackbar make(
- @NonNull View view, @NonNull CharSequence text, @BaseTransientBottomBar.Duration int duration) {
+ public static Snackbar make(@NonNull View view, @NonNull CharSequence text, @BaseTransientBottomBar.Duration int duration) {
final var snackbar = Snackbar.make(view, text, duration);
+
+ @ColorInt final int backgroundColor = getAttribute(view.getContext(), R.attr.colorSurfaceInverse);
@ColorInt final int color = readBrandMainColor(view.getContext());
- snackbar.setActionTextColor(ColorUtil.INSTANCE.isColorDark(color) ? Color.WHITE : color);
+
+ if (contrastRatioIsSufficient(backgroundColor, color)) {
+ snackbar.setActionTextColor(color);
+ } else {
+ if (isDarkTheme(view.getContext())) {
+ snackbar.setActionTextColor(Color.BLACK);
+ } else {
+ snackbar.setActionTextColor(Color.WHITE);
+ }
+ }
+
return snackbar;
}
@@ -29,5 +43,4 @@ public class BrandedSnackbar {
public static Snackbar make(@NonNull View view, @StringRes int resId, @BaseTransientBottomBar.Duration int duration) {
return make(view, view.getResources().getText(resId), duration);
}
-
} \ No newline at end of file
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 fea7b31d2..3fd5c50e4 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
@@ -7,8 +7,10 @@ import static it.niedermann.nextcloud.deck.util.DeckColorUtil.contrastRatioIsSuf
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Color;
+import android.util.TypedValue;
import android.view.MenuItem;
+import androidx.annotation.AttrRes;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
@@ -96,4 +98,11 @@ public abstract class BrandingUtil {
menuItem.setIcon(drawable);
}
}
+
+ @ColorInt
+ public static int getAttribute(@NonNull Context context, @AttrRes int id) {
+ final var typedValue = new TypedValue();
+ context.getTheme().resolveAttribute(id, typedValue, true);
+ return typedValue.data;
+ }
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java
index ea53f4461..e769797b4 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/branding/DeleteAlertDialogBuilder.java
@@ -7,9 +7,11 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import it.niedermann.nextcloud.deck.R;
-public class DeleteAlertDialogBuilder extends AlertDialog.Builder {
+public class DeleteAlertDialogBuilder extends MaterialAlertDialogBuilder {
protected AlertDialog dialog;
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 433d87549..9fa8c3200 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,12 +15,12 @@ import android.view.MenuItem;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.lifecycle.ViewModelProvider;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
@@ -134,7 +134,7 @@ public class EditActivity extends AppCompatActivity {
invalidateOptionsMenu();
observeOnce(viewModel.getFullCardWithProjectsByLocalId(account.getId(), cardLocalId), EditActivity.this, (fullCard) -> {
if (fullCard == null) {
- new AlertDialog.Builder(this)
+ new MaterialAlertDialogBuilder(this)
.setTitle(R.string.card_not_found)
.setMessage(R.string.card_not_found_message)
.setPositiveButton(R.string.simple_close, (a, b) -> super.finish())
@@ -198,7 +198,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 AlertDialog.Builder(this)
+ new MaterialAlertDialogBuilder(this)
.setTitle(R.string.title_is_mandatory)
.setMessage(R.string.provide_at_least_a_title_or_description)
.setPositiveButton(android.R.string.ok, null)
@@ -264,7 +264,7 @@ public class EditActivity extends AppCompatActivity {
@Override
public void finish() {
if (!viewModel.hasChanges() && viewModel.canEdit()) {
- new AlertDialog.Builder(this)
+ new MaterialAlertDialogBuilder(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/NewCardDialog.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/NewCardDialog.java
index 49daf2b32..e6aea3b9a 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/NewCardDialog.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/NewCardDialog.java
@@ -19,11 +19,12 @@ import android.widget.Toast;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModelProvider;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.api.IResponseCallback;
import it.niedermann.nextcloud.deck.databinding.DialogNewCardBinding;
@@ -80,7 +81,7 @@ public class NewCardDialog extends DialogFragment implements DialogInterface.OnC
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
binding = DialogNewCardBinding.inflate(requireActivity().getLayoutInflater());
- final var dialog = new AlertDialog.Builder(requireActivity())
+ final var dialog = new MaterialAlertDialogBuilder(requireActivity())
.setTitle(R.string.add_card)
.setView(binding.getRoot())
.setPositiveButton(R.string.edit, null)
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 52aa36128..113c28932 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
@@ -12,13 +12,13 @@ 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;
import androidx.swiperefreshlayout.widget.CircularProgressDrawable;
import com.bumptech.glide.RequestBuilder;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogPreviewBinding;
@@ -64,7 +64,7 @@ public class PreviewDialog extends DialogFragment {
}
});
- return new AlertDialog.Builder(requireContext())
+ return new MaterialAlertDialogBuilder(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 b6f6df906..b26ee84c5 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
@@ -12,9 +12,10 @@ import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import java.util.Objects;
import it.niedermann.nextcloud.deck.R;
@@ -50,7 +51,7 @@ public class CardCommentsEditDialogFragment extends BrandedDialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
binding = DialogAddCommentBinding.inflate(requireActivity().getLayoutInflater());
- return new AlertDialog.Builder(requireActivity())
+ return new MaterialAlertDialogBuilder(requireActivity())
.setView(binding.getRoot())
.setTitle(R.string.simple_comment)
.setNeutralButton(android.R.string.cancel, null)
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 de9c3460c..398323429 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
@@ -7,10 +7,11 @@ import android.view.LayoutInflater;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.lifecycle.ViewModelProvider;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -49,7 +50,7 @@ public class CardProjectResourcesDialog extends DialogFragment {
binding = DialogProjectResourcesBinding.inflate(LayoutInflater.from(requireContext()));
viewModel = new ViewModelProvider(requireActivity()).get(EditCardViewModel.class);
- return new AlertDialog.Builder(requireContext())
+ return new MaterialAlertDialogBuilder(requireContext())
.setTitle(projectName)
.setView(binding.getRoot())
.setNeutralButton(R.string.simple_close, null)
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionDialogFragment.java
index 987394b4b..58e104973 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/exception/ExceptionDialogFragment.java
@@ -7,10 +7,11 @@ import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatDialogFragment;
import androidx.fragment.app.DialogFragment;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import it.niedermann.android.util.ClipboardUtil;
import it.niedermann.nextcloud.deck.BuildConfig;
import it.niedermann.nextcloud.deck.DeckLog;
@@ -61,7 +62,7 @@ public class ExceptionDialogFragment extends AppCompatDialogFragment {
adapter.setThrowable(requireContext(), account, throwable);
- return new AlertDialog.Builder(requireActivity())
+ return new MaterialAlertDialogBuilder(requireActivity())
.setView(binding.getRoot())
.setTitle(R.string.error_dialog_title)
.setPositiveButton(android.R.string.copy, (a, b) -> {
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 a06a1c8f4..50e3a05c3 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
@@ -9,7 +9,6 @@ import android.os.Bundle;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
@@ -17,6 +16,7 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.tabs.TabLayoutMediator;
import it.niedermann.android.util.ColorUtil;
@@ -50,7 +50,7 @@ public class FilterDialogFragment extends BrandedDialogFragment {
filterViewModel = new ViewModelProvider(requireActivity()).get(FilterViewModel.class);
- final var dialogBuilder = new AlertDialog.Builder(context);
+ final var dialogBuilder = new MaterialAlertDialogBuilder(context);
binding = DialogFilterBinding.inflate(requireActivity().getLayoutInflater());
binding.viewPager.setAdapter(new TabsPagerAdapter(this));
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareProgressDialogFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareProgressDialogFragment.java
index 26f37e88d..207db9006 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareProgressDialogFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/sharetarget/ShareProgressDialogFragment.java
@@ -14,9 +14,10 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.ViewModelProvider;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import it.niedermann.nextcloud.deck.BuildConfig;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.databinding.DialogShareProgressBinding;
@@ -41,7 +42,7 @@ public class ShareProgressDialogFragment extends BrandedDialogFragment {
public Dialog onCreateDialog(Bundle savedInstanceState) {
binding = DialogShareProgressBinding.inflate(requireActivity().getLayoutInflater());
- return new AlertDialog.Builder(requireContext())
+ return new MaterialAlertDialogBuilder(requireContext())
.setView(binding.getRoot())
.create();
}
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 f2b30fd1d..30e002c9c 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
@@ -13,9 +13,9 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.ViewModelProvider;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException;
import java.io.File;
@@ -65,7 +65,7 @@ public class ShareTargetActivity extends MainActivity implements SelectCardListe
mStreamsToUpload.addAll(listOfParcelables);
}
} else {
- new AlertDialog.Builder(this)
+ new MaterialAlertDialogBuilder(this)
.setTitle(R.string.error)
.setMessage(R.string.operation_not_yet_supported)
.setPositiveButton(R.string.simple_close, (a, b) -> finish())
@@ -149,7 +149,7 @@ public class ShareTargetActivity extends MainActivity implements SelectCardListe
private void appendTextAndFinish(@NonNull FullCard fullCard, @NonNull String receivedText) {
final String[] targets = {getString(R.string.append_text_to_description), getString(R.string.add_text_as_comment)};
- new AlertDialog.Builder(this)
+ new MaterialAlertDialogBuilder(this)
.setOnCancelListener(dialog -> cardSelected = false)
.setItems(targets, (dialog, which) -> {
switch (which) {
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 9357fc380..eb0ad1e26 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
@@ -16,9 +16,10 @@ import android.view.inputmethod.EditorInfo;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
import java.util.Objects;
import it.niedermann.nextcloud.deck.R;
@@ -47,7 +48,7 @@ public class EditStackDialogFragment extends BrandedDialogFragment implements Di
public Dialog onCreateDialog(Bundle savedInstanceState) {
binding = DialogStackCreateBinding.inflate(requireActivity().getLayoutInflater());
- final var builder = new AlertDialog.Builder(requireActivity())
+ final var builder = new MaterialAlertDialogBuilder(requireActivity())
.setView(binding.getRoot())
.setNeutralButton(android.R.string.cancel, null);