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
|
@JvmStatic
|
||||||
external fun init()
|
external fun init()
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
external fun login(password: String)
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
external fun logout()
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
external fun shutdown()
|
external fun shutdown()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -80,6 +80,18 @@ enum class StringSetting(
|
|||||||
Settings.SECTION_GFX_SETTINGS,
|
Settings.SECTION_GFX_SETTINGS,
|
||||||
"DriverLibName",
|
"DriverLibName",
|
||||||
""
|
""
|
||||||
|
),
|
||||||
|
ACHIEVEMENTS_USERNAME(
|
||||||
|
Settings.FILE_ACHIEVEMENTS,
|
||||||
|
Settings.SECTION_ACHIEVEMENTS,
|
||||||
|
"Username",
|
||||||
|
""
|
||||||
|
),
|
||||||
|
ACHIEVEMENTS_API_TOKEN(
|
||||||
|
Settings.FILE_ACHIEVEMENTS,
|
||||||
|
Settings.SECTION_ACHIEVEMENTS,
|
||||||
|
"ApiToken",
|
||||||
|
""
|
||||||
);
|
);
|
||||||
|
|
||||||
override val isOverridden: Boolean
|
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.input.ui.ProfileDialogPresenter
|
||||||
import org.dolphinemu.dolphinemu.features.settings.model.*
|
import org.dolphinemu.dolphinemu.features.settings.model.*
|
||||||
import org.dolphinemu.dolphinemu.features.settings.model.view.*
|
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.model.GpuDriverMetadata
|
||||||
import org.dolphinemu.dolphinemu.ui.main.MainPresenter
|
import org.dolphinemu.dolphinemu.ui.main.MainPresenter
|
||||||
import org.dolphinemu.dolphinemu.utils.*
|
import org.dolphinemu.dolphinemu.utils.*
|
||||||
@ -953,6 +954,33 @@ class SettingsFragmentPresenter(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
if (BooleanSetting.ACHIEVEMENTS_ENABLED.boolean) {
|
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(
|
sl.add(
|
||||||
SwitchSetting(
|
SwitchSetting(
|
||||||
context,
|
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_encore_enabled">Enable Encore Mode</string>
|
||||||
<string name="achievements_spectator_enabled">Enable Spectator Mode</string>
|
<string name="achievements_spectator_enabled">Enable Spectator Mode</string>
|
||||||
<string name="achievements_progress_enabled">Enable Progress Notifications</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>
|
</resources>
|
||||||
|
|||||||
@ -14,6 +14,19 @@ Java_org_dolphinemu_dolphinemu_features_settings_model_AchievementModel_init(JNI
|
|||||||
AchievementManager::GetInstance().Init(nullptr);
|
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
|
JNIEXPORT void JNICALL
|
||||||
Java_org_dolphinemu_dolphinemu_features_settings_model_AchievementModel_shutdown(JNIEnv* env,
|
Java_org_dolphinemu_dolphinemu_features_settings_model_AchievementModel_shutdown(JNIEnv* env,
|
||||||
jclass)
|
jclass)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user