summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java/org
diff options
context:
space:
mode:
authorLillyJadeKatrin <lilly.kitty.1988@gmail.com>2025-04-27 09:15:01 -0400
committerLillyJadeKatrin <lilly.kitty.1988@gmail.com>2025-11-16 22:05:54 -0500
commitf4f26a26d22e0c4be99a699277e5dfe2f1bbe652 (patch)
treebb350c23afda8b2f9257589b97cb96afd0642a15 /Source/Android/app/src/main/java/org
parent98678e9a8b713ff8bb8aa5d1c58f44e8b57a16fc (diff)
Add login to achievement settings
Diffstat (limited to 'Source/Android/app/src/main/java/org')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt12
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/LoginDialog.kt51
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt28
4 files changed, 97 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt
index 345daf54a1..6626ba0df3 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt
@@ -7,5 +7,11 @@ object AchievementModel {
external fun init()
@JvmStatic
+ external fun login(password: String)
+
+ @JvmStatic
+ external fun logout()
+
+ @JvmStatic
external fun shutdown()
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt
index b150c845e1..29640aa92f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt
@@ -80,6 +80,18 @@ enum class StringSetting(
Settings.SECTION_GFX_SETTINGS,
"DriverLibName",
""
+ ),
+ ACHIEVEMENTS_USERNAME(
+ Settings.FILE_ACHIEVEMENTS,
+ Settings.SECTION_ACHIEVEMENTS,
+ "Username",
+ ""
+ ),
+ ACHIEVEMENTS_API_TOKEN(
+ Settings.FILE_ACHIEVEMENTS,
+ Settings.SECTION_ACHIEVEMENTS,
+ "ApiToken",
+ ""
);
override val isOverridden: Boolean
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/LoginDialog.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/LoginDialog.kt
new file mode 100644
index 0000000000..f49c9ff922
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/LoginDialog.kt
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.settings.ui
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.DialogFragment
+import org.dolphinemu.dolphinemu.databinding.DialogLoginBinding
+import org.dolphinemu.dolphinemu.features.settings.model.AchievementModel.login
+import org.dolphinemu.dolphinemu.features.settings.model.NativeConfig
+import org.dolphinemu.dolphinemu.features.settings.model.StringSetting
+
+class LoginDialog : DialogFragment() {
+ private var _binding: DialogLoginBinding? = null
+ private val binding get() = _binding!!
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ _binding = DialogLoginBinding.inflate(inflater, container, false)
+ binding.usernameInput.setText(
+ StringSetting.ACHIEVEMENTS_USERNAME.string
+ )
+ return binding.getRoot()
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ binding.buttonCancel.setOnClickListener { onCancelClicked() }
+ binding.buttonLogin.setOnClickListener { onLoginClicked() }
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+
+ private fun onCancelClicked() {
+ dismiss()
+ }
+
+ private fun onLoginClicked() {
+ StringSetting.ACHIEVEMENTS_USERNAME.setString(NativeConfig.LAYER_BASE_OR_CURRENT,
+ binding.usernameInput.text.toString())
+ login(binding.passwordInput.text.toString())
+ dismiss()
+ }
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt
index a5ee2f28df..0fd8a97782 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt
@@ -31,6 +31,7 @@ import org.dolphinemu.dolphinemu.features.input.ui.ProfileDialog
import org.dolphinemu.dolphinemu.features.input.ui.ProfileDialogPresenter
import org.dolphinemu.dolphinemu.features.settings.model.*
import org.dolphinemu.dolphinemu.features.settings.model.view.*
+import org.dolphinemu.dolphinemu.features.settings.model.AchievementModel.logout
import org.dolphinemu.dolphinemu.model.GpuDriverMetadata
import org.dolphinemu.dolphinemu.ui.main.MainPresenter
import org.dolphinemu.dolphinemu.utils.*
@@ -953,6 +954,33 @@ class SettingsFragmentPresenter(
)
)
if (BooleanSetting.ACHIEVEMENTS_ENABLED.boolean) {
+ if (StringSetting.ACHIEVEMENTS_API_TOKEN.string == "") {
+ sl.add(
+ RunRunnable(
+ context,
+ R.string.achievements_login,
+ 0,
+ 0,
+ 0,
+ false
+ ) {
+ fragmentView.showDialogFragment(LoginDialog())
+ loadSettingsList()
+ })
+ } else {
+ sl.add(
+ RunRunnable(
+ context,
+ R.string.achievements_logout,
+ 0,
+ 0,
+ 0,
+ false
+ ) {
+ logout()
+ loadSettingsList()
+ })
+ }
sl.add(
SwitchSetting(
context,