public void WireupTaskFileServices(PrimaryTaskFileService ptfs, ArchiveTaskFileService atfs) { _archiveFileService = atfs; _taskFileService = ptfs; TaskList = _taskFileService.TaskList; _loadingStateObserver = Observable.FromEvent<LoadingStateChangedEventArgs>( _taskFileService, "LoadingStateChanged"); _loadingStateObserver.Subscribe(e => LoadingState = e.EventArgs.LoadingState); _taskListChangedObserver = Observable.FromEvent<TaskListChangedEventArgs>( _taskFileService, "TaskListChanged"); _taskListChangedObserver.Subscribe(e => { RaisePropertyChanged(AllTasksPropertyName); RaisePropertyChanged(CompletedTasksPropertyName); RaisePropertyChanged(ContextsPropertyName); RaisePropertyChanged(ProjectsPropertyName); }); Observable.FromEvent<SynchronizationErrorEventArgs>(_taskFileService, "SynchronizationError") .Subscribe(e => Messenger.Default.Send(new SynchronizationErrorMessage(e.EventArgs.Exception))); _taskFileService.LocalHasChangesChanged += TaskFileServiceOnLocalHasChangesChanged; }
/// <summary> /// Initializes a new instance of the MainViewModel class. /// </summary> public MainViewModel(PrimaryTaskFileService taskFileService, ArchiveTaskFileService archiveFileService, ApplicationSettings applicationSettings) { _applicationSettings = applicationSettings; if (IsInDesignMode) { // Code runs in Blend --> create design time data. TaskList = new TaskList { new Task("A", null, null, "This is a designer task that might be really long the quick brown fox jumped over the lazy dogs"), new Task("", null, null, "This is a designer task2"), new Task("", null, null, "This is a designer task3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.") }; var b = new Task("B", null, null, "This is a designer task4", DateTime.Now.AddDays(-1), null, false, null); b.ToggleCompleted(); TaskList.Add(b); TaskList.Add(new Task("C", null, null, "This is a designer task5")); TaskList.Add(new Task("This task has two contexts @home @work")); TaskList.Add(new Task("This task has two projects +planvacation +fixstove")); TaskList.Add(new Task("This task has one of each @home +fixstove")); TaskList.Add(new Task("")); // Blank task line SelectedTask = TaskList[3]; ViewTask(); } else { // Code runs "for real" WireupTaskFileServices(taskFileService, archiveFileService); Messenger.Default.Register<DrillDownMessage>(this, Filter); Messenger.Default.Register<ApplicationStartedMessage>(this, message => { LocalHasChanges = _taskFileService.LocalHasChanges; if(StartupSyncCommand.CanExecute(null)) { StartupSyncCommand.Execute(null); } }); WireUpCommands(); } }