public StorySyncWorker(IWdcStoryContainer storyContainer,
                               IWdcReader wdcReader,
                               IWdcClient wdcClient,
                               IConfigProvider configProvider,
                               IFileDumper fileDumper,
                               IGuiContext guiContext
                               )
        {
            _storyContainer = storyContainer;
            _wdcReader      = wdcReader;
            _wdcClient      = wdcClient;
            _configProvider = configProvider;
            _fileDumper     = fileDumper;
            _gui            = guiContext;
            SetSettings(configProvider.GetSection <StorySyncWorkerSettings>());

            // Init some stuff
            _storyStatusList = new Dictionary <string, StorySyncWorkerStoryStatus>();
            _ctSource        = new CancellationTokenSource();
            _status          = new StorySyncWorkerStatus();

            // TODO add functionality to react to configuration changes. E.g. Cancel process, update settings, start again.
            // Subscribe to some events
            _storyContainer.OnUpdate         += new EventHandler <WdcStoryContainerEventArgs>(OnStoryContainerChanged);
            _configProvider.OnSectionChanged += new EventHandler <ConfigSectionChangedEventArgs>(OnSettingsChanged);
        }
 public DummyStorySyncWorker()
 {
     _status = new StorySyncWorkerStatus()
     {
         Message = "Dummy sync worker, will do nothing."
     };
 }
        private void _SetCurrentStatus(StorySyncWorkerStatus newStatus)
        {
            var currentStatus = this.GetCurrentStatus();

            lock (_statusLock)
                _status = newStatus;


            var statusChangeArgs = new StorySyncWorkerStatusEventArgs()
            {
                NewStatus = newStatus
            };

            // Something has changed, send event
            DoWorkerStatusChange(statusChangeArgs);
        }