Merge pull request #12561 from JosJuice/profile-consistency
InputCommon: Fix profile path inconsistencies
This commit is contained in:
commit
9240f579ea
|
@ -30,7 +30,11 @@ class EmulatedController private constructor(private val pointer: Long) {
|
|||
|
||||
external fun saveProfile(path: String)
|
||||
|
||||
external fun getProfileName(): String
|
||||
external fun getProfileKey(): String
|
||||
|
||||
external fun getUserProfileDirectoryPath(): String
|
||||
|
||||
external fun getSysProfileDirectoryPath(): String
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
|
|
|
@ -101,11 +101,11 @@ class ProfileDialogPresenter {
|
|||
}
|
||||
|
||||
private fun getProfileDirectoryPath(stock: Boolean): String {
|
||||
val profileDirectoryName = menuTag.correspondingEmulatedController.getProfileName()
|
||||
val controller = menuTag.correspondingEmulatedController
|
||||
return if (stock) {
|
||||
"${DirectoryInitialization.getSysDirectory()}/Profiles/$profileDirectoryName/"
|
||||
controller.getSysProfileDirectoryPath()
|
||||
} else {
|
||||
"${DirectoryInitialization.getUserDirectory()}/Config/Profiles/$profileDirectoryName/"
|
||||
controller.getUserProfileDirectoryPath()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2237,7 +2237,7 @@ class SettingsFragmentPresenter(
|
|||
controllerNumber: Int
|
||||
) {
|
||||
val profiles = ProfileDialogPresenter(menuTag).getProfileNames(false)
|
||||
val profileKey = controller.getProfileName() + "Profile" + (controllerNumber + 1)
|
||||
val profileKey = controller.getProfileKey() + "Profile" + (controllerNumber + 1)
|
||||
sl.add(
|
||||
StringSingleChoiceSetting(
|
||||
context,
|
||||
|
|
|
@ -126,10 +126,26 @@ Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedContro
|
|||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getProfileName(
|
||||
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getProfileKey(
|
||||
JNIEnv* env, jobject obj)
|
||||
{
|
||||
return ToJString(env, EmulatedControllerFromJava(env, obj)->GetConfig()->GetProfileName());
|
||||
return ToJString(env, EmulatedControllerFromJava(env, obj)->GetConfig()->GetProfileKey());
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getUserProfileDirectoryPath(
|
||||
JNIEnv* env, jobject obj)
|
||||
{
|
||||
return ToJString(
|
||||
env, EmulatedControllerFromJava(env, obj)->GetConfig()->GetUserProfileDirectoryPath());
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getSysProfileDirectoryPath(
|
||||
JNIEnv* env, jobject obj)
|
||||
{
|
||||
return ToJString(env,
|
||||
EmulatedControllerFromJava(env, obj)->GetConfig()->GetSysProfileDirectoryPath());
|
||||
}
|
||||
|
||||
JNIEXPORT jobject JNICALL
|
||||
|
|
|
@ -312,7 +312,8 @@ void FreeLookController::UpdateInput(CameraControllerInput* camera_controller)
|
|||
|
||||
namespace FreeLook
|
||||
{
|
||||
static InputConfig s_config("FreeLookController", _trans("FreeLook"), "FreeLookController");
|
||||
static InputConfig s_config("FreeLookController", _trans("FreeLook"), "FreeLookController",
|
||||
"FreeLookController");
|
||||
InputConfig* GetInputConfig()
|
||||
{
|
||||
return &s_config;
|
||||
|
@ -336,12 +337,12 @@ void Initialize()
|
|||
|
||||
FreeLook::GetConfig().Refresh();
|
||||
|
||||
s_config.LoadConfig(InputConfig::InputClass::GC);
|
||||
s_config.LoadConfig();
|
||||
}
|
||||
|
||||
void LoadInputConfig()
|
||||
{
|
||||
s_config.LoadConfig(InputConfig::InputClass::GC);
|
||||
s_config.LoadConfig();
|
||||
}
|
||||
|
||||
bool IsInitialized()
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
namespace Pad
|
||||
{
|
||||
static InputConfig s_config("GBA", _trans("Pad"), "GBA");
|
||||
static InputConfig s_config("GBA", _trans("Pad"), "GBA", "GBA");
|
||||
InputConfig* GetGBAConfig()
|
||||
{
|
||||
return &s_config;
|
||||
|
@ -34,12 +34,12 @@ void InitializeGBA()
|
|||
s_config.RegisterHotplugCallback();
|
||||
|
||||
// Load the saved controller config
|
||||
s_config.LoadConfig(InputConfig::InputClass::GBA);
|
||||
s_config.LoadConfig();
|
||||
}
|
||||
|
||||
void LoadGBAConfig()
|
||||
{
|
||||
s_config.LoadConfig(InputConfig::InputClass::GBA);
|
||||
s_config.LoadConfig();
|
||||
}
|
||||
|
||||
bool IsGBAInitialized()
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
namespace Keyboard
|
||||
{
|
||||
static InputConfig s_config("GCKeyNew", _trans("Keyboard"), "GCKey");
|
||||
static InputConfig s_config("GCKeyNew", _trans("Keyboard"), "GCKey", "GCKey");
|
||||
InputConfig* GetConfig()
|
||||
{
|
||||
return &s_config;
|
||||
|
@ -41,12 +41,12 @@ void Initialize()
|
|||
s_config.RegisterHotplugCallback();
|
||||
|
||||
// Load the saved controller config
|
||||
s_config.LoadConfig(InputConfig::InputClass::GC);
|
||||
s_config.LoadConfig();
|
||||
}
|
||||
|
||||
void LoadConfig()
|
||||
{
|
||||
s_config.LoadConfig(InputConfig::InputClass::GC);
|
||||
s_config.LoadConfig();
|
||||
}
|
||||
|
||||
ControllerEmu::ControlGroup* GetGroup(int port, KeyboardGroup group)
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
namespace Pad
|
||||
{
|
||||
static InputConfig s_config("GCPadNew", _trans("Pad"), "GCPad");
|
||||
static InputConfig s_config("GCPadNew", _trans("Pad"), "GCPad", "Pad");
|
||||
InputConfig* GetConfig()
|
||||
{
|
||||
return &s_config;
|
||||
|
@ -38,12 +38,12 @@ void Initialize()
|
|||
s_config.RegisterHotplugCallback();
|
||||
|
||||
// Load the saved controller config
|
||||
s_config.LoadConfig(InputConfig::InputClass::GC);
|
||||
s_config.LoadConfig();
|
||||
}
|
||||
|
||||
void LoadConfig()
|
||||
{
|
||||
s_config.LoadConfig(InputConfig::InputClass::GC);
|
||||
s_config.LoadConfig();
|
||||
}
|
||||
|
||||
bool IsInitialized()
|
||||
|
|
|
@ -97,7 +97,7 @@ HIDWiimote* GetHIDWiimoteSource(unsigned int index)
|
|||
|
||||
namespace Wiimote
|
||||
{
|
||||
static InputConfig s_config(WIIMOTE_INI_NAME, _trans("Wii Remote"), "Wiimote");
|
||||
static InputConfig s_config(WIIMOTE_INI_NAME, _trans("Wii Remote"), "Wiimote", "Wiimote");
|
||||
|
||||
InputConfig* GetConfig()
|
||||
{
|
||||
|
@ -206,7 +206,7 @@ void ResetAllWiimotes()
|
|||
|
||||
void LoadConfig()
|
||||
{
|
||||
s_config.LoadConfig(InputConfig::InputClass::Wii);
|
||||
s_config.LoadConfig();
|
||||
s_last_connect_request_counter.fill(0);
|
||||
}
|
||||
|
||||
|
|
|
@ -207,7 +207,7 @@ static std::array<u32, NUM_HOTKEY_GROUPS> s_hotkey_down;
|
|||
static HotkeyStatus s_hotkey;
|
||||
static bool s_enabled;
|
||||
|
||||
static InputConfig s_config("Hotkeys", _trans("Hotkeys"), "Hotkeys");
|
||||
static InputConfig s_config("Hotkeys", _trans("Hotkeys"), "Hotkeys", "Hotkeys");
|
||||
|
||||
InputConfig* GetConfig()
|
||||
{
|
||||
|
@ -304,7 +304,7 @@ void Initialize()
|
|||
|
||||
void LoadConfig()
|
||||
{
|
||||
s_config.LoadConfig(InputConfig::InputClass::GC);
|
||||
s_config.LoadConfig();
|
||||
LoadLegacyConfig(s_config.GetController(0));
|
||||
}
|
||||
|
||||
|
|
|
@ -319,9 +319,8 @@ void MappingWindow::OnSaveProfilePressed()
|
|||
if (profile_name.isEmpty())
|
||||
return;
|
||||
|
||||
const std::string profile_path = File::GetUserPath(D_CONFIG_IDX) + PROFILES_DIR +
|
||||
m_config->GetProfileName() + "/" + profile_name.toStdString() +
|
||||
".ini";
|
||||
const std::string profile_path =
|
||||
m_config->GetUserProfileDirectoryPath() + profile_name.toStdString() + ".ini";
|
||||
|
||||
File::CreateFullPath(profile_path);
|
||||
|
||||
|
@ -487,8 +486,7 @@ void MappingWindow::PopulateProfileSelection()
|
|||
{
|
||||
m_profiles_combo->clear();
|
||||
|
||||
const std::string profiles_path =
|
||||
File::GetUserPath(D_CONFIG_IDX) + PROFILES_DIR + m_config->GetProfileName();
|
||||
const std::string profiles_path = m_config->GetUserProfileDirectoryPath();
|
||||
for (const auto& filename : Common::DoFileSearch({profiles_path}, {".ini"}))
|
||||
{
|
||||
std::string basename;
|
||||
|
@ -499,9 +497,8 @@ void MappingWindow::PopulateProfileSelection()
|
|||
|
||||
m_profiles_combo->insertSeparator(m_profiles_combo->count());
|
||||
|
||||
const std::string builtin_profiles_path =
|
||||
File::GetSysDirectory() + PROFILES_DIR + m_config->GetProfileName();
|
||||
for (const auto& filename : Common::DoFileSearch({builtin_profiles_path}, {".ini"}))
|
||||
for (const auto& filename :
|
||||
Common::DoFileSearch({m_config->GetSysProfileDirectoryPath()}, {".ini"}))
|
||||
{
|
||||
std::string basename;
|
||||
SplitPath(filename, nullptr, &basename, nullptr);
|
||||
|
|
|
@ -20,57 +20,40 @@
|
|||
#include "InputCommon/InputProfile.h"
|
||||
|
||||
InputConfig::InputConfig(const std::string& ini_name, const std::string& gui_name,
|
||||
const std::string& profile_name)
|
||||
: m_ini_name(ini_name), m_gui_name(gui_name), m_profile_name(profile_name)
|
||||
const std::string& profile_directory_name, const std::string& profile_key)
|
||||
: m_ini_name(ini_name), m_gui_name(gui_name), m_profile_directory_name(profile_directory_name),
|
||||
m_profile_key(profile_key)
|
||||
{
|
||||
}
|
||||
|
||||
InputConfig::~InputConfig() = default;
|
||||
|
||||
bool InputConfig::LoadConfig(InputClass type)
|
||||
bool InputConfig::LoadConfig()
|
||||
{
|
||||
Common::IniFile inifile;
|
||||
bool useProfile[MAX_BBMOTES] = {false, false, false, false, false};
|
||||
static constexpr std::array<std::string_view, MAX_BBMOTES> num = {"1", "2", "3", "4", "BB"};
|
||||
std::string profile[MAX_BBMOTES];
|
||||
std::string path;
|
||||
|
||||
m_dynamic_input_tex_config_manager.Load();
|
||||
|
||||
if (SConfig::GetInstance().GetGameID() != "00000000")
|
||||
{
|
||||
std::string type_str;
|
||||
switch (type)
|
||||
{
|
||||
case InputClass::GBA:
|
||||
type_str = "GBA";
|
||||
path = "Profiles/GBA/";
|
||||
break;
|
||||
case InputClass::Wii:
|
||||
type_str = "Wiimote";
|
||||
path = "Profiles/Wiimote/";
|
||||
break;
|
||||
case InputClass::GC:
|
||||
default:
|
||||
type_str = "Pad";
|
||||
path = "Profiles/GCPad/";
|
||||
break;
|
||||
}
|
||||
const std::string profile_directory = GetUserProfileDirectoryPath();
|
||||
|
||||
Common::IniFile game_ini = SConfig::GetInstance().LoadGameIni();
|
||||
auto* control_section = game_ini.GetOrCreateSection("Controls");
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
const auto profile_name = fmt::format("{}Profile{}", type_str, num[i]);
|
||||
const auto profile_name = fmt::format("{}Profile{}", GetProfileKey(), num[i]);
|
||||
|
||||
if (control_section->Exists(profile_name))
|
||||
{
|
||||
std::string profile_setting;
|
||||
if (control_section->Get(profile_name, &profile_setting))
|
||||
{
|
||||
auto profiles = InputProfile::GetProfilesFromSetting(
|
||||
profile_setting, File::GetUserPath(D_CONFIG_IDX) + path);
|
||||
auto profiles = InputProfile::GetProfilesFromSetting(profile_setting, profile_directory);
|
||||
|
||||
if (profiles.empty())
|
||||
{
|
||||
|
@ -176,6 +159,16 @@ bool InputConfig::ControllersNeedToBeCreated() const
|
|||
return m_controllers.empty();
|
||||
}
|
||||
|
||||
std::string InputConfig::GetUserProfileDirectoryPath() const
|
||||
{
|
||||
return fmt::format("{}Profiles/{}/", File::GetUserPath(D_CONFIG_IDX), GetProfileDirectoryName());
|
||||
}
|
||||
|
||||
std::string InputConfig::GetSysProfileDirectoryPath() const
|
||||
{
|
||||
return fmt::format("{}Profiles/{}/", File::GetSysDirectory(), GetProfileDirectoryName());
|
||||
}
|
||||
|
||||
int InputConfig::GetControllerCount() const
|
||||
{
|
||||
return static_cast<int>(m_controllers.size());
|
||||
|
|
|
@ -25,18 +25,11 @@ class InputConfig
|
|||
{
|
||||
public:
|
||||
InputConfig(const std::string& ini_name, const std::string& gui_name,
|
||||
const std::string& profile_name);
|
||||
const std::string& profile_directory_name, const std::string& profile_key);
|
||||
|
||||
~InputConfig();
|
||||
|
||||
enum class InputClass
|
||||
{
|
||||
GC,
|
||||
Wii,
|
||||
GBA,
|
||||
};
|
||||
|
||||
bool LoadConfig(InputClass type);
|
||||
bool LoadConfig();
|
||||
void SaveConfig();
|
||||
|
||||
template <typename T, typename... Args>
|
||||
|
@ -51,7 +44,10 @@ public:
|
|||
bool IsControllerControlledByGamepadDevice(int index) const;
|
||||
|
||||
std::string GetGUIName() const { return m_gui_name; }
|
||||
std::string GetProfileName() const { return m_profile_name; }
|
||||
std::string GetProfileKey() const { return m_profile_key; }
|
||||
std::string GetProfileDirectoryName() const { return m_profile_directory_name; }
|
||||
std::string GetUserProfileDirectoryPath() const;
|
||||
std::string GetSysProfileDirectoryPath() const;
|
||||
int GetControllerCount() const;
|
||||
|
||||
// These should be used after creating all controllers and before clearing them, respectively.
|
||||
|
@ -65,6 +61,7 @@ private:
|
|||
std::vector<std::unique_ptr<ControllerEmu::EmulatedController>> m_controllers;
|
||||
const std::string m_ini_name;
|
||||
const std::string m_gui_name;
|
||||
const std::string m_profile_name;
|
||||
const std::string m_profile_directory_name;
|
||||
const std::string m_profile_key;
|
||||
InputCommon::DynamicInputTextureManager m_dynamic_input_tex_config_manager;
|
||||
};
|
||||
|
|
|
@ -55,8 +55,8 @@ std::vector<std::string> GetProfilesFromSetting(const std::string& setting, cons
|
|||
|
||||
std::vector<std::string> ProfileCycler::GetProfilesForDevice(InputConfig* device_configuration)
|
||||
{
|
||||
const std::string device_profile_root_location(File::GetUserPath(D_CONFIG_IDX) + "Profiles/" +
|
||||
device_configuration->GetProfileName());
|
||||
const std::string device_profile_root_location(
|
||||
device_configuration->GetUserProfileDirectoryPath());
|
||||
return Common::DoFileSearch({device_profile_root_location}, {".ini"}, true);
|
||||
}
|
||||
|
||||
|
@ -101,8 +101,8 @@ ProfileCycler::GetMatchingProfilesFromSetting(const std::string& setting,
|
|||
const std::vector<std::string>& profiles,
|
||||
InputConfig* device_configuration)
|
||||
{
|
||||
const std::string device_profile_root_location(File::GetUserPath(D_CONFIG_IDX) + "Profiles/" +
|
||||
device_configuration->GetProfileName() + "/");
|
||||
const std::string device_profile_root_location(
|
||||
device_configuration->GetUserProfileDirectoryPath());
|
||||
|
||||
const auto& profiles_from_setting = GetProfilesFromSetting(setting, device_profile_root_location);
|
||||
if (profiles_from_setting.empty())
|
||||
|
|
Loading…
Reference in New Issue