/// <summary> /// Initializes a new instance of the <see cref="MonthVm"/> class. /// </summary> /// <param name="dateInfo"> /// The date info. /// </param> /// <param name="factory"> /// The factory. /// </param> /// <param name="taskMediator"> /// The task mediator. /// </param> public MonthVm( DateInfoModel dateInfo, IDateVmFactory factory, IUserTaskMediator taskMediator) : base(dateInfo, factory, taskMediator) { }
/// <summary> /// Initializes a new instance of the <see cref="ApplicationVm"/> class. /// </summary> /// <param name="model"> /// The base application model. /// </param> public ApplicationVm(IApplicationModel model) { this.Model = model; DateInfoModel currentDate = new DateInfoModel(DateTime.Now, this.Model.StartDateType); this.SelectedCase = new DateCase(this.Model.Factory.Create(currentDate, this.Model.Factory, this.Model.TaskMediator)); }
/// <summary> /// Initializes a new instance of the <see cref="DateVm"/> class. /// </summary> /// <param name="dateInfo"> /// The date info. /// </param> /// <param name="factory"> /// The factory. /// </param> /// <param name="taskMediator"> /// The task mediator. /// </param> protected DateVm( DateInfoModel dateInfo, IDateVmFactory factory, IUserTaskMediator taskMediator) { this.dateInfo = dateInfo; this.taskMediator = taskMediator; this.factory = factory; this.UpdateTasks(); }
/// <summary> /// The get or create. /// </summary> /// <param name="dateInfo"> /// The date info. /// </param> /// <returns> /// The <see cref="DateVm"/>. /// </returns> public DateVm GetOrCreate(DateInfoModel dateInfo) { DateVm result = this.dateVmCollection.FirstOrDefault(dateVm => dateVm.IsDateEqual(dateInfo)); if (this.dateVmCollection.Count > CacheSize) { this.dateVmCollection.RemoveRange(0, this.dateVmCollection.Count - CacheSize); } if (result != null) { return(result); } switch (dateInfo.DateType) { case DateRepresentationType.Year: { result = new YearVm(dateInfo, this, this.taskMediator); break; } case DateRepresentationType.Month: { result = new MonthVm(dateInfo, this, this.taskMediator); break; } case DateRepresentationType.Week: { result = new WeekVm(dateInfo, this, this.taskMediator); break; } case DateRepresentationType.Day: { result = new DayVm(dateInfo, this, this.taskMediator); break; } case DateRepresentationType.Hour: { result = new HourVm(dateInfo, this, this.taskMediator); break; } default: { return(null); } } this.dateVmCollection.Add(result); return(result); }
/// <summary> /// The register child. /// </summary> /// <param name="childDate"> /// The child date. /// </param> protected virtual void RegisterChild(DateInfoModel childDate) { DateVm child = this.factory.Create(childDate, this.factory, this.taskMediator); child.NewVmNeeded += this.OnNewVmNeeded; child.TaskAdded += (sender, task) => { this.OnTaskAdded(this, task); this.OnTaskAdded(sender, task); }; child.TaskRemoved += (sender, task) => { this.OnTaskRemoved(this, task); this.OnTaskRemoved(sender, task); }; this.children.Add(child); this.OnPropertyChanged("Children"); }
/// <summary> /// Initializes a new instance of the <see cref="TaskVm"/> class. /// </summary> /// <param name="mediator"> /// The mediator. /// </param> /// <param name="factory"> /// The factory. /// </param> /// <param name="dateInfo"> /// The date info. /// </param> /// <param name="task"> /// The task. /// </param> public TaskVm(IUserTaskMediator mediator, IDateVmFactory factory, DateInfoModel dateInfo, UserTaskModel task = null) { // sync the save possibility this.PropertyChanged += (sender, args) => { if (args.PropertyName != "CanSave" && args.PropertyName != "NewTask") { this.OnPropertyChanged("CanSave"); } }; this.OldTask = task ?? new UserTaskModel() { Date = DateTime.Now, EndDate = DateTime.Now }; this.taskMediator = mediator; this.factory = factory; this.dateInfo = dateInfo; this.NewTask = (UserTaskModel)this.OldTask.Clone(); }
/// <summary> /// The is date equal. Returns "true" if the Date property of current instance is equal to the date parameter /// </summary> /// <param name="date"> /// The date. /// </param> /// <returns> /// The <see cref="bool"/>. /// </returns> public virtual bool IsDateEqual(DateInfoModel date) { return(this.DateInfo.DateType == date.DateType && this.IsDateEqual(date.Date)); }
/// <summary> /// The create. /// </summary> /// <param name="dateInfo"> /// The date info. /// </param> /// <param name="factory"> /// The factory. /// </param> /// <param name="mediator"> /// The task mediator. /// </param> /// <returns> /// The <see cref="DateVm"/>. /// </returns> public DateVm Create(DateInfoModel dateInfo, IDateVmFactory factory, IUserTaskMediator mediator) { return(this.GetOrCreate(dateInfo)); }