Skip to content

Commit c878ac6

Browse files
committed
save data source to independent file
1 parent 10de830 commit c878ac6

File tree

6 files changed

+39
-0
lines changed

6 files changed

+39
-0
lines changed

src/XamlUtil/IO/FileHelper.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,26 @@ public static T LoadFromJsonFile<T>(string filePath)
127127
});
128128
}
129129

130+
#endregion
131+
132+
#region String
133+
134+
public static bool SaveToFile(string filePath, string content)
135+
{
136+
return SaveToFile(filePath, sw =>
137+
{
138+
sw.Write(content);
139+
});
140+
}
141+
142+
public static string LoadFromFile(string filePath)
143+
{
144+
return LoadFromFile(filePath, sr =>
145+
{
146+
return sr.ReadToEnd();
147+
});
148+
}
149+
130150
#endregion
131151
}
132152
}

src/XamlViewer/App.xaml.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,16 @@ protected override void RegisterTypes(IContainerRegistry containerRegistry)
149149
var version = ResourceAssembly.GetName().Version;
150150
var appData = new AppData { Config = localConfig ?? new XamlConfig(), Version = string.Format("{0}.{1}.{2}", version.Major, version.Minor, version.Build) };
151151

152+
//Files
152153
if (_xamlFiles != null && _xamlFiles.Length > 0)
153154
{
154155
appData.Config.Files.RemoveAll(f => _xamlFiles.Any(xf => Path.GetFullPath(xf).ToLower() == Path.GetFullPath(f).ToLower()));
155156
appData.Config.Files.InsertRange(0, _xamlFiles);
156157
}
158+
159+
//Data Source
160+
if(FileHelper.Exists(ResourcesMap.LocationDic[Location.DataSourceFile]))
161+
appData.Config.DataSourceJsonString = FileHelper.LoadFromFile(ResourcesMap.LocationDic[Location.DataSourceFile]);
157162

158163
containerRegistry.RegisterInstance(appData);
159164
}

src/XamlViewer/Models/Enums.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ namespace XamlViewer.Models
44
public enum Location
55
{
66
GlobalConfigFile,
7+
DataSourceFile,
78
ModulePath,
89
}
910

src/XamlViewer/Models/ResourcesMap.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public static class ResourcesMap
99
public static Dictionary<Location, string> LocationDic = new Dictionary<Location, string>
1010
{
1111
[Location.GlobalConfigFile] = AppDomain.CurrentDomain.BaseDirectory + "Config\\GlobalConfig.json",
12+
[Location.DataSourceFile] = AppDomain.CurrentDomain.BaseDirectory + "Config\\DataSource.ds",
1213
[Location.ModulePath] = AppDomain.CurrentDomain.BaseDirectory + "Modules",
1314
};
1415

src/XamlViewer/Models/XamlConfig.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using Newtonsoft.Json;
23
using XamlService.Payloads;
34

45
namespace XamlViewer.Models
@@ -23,6 +24,7 @@ public XamlConfig()
2324

2425
public bool IsOpenDataSource { get; set; }
2526
public bool IsSyncDataSource { get; set; }
27+
[JsonIgnore]
2628
public string DataSourceJsonString { get; set; }
2729

2830
public List<string> Files { get; set; }

src/XamlViewer/ViewModels/MainViewModel.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,16 @@ private async void Closing(CancelEventArgs e)
116116
{
117117
await _appData.DealExistedFileAction?.Invoke();
118118

119+
var dataSourceFile = ResourcesMap.LocationDic[Location.DataSourceFile];
120+
121+
if(!string.IsNullOrWhiteSpace(_appData.Config.DataSourceJsonString))
122+
FileHelper.SaveToFile(dataSourceFile, _appData.Config.DataSourceJsonString);
123+
else
124+
{
125+
if(FileHelper.Exists(dataSourceFile))
126+
File.Delete(dataSourceFile);
127+
}
128+
119129
FileHelper.SaveToJsonFile(ResourcesMap.LocationDic[Location.GlobalConfigFile], _appData.Config);
120130
}
121131

0 commit comments

Comments
 (0)