public MainWindowViewmodel(AppSettings settings, MainWindow parent) { Owner = parent; _settings = settings; _invSaveSettings = DelayedCombiningInvoker.Create(() => Application.Current.Dispatcher.BeginInvoke(new Action(SaveSettings)), 8 * 1000, 60 * 1000); _repository = new NoteRepository(AppSettings.PATH_LOCALDB, this, settings, settings.ActiveAccount, dispatcher); Repository.Init(); _scrollCache = Settings.RememberScroll ? ScrollCache.LoadFromFile(AppSettings.PATH_SCROLLCACHE) : ScrollCache.CreateEmpty(AppSettings.PATH_SCROLLCACHE); Owner.TrayIcon.Visibility = (Settings.CloseToTray || Settings.MinimizeToTray) ? Visibility.Visible : Visibility.Collapsed; var initialNote = _settings.LastSelectedNote; var initialFolder = _settings.LastSelectedFolder; if (initialNote != null && _settings.RememberLastSelectedNote) { if (initialFolder != null) { SelectedFolderPath = initialFolder; } SelectedNote = Repository.Notes.FirstOrDefault(n => n.UniqueName == initialNote); } if (SelectedNote == null) { SelectedNote = Repository.Notes.FirstOrDefault(); } OverviewListWidth = new GridLength(settings.OverviewListWidth); if (settings.CheckForUpdates) { var t = new Thread(CheckForUpdatesAsync) { Name = "UPDATE_CHECK" }; t.Start(); } #if !DEBUG if (settings.SendAnonStatistics) { var t = new Thread(UploadUsageStatsAsync) { Name = "STATISTICS_UPLOAD" }; t.Start(); } #endif MenuIsVisible = !_settings.AutoHideMainMenu; SettingsChanged(); ThemeManager.Inst.RegisterSlave(this); }