131 lines
4.1 KiB
C#
131 lines
4.1 KiB
C#
using Microsoft.Win32;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Vita.ContentManager
|
|
{
|
|
public class SettingsReader
|
|
{
|
|
public static string AppFolder
|
|
{
|
|
get
|
|
{
|
|
return Path.Combine(BackupsFolder, "APP");
|
|
}
|
|
}
|
|
public static string PspSavedataFolder
|
|
{
|
|
get
|
|
{
|
|
return Path.Combine(BackupsFolder, "PSAVEDATA");
|
|
}
|
|
}
|
|
|
|
public static string PsmFolder
|
|
{
|
|
get
|
|
{
|
|
return Path.Combine(BackupsFolder, "PSM");
|
|
}
|
|
}
|
|
public static string SystemFolder
|
|
{
|
|
get
|
|
{
|
|
return Path.Combine(BackupsFolder, "SYSTEM");
|
|
}
|
|
}
|
|
public static string Ps1Folder
|
|
{
|
|
get
|
|
{
|
|
return Path.Combine(BackupsFolder, "PSGAME");
|
|
}
|
|
}
|
|
public static string PspFolder
|
|
{
|
|
get
|
|
{
|
|
return Path.Combine(BackupsFolder, "PGAME");
|
|
}
|
|
}
|
|
public static string BackupsFolder
|
|
{
|
|
get
|
|
{
|
|
string? cmaFolder = getQcmaPSVitaFolder();
|
|
if (cmaFolder is not null) return cmaFolder;
|
|
cmaFolder = getDevkitCmaPSVitaFolder();
|
|
if (cmaFolder is not null) return cmaFolder;
|
|
cmaFolder = getSonyCmaPSVitaFolder();
|
|
if (cmaFolder is not null) return cmaFolder;
|
|
return getDefaultCmaPSVitaFolder();
|
|
}
|
|
}
|
|
|
|
private static string getDefaultCmaPSVitaFolder()
|
|
{
|
|
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "PS Vita");
|
|
}
|
|
|
|
private static string? getRegistryKey(string registryPath, string keyName)
|
|
{
|
|
if (OperatingSystem.IsWindows())
|
|
{
|
|
using (RegistryKey? regKey = Registry.CurrentUser.OpenSubKey(registryPath))
|
|
{
|
|
if (regKey is null) return null;
|
|
string? keyData = (regKey.GetValue(keyName) as string);
|
|
if (keyData is null) return null;
|
|
return keyData;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
throw new PlatformNotSupportedException("cannot use registry on os other than windows");
|
|
}
|
|
}
|
|
|
|
private static string? getSonyCmaPSVitaFolder()
|
|
{
|
|
if (OperatingSystem.IsWindows())
|
|
{
|
|
return getRegistryKey(@"Software\Sony Corporation\Sony Corporation\Content Manager Assistant\Settings", "ApplicationHomePath");
|
|
}
|
|
return null;
|
|
}
|
|
private static string? getDevkitCmaPSVitaFolder()
|
|
{
|
|
if (OperatingSystem.IsWindows())
|
|
{
|
|
return getRegistryKey(@"Software\SCE\PSP2\Content Manager Assistant for PlayStation(R)Vita DevKit\Settings", "ApplicationHomePath");
|
|
}
|
|
return null;
|
|
}
|
|
private static string? getQcmaPSVitaFolder()
|
|
{
|
|
if (OperatingSystem.IsWindows())
|
|
{
|
|
using(RegistryKey? qcmaKey = Registry.CurrentUser.OpenSubKey(@"Software\codestation\qcma"))
|
|
{
|
|
return getRegistryKey(@"Software\codestation\qcma", "appsPath");
|
|
}
|
|
}
|
|
else if (OperatingSystem.IsLinux())
|
|
{
|
|
string qcmaConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".config", "codestation", "qcma.conf");
|
|
// TODO: read file
|
|
}
|
|
else if (OperatingSystem.IsMacOS())
|
|
{
|
|
string qcmaConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", "Preferences", "com.codestation.qcma.plist");
|
|
// TODO: read file
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
}
|