From afdd3cae629c7d125eabe2ca34d16bf00ea681fc Mon Sep 17 00:00:00 2001 From: flokuep Date: Thu, 11 Jul 2013 17:23:48 +0200 Subject: [PATCH] Profiles could be in different folders now, vocaluxe loads profiles from main-folder and user-folder, new profiles will be saved in user-folder. --- Vocaluxe/Base/CConfig.cs | 3 ++- Vocaluxe/Base/CMain.cs | 5 +++++ Vocaluxe/Base/CProfiles.cs | 21 +++++++++++++-------- Vocaluxe/Base/CSettings.cs | 14 ++++++++++++-- Vocaluxe/Base/Server/CVocaluxeServer.cs | 6 +++--- Vocaluxe/Screens/CScreenProfiles.cs | 2 +- VocaluxeLib/IBasic.cs | 1 + VocaluxeLib/Profile/CProfile.cs | 25 +++++++++++++++++-------- 8 files changed, 54 insertions(+), 23 deletions(-) diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs index 5aeca79f..05dc6c37 100644 --- a/Vocaluxe/Base/CConfig.cs +++ b/Vocaluxe/Base/CConfig.cs @@ -785,7 +785,8 @@ namespace Vocaluxe.Base case "profilefolder": CSettings.CreateFolder(value); - CSettings.FolderProfiles = value; + CSettings.FoldersProfiles.Clear(); + CSettings.FoldersProfiles.Add(value); break; } } diff --git a/Vocaluxe/Base/CMain.cs b/Vocaluxe/Base/CMain.cs index fdf8a305..18867da3 100644 --- a/Vocaluxe/Base/CMain.cs +++ b/Vocaluxe/Base/CMain.cs @@ -219,6 +219,11 @@ namespace Vocaluxe.Base { return CSettings.FolderProfiles; } + + public string GetDataPath() + { + return CSettings.DataPath; + } } class CBtheme : ITheme diff --git a/Vocaluxe/Base/CProfiles.cs b/Vocaluxe/Base/CProfiles.cs index 005eefe3..c200fa25 100644 --- a/Vocaluxe/Base/CProfiles.cs +++ b/Vocaluxe/Base/CProfiles.cs @@ -322,7 +322,7 @@ namespace Vocaluxe.Base { CProfile profile = new CProfile { - FileName = fileName != "" ? Path.Combine(CSettings.FolderProfiles, fileName) : String.Empty + FileName = fileName != "" ? Path.Combine(CSettings.DataPath, CSettings.FolderProfiles, fileName) : String.Empty }; if (File.Exists(profile.FileName)) @@ -529,7 +529,8 @@ namespace Vocaluxe.Base } List files = new List(); - files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.xml", true, true)); + foreach(string path in CSettings.FoldersProfiles) + files.AddRange(CHelper.ListFiles(path, "*.xml", true, true)); foreach (string file in files) { @@ -538,7 +539,8 @@ namespace Vocaluxe.Base CProfile profile = new CProfile { - FileName = Path.Combine(CSettings.FolderProfiles, file) + FileName = Path.GetFileName(file), + FilePath = Path.GetDirectoryName(file) }; if (profile.LoadProfile()) @@ -568,10 +570,13 @@ namespace Vocaluxe.Base } List files = new List(); - files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.png", true, true)); - files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.jpg", true, true)); - files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.jpeg", true, true)); - files.AddRange(CHelper.ListFiles(CSettings.FolderProfiles, "*.bmp", true, true)); + foreach (string path in CSettings.FoldersProfiles) + { + files.AddRange(CHelper.ListFiles(path, "*.png", true, true)); + files.AddRange(CHelper.ListFiles(path, "*.jpg", true, true)); + files.AddRange(CHelper.ListFiles(path, "*.jpeg", true, true)); + files.AddRange(CHelper.ListFiles(path, "*.bmp", true, true)); + } foreach (string file in files) { @@ -610,7 +615,7 @@ namespace Vocaluxe.Base CConfig.SaveConfig(); } } - File.Delete(_Profiles[profileID].FileName); + File.Delete(Path.Combine(_Profiles[profileID].FilePath, _Profiles[profileID].FileName)); _RemoveProfile(profileID); //Check if profile is selected in game diff --git a/Vocaluxe/Base/CSettings.cs b/Vocaluxe/Base/CSettings.cs index 04c9e812..e349b2f5 100644 --- a/Vocaluxe/Base/CSettings.cs +++ b/Vocaluxe/Base/CSettings.cs @@ -96,7 +96,16 @@ namespace Vocaluxe.Base public const string FolderThemes = "Themes"; public const string FolderThemeFonts = "Fonts"; public const string FolderScreens = "Screens"; - public static string FolderProfiles = "Profiles"; + public const string FolderProfiles = "Profiles"; + public static List FoldersProfiles = new List() + { +#if PORTABLE + Path.Combine(DataPath, FolderProfiles) +#else + Path.Combine(Environment.CurrentDirectory, FolderProfiles), + Path.Combine(DataPath, FolderProfiles) +#endif + }; public const string FolderSongs = "Songs"; public const string FolderSounds = "Sounds"; public const string FolderLanguages = "Languages"; @@ -215,7 +224,8 @@ namespace Vocaluxe.Base public static void CreateFolders() { - List folders = new List {FolderCover, FolderFonts, FolderProfiles, Path.Combine(DataPath,FolderScreenshots), FolderBackgroundMusic, FolderSounds, Path.Combine(DataPath,FolderPlaylists)}; + List folders = new List {FolderCover, FolderFonts, Path.Combine(DataPath,FolderScreenshots), FolderBackgroundMusic, FolderSounds, Path.Combine(DataPath,FolderPlaylists)}; + folders.AddRange(FoldersProfiles); foreach (string folder in folders) { diff --git a/Vocaluxe/Base/Server/CVocaluxeServer.cs b/Vocaluxe/Base/Server/CVocaluxeServer.cs index fb8e1f83..70af13d9 100644 --- a/Vocaluxe/Base/Server/CVocaluxeServer.cs +++ b/Vocaluxe/Base/Server/CVocaluxeServer.cs @@ -128,9 +128,9 @@ namespace Vocaluxe.Base.Server const string filename = "snapshot"; int i = 0; - while (File.Exists(Path.Combine(CSettings.FolderProfiles, filename + i + ".png"))) + while (File.Exists(Path.Combine(CSettings.DataPath, CSettings.FolderProfiles, filename + i + ".png"))) i++; - bmp.Save(Path.Combine(CSettings.FolderProfiles, filename + i + ".png"), ImageFormat.Png); + bmp.Save(Path.Combine(CSettings.DataPath, CSettings.FolderProfiles, filename + i + ".png"), ImageFormat.Png); } answer = CCommands.CreateCommandWithoutParams(CCommands.ResponseOK); @@ -182,7 +182,7 @@ namespace Vocaluxe.Base.Server string result = String.Empty; try { - string filename = Path.Combine(CSettings.FolderProfiles, "snapshot"); + string filename = Path.Combine(CSettings.DataPath, CSettings.FolderProfiles, "snapshot"); int i = 0; while (File.Exists(filename + i + ".jpg")) i++; diff --git a/Vocaluxe/Screens/CScreenProfiles.cs b/Vocaluxe/Screens/CScreenProfiles.cs index a5991bd3..846a4635 100644 --- a/Vocaluxe/Screens/CScreenProfiles.cs +++ b/Vocaluxe/Screens/CScreenProfiles.cs @@ -332,7 +332,7 @@ namespace Vocaluxe.Screens private void _OnSaveSnapshot() { - string filename = Path.Combine(CSettings.FolderProfiles, "snapshot"); + string filename = Path.Combine(CSettings.DataPath, CSettings.FolderProfiles, "snapshot"); int i = 0; while (File.Exists(filename + i + ".png")) i++; diff --git a/VocaluxeLib/IBasic.cs b/VocaluxeLib/IBasic.cs index afbbf8d4..648224d7 100644 --- a/VocaluxeLib/IBasic.cs +++ b/VocaluxeLib/IBasic.cs @@ -79,6 +79,7 @@ namespace VocaluxeLib float GetMedleyMinDuration(); string GetFolderProfiles(); + string GetDataPath(); } public interface ITheme diff --git a/VocaluxeLib/Profile/CProfile.cs b/VocaluxeLib/Profile/CProfile.cs index 8bcd7eaa..11c9b840 100644 --- a/VocaluxeLib/Profile/CProfile.cs +++ b/VocaluxeLib/Profile/CProfile.cs @@ -36,6 +36,7 @@ namespace VocaluxeLib.Profile public int ID; public string PlayerName; + public string FilePath; public string FileName; public string AvatarFileName; @@ -69,14 +70,20 @@ namespace VocaluxeLib.Profile public bool LoadProfile() { - return LoadProfile(FileName); + return LoadProfile(FilePath, FileName); } - public bool LoadProfile(string fileName) + public bool LoadProfile(string file) { - FileName = fileName; + FileName = Path.GetFileName(file); + FilePath = Path.GetDirectoryName(file); - CXMLReader xmlReader = CXMLReader.OpenFile(FileName); + return LoadProfile(FilePath, FileName); + } + + public bool LoadProfile(string pathName, string fileName) + { + CXMLReader xmlReader = CXMLReader.OpenFile(Path.Combine(FilePath, FileName)); if (xmlReader == null) return false; @@ -99,6 +106,8 @@ namespace VocaluxeLib.Profile public void SaveProfile() { + if (String.IsNullOrEmpty(FilePath)) + FilePath = Path.Combine(CBase.Settings.GetDataPath(),CBase.Settings.GetFolderProfiles()); if (FileName == String.Empty) { string filename = string.Empty; @@ -114,14 +123,14 @@ namespace VocaluxeLib.Profile filename = "1"; int i = 0; - while (File.Exists(Path.Combine(CBase.Settings.GetFolderProfiles(), filename + ".xml"))) + while (File.Exists(Path.Combine(FilePath, filename + ".xml"))) { i++; - if (!File.Exists(Path.Combine(CBase.Settings.GetFolderProfiles(), filename + i + ".xml"))) + if (!File.Exists(Path.Combine(FilePath, filename + i + ".xml"))) filename += i; } - FileName = Path.Combine(Environment.CurrentDirectory, CBase.Settings.GetFolderProfiles(), filename + ".xml"); + FileName = filename + ".xml"; } if (FileName == String.Empty) @@ -130,7 +139,7 @@ namespace VocaluxeLib.Profile XmlWriter writer; try { - writer = XmlWriter.Create(FileName, _Settings); + writer = XmlWriter.Create(Path.Combine(FilePath, FileName), _Settings); } catch (Exception e) {