mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-12-16 04:09:39 +00:00
Add login to achievement settings
This commit is contained in:
parent
98678e9a8b
commit
f4f26a26d2
@ -6,6 +6,12 @@ object AchievementModel {
|
||||
@JvmStatic
|
||||
external fun init()
|
||||
|
||||
@JvmStatic
|
||||
external fun login(password: String)
|
||||
|
||||
@JvmStatic
|
||||
external fun logout()
|
||||
|
||||
@JvmStatic
|
||||
external fun shutdown()
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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()
|
||||
}
|
||||
}
|
||||
@ -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,
|
||||
|
||||
78
Source/Android/app/src/main/res/layout/dialog_login.xml
Normal file
78
Source/Android/app/src/main/res/layout/dialog_login.xml
Normal file
@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/root"
|
||||
android:minWidth="320dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/username"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="@dimen/spacing_large"
|
||||
android:layout_marginVertical="@dimen/spacing_small"
|
||||
android:paddingTop="@dimen/spacing_medlarge"
|
||||
app:layout_constraintBottom_toTopOf="@id/password"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/username_input"
|
||||
android:hint="@string/achievements_username"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:importantForAutofill="no"
|
||||
android:inputType="text"
|
||||
android:minHeight="48dp"
|
||||
android:textAlignment="viewStart" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/password"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="@dimen/spacing_large"
|
||||
app:layout_constraintBottom_toTopOf="@id/button_cancel"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/username">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/password_input"
|
||||
android:hint="@string/achievements_password"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="48dp"
|
||||
android:importantForAutofill="no"
|
||||
android:inputType="textPassword"
|
||||
android:textAlignment="viewStart" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/button_cancel"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/spacing_large"
|
||||
android:text="@string/cancel"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/button_login"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/password" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/button_login"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/spacing_large"
|
||||
android:text="@string/ok"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/button_cancel"
|
||||
app:layout_constraintTop_toBottomOf="@id/password" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@ -962,4 +962,8 @@ It can efficiently compress both junk data and encrypted Wii data.
|
||||
<string name="achievements_encore_enabled">Enable Encore Mode</string>
|
||||
<string name="achievements_spectator_enabled">Enable Spectator Mode</string>
|
||||
<string name="achievements_progress_enabled">Enable Progress Notifications</string>
|
||||
<string name="achievements_username">Username</string>
|
||||
<string name="achievements_password">Password</string>
|
||||
<string name="achievements_login">Log In</string>
|
||||
<string name="achievements_logout">Log Out</string>
|
||||
</resources>
|
||||
|
||||
@ -14,6 +14,19 @@ Java_org_dolphinemu_dolphinemu_features_settings_model_AchievementModel_init(JNI
|
||||
AchievementManager::GetInstance().Init(nullptr);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_settings_model_AchievementModel_login(JNIEnv* env, jclass,
|
||||
jstring password)
|
||||
{
|
||||
AchievementManager::GetInstance().Login(GetJString(env, password));
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_settings_model_AchievementModel_logout(JNIEnv* env, jclass)
|
||||
{
|
||||
AchievementManager::GetInstance().Logout();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_settings_model_AchievementModel_shutdown(JNIEnv* env,
|
||||
jclass)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user