public async Task AddNewChatWindowAsync(ChatWindowViewModelSettings settings) { await Task.Run(() => { AddNewChatWindow(settings); }); }
public void AddNewChatWindow() { UiWindow.Window.UIThread(() => { if (ChatWindows.Count >= 10) { return; } long winId = 0; if (ChatWindows.Count > 0) { winId = ChatWindows[ChatWindows.Count - 1].WinId + 1; } ChatWindowViewModelSettings cws = null; ChatWindowViewModel cwm = null; var trEng = TranslationEngines; cws = new ChatWindowViewModelSettings((winId + 1).ToString(), winId); cwm = new ChatWindowViewModel(cws, trEng.ToList(), _AllChatCodes.ToList(), _TataruModel.HotKeyManager); ChatWindows.Add(cwm); SelectedTabIndex = ChatWindows.Count - 1; }); }
public void AddNewChatWindow(ChatWindowViewModelSettings settings) { if (ChatWindows.Count >= 10) { return; } ChatWindowViewModel cwm = null; var trEng = TranslationEngines; UiWindow.Window.UIThread(() => { cwm = new ChatWindowViewModel(settings, trEng.ToList(), _AllChatCodes.ToList(), _TataruModel.HotKeyManager); try { ChatWindows.Add(cwm); } catch (Exception e) { Logger.WriteLog(e); } SelectedTabIndex = ChatWindows.Count - 1; }); }
public ChatWindowViewModel(ChatWindowViewModelSettings settings, List <TranslationEngine> translationEngines, List <ChatMsgType> allChatCodes, HotKeyManager hotKeyManager) { this._AsyncPropertyChanged = new AsyncEvent <AsyncPropertyChangedEventArgs>(this.EventErrorHandler, "ChatWindowViewModel \n AsyncPropertyChanged"); this._RequestChatClear = new AsyncEvent <TatruEventArgs>(this.EventErrorHandler, "ChatWindowViewModel \n RequsetChatClear"); ShowChatWindowCommand = new TataruUICommand(ShowChatWindow); RestChatWindowPositionCommand = new TataruUICommand(ResetChatWindowPosition); _IsWindowVisible = true; Name = settings.Name; _WinId = settings.WinId; ChatFontSize = settings.ChatFontSize; LineBreakHeight = settings.LineBreakHeight; SpacingCount = settings.SpacingCount; IsAlwaysOnTop = settings.IsAlwaysOnTop; IsClickThrough = settings.IsClickThrough; IsAutoHide = settings.IsAutoHide; AutoHideTimeout = settings.AutoHideTimeout; IsHiddenByUser = false; BackGroundColor = settings.BackGroundColor; TranslationEngines = new CollectionView(translationEngines); var tmpEngine = translationEngines.FirstOrDefault(x => x.EngineName == settings.TranslationEngineName); TranslationEngines.MoveCurrentToFirst(); if (tmpEngine != null) { if (TranslationEngines.Contains(tmpEngine)) { TranslationEngines.MoveCurrentTo(tmpEngine); } else { TranslationEngines.MoveCurrentToFirst(); } } OnTranslationEngineChange(this, null); TrySetLangugue(_TranslateFromLanguagues, settings.FromLanguague); TrySetLangugue(_TranslateToLanguagues, settings.ToLanguague); ChatWindowRectangle = settings.ChatWindowRectangle; ChatCodes = LoadChatCodes(settings.ChatCodes, allChatCodes); _HotKeyManager = hotKeyManager; ShowHideChatKeys = new HotKeyCombination(settings.ShowHideChatKeys); ClickThoughtChatKeys = new HotKeyCombination(settings.ClickThoughtChatKeys); ClearChatKeys = new HotKeyCombination(settings.ClearChatKeys); _HotKeyManager.GlobalHotKeyPressed += OnGlobalHotKeyPressed; }
public ChatWindowViewModelSettings GetSettings() { ChatWindowViewModelSettings settings = new ChatWindowViewModelSettings(); settings.Name = this.Name; settings.WinId = this._WinId; settings.ChatFontSize = this.ChatFontSize; settings.LineBreakHeight = this.LineBreakHeight; settings.SpacingCount = this.SpacingCount; settings.IsAlwaysOnTop = this.IsAlwaysOnTop; settings.IsClickThrough = this.IsClickThrough; settings.IsAutoHide = this.IsAutoHide; settings.AutoHideTimeout = this.AutoHideTimeout; //settings.IsHiddenByUser = this.IsHiddenByUser; settings.BackGroundColor = this.BackGroundColor; TranslationEngine engine = (TranslationEngine)this.TranslationEngines.CurrentItem; if (engine != null) { settings.TranslationEngineName = engine.EngineName; } else { settings.TranslationEngineName = TranslationEngineName.GoogleTranslate; } settings.FromLanguague = (TranslatorLanguague)TranslateFromLanguagues.CurrentItem; settings.ToLanguague = (TranslatorLanguague)TranslateToLanguagues.CurrentItem; settings.ChatWindowRectangle = this.ChatWindowRectangle; settings.ChatCodes = this.ChatCodes.ToList().Select(entry => new ChatCodeViewModel(entry)).ToList(); settings.ShowHideChatKeys = new HotKeyCombination(this.ShowHideChatKeys); settings.ClickThoughtChatKeys = new HotKeyCombination(this.ClickThoughtChatKeys); settings.ClearChatKeys = new HotKeyCombination(this.ClearChatKeys); return(settings); }
void LoadOldSettings(UserSettings userSettings) { if (!File.Exists(GlobalSettings.OldSettings)) { return; } try { var oldSettings = Helper.LoadJsonData <UserSettingsOld>(GlobalSettings.OldSettings); try { File.Delete(GlobalSettings.OldSettings); } catch (Exception ex) { Logger.WriteLog(ex); } if (userSettings.ChatWindows.Count == 0) { ChatWindowViewModelSettings windowSettings = new ChatWindowViewModelSettings("1", 0); windowSettings.ChatFontSize = oldSettings.FontSize; windowSettings.LineBreakHeight = oldSettings.LineBreakHeight; windowSettings.SpacingCount = oldSettings.InsertSpaceCount; windowSettings.IsAlwaysOnTop = oldSettings.IsAlwaysOnTop; windowSettings.IsClickThrough = oldSettings.IsClickThrough; windowSettings.IsAutoHide = oldSettings.IsAutoHide; windowSettings.AutoHideTimeout = oldSettings.AutoHideTimeout; windowSettings.BackGroundColor = oldSettings.BackgroundColor; windowSettings.IsAutoHide = oldSettings.IsAutoHide; windowSettings.TranslationEngineName = (TranslationEngineName)oldSettings.CurrentTranslationEngine; var eng = WebTranslator.TranslationEngines.FirstOrDefault(x => x.EngineName == windowSettings.TranslationEngineName); if (eng != null) { var lang1 = eng.SupportedLanguages.FirstOrDefault(x => x.ShownName == oldSettings.CurrentFFXIVLanguage); var lang2 = eng.SupportedLanguages.FirstOrDefault(x => x.ShownName == oldSettings.CurrentTranslateToLanguage); if (lang1 != null && lang2 != null) { windowSettings.FromLanguague = new TranslatorLanguague(lang1); windowSettings.ToLanguague = new TranslatorLanguague(lang2); } } windowSettings.ChatWindowRectangle = oldSettings.ChatWindowLocation; foreach (var ck in windowSettings.ChatCodes) { ChatMsgType msgType = null; if (oldSettings.ChatCodes.TryGetValue(ck.Code, out msgType)) { bool isCheked = (msgType.MsgType == MsgType.Translate) ? true : false; ck.IsChecked = isCheked; ck.Color = msgType.Color; } } windowSettings.ShowHideChatKeys = new WinUtils.HotKeyCombination(oldSettings.ShowHideChatKeys.Name + "0", oldSettings.ShowHideChatKeys); windowSettings.ClickThoughtChatKeys = new WinUtils.HotKeyCombination(oldSettings.ClickThoughtChatKeys.Name + "0", oldSettings.ClickThoughtChatKeys); windowSettings.ClearChatKeys = new WinUtils.HotKeyCombination(oldSettings.ClearChatKeys.Name + "0", oldSettings.ClearChatKeys); userSettings.ChatWindows.Add(new ChatWindowViewModelSettings(windowSettings)); } } catch (Exception exx) { Logger.WriteLog(exx); } }
private async Task AsyncOnViewModelWindowsListChanged(AsyncListChangedEventHandler <ChatWindowViewModel> ea) { switch (ea.ChangedEventArgs.ListChangedType) { case ListChangedType.ItemAdded: { await UiWindow.Window.UIThreadAsync(() => { ChatWindowViewModel newElem = ea.ChangedElemnt; var reslut = _TataruUIModel.ChatWindows.FirstOrDefault(x => x.WinId == newElem.WinId); if (reslut == null) { var sett = newElem.GetSettings(); _TataruUIModel.ChatWindows.Add(sett); var binder = new PropertyBinder(_TataruUIModel.ChatWindows[_TataruUIModel.ChatWindows.Count - 1], newElem); CreateBinderCouples(binder); _PropertyBinders.Add(binder); } }); } break; case ListChangedType.ItemDeleted: { await Task.Run(() => { SpinWait.SpinUntil(() => !deletingObject); lock (lockObj) { deletingObject = true; } }); await UiWindow.Window.UIThreadAsync(() => { try { ChatWindowViewModel deletedElem = ea.ChangedElemnt; ChatWindowViewModelSettings reslut = _TataruUIModel.ChatWindows.FirstOrDefault(x => x.WinId == deletedElem.WinId); if (reslut != null) { _TataruUIModel.ChatWindows.Remove(reslut); RemoveChatWindow(_ChatWindows, reslut.WinId); try { PropertyBinder binder = _PropertyBinders.FirstOrDefault(x => x.Object1 == reslut && x.Object2 == deletedElem); if (binder == null) { binder = _PropertyBinders.FirstOrDefault(x => x.Object2 == reslut && x.Object1 == deletedElem); } if (binder != null) { binder.Stop(); _PropertyBinders.Remove(binder); } } catch (Exception e) { Logger.WriteLog(e); } } } catch (Exception e) { Logger.WriteLog(e); } }); deletingObject = false; } break; } }
private async Task AsyncOnSettingsWindowsListChanged(AsyncListChangedEventHandler <ChatWindowViewModelSettings> ea) { switch (ea.ChangedEventArgs.ListChangedType) { case ListChangedType.ItemAdded: { await UiWindow.Window.UIThreadAsync(() => { ChatWindowViewModelSettings newElem = ea.ChangedElemnt; ChatWindowViewModel reslut = null; reslut = _TataruViewModel.ChatWindows.FirstOrDefault(x => x.WinId == newElem.WinId); if (reslut == null) { try { TataruViewModel.AddNewChatWindow(newElem); } catch (Exception e) { Logger.WriteLog(e); } var binder = new PropertyBinder(newElem, _TataruViewModel.ChatWindows[_TataruViewModel.ChatWindows.Count - 1]); CreateBinderCouples(binder); _PropertyBinders.Add(binder); } }); } break; case ListChangedType.ItemDeleted: { await Task.Run(() => { SpinWait.SpinUntil(() => !deletingObject); lock (lockObj) { deletingObject = true; } }); await UiWindow.Window.UIThreadAsync(() => { try { ChatWindowViewModelSettings deletedElem = ea.ChangedElemnt; var elementToDelete = _TataruViewModel.ChatWindows.FirstOrDefault(x => x.WinId == deletedElem.WinId); if (elementToDelete != null) { _TataruViewModel.DeleteChatWindow(_TataruViewModel.ChatWindows.IndexOf(elementToDelete)); RemoveChatWindow(_ChatWindows, elementToDelete.WinId); var binder = _PropertyBinders.FirstOrDefault(x => x.Object1 == elementToDelete && x.Object2 == deletedElem); if (binder == null) { binder = _PropertyBinders.FirstOrDefault(x => x.Object2 == elementToDelete && x.Object1 == deletedElem); } if (binder != null) { binder.Stop(); _PropertyBinders.Remove(binder); } } } catch (Exception e) { Logger.WriteLog(e); } }); deletingObject = false; } break; } }