-
Notifications
You must be signed in to change notification settings - Fork 0
/
MappingConverterLabel.cs
43 lines (38 loc) · 1.56 KB
/
MappingConverterLabel.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using DevExpress.XtraScheduler;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Collections;
namespace SchedulerMappingConverterExample {
#region #MappingConverterLabel
class MappingConverterLabel : ISchedulerMappingConverter {
SchedulerStorage storage;
public MappingConverterLabel(SchedulerStorage dataStorage) {
storage = dataStorage;
}
public object Convert(object obj, Type targetType, object parameter) {
IAppointmentLabel lbl = storage.Appointments.Labels.FirstOrDefault(label => label.GetColor().ToArgb() == (int)obj);
return (lbl != null) ? lbl.Id : CreateNewLabel((int)obj);
}
public object ConvertBack(object obj, Type targetType, object parameter) {
return storage.GetLabelColor(obj).ToArgb();
}
private object CreateNewLabel(int intColor) {
Color color = Color.FromArgb(intColor);
string labelName = "x" + intColor.ToString("X");
foreach (KnownColor kColor in Enum.GetValues(typeof(KnownColor))) {
Color known = Color.FromKnownColor(kColor);
if (intColor == known.ToArgb()) {
labelName = known.Name;
}
}
AppointmentLabel label = storage.Appointments.Labels.CreateNewLabel(labelName);
label.SetColor(color);
storage.Appointments.Labels.Add(label);
return label.Id;
}
}
#endregion #MappingConverterLabel
}