Ejemplo n.º 1
0
        public QuarterBoxViewModel(LoggedQuarter quarter, IssueCollection issues, IssueLogger logger, IEnumerable <IssueRowViewModel> issueRows, IssueColors issueColors)
        {
            Margin = new Thickness(1, 1, quarter.Quarter == 3 ? 1 : 0, 1);

            Background = new ProjectedObservableValue <Brush>(() => issueColors.GetColor(issues.FindLoggedIn(quarter)));
            issues.LoggedQuartersChanged += Background.Refresh;

            LogCommand = new DelegateCommand(() =>
            {
                IssueRowViewModel checkedIssueRow = issueRows.SingleOrDefault(i => i.IsColorChecked.Value == true);
                if (checkedIssueRow != null)
                {
                    logger.Log(quarter, checkedIssueRow.Issue);
                }
            });
            RemoveLogCommand = new DelegateCommand(() => logger.RemoveLog(quarter));
        }
Ejemplo n.º 2
0
        public IssueRowViewModel(Issue issue, WorkLogCore workLog, CollectionEventAggregator colorClickedAggregator, IssueColors issueColors)
        {
            Issue    = issue;
            Name     = Issue.Name;
            TimeText = ProjectedObservableValue <string> .FromObservableValue(issue.TotalLoggedTime, time => time.ToString("h\\:mm"));

            Color      = issueColors.GetColor(Issue);
            Background = ProjectedObservableValue <Brush> .FromObservableValue(workLog.Logger.RunningIssue, runningIssue => runningIssue == Issue?Brushes.LightGreen : Brushes.White);

            StartStopButtonText = ProjectedObservableValue <string> .FromObservableValue(workLog.Logger.RunningIssue, runningIssue => runningIssue == Issue? "Stop" : "Start");

            StartStopButtonCommand = new DelegateCommand(() => workLog.Logger.StartStop(Issue));
            RemoveButtonCommand    = new DelegateCommand(() =>
            {
                if (MessageBox.Show($"Do you want to delete '{Name}' issue and its logged time?", "Remove issue", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                {
                    workLog.Issues.Remove(Issue);
                    issueColors.RemoveColor(Issue);
                }
            });
            ColorClickedCommand = new DelegateCommand(() => ColorClicked?.Invoke(this, EventArgs.Empty));
            colorClickedAggregator.ItemChanged += (sender, e) => IsColorChecked.Value = sender == this && IsColorChecked.Value == false;
        }