Beispiel #1
0
        public static void Init(Setting setting, Logger logger)
        {
            _setting = setting;
            _logger = logger;
            // в зависимости от того, используем БД или нет, грузим данные из разных мест
            if (setting.UseDatabase)
            {
                MainWindow.MainForm.InitializeDatabase(false);
                LoadDataFromDatabase();
            }
            else
            {
                LoadDataFromXml();
            }
            ClearAuthorsChengedStatus();
            Authors.ListChanged += ((o, e) => Refresh());
            OutputCollection = new ObservableCollection<object>();
            Refresh();

            _updater = new Updater(_setting, _logger);
            _updater.UpdaterComplete += UpdaterComplete;
            #if !DEBUG
            //if (!_setting.UseGoogle) // если указано синхронизироваться с гуглом, не запускаем сразу обновление, чтобы синхронизации успела отработать и скачать возможные изменени
                UpdateAuthors();
            #endif

            #if !DEBUG
               // if (!_setting.UseGoogle)
                _updateTimer = new Timer {Interval = 3600000, AutoReset = false};
            //else // если используем гугл, то запускаем проверку обновления через 10 минут
               //     _updateTimer = new Timer {Interval = 60000 * 10, AutoReset = false};
            #else
            _updateTimer = new Timer { Interval = 60000, AutoReset = false};
            #endif
            _updateTimer.Elapsed += (o, e) => UpdateAuthors();

            _setting.PropertyChanged += (o, e) =>
            {
                if (e.PropertyName == "IntervalOfUpdate")
                {
                    UpdateIntervalAndStart();
                    _logger.Add("Периодичность обновления: " + IntervalOfUpdateConverter.Parse(_setting.IntervalOfUpdate));
                }
                //else if (e.PropertyName=="UseGoogle")
                {
                    //if (_setting.UseGoogle)
                    //    StartGoogleSync();
                    //else
                    //    StopGoogleSync();
                }
            };

            TimerBasedAuthorsSaver.StartMonitoring(false);
            // если указано синхронизироваться с Google
            //if (_setting.UseGoogle)
            //{
            //    StartGoogleSync();
            //    _updateTimer.Start(); // ручками толкаем таймер, так как мы пропустили этап обновлений, где он запускается
            //}
        }
 private void UpdateAuthorCommand_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     Author author = (Author) AuthorsListBox.SelectedValue;
     if (author.IsUpdated) return;
     _logger.Add(string.Format("'{0}' проверяется", author.Name));
     Updater updater = new Updater(_setting, _logger) {ManualUpdater = true};
     updater.UpdaterComplete += ((o, arg) =>
                                     {
                                         if (arg.Error != null)
                                         {
                                             _logger.Add(arg.Error.StackTrace, false, true);
                                             _logger.Add(arg.Error.Message, false, true);
                                             _logger.Add(string.Format("'{0}' не проверен. Ошибка.",
                                                                       author.Name), true, true);
                                         }
                                         else
                                         {
                                             _logger.Add(string.Format("'{0}' проверен",
                                                                       author.Name));
                                             AuthorsListBox.ScrollIntoView(AuthorsListBox.SelectedValue);
                                         }
                                     });
     updater.RunWorkerAsync(new List<Author> {author});
 }