Ejemplo n.º 1
0
        /* ----------------------------------------------------------------- */
        ///
        /// MainFacade
        ///
        /// <summary>
        /// オブジェクトを初期化します。
        /// </summary>
        ///
        /// <param name="src">設定用オブジェクト</param>
        /// <param name="context">同期用オブジェクト</param>
        ///
        /* ----------------------------------------------------------------- */
        public MainFacade(SettingsFolder src, SynchronizationContext context)
        {
            _dispose = new OnceAction<bool>(Dispose);

            src.LoadOrDefault(new LocalSettings());
            this.LogInfo($"Owner:{src.Lock.UserName}@{src.Lock.MachineName} ({src.Lock.Sid})");
            this.LogInfo($"User-Agent:{src.UserAgent}");

            Settings = src;
            Settings.PropertyChanged += WhenSettingsChanged;
            Settings.AutoSave = true;

            var feeds = Settings.IO.Combine(Settings.DataDirectory, LocalSettings.FeedFileName);
            var cache = Settings.IO.Combine(Settings.DataDirectory, LocalSettings.CacheDirectoryName);

            _core = new RssSubscriber(context)
            {
                IO             = Settings.IO,
                FileName       = feeds,
                CacheDirectory = cache,
                Capacity       = Settings.Shared.Capacity,
                IsReadOnly     = Settings.Lock.IsReadOnly,
                UserAgent      = Settings.UserAgent
            };
            _core.Set(RssCheckFrequency.High, Settings.Shared.HighInterval);
            _core.Set(RssCheckFrequency.Low, Settings.Shared.LowInterval);
            _core.Received += WhenReceived;

            _checker = new UpdateChecker(Settings);
            Data = new MainBindableData(_core, Settings, context);
        }