/// <summary> /// If no terminators defined, create default, store and set as default in settings /// </summary> private void AssureTerminatorsDefault(IIndexedStorageManager <TerminatorDataModel, DefaultFileExtraInfo> data) { // If nothing exists create default List <IIndexItem <DefaultFileExtraInfo> > index = data.IndexedItems; if (index.Count == 0) { // For a new one. Different when updating. Do not need to create new index List <TerminatorInfo> infos = new List <TerminatorInfo>(); infos.Add(new TerminatorInfo(Terminator.LF)); infos.Add(new TerminatorInfo(Terminator.CR)); TerminatorDataModel dm = new TerminatorDataModel(infos) { Display = "Demo terminator set \\n\\r" }; IIndexItem <DefaultFileExtraInfo> idx = new IndexItem <DefaultFileExtraInfo>(dm.UId) { Display = dm.Display }; data.Store(dm, idx); this.GetSettings( (settings) => { settings.CurrentTerminator = dm; settings.CurrentTerminatorBLE = dm; settings.CurrentTerminatorBT = dm; settings.CurrentTerminatorEthernet = dm; settings.CurrentTerminatorUSB = dm; settings.CurrentTerminatorWIFI = dm; this.SaveSettings(settings, () => { }, (err) => { }); }, (err) => { }); this.CreateArduinoTerminators(() => { }, (err) => { }); } else { // back compatible to add the display name into the data object this.BackCompatibilityInitializeExistingTerminatorNames(); } }
private void AssureScriptDefault(IIndexedStorageManager <ScriptDataModel, DefaultFileExtraInfo> data) { List <IIndexItem <DefaultFileExtraInfo> > index = this.scriptStorage.IndexedItems; if (index.Count == 0) { List <ScriptItem> items = new List <ScriptItem>(); items.Add(new ScriptItem() { Display = "Open door cmd", Command = "OpenDoor" }); items.Add(new ScriptItem() { Display = "Close door cmd", Command = "CloseDoor" }); ScriptDataModel dm = new ScriptDataModel(items) { Display = "Demo open close commands" }; IIndexItem <DefaultFileExtraInfo> idx = new IndexItem <DefaultFileExtraInfo>(dm.UId) { Display = "Demo script", }; data.Store(dm, idx); this.GetSettings( (settings) => { settings.CurrentScript = dm; settings.CurrentScriptBLE = dm; settings.CurrentScriptBT = dm; settings.CurrentScriptEthernet = dm; settings.CurrentScriptUSB = dm; settings.CurrentScriptWIFI = dm; this.SaveSettings(settings, () => { }, (err) => { }); }, (err) => { }); this.CreateHC05AtCmds(() => { }, (err) => { }); } }
private void Save <TSToreObject, TExtraInfo>( IIndexedStorageManager <TSToreObject, TExtraInfo> manager, IIndexItem <TExtraInfo> idx, TSToreObject data, Action <TSToreObject, IIndexItem <TExtraInfo> > preSaveIndexUpdate, Action onSuccess, Action <TSToreObject> onChange, OnErr onError) where TSToreObject : class, IDisplayable where TExtraInfo : class { WrapErr.ToErrReport(9999, () => { ErrReport report; WrapErr.ToErrReport(out report, 9999, () => { if (idx == null) { onError.Invoke(this.GetText(MsgCode.NothingSelected)); } else if (string.IsNullOrWhiteSpace(data.Display)) { onError.Invoke(this.GetText(MsgCode.EmptyName)); } else { // Transfer display name idx.Display = data.Display; // update index preSaveIndexUpdate(data, idx); manager.Store(data, idx); onSuccess.Invoke(); onChange.Invoke(data); } }); if (report.Code != 0) { onError.Invoke(this.GetText(MsgCode.SaveFailed)); } }); }