44 lines
1.6 KiB
C#
44 lines
1.6 KiB
C#
using OwnChar.App.Desktop.Api;
|
|
using OwnChar.App.Desktop.Settings;
|
|
using OwnChar.Data;
|
|
using OwnChar.Data.Managers;
|
|
using OwnChar.Data.Providers.JsonFile;
|
|
using Pilz.Plugins.Advanced;
|
|
using Telerik.WinControls.UI;
|
|
|
|
namespace OwnChar.App.Desktop.Features.LoginProviders;
|
|
|
|
internal class JsonFileLoginProvider() : LoginProvider(FeatureCodes.LoginProvider, "ownchar.jsonfile"), IPluginFeatureProvider<JsonFileLoginProvider>
|
|
{
|
|
private const string defaultJsonFileName = "ownchar.db.json";
|
|
|
|
public static JsonFileLoginProvider Instance { get; } = new();
|
|
|
|
public override IDataManager GetDefault(IMainWindowApi api)
|
|
{
|
|
var settings = AppApi.Instance.Settings.Get<JsonFileLoginProviderSettings>();
|
|
return new DefaultDataManager(new JsonFileDataProvider(settings?.RecentFilePath ?? defaultJsonFileName));
|
|
}
|
|
|
|
public override void Configure(IMainWindowApi api, ref IDataManager? manager)
|
|
{
|
|
var settings = AppApi.Instance.Settings.Get<JsonFileLoginProviderSettings>();
|
|
using var ofd = new RadOpenFileDialog
|
|
{
|
|
Filter = "OwnChar Json database (*.json)|*.json"
|
|
};
|
|
|
|
if (manager is DefaultDataManager defaultManager && defaultManager.DataProvider is JsonFileDataProvider jsonFileDataProvider)
|
|
ofd.FileName = jsonFileDataProvider.JsonFilePath;
|
|
else
|
|
ofd.FileName = settings.RecentFilePath;
|
|
|
|
if (ofd.ShowDialog(api.Window) != System.Windows.Forms.DialogResult.OK)
|
|
return;
|
|
|
|
settings.RecentFilePath = ofd.FileName;
|
|
|
|
manager = new DefaultDataManager(new JsonFileDataProvider(ofd.FileName ?? defaultJsonFileName));
|
|
}
|
|
}
|