示例#1
0
        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);
        }