diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/AccountRemovalConfirmationDialog.java b/app/src/main/java/com/owncloud/android/ui/dialog/AccountRemovalConfirmationDialog.java deleted file mode 100644 index a3a7e1391281..000000000000 --- a/app/src/main/java/com/owncloud/android/ui/dialog/AccountRemovalConfirmationDialog.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * - * Nextcloud Android client application - * - * @author Tobias Kaminsky - * Copyright (C) 2020 Tobias Kaminsky - * Copyright (C) 2020 Nextcloud GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package com.owncloud.android.ui.dialog; - -import android.app.Dialog; -import android.os.Bundle; - -import com.google.android.material.button.MaterialButton; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import com.nextcloud.client.account.User; -import com.nextcloud.client.di.Injectable; -import com.nextcloud.client.jobs.BackgroundJobManager; -import com.owncloud.android.R; -import com.owncloud.android.utils.theme.ViewThemeUtils; - -import javax.inject.Inject; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; -import androidx.fragment.app.DialogFragment; - -public class AccountRemovalConfirmationDialog extends DialogFragment implements Injectable { - private static final String KEY_USER = "USER"; - - @Inject BackgroundJobManager backgroundJobManager; - @Inject ViewThemeUtils viewThemeUtils; - private User user; - - public static AccountRemovalConfirmationDialog newInstance(User user) { - Bundle bundle = new Bundle(); - bundle.putParcelable(KEY_USER, user); - - AccountRemovalConfirmationDialog dialog = new AccountRemovalConfirmationDialog(); - dialog.setArguments(bundle); - - return dialog; - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - Bundle arguments = getArguments(); - if (arguments != null) { - user = arguments.getParcelable(KEY_USER); - } - } - - @Override - public void onStart() { - super.onStart(); - - AlertDialog alertDialog = (AlertDialog) getDialog(); - if (alertDialog != null) { - - MaterialButton positiveButton = (MaterialButton) alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); - if (positiveButton != null) { - viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton); - } - - MaterialButton negativeButton = (MaterialButton) alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE); - if (negativeButton != null) { - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton); - } - } - } - - @NonNull - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireActivity()) - .setTitle(R.string.delete_account) - .setMessage(getResources().getString(R.string.delete_account_warning, user.getAccountName())) - .setIcon(R.drawable.ic_warning) - .setPositiveButton(R.string.common_ok, - (dialogInterface, i) -> backgroundJobManager.startAccountRemovalJob(user.getAccountName(), - false)) - .setNegativeButton(R.string.common_cancel, null); - - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(requireActivity(), builder); - - return builder.create(); - } -} diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/AccountRemovalConfirmationDialog.kt b/app/src/main/java/com/owncloud/android/ui/dialog/AccountRemovalConfirmationDialog.kt new file mode 100644 index 000000000000..a32e818abe43 --- /dev/null +++ b/app/src/main/java/com/owncloud/android/ui/dialog/AccountRemovalConfirmationDialog.kt @@ -0,0 +1,105 @@ +/* + * Nextcloud Android client application + * + * @author Tobias Kaminsky + * Copyright (C) 2020 Tobias Kaminsky + * Copyright (C) 2020 Nextcloud GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package com.owncloud.android.ui.dialog + +import android.app.Dialog +import android.content.DialogInterface +import android.os.Build +import android.os.Bundle +import androidx.appcompat.app.AlertDialog +import androidx.fragment.app.DialogFragment +import com.google.android.material.button.MaterialButton +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.nextcloud.client.account.User +import com.nextcloud.client.di.Injectable +import com.nextcloud.client.jobs.BackgroundJobManager +import com.owncloud.android.R +import com.owncloud.android.utils.theme.ViewThemeUtils +import javax.inject.Inject + +class AccountRemovalConfirmationDialog : DialogFragment(), Injectable { + @JvmField + @Inject + var backgroundJobManager: BackgroundJobManager? = null + + @JvmField + @Inject + var viewThemeUtils: ViewThemeUtils? = null + + private var user: User? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + user = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + requireArguments().getParcelable(KEY_USER, User::class.java) + } else { + @Suppress("DEPRECATION") + requireArguments().getParcelable(KEY_USER) + } + } + + override fun onStart() { + super.onStart() + + val alertDialog = dialog as AlertDialog? + + if (alertDialog != null) { + val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton + viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(positiveButton) + + val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton + viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(negativeButton) + } + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val builder = MaterialAlertDialogBuilder(requireActivity()) + .setTitle(R.string.delete_account) + .setMessage(resources.getString(R.string.delete_account_warning, user!!.accountName)) + .setIcon(R.drawable.ic_warning) + .setPositiveButton(R.string.common_ok) { _: DialogInterface?, _: Int -> + backgroundJobManager?.startAccountRemovalJob( + user!!.accountName, + false + ) + } + .setNegativeButton(R.string.common_cancel, null) + + viewThemeUtils?.dialog?.colorMaterialAlertDialogBackground(requireActivity(), builder) + + return builder.create() + } + + companion object { + + private const val KEY_USER = "USER" + + @JvmStatic + fun newInstance(user: User?): AccountRemovalConfirmationDialog { + val bundle = Bundle() + bundle.putParcelable(KEY_USER, user) + val dialog = AccountRemovalConfirmationDialog() + dialog.arguments = bundle + return dialog + } + } +}