#if FRAMEWORK20
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
namespace DevComponents.Schedule.Model
{
///
/// Defines weekly recurrence settings.
///
public class WeeklyRecurrenceSettings : INotifyPropertyChanged, INotifySubPropertyChanged
{
#region Internal Implementation
private AppointmentRecurrence _Recurrence = null;
///
/// Initializes a new instance of the WeeklyRecurrenceSettings class.
///
///
public WeeklyRecurrenceSettings(AppointmentRecurrence recurrence)
{
_Recurrence = recurrence;
}
private eDayOfWeekRecurrence _RepeatOnDaysOfWeek = eDayOfWeekRecurrence.All;
///
/// Gets or sets the days of week on which appointment is repeated. This property is represented by bit-flag enum
/// which means that you can combine the values from eDayOfWeekRecurrence enum using OR operator to specify multiple values.
/// Default value is All.
///
/// This property value cannot be set to eDayOfWeekRecurrence.None.
///
///
[DefaultValue(eDayOfWeekRecurrence.All)]
public eDayOfWeekRecurrence RepeatOnDaysOfWeek
{
get { return _RepeatOnDaysOfWeek; }
set
{
if (value == eDayOfWeekRecurrence.None)
throw new ArgumentException("RepeatOnDaysOfWeek cannot be set to eDayOfWeekRecurrence.None");
if (value != _RepeatOnDaysOfWeek)
{
eDayOfWeekRecurrence oldValue = _RepeatOnDaysOfWeek;
_RepeatOnDaysOfWeek = value;
OnRepeatOnDaysOfWeekChanged(oldValue, value);
}
}
}
private void OnRepeatOnDaysOfWeekChanged(eDayOfWeekRecurrence oldValue, eDayOfWeekRecurrence newValue)
{
OnPropertyChanged(new PropertyChangedEventArgs("RepeatOnDaysOfWeek"));
}
private int _RepeatInterval = 1;
///
/// Gets or sets the interval between recurring appointments. Default value is 1.
///
/// For example, setting RepeatInterval to 2 means that appointment will recur every 2 weeks.
///
///
[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"));
}
#endregion
#region INotifyPropertyChanged Members
///
/// Occurs when property value has changed.
///
public event PropertyChangedEventHandler PropertyChanged;
///
/// Raises the PropertyChanged event.
///
/// Event arguments
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler eh = PropertyChanged;
if (eh != null) eh(this, e);
OnSubPropertyChanged(new SubPropertyChangedEventArgs(this, e));
}
#endregion
#region INotifySubPropertyChanged Members
///
/// 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.
///
public event SubPropertyChangedEventHandler SubPropertyChanged;
///
/// Raises the SubPropertyChanged event.
///
/// Event arguments
protected virtual void OnSubPropertyChanged(SubPropertyChangedEventArgs e)
{
SubPropertyChangedEventHandler eh = SubPropertyChanged;
if (eh != null) eh(this, e);
}
#endregion
}
}
#endif