Save Configuration to registry

This commit is contained in:
Serghei Cebotari 2023-11-12 16:31:26 +03:00
parent 02d0b21a58
commit e6546254ba
3 changed files with 69 additions and 145 deletions

View File

@ -1,114 +1,43 @@
using System.Configuration; using Microsoft.Win32;
using System.IO; using System.IO;
namespace RhSolutions.Services; namespace RhSolutions.Services;
public class AddInConfiguration : ApplicationSettingsBase, IAddInConfiguration public class AddInConfiguration : IAddInConfiguration
{ {
private readonly Dictionary<string, string> _priceListHeaders; private RegistryKey _rootKey;
private string _priceListPath;
private Dictionary<string, string> _priceListHeaders;
public event IAddInConfiguration.SettingsHandler OnSettingsChange;
public AddInConfiguration() public AddInConfiguration()
{ {
_priceListHeaders = new Dictionary<string, string>() _rootKey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\RhSolutions\RhSolutions-AddIn");
_priceListPath = (string)_rootKey.GetValue("PriceListPath");
_priceListHeaders = new()
{ {
["Amount"] = AmountHeader, ["Amount"] = "Кол-во",
["OldSku"] = OldSkuHeader, ["OldSku"] = "Прежний материал",
["Sku"] = SkuHeader, ["Sku"] = "Актуальный материал",
["ProductLine"] = ProductLineHeader, ["ProductLine"] = "Программа",
["Name"] = NameHeader, ["Name"] = "Наименование",
["Measure"] = MeasureHeader ["Measure"] = "Ед. изм."
}; };
} }
[UserScopedSetting] public string GetPriceListFileName() => Path.GetFileName(_priceListPath);
[DefaultSettingValue("Кол-во")]
public string AmountHeader
{
get
{
return (string)this[nameof(AmountHeader)];
}
}
[UserScopedSetting]
[DefaultSettingValue("Прежний материал")]
public string OldSkuHeader
{
get
{
return (string)this[nameof(OldSkuHeader)];
}
}
[UserScopedSetting]
[DefaultSettingValue("Актуальный материал")]
public string SkuHeader
{
get
{
return (string)this[nameof(SkuHeader)];
}
}
[UserScopedSetting]
[DefaultSettingValue("Программа")]
public string ProductLineHeader
{
get
{
return (string)this[nameof(ProductLineHeader)];
}
}
[UserScopedSetting]
[DefaultSettingValue("Наименование")]
public string NameHeader
{
get
{
return (string)this[nameof(NameHeader)];
}
}
[UserScopedSetting]
[DefaultSettingValue("Ед. изм.")]
public string MeasureHeader
{
get
{
return (string)this[nameof(MeasureHeader)];
}
}
[UserScopedSetting]
public string PriceListPath
{
get
{
return (string)this[nameof(PriceListPath)];
}
set
{
this[nameof(PriceListPath)] = value;
}
}
public event SettingChangingEventHandler OnSettingsChange
{
add
{
base.SettingChanging += value;
}
remove
{
base.SettingChanging -= value;
}
}
public string GetPriceListFileName() => Path.GetFileName(PriceListPath);
public string GetPriceListPath() => PriceListPath;
public void SetPriceListPath(string value) => PriceListPath = value;
public void SaveSettings() => base.Save();
public Dictionary<string, string> GetPriceListHeaders() => _priceListHeaders; public Dictionary<string, string> GetPriceListHeaders() => _priceListHeaders;
public string GetPriceListPath() => _priceListPath;
public void SaveSettings()
{
_rootKey.SetValue("PriceListPath", _priceListPath);
OnSettingsChange.Invoke();
}
public void SetPriceListPath(string value)
{
_priceListPath = value;
}
} }

View File

@ -1,13 +1,12 @@
using System.Configuration; namespace RhSolutions.Services;
namespace RhSolutions.Services;
public interface IAddInConfiguration public interface IAddInConfiguration
{ {
public string GetPriceListPath(); public string GetPriceListPath();
public void SetPriceListPath(string value);
public string GetPriceListFileName(); public string GetPriceListFileName();
public Dictionary<string, string> GetPriceListHeaders(); public Dictionary<string, string> GetPriceListHeaders();
public event SettingChangingEventHandler OnSettingsChange; public delegate void SettingsHandler();
public void SetPriceListPath(string value); public event SettingsHandler OnSettingsChange;
public void SaveSettings(); public void SaveSettings();
} }

View File

@ -1,52 +1,48 @@
using Microsoft.Office.Interop.Excel; using RhSolutions.Controllers;
using RhSolutions.AddIn;
using RhSolutions.Controllers;
using System.Configuration;
#if !NET472 #if !NET472
using System.Runtime.Versioning; using System.Runtime.Versioning;
#endif #endif
namespace RhSolutions.Tools namespace RhSolutions.Tools;
{
#if !NET472 #if !NET472
[SupportedOSPlatform("windows")] [SupportedOSPlatform("windows")]
#endif #endif
internal static class EventsUtil internal static class EventsUtil
{
public static void Initialize()
{ {
public static void Initialize() RhSolutionsAddIn.Excel.SheetSelectionChange += RefreshExportButton;
{ RhSolutionsAddIn.Excel.SheetActivate += RefreshButtons;
RhSolutionsAddIn.Excel.SheetSelectionChange += RefreshExportButton; RhSolutionsAddIn.Excel.WorkbookActivate += RefreshButtons;
RhSolutionsAddIn.Excel.SheetActivate += RefreshButtons; RhSolutionsAddIn.Configuration.OnSettingsChange += RefreshSettingTitle;
RhSolutionsAddIn.Excel.WorkbookActivate += RefreshButtons; }
RhSolutionsAddIn.Configuration.OnSettingsChange += RefreshSettingTitle;
}
public static void Uninitialize() public static void Uninitialize()
{ {
RhSolutionsAddIn.Excel.SheetSelectionChange -= RefreshExportButton; RhSolutionsAddIn.Excel.SheetSelectionChange -= RefreshExportButton;
RhSolutionsAddIn.Excel.SheetActivate -= RefreshButtons; RhSolutionsAddIn.Excel.SheetActivate -= RefreshButtons;
RhSolutionsAddIn.Excel.WorkbookActivate -= RefreshButtons; RhSolutionsAddIn.Excel.WorkbookActivate -= RefreshButtons;
RhSolutionsAddIn.Configuration.OnSettingsChange -= RefreshSettingTitle; RhSolutionsAddIn.Configuration.OnSettingsChange -= RefreshSettingTitle;
} }
private static void RefreshButtons(object sh) private static void RefreshButtons(object sh)
{ {
RibbonController.UpdateWorkbookValidation(); RibbonController.UpdateWorkbookValidation();
RibbonController.RefreshControl("convert"); RibbonController.RefreshControl("convert");
RibbonController.RefreshControl("dxfexport"); RibbonController.RefreshControl("dxfexport");
RibbonController.RefreshControl("guess"); RibbonController.RefreshControl("guess");
RibbonController.RefreshControl("fillsleeves"); RibbonController.RefreshControl("fillsleeves");
RibbonController.RefreshControl("fillcouplings"); RibbonController.RefreshControl("fillcouplings");
} }
private static void RefreshExportButton(object sh, Range target) private static void RefreshExportButton(object sh, Range target)
{ {
RibbonController.RefreshControl("export"); RibbonController.RefreshControl("export");
} }
private static void RefreshSettingTitle(object sender, SettingChangingEventArgs e) private static void RefreshSettingTitle()
{ {
RibbonController.RefreshControl("setPriceList"); RibbonController.RefreshControl("setPriceList");
}
} }
} }