0
0
mirror of https://github.com/ankidroid/Anki-Android.git synced 2024-09-20 12:02:16 +02:00

Migrtated ConfirmationDialog to Kotlin.

This commit is contained in:
Piyush Goel 2021-11-06 09:27:24 +05:30 committed by Mike Hardy
parent dfedb17f23
commit 456d3fa3da
2 changed files with 46 additions and 52 deletions

View File

@ -43,7 +43,7 @@ permission notice:
// Example of class name: "/com/ichi2/anki/UIUtils.kt"
// Ensure that it starts with '/' (slash)
def source = Source.MAIN
def className = "/com/ichi2/anki/dialogs/ConfirmationDialog.kt"
def className = ""
enum Source {
MAIN("/src/main/java"),

View File

@ -14,57 +14,51 @@
* this program. If not, see <http://www.gnu.org/licenses/>. *
****************************************************************************************/
package com.ichi2.anki.dialogs;
package com.ichi2.anki.dialogs
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Bundle
import androidx.fragment.app.DialogFragment
import com.afollestad.materialdialogs.DialogAction
import com.afollestad.materialdialogs.MaterialDialog
import com.ichi2.anki.R
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import com.afollestad.materialdialogs.MaterialDialog;
import com.ichi2.anki.R;
/**
* This is a reusable convenience class which makes it easy to show a confirmation dialog as a DialogFragment.
* Create a new instance, call setArgs(...), setConfirm(), and setCancel() then show it via the fragment manager as usual.
*/
public class ConfirmationDialog extends DialogFragment {
private @NonNull Runnable mConfirm = () -> { }; // Do nothing by default
private @NonNull Runnable mCancel = () -> { }; // Do nothing by default
public void setArgs(String message) {
setArgs("" , message);
}
public void setArgs(String title, String message) {
Bundle args = new Bundle();
args.putString("message", message);
args.putString("title", title);
setArguments(args);
}
public void setConfirm(@NonNull Runnable confirm) {
mConfirm = confirm;
}
public void setCancel(@NonNull Runnable cancel) {
mCancel = cancel;
}
@NonNull
@Override
public MaterialDialog onCreateDialog(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Resources res = getActivity().getResources();
String title = getArguments().getString("title");
return new MaterialDialog.Builder(getActivity())
.title("".equals(title) ? res.getString(R.string.app_name) : title)
.content(getArguments().getString("message"))
.positiveText(R.string.dialog_ok)
.negativeText(R.string.dialog_cancel)
.onPositive((dialog, which) -> mConfirm.run())
.onNegative((dialog, which) -> mCancel.run())
.show();
}
/**
* This is a reusable convenience class which makes it easy to show a confirmation dialog as a DialogFragment.
* Create a new instance, call setArgs(...), setConfirm(), and setCancel() then show it via the fragment manager as usual.
*/
class ConfirmationDialog : DialogFragment() {
private var mConfirm = Runnable {} // Do nothing by default
private var mCancel = Runnable {} // Do nothing by default
fun setArgs(message: String?) {
setArgs("", message)
}
fun setArgs(title: String?, message: String?) {
val args = Bundle()
args.putString("message", message)
args.putString("title", title)
arguments = args
}
fun setConfirm(confirm: Runnable) {
mConfirm = confirm
}
fun setCancel(cancel: Runnable) {
mCancel = cancel
}
override fun onCreateDialog(savedInstanceState: Bundle?): MaterialDialog {
super.onCreate(savedInstanceState)
val res = requireActivity().resources
val title = requireArguments().getString("title")
return MaterialDialog.Builder(requireActivity())
.title((if ("" == title) res.getString(R.string.app_name) else title)!!)
.content(requireArguments().getString("message")!!)
.positiveText(R.string.dialog_ok)
.negativeText(R.string.dialog_cancel)
.onPositive { _: MaterialDialog?, _: DialogAction? -> mConfirm.run() }
.onNegative { _: MaterialDialog?, _: DialogAction? -> mCancel.run() }
.show()
}
}