mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-12-16 04:09:39 +00:00
Merge pull request #14077 from Simonx22/android-alert-message-kotlin
Android: Convert AlertMessage dialog to Kotlin
This commit is contained in:
commit
5ee1ae43bb
@ -497,7 +497,7 @@ public final class NativeLibrary
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AlertMessage.newInstance(caption, text, yesNo, isWarning)
|
AlertMessage.Companion.newInstance(caption, text, yesNo, isWarning)
|
||||||
.show(fragmentManager, "AlertMessage");
|
.show(fragmentManager, "AlertMessage");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -513,7 +513,7 @@ public final class NativeLibrary
|
|||||||
|
|
||||||
if (yesNo)
|
if (yesNo)
|
||||||
{
|
{
|
||||||
result = AlertMessage.getAlertResult();
|
result = AlertMessage.Companion.getAlertResult();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,100 +0,0 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
package org.dolphinemu.dolphinemu.dialogs;
|
|
||||||
|
|
||||||
import android.app.Dialog;
|
|
||||||
import android.os.Bundle;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.fragment.app.DialogFragment;
|
|
||||||
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
|
||||||
|
|
||||||
import org.dolphinemu.dolphinemu.NativeLibrary;
|
|
||||||
import org.dolphinemu.dolphinemu.R;
|
|
||||||
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
|
|
||||||
import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting;
|
|
||||||
import org.dolphinemu.dolphinemu.features.settings.model.NativeConfig;
|
|
||||||
|
|
||||||
public final class AlertMessage extends DialogFragment
|
|
||||||
{
|
|
||||||
private static boolean sAlertResult = false;
|
|
||||||
private static final String ARG_TITLE = "title";
|
|
||||||
private static final String ARG_MESSAGE = "message";
|
|
||||||
private static final String ARG_YES_NO = "yesNo";
|
|
||||||
private static final String ARG_IS_WARNING = "isWarning";
|
|
||||||
|
|
||||||
public static AlertMessage newInstance(String title, String message, boolean yesNo,
|
|
||||||
boolean isWarning)
|
|
||||||
{
|
|
||||||
AlertMessage fragment = new AlertMessage();
|
|
||||||
|
|
||||||
Bundle args = new Bundle();
|
|
||||||
args.putString(ARG_TITLE, title);
|
|
||||||
args.putString(ARG_MESSAGE, message);
|
|
||||||
args.putBoolean(ARG_YES_NO, yesNo);
|
|
||||||
args.putBoolean(ARG_IS_WARNING, isWarning);
|
|
||||||
fragment.setArguments(args);
|
|
||||||
|
|
||||||
return fragment;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NonNull
|
|
||||||
@Override
|
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState)
|
|
||||||
{
|
|
||||||
final EmulationActivity emulationActivity = NativeLibrary.getEmulationActivity();
|
|
||||||
String title = requireArguments().getString(ARG_TITLE);
|
|
||||||
String message = requireArguments().getString(ARG_MESSAGE);
|
|
||||||
boolean yesNo = requireArguments().getBoolean(ARG_YES_NO);
|
|
||||||
boolean isWarning = requireArguments().getBoolean(ARG_IS_WARNING);
|
|
||||||
setCancelable(false);
|
|
||||||
|
|
||||||
MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(emulationActivity)
|
|
||||||
.setTitle(title)
|
|
||||||
.setMessage(message);
|
|
||||||
|
|
||||||
// If not yes/no dialog just have one button that dismisses modal,
|
|
||||||
// otherwise have a yes and no button that sets sAlertResult accordingly.
|
|
||||||
if (!yesNo)
|
|
||||||
{
|
|
||||||
builder.setPositiveButton(android.R.string.ok, (dialog, which) ->
|
|
||||||
{
|
|
||||||
dialog.dismiss();
|
|
||||||
NativeLibrary.NotifyAlertMessageLock();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
builder.setPositiveButton(android.R.string.yes, (dialog, which) ->
|
|
||||||
{
|
|
||||||
sAlertResult = true;
|
|
||||||
dialog.dismiss();
|
|
||||||
NativeLibrary.NotifyAlertMessageLock();
|
|
||||||
})
|
|
||||||
.setNegativeButton(android.R.string.no, (dialog, which) ->
|
|
||||||
{
|
|
||||||
sAlertResult = false;
|
|
||||||
dialog.dismiss();
|
|
||||||
NativeLibrary.NotifyAlertMessageLock();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isWarning)
|
|
||||||
{
|
|
||||||
builder.setNeutralButton(R.string.ignore_warning_alert_messages, (dialog, which) ->
|
|
||||||
{
|
|
||||||
BooleanSetting.MAIN_USE_PANIC_HANDLERS.setBoolean(NativeConfig.LAYER_CURRENT, false);
|
|
||||||
dialog.dismiss();
|
|
||||||
NativeLibrary.NotifyAlertMessageLock();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return builder.create();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean getAlertResult()
|
|
||||||
{
|
|
||||||
return sAlertResult;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,82 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
package org.dolphinemu.dolphinemu.dialogs
|
||||||
|
|
||||||
|
import android.app.Dialog
|
||||||
|
import android.content.DialogInterface
|
||||||
|
import android.os.Bundle
|
||||||
|
import androidx.fragment.app.DialogFragment
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
import org.dolphinemu.dolphinemu.NativeLibrary
|
||||||
|
import org.dolphinemu.dolphinemu.R
|
||||||
|
import org.dolphinemu.dolphinemu.activities.EmulationActivity
|
||||||
|
import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting
|
||||||
|
import org.dolphinemu.dolphinemu.features.settings.model.NativeConfig
|
||||||
|
|
||||||
|
class AlertMessage : DialogFragment() {
|
||||||
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||||
|
val emulationActivity: EmulationActivity = NativeLibrary.getEmulationActivity()
|
||||||
|
val args = requireArguments()
|
||||||
|
val title = args.getString(ARG_TITLE).orEmpty()
|
||||||
|
val message = args.getString(ARG_MESSAGE).orEmpty()
|
||||||
|
val yesNo = args.getBoolean(ARG_YES_NO)
|
||||||
|
val isWarning = args.getBoolean(ARG_IS_WARNING)
|
||||||
|
isCancelable = false
|
||||||
|
|
||||||
|
return MaterialAlertDialogBuilder(emulationActivity).setTitle(title).setMessage(message)
|
||||||
|
.apply { configureButtons(yesNo, isWarning) }.create()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun MaterialAlertDialogBuilder.configureButtons(yesNo: Boolean, isWarning: Boolean) {
|
||||||
|
if (yesNo) {
|
||||||
|
setPositiveButton(android.R.string.yes) { dialog, _ ->
|
||||||
|
dialog.releaseLock(result = true)
|
||||||
|
}
|
||||||
|
setNegativeButton(android.R.string.no) { dialog, _ ->
|
||||||
|
dialog.releaseLock(result = false)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
setPositiveButton(android.R.string.ok) { dialog, _ ->
|
||||||
|
dialog.releaseLock()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isWarning) {
|
||||||
|
setNeutralButton(R.string.ignore_warning_alert_messages) { dialog, _ ->
|
||||||
|
BooleanSetting.MAIN_USE_PANIC_HANDLERS.setBoolean(
|
||||||
|
NativeConfig.LAYER_CURRENT, false
|
||||||
|
)
|
||||||
|
dialog.releaseLock()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun DialogInterface.releaseLock(result: Boolean? = null) {
|
||||||
|
result?.let { alertResult = it }
|
||||||
|
dismiss()
|
||||||
|
NativeLibrary.NotifyAlertMessageLock()
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private var alertResult = false
|
||||||
|
private const val ARG_TITLE = "title"
|
||||||
|
private const val ARG_MESSAGE = "message"
|
||||||
|
private const val ARG_YES_NO = "yesNo"
|
||||||
|
private const val ARG_IS_WARNING = "isWarning"
|
||||||
|
|
||||||
|
fun newInstance(
|
||||||
|
title: String, message: String, yesNo: Boolean, isWarning: Boolean
|
||||||
|
): AlertMessage {
|
||||||
|
return AlertMessage().apply {
|
||||||
|
arguments = Bundle().apply {
|
||||||
|
putString(ARG_TITLE, title)
|
||||||
|
putString(ARG_MESSAGE, message)
|
||||||
|
putBoolean(ARG_YES_NO, yesNo)
|
||||||
|
putBoolean(ARG_IS_WARNING, isWarning)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getAlertResult(): Boolean = alertResult
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user