143 lines
5.5 KiB
C#
143 lines
5.5 KiB
C#
#if FRAMEWORK20
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.ComponentModel;
|
|
|
|
namespace DevComponents.Schedule.Model
|
|
{
|
|
/// <summary>
|
|
/// Defines the daily recurrence settings.
|
|
/// </summary>
|
|
public class DailyRecurrenceSettings : INotifyPropertyChanged, INotifySubPropertyChanged
|
|
{
|
|
#region Internal Implementation
|
|
private AppointmentRecurrence _Recurrence = null;
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the DailyRecurrenceSettings class.
|
|
/// </summary>
|
|
/// <param name="recurrence"></param>
|
|
public DailyRecurrenceSettings(AppointmentRecurrence recurrence)
|
|
{
|
|
_Recurrence = recurrence;
|
|
}
|
|
|
|
private eDailyRecurrenceRepeat _RepeatOnDaysOfWeek = eDailyRecurrenceRepeat.All;
|
|
/// <summary>
|
|
/// Gets or sets the days of week on which appointment is repeated.
|
|
/// </summary>
|
|
[DefaultValue(eDailyRecurrenceRepeat.All)]
|
|
public eDailyRecurrenceRepeat RepeatOnDaysOfWeek
|
|
{
|
|
get { return _RepeatOnDaysOfWeek; }
|
|
set
|
|
{
|
|
if (value != _RepeatOnDaysOfWeek)
|
|
{
|
|
eDailyRecurrenceRepeat oldValue = _RepeatOnDaysOfWeek;
|
|
_RepeatOnDaysOfWeek = value;
|
|
OnRepeatOnDaysOfWeekChanged(oldValue, value);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OnRepeatOnDaysOfWeekChanged(eDailyRecurrenceRepeat oldValue, eDailyRecurrenceRepeat newValue)
|
|
{
|
|
OnPropertyChanged(new PropertyChangedEventArgs("RepeatOnDaysOfWeek"));
|
|
}
|
|
|
|
private int _RepeatInterval = 1;
|
|
/// <summary>
|
|
/// Gets or sets the interval between recurring appointments. Default value is 1. Setting this value to for example 3 means that
|
|
/// recurrence is repeated every 3 days.
|
|
/// </summary>
|
|
[DefaultValue(1)]
|
|
public int RepeatInterval
|
|
{
|
|
get { return _RepeatInterval; }
|
|
set
|
|
{
|
|
if (value != _RepeatInterval)
|
|
{
|
|
int oldValue = _RepeatInterval;
|
|
_RepeatInterval = value;
|
|
OnRepeatIntervalChanged(oldValue, value);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OnRepeatIntervalChanged(int oldValue, int newValue)
|
|
{
|
|
OnPropertyChanged(new PropertyChangedEventArgs("RepeatInterval"));
|
|
}
|
|
|
|
private bool _ExplicitDailyRecurrence = false;
|
|
/// <summary>
|
|
/// Indicates whether appointment is explicitly repeated every day regardless of its end time. By default end time of appointment + 1 day is considered as next
|
|
/// starting point for appointment. When this property is set to true appointment start time + 1 day is used as next starting point of recurrence.
|
|
/// </summary>
|
|
[DefaultValue(false), Description("Indicates whether appointment is explicitly repeated every day regardless of its end time. By default end time of appointment + 1 day is considered as next starting point for appointment. When this property is set to true appointment start time + 1 day is used as next starting point of recurrence.")]
|
|
public bool ExplicitDailyRecurrence
|
|
{
|
|
get { return _ExplicitDailyRecurrence; }
|
|
set
|
|
{
|
|
if (value != _ExplicitDailyRecurrence)
|
|
{
|
|
bool oldValue = _ExplicitDailyRecurrence;
|
|
_ExplicitDailyRecurrence = value;
|
|
OnExplicitDailyRecurrenceChanged(oldValue, value);
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Called when ExplicitDailyRecurrence property has changed.
|
|
/// </summary>
|
|
/// <param name="oldValue">Old property value</param>
|
|
/// <param name="newValue">New property value</param>
|
|
protected virtual void OnExplicitDailyRecurrenceChanged(bool oldValue, bool newValue)
|
|
{
|
|
OnPropertyChanged(new PropertyChangedEventArgs("ExplicitDailyRecurrence"));
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region INotifyPropertyChanged Members
|
|
/// <summary>
|
|
/// Occurs when property value has changed.
|
|
/// </summary>
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
/// <summary>
|
|
/// Raises the PropertyChanged event.
|
|
/// </summary>
|
|
/// <param name="e">Event arguments</param>
|
|
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
|
|
{
|
|
PropertyChangedEventHandler eh = PropertyChanged;
|
|
if (eh != null) eh(this, e);
|
|
OnSubPropertyChanged(new SubPropertyChangedEventArgs(this, e));
|
|
}
|
|
#endregion
|
|
|
|
#region INotifySubPropertyChanged Members
|
|
/// <summary>
|
|
/// Occurs when property or property of child objects has changed. This event is similar to PropertyChanged event with key
|
|
/// difference that it occurs for the property changed of child objects as well.
|
|
/// </summary>
|
|
public event SubPropertyChangedEventHandler SubPropertyChanged;
|
|
/// <summary>
|
|
/// Raises the SubPropertyChanged event.
|
|
/// </summary>
|
|
/// <param name="e">Event arguments</param>
|
|
protected virtual void OnSubPropertyChanged(SubPropertyChangedEventArgs e)
|
|
{
|
|
SubPropertyChangedEventHandler eh = SubPropertyChanged;
|
|
if (eh != null) eh(this, e);
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
#endif
|
|
|