Loading app/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'androidx.work:work-runtime:2.7.1' implementation 'com.google.android.material:material:1.6.1' implementation 'com.google.android.material:material:1.7.0' // Database implementation 'androidx.room:room-runtime:2.4.3' Loading app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java +4 −7 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.accountswitcher; import static it.niedermann.owncloud.notes.branding.BrandingUtil.applyBrandToLayerDrawable; import android.app.Dialog; import android.content.Context; import android.content.Intent; Loading @@ -8,14 +10,11 @@ import android.net.Uri; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; import androidx.lifecycle.LiveData; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import java.util.List; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.branding.BrandedDialogFragment; Loading @@ -24,8 +23,6 @@ import it.niedermann.owncloud.notes.manageaccounts.ManageAccountsActivity; import it.niedermann.owncloud.notes.persistence.NotesRepository; import it.niedermann.owncloud.notes.persistence.entity.Account; import static it.niedermann.owncloud.notes.branding.BrandingUtil.applyBrandToLayerDrawable; /** * Displays all available {@link Account} entries and provides basic operations for them, like adding or switching */ Loading Loading @@ -104,7 +101,7 @@ public class AccountSwitcherDialog extends BrandedDialogFragment { dismiss(); }); return new AlertDialog.Builder(requireContext()) return new MaterialAlertDialogBuilder(requireContext()) .setView(binding.getRoot()) .create(); } Loading app/src/main/java/it/niedermann/owncloud/notes/branding/BrandedAlertDialogBuilder.java +4 −2 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.branding; import static it.niedermann.owncloud.notes.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme; import android.content.Context; import android.content.DialogInterface; import android.widget.Button; Loading @@ -9,9 +11,9 @@ import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import static it.niedermann.owncloud.notes.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme; import com.google.android.material.dialog.MaterialAlertDialogBuilder; public class BrandedAlertDialogBuilder extends AlertDialog.Builder implements Branded { public class BrandedAlertDialogBuilder extends MaterialAlertDialogBuilder implements Branded { protected AlertDialog dialog; Loading app/src/main/java/it/niedermann/owncloud/notes/branding/BrandedSnackbar.java +24 −6 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.branding; import static it.niedermann.owncloud.notes.NotesApplication.isDarkThemeActive; import static it.niedermann.owncloud.notes.branding.BrandingUtil.getAttribute; import static it.niedermann.owncloud.notes.branding.BrandingUtil.readBrandMainColor; import static it.niedermann.owncloud.notes.shared.util.NotesColorUtil.contrastRatioIsSufficient; import android.graphics.Color; import android.view.View; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; 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.owncloud.notes.R; public class BrandedSnackbar { @NonNull public static Snackbar make(@NonNull View view, @NonNull CharSequence text, @Snackbar.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); final int color = BrandingUtil.readBrandMainColor(view.getContext()); snackbar.setActionTextColor(ColorUtil.INSTANCE.isColorDark(color) ? Color.WHITE : color); @ColorInt final int backgroundColor = getAttribute(view.getContext(), R.attr.colorSurfaceInverse); @ColorInt final int color = readBrandMainColor(view.getContext()); if (contrastRatioIsSufficient(backgroundColor, color)) { snackbar.setActionTextColor(color); } else { if (isDarkThemeActive(view.getContext())) { snackbar.setActionTextColor(Color.BLACK); } else { snackbar.setActionTextColor(Color.WHITE); } } return snackbar; } @NonNull public static Snackbar make(@NonNull View view, @StringRes int resId, @Snackbar.Duration int duration) { 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 app/src/main/java/it/niedermann/owncloud/notes/branding/BrandingUtil.java +9 −0 Original line number Diff line number Diff line Loading @@ -7,9 +7,11 @@ import android.graphics.Color; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.util.Log; import android.util.TypedValue; import android.view.MenuItem; import android.widget.EditText; import androidx.annotation.AttrRes; import androidx.annotation.ColorInt; import androidx.annotation.IdRes; import androidx.annotation.NonNull; Loading Loading @@ -161,4 +163,11 @@ public class BrandingUtil { DrawableCompat.setTint(drawable, mainColor); } } @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; } } Loading
app/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ dependencies { implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'androidx.work:work-runtime:2.7.1' implementation 'com.google.android.material:material:1.6.1' implementation 'com.google.android.material:material:1.7.0' // Database implementation 'androidx.room:room-runtime:2.4.3' Loading
app/src/main/java/it/niedermann/owncloud/notes/accountswitcher/AccountSwitcherDialog.java +4 −7 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.accountswitcher; import static it.niedermann.owncloud.notes.branding.BrandingUtil.applyBrandToLayerDrawable; import android.app.Dialog; import android.content.Context; import android.content.Intent; Loading @@ -8,14 +10,11 @@ import android.net.Uri; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; import androidx.lifecycle.LiveData; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import java.util.List; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import it.niedermann.owncloud.notes.R; import it.niedermann.owncloud.notes.branding.BrandedDialogFragment; Loading @@ -24,8 +23,6 @@ import it.niedermann.owncloud.notes.manageaccounts.ManageAccountsActivity; import it.niedermann.owncloud.notes.persistence.NotesRepository; import it.niedermann.owncloud.notes.persistence.entity.Account; import static it.niedermann.owncloud.notes.branding.BrandingUtil.applyBrandToLayerDrawable; /** * Displays all available {@link Account} entries and provides basic operations for them, like adding or switching */ Loading Loading @@ -104,7 +101,7 @@ public class AccountSwitcherDialog extends BrandedDialogFragment { dismiss(); }); return new AlertDialog.Builder(requireContext()) return new MaterialAlertDialogBuilder(requireContext()) .setView(binding.getRoot()) .create(); } Loading
app/src/main/java/it/niedermann/owncloud/notes/branding/BrandedAlertDialogBuilder.java +4 −2 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.branding; import static it.niedermann.owncloud.notes.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme; import android.content.Context; import android.content.DialogInterface; import android.widget.Button; Loading @@ -9,9 +11,9 @@ import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import static it.niedermann.owncloud.notes.branding.BrandingUtil.getSecondaryForegroundColorDependingOnTheme; import com.google.android.material.dialog.MaterialAlertDialogBuilder; public class BrandedAlertDialogBuilder extends AlertDialog.Builder implements Branded { public class BrandedAlertDialogBuilder extends MaterialAlertDialogBuilder implements Branded { protected AlertDialog dialog; Loading
app/src/main/java/it/niedermann/owncloud/notes/branding/BrandedSnackbar.java +24 −6 Original line number Diff line number Diff line package it.niedermann.owncloud.notes.branding; import static it.niedermann.owncloud.notes.NotesApplication.isDarkThemeActive; import static it.niedermann.owncloud.notes.branding.BrandingUtil.getAttribute; import static it.niedermann.owncloud.notes.branding.BrandingUtil.readBrandMainColor; import static it.niedermann.owncloud.notes.shared.util.NotesColorUtil.contrastRatioIsSufficient; import android.graphics.Color; import android.view.View; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; 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.owncloud.notes.R; public class BrandedSnackbar { @NonNull public static Snackbar make(@NonNull View view, @NonNull CharSequence text, @Snackbar.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); final int color = BrandingUtil.readBrandMainColor(view.getContext()); snackbar.setActionTextColor(ColorUtil.INSTANCE.isColorDark(color) ? Color.WHITE : color); @ColorInt final int backgroundColor = getAttribute(view.getContext(), R.attr.colorSurfaceInverse); @ColorInt final int color = readBrandMainColor(view.getContext()); if (contrastRatioIsSufficient(backgroundColor, color)) { snackbar.setActionTextColor(color); } else { if (isDarkThemeActive(view.getContext())) { snackbar.setActionTextColor(Color.BLACK); } else { snackbar.setActionTextColor(Color.WHITE); } } return snackbar; } @NonNull public static Snackbar make(@NonNull View view, @StringRes int resId, @Snackbar.Duration int duration) { 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
app/src/main/java/it/niedermann/owncloud/notes/branding/BrandingUtil.java +9 −0 Original line number Diff line number Diff line Loading @@ -7,9 +7,11 @@ import android.graphics.Color; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.util.Log; import android.util.TypedValue; import android.view.MenuItem; import android.widget.EditText; import androidx.annotation.AttrRes; import androidx.annotation.ColorInt; import androidx.annotation.IdRes; import androidx.annotation.NonNull; Loading Loading @@ -161,4 +163,11 @@ public class BrandingUtil { DrawableCompat.setTint(drawable, mainColor); } } @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; } }