Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7ee5b615 authored by Stefan Niedermann's avatar Stefan Niedermann
Browse files

Material 3: Simplify title and category dialogs

parent 9e8cf5df
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -10,9 +10,9 @@ import android.view.WindowManager;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.RecyclerView;

import com.google.android.material.dialog.MaterialAlertDialogBuilder;

import java.util.ArrayList;
import java.util.Collection;
@@ -21,13 +21,11 @@ import java.util.Objects;
import java.util.stream.Collectors;

import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.branding.BrandedAlertDialogBuilder;
import it.niedermann.owncloud.notes.branding.BrandedDialogFragment;
import it.niedermann.owncloud.notes.databinding.DialogChooseAccountBinding;
import it.niedermann.owncloud.notes.persistence.entity.Account;
import it.niedermann.owncloud.notes.persistence.entity.Note;
import it.niedermann.owncloud.notes.shared.account.AccountChooserAdapter;
import it.niedermann.owncloud.notes.shared.account.AccountChooserViewHolder;

/**
 * A {@link DialogFragment} which provides an {@link Account} chooser that hides the current {@link Account}.
@@ -75,7 +73,7 @@ public class AccountPickerDialogFragment extends BrandedDialogFragment {
    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final var dialogBuilder = new BrandedAlertDialogBuilder(requireActivity())
        final var dialogBuilder = new MaterialAlertDialogBuilder(requireActivity())
                .setTitle(R.string.simple_move)
                .setNegativeButton(android.R.string.cancel, null);

+0 −50
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;

import androidx.annotation.CallSuper;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;

import com.google.android.material.dialog.MaterialAlertDialogBuilder;

public class BrandedAlertDialogBuilder extends MaterialAlertDialogBuilder implements Branded {

    protected AlertDialog dialog;

    public BrandedAlertDialogBuilder(Context context) {
        super(context);
    }

    @NonNull
    @Override
    public AlertDialog create() {
        this.dialog = super.create();

        @NonNull final var context = getContext();
        @ColorInt final int mainColor = BrandingUtil.readBrandMainColor(context);
        @ColorInt final int textColor = BrandingUtil.readBrandTextColor(context);
        applyBrand(mainColor, textColor);
        dialog.setOnShowListener(dialog -> applyBrand(mainColor, textColor));
        return dialog;
    }

    @CallSuper
    @Override
    public void applyBrand(int mainColor, int textColor) {
        final var 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 (final var button : buttons) {
            if (button != null) {
                button.setTextColor(getSecondaryForegroundColorDependingOnTheme(button.getContext(), mainColor));
            }
        }
    }
}
+37 −0
Original line number Diff line number Diff line
@@ -2,25 +2,36 @@ package it.niedermann.owncloud.notes.branding;

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 com.google.android.material.dialog.MaterialAlertDialogBuilder;

import it.niedermann.owncloud.notes.R;

public class BrandedDeleteAlertDialogBuilder extends BrandedAlertDialogBuilder {
public class DeleteAlertDialogBuilder extends MaterialAlertDialogBuilder {

    protected AlertDialog dialog;

    public BrandedDeleteAlertDialogBuilder(Context context) {
    public DeleteAlertDialogBuilder(Context context) {
        super(context);
    }

    @CallSuper
    @NonNull
    @Override
    public void applyBrand(int mainColor, int textColor) {
        super.applyBrand(mainColor, textColor);
    public AlertDialog create() {
        this.dialog = super.create();
        applyBrand();
        dialog.setOnShowListener(dialog -> applyBrand());
        return dialog;
    }

    public void applyBrand() {
        final var positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
        if (positiveButton != null) {
            positiveButton.setTextColor(getContext().getResources().getColor(R.color.bg_attention));
            positiveButton.setTextColor(ContextCompat.getColor(getContext(), R.color.danger));
        }
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -13,14 +13,14 @@ import android.widget.EditText;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.ViewModelProvider;

import com.google.android.material.dialog.MaterialAlertDialogBuilder;

import java.util.List;

import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.branding.BrandedAlertDialogBuilder;
import it.niedermann.owncloud.notes.branding.BrandedDialogFragment;
import it.niedermann.owncloud.notes.branding.BrandingUtil;
import it.niedermann.owncloud.notes.databinding.DialogChangeCategoryBinding;
@@ -150,7 +150,7 @@ public class CategoryDialogFragment extends BrandedDialogFragment {
            }
        });

        return new BrandedAlertDialogBuilder(getActivity())
        return new MaterialAlertDialogBuilder(requireContext())
                .setTitle(R.string.change_category_title)
                .setView(dialogView)
                .setCancelable(true)
+1 −1
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ public class EditTitleDialogFragment extends BrandedDialogFragment {
            binding.title.setText(oldTitle);
        }

        return new MaterialAlertDialogBuilder(requireActivity())
        return new MaterialAlertDialogBuilder(requireContext())
                .setTitle(R.string.change_note_title)
                .setView(dialogView)
                .setCancelable(true)
Loading