tvplanit: Add option for unlimited recurring events

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8342 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2022-07-11 22:13:14 +00:00
parent e2a0b7912c
commit c93f5d5226
12 changed files with 209 additions and 125 deletions

View File

@ -1068,6 +1068,10 @@ msgstr "Rechteck"
msgid "Repeat until:" msgid "Repeat until:"
msgstr "Wiederholen bis:" msgstr "Wiederholen bis:"
#: vpsr.rsrecurrenceforever
msgid "Repeat forever"
msgstr "Endlos"
#: vpsr.rsrecurringlbl #: vpsr.rsrecurringlbl
msgid "Appointment recurrence:" msgid "Appointment recurrence:"
msgstr "Termin-Wiederholung:" msgstr "Termin-Wiederholung:"
@ -1683,4 +1687,3 @@ msgstr "Unbekannte Achsen-Spezifikation: %s"
#: vpsr.sxmldecnotatbeg #: vpsr.sxmldecnotatbeg
msgid "The XML declaration must appear before the first element" msgid "The XML declaration must appear before the first element"
msgstr "Die XML-Deklaration muss vor dem ersten Element erscheinen" msgstr "Die XML-Deklaration muss vor dem ersten Element erscheinen"

View File

@ -9,7 +9,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.0.1\n" "X-Generator: Poedit 3.1\n"
#: vpsr.rs1day #: vpsr.rs1day
msgid "1 day" msgid "1 day"
@ -1054,6 +1054,10 @@ msgstr "rectangle"
msgid "Repeat until:" msgid "Repeat until:"
msgstr "Repeat until:" msgstr "Repeat until:"
#: vpsr.rsrecurrenceforever
msgid "Repeat forever"
msgstr "Repeat forever"
#: vpsr.rsrecurringlbl #: vpsr.rsrecurringlbl
msgid "Appointment recurrence:" msgid "Appointment recurrence:"
msgstr "Appointment recurrence:" msgstr "Appointment recurrence:"
@ -1664,4 +1668,3 @@ msgstr "Unknown axis specifier: %s"
#: vpsr.sxmldecnotatbeg #: vpsr.sxmldecnotatbeg
msgid "The XML declaration must appear before the first element" msgid "The XML declaration must appear before the first element"
msgstr "The XML declaration must appear before the first element" msgstr "The XML declaration must appear before the first element"

View File

@ -1059,6 +1059,10 @@ msgstr ""
msgid "Repeat until:" msgid "Repeat until:"
msgstr "" msgstr ""
#: vpsr.rsrecurrenceforever
msgid "Repeat forever"
msgstr ""
#: vpsr.rsrecurringlbl #: vpsr.rsrecurringlbl
msgid "Appointment recurrence:" msgid "Appointment recurrence:"
msgstr "" msgstr ""

View File

@ -1074,6 +1074,10 @@ msgstr ""
msgid "Repeat until:" msgid "Repeat until:"
msgstr "Répétez jusqu'au" msgstr "Répétez jusqu'au"
#: vpsr.rsrecurrenceforever
msgid "Repeat forever"
msgstr ""
#: vpsr.rsrecurringlbl #: vpsr.rsrecurringlbl
msgid "Appointment recurrence:" msgid "Appointment recurrence:"
msgstr "Rendevous à répéter:" msgstr "Rendevous à répéter:"

View File

@ -1068,6 +1068,10 @@ msgstr ""
msgid "Repeat until:" msgid "Repeat until:"
msgstr "Herhalen totdat:" msgstr "Herhalen totdat:"
#: vpsr.rsrecurrenceforever
msgid "Repeat forever"
msgstr ""
#: vpsr.rsrecurringlbl #: vpsr.rsrecurringlbl
msgid "Appointment recurrence:" msgid "Appointment recurrence:"
msgstr "Afspraak herhaling:" msgstr "Afspraak herhaling:"

View File

@ -1067,6 +1067,10 @@ msgstr "prostokąt"
msgid "Repeat until:" msgid "Repeat until:"
msgstr "Powtarzaj do:" msgstr "Powtarzaj do:"
#: vpsr.rsrecurrenceforever
msgid "Repeat forever"
msgstr ""
#: vpsr.rsrecurringlbl #: vpsr.rsrecurringlbl
msgid "Appointment recurrence:" msgid "Appointment recurrence:"
msgstr "Częstotliwość:" msgstr "Częstotliwość:"

View File

@ -1044,6 +1044,10 @@ msgstr ""
msgid "Repeat until:" msgid "Repeat until:"
msgstr "" msgstr ""
#: vpsr.rsrecurrenceforever
msgid "Repeat forever"
msgstr ""
#: vpsr.rsrecurringlbl #: vpsr.rsrecurringlbl
msgid "Appointment recurrence:" msgid "Appointment recurrence:"
msgstr "" msgstr ""

View File

@ -1068,6 +1068,10 @@ msgstr ""
msgid "Repeat until:" msgid "Repeat until:"
msgstr "Повторять до:" msgstr "Повторять до:"
#: vpsr.rsrecurrenceforever
msgid "Repeat forever"
msgstr ""
#: vpsr.rsrecurringlbl #: vpsr.rsrecurringlbl
msgid "Appointment recurrence:" msgid "Appointment recurrence:"
msgstr "Повторение встречи:" msgstr "Повторение встречи:"

View File

@ -253,6 +253,7 @@ resourcestring
RSRecurringLbl = 'Appointment recurrence:'; RSRecurringLbl = 'Appointment recurrence:';
RSIntervalLbl = 'Interval (days):'; RSIntervalLbl = 'Interval (days):';
RSRecurrenceEndsLbl = 'Repeat until:'; RSRecurrenceEndsLbl = 'Repeat until:';
RSRecurrenceForever = 'Repeat forever';
RSAllDayEvent = '&All Day Event'; RSAllDayEvent = '&All Day Event';
RSNotesLbl = 'Notes:'; RSNotesLbl = 'Notes:';

View File

@ -289,6 +289,8 @@ const
LineEnding2 = LineEnding + LineEnding; LineEnding2 = LineEnding + LineEnding;
FOREVER_DATE = 999999;
implementation implementation

View File

@ -1,27 +1,26 @@
object DlgEventEdit: TDlgEventEdit object DlgEventEdit: TDlgEventEdit
Left = 255 Left = 255
Height = 532 Height = 500
Top = 202 Top = 202
Width = 765 Width = 731
AutoSize = True AutoSize = True
BorderStyle = bsToolWindow BorderStyle = bsToolWindow
Caption = 'Add / Edit Events' Caption = 'Add / Edit Events'
ClientHeight = 532 ClientHeight = 500
ClientWidth = 765 ClientWidth = 731
OnCreate = FormCreate OnCreate = FormCreate
OnShow = FormShow OnShow = FormShow
Position = poScreenCenter Position = poScreenCenter
LCLVersion = '1.9.0.0'
object ButtonPanel: TPanel object ButtonPanel: TPanel
Left = 0 Left = 0
Height = 37 Height = 37
Top = 495 Top = 463
Width = 765 Width = 731
Align = alBottom Align = alBottom
AutoSize = True AutoSize = True
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 37 ClientHeight = 37
ClientWidth = 765 ClientWidth = 731
TabOrder = 1 TabOrder = 1
object ResourceNameLbl: TLabel object ResourceNameLbl: TLabel
AnchorSideLeft.Control = ButtonPanel AnchorSideLeft.Control = ButtonPanel
@ -33,6 +32,7 @@ object DlgEventEdit: TDlgEventEdit
Width = 88 Width = 88
BorderSpacing.Left = 12 BorderSpacing.Left = 12
Caption = 'Resource Name' Caption = 'Resource Name'
Color = clDefault
Font.CharSet = ANSI_CHARSET Font.CharSet = ANSI_CHARSET
Font.Color = clMaroon Font.Color = clMaroon
Font.Style = [fsBold] Font.Style = [fsBold]
@ -40,7 +40,7 @@ object DlgEventEdit: TDlgEventEdit
ParentFont = False ParentFont = False
end end
object OKBtn: TButton object OKBtn: TButton
Left = 616 Left = 582
Height = 25 Height = 25
Top = 6 Top = 6
Width = 66 Width = 66
@ -54,7 +54,7 @@ object DlgEventEdit: TDlgEventEdit
TabOrder = 0 TabOrder = 0
end end
object CancelBtn: TButton object CancelBtn: TButton
Left = 688 Left = 654
Height = 25 Height = 25
Top = 6 Top = 6
Width = 71 Width = 71
@ -70,27 +70,27 @@ object DlgEventEdit: TDlgEventEdit
end end
object Panel1: TPanel object Panel1: TPanel
Left = 12 Left = 12
Height = 483 Height = 451
Top = 12 Top = 12
Width = 741 Width = 707
Align = alClient Align = alClient
BorderSpacing.Left = 12 BorderSpacing.Left = 12
BorderSpacing.Top = 12 BorderSpacing.Top = 12
BorderSpacing.Right = 12 BorderSpacing.Right = 12
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 483 ClientHeight = 451
ClientWidth = 741 ClientWidth = 707
TabOrder = 0 TabOrder = 0
object AppointmentGroupBox: TGroupBox object AppointmentGroupBox: TGroupBox
Left = 0 Left = 0
Height = 239 Height = 239
Top = 0 Top = 0
Width = 741 Width = 707
Align = alTop Align = alTop
AutoSize = True AutoSize = True
Caption = 'Appointment' Caption = 'Appointment'
ClientHeight = 219 ClientHeight = 219
ClientWidth = 737 ClientWidth = 703
TabOrder = 0 TabOrder = 0
object Bevel1: TBevel object Bevel1: TBevel
AnchorSideLeft.Control = AppointmentGroupBox AnchorSideLeft.Control = AppointmentGroupBox
@ -101,7 +101,7 @@ object DlgEventEdit: TDlgEventEdit
Left = 12 Left = 12
Height = 3 Height = 3
Top = 64 Top = 64
Width = 681 Width = 679
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 12 BorderSpacing.Left = 12
BorderSpacing.Top = 12 BorderSpacing.Top = 12
@ -116,7 +116,7 @@ object DlgEventEdit: TDlgEventEdit
Left = 12 Left = 12
Height = 3 Height = 3
Top = 167 Top = 167
Width = 681 Width = 679
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 12 BorderSpacing.Left = 12
BorderSpacing.Top = 12 BorderSpacing.Top = 12
@ -126,7 +126,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Control = DescriptionEdit AnchorSideTop.Control = DescriptionEdit
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = DescriptionEdit AnchorSideRight.Control = DescriptionEdit
Left = 71 Left = 69
Height = 15 Height = 15
Top = 4 Top = 4
Width = 63 Width = 63
@ -134,6 +134,7 @@ object DlgEventEdit: TDlgEventEdit
BorderSpacing.Left = 12 BorderSpacing.Left = 12
BorderSpacing.Right = 8 BorderSpacing.Right = 8
Caption = 'Description:' Caption = 'Description:'
Color = clDefault
ParentColor = False ParentColor = False
end end
object DescriptionEdit: TEdit object DescriptionEdit: TEdit
@ -141,7 +142,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Control = AppointmentGroupBox AnchorSideTop.Control = AppointmentGroupBox
AnchorSideRight.Control = IntervalUpDown AnchorSideRight.Control = IntervalUpDown
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 142 Left = 140
Height = 23 Height = 23
Top = 0 Top = 0
Width = 551 Width = 551
@ -153,13 +154,14 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Control = LocationEdit AnchorSideTop.Control = LocationEdit
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = LocationEdit AnchorSideRight.Control = LocationEdit
Left = 85 Left = 83
Height = 15 Height = 15
Top = 33 Top = 33
Width = 49 Width = 49
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.Right = 8 BorderSpacing.Right = 8
Caption = 'Location:' Caption = 'Location:'
Color = clDefault
FocusControl = LocationEdit FocusControl = LocationEdit
ParentColor = False ParentColor = False
end end
@ -169,7 +171,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Bevel3 AnchorSideRight.Control = Bevel3
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 142 Left = 140
Height = 23 Height = 23
Top = 29 Top = 29
Width = 214 Width = 214
@ -183,13 +185,14 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Control = Category AnchorSideTop.Control = Category
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = Category AnchorSideRight.Control = Category
Left = 377 Left = 375
Height = 15 Height = 15
Top = 33 Top = 33
Width = 51 Width = 51
BorderSpacing.Left = 12 BorderSpacing.Left = 12
BorderSpacing.Right = 12 BorderSpacing.Right = 12
Caption = 'Category:' Caption = 'Category:'
Color = clDefault
ParentColor = False ParentColor = False
end end
object Category: TComboBox object Category: TComboBox
@ -199,7 +202,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = DescriptionEdit AnchorSideRight.Control = DescriptionEdit
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 440 Left = 438
Height = 23 Height = 23
Top = 29 Top = 29
Width = 253 Width = 253
@ -315,7 +318,7 @@ object DlgEventEdit: TDlgEventEdit
Left = 60 Left = 60
Height = 19 Height = 19
Top = 76 Top = 76
Width = 89 Width = 87
BorderSpacing.Left = 12 BorderSpacing.Left = 12
Caption = 'All Day Event' Caption = 'All Day Event'
OnClick = CBAllDayClick OnClick = CBAllDayClick
@ -325,7 +328,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Control = StartDate AnchorSideTop.Control = StartDate
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = StartDate AnchorSideRight.Control = StartDate
Left = 80 Left = 78
Height = 15 Height = 15
Top = 105 Top = 105
Width = 54 Width = 54
@ -333,6 +336,7 @@ object DlgEventEdit: TDlgEventEdit
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.Right = 8 BorderSpacing.Right = 8
Caption = 'Start time:' Caption = 'Start time:'
Color = clDefault
ParentColor = False ParentColor = False
end end
object EndTimeLbl: TLabel object EndTimeLbl: TLabel
@ -340,7 +344,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Control = EndDate AnchorSideTop.Control = EndDate
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = EndDate AnchorSideRight.Control = EndDate
Left = 84 Left = 82
Height = 15 Height = 15
Top = 136 Top = 136
Width = 50 Width = 50
@ -348,13 +352,14 @@ object DlgEventEdit: TDlgEventEdit
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.Right = 8 BorderSpacing.Right = 8
Caption = 'End time:' Caption = 'End time:'
Color = clDefault
ParentColor = False ParentColor = False
end end
object StartDate: TDateEdit object StartDate: TDateEdit
AnchorSideLeft.Control = AlarmAdvance AnchorSideLeft.Control = AlarmAdvance
AnchorSideTop.Control = CBAllDay AnchorSideTop.Control = CBAllDay
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 142 Left = 140
Height = 23 Height = 23
Top = 101 Top = 101
Width = 102 Width = 102
@ -409,7 +414,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = StartDate AnchorSideRight.Control = StartDate
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 142 Left = 140
Height = 23 Height = 23
Top = 132 Top = 132
Width = 102 Width = 102
@ -464,7 +469,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Control = CBAllDay AnchorSideTop.Control = CBAllDay
AnchorSideBottom.Control = EndDate AnchorSideBottom.Control = EndDate
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 365 Left = 363
Height = 79 Height = 79
Top = 76 Top = 76
Width = 3 Width = 3
@ -476,7 +481,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideLeft.Control = Bevel3 AnchorSideLeft.Control = Bevel3
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = imgClock AnchorSideTop.Control = imgClock
Left = 384 Left = 382
Height = 32 Height = 32
Top = 76 Top = 76
Width = 32 Width = 32
@ -542,12 +547,13 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = CBAllDay AnchorSideTop.Control = CBAllDay
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
Left = 428 Left = 426
Height = 15 Height = 15
Top = 78 Top = 78
Width = 136 Width = 136
BorderSpacing.Left = 12 BorderSpacing.Left = 12
Caption = 'Appointment Recurrence:' Caption = 'Appointment Recurrence:'
Color = clDefault
ParentColor = False ParentColor = False
end end
object RecurringType: TComboBox object RecurringType: TComboBox
@ -555,7 +561,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Control = StartDate AnchorSideTop.Control = StartDate
AnchorSideRight.Control = RecurringLbl AnchorSideRight.Control = RecurringLbl
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 428 Left = 426
Height = 23 Height = 23
Top = 101 Top = 101
Width = 136 Width = 136
@ -565,91 +571,26 @@ object DlgEventEdit: TDlgEventEdit
Style = csDropDownList Style = csDropDownList
TabOrder = 8 TabOrder = 8
end end
object RepeatUntil: TDateEdit
AnchorSideTop.Control = EndDate
AnchorSideRight.Control = IntervalUpDown
AnchorSideRight.Side = asrBottom
Left = 531
Height = 23
Top = 132
Width = 162
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
DateOrder = doNone
ButtonWidth = 23
Anchors = [akTop, akRight]
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D69E
72C4D3996EF4D19668FFCE9263FFCB8E5EFFC98A5BFFC78756FFC38452FFC384
52FFC38452FFC38452FFC38452FFC38452FFBB7742B0FFFFFF00FFFFFF00D7A1
75FFF8F2EDFFF7F0EAFFF6EDE6FFF4EAE2FFF3E7DEFFF1E4DBFFF0E2D8FFEAD6
C8FFF2E5DCFFFAF4F1FFF9F3F0FFFAF5F2FFC58A5DFDFFFFFF00FFFFFF00D9A4
7AFFF9F3EEFFEBD2BEFFFFFFFFFFEBD3BFFFFFFFFFFFEBD3C0FFFFFFFFFFEAC7
ADFFECD9CDFFF1E4DBFFF9F3F0FFF9F2EFFFC68C5FFFFFFFFF00FFFFFF00DDA8
7EFFF9F3EFFFEBD0BAFFEBD0BBFF75B57AFF75B57AFF75B57AFFEBD1BDFFEACD
B5FFFAF4F0FFEBD9CCFFF1E4DBFFFAF4F1FFC68A5CFFFFFFFF00FFFFFF00DFAA
82FFF9F3EFFFEACEB7FFFFFFFFFF75B57AFF94D49BFF74B579FFFFFFFFFFEACF
BAFFFBF6F2FFFAF3F0FFEBD8CBFFF2E6DDFFC88D5FFFFFFFFF00FFFFFF00E1AE
87FFFAF4F0FFEACBB2FFEACCB3FF75B57AFF74B579FF73B478FFEACEB7FF70B3
75FF6FB274FF6EB172FFE8C8AEFFEAD7C9FFC48654FFFFFFFF00FFFFFF00E3B1
8CFFFAF6F1FFEAC9AEFFFFFFFFFFEAC9B0FFFFFFFFFFE9CBB3FFFFFFFFFF6FB1
73FF8ED295FF6BAF6FFFFFFFFFFFF1E5DBFFC68655FFFFFFFF00FFFFFF00E5B4
8FFFFAF6F2FFE9C6AAFFE9C6ACFFEAC7ACFFE9C7ADFFE9C9AEFFE9C9B0FF6CB0
71FF6AAF6EFF68AD6DFFE8CCB5FFF2E7DEFFC88A59FFFFFFFF00FFFFFF00E7B7
94FFFBF7F4FFE9C3A6FFFFFFFFFFE8C4A9FFFFFFFFFFE9C6AAFFFFFFFFFFE8C7
ACFFFFFFFFFFE8C8B0FFFFFFFFFFF7F1EBFFCB8F5FFFFFFFFF00FFFFFF00E9BA
98FFFBF7F4FF65A4FFFF64A3FFFF62A2FFFF61A1FFFF5F9FFFFF5C9DFFFF5A9A
FFFF5798FFFF5495FFFF5294FFFFFBF7F4FFCE9364FFFFFFFF00FFFFFF00EBBD
9BFFFBF7F4FF64A4FFFF79BDFFFF75BBFFFF71B9FFFF6DB8FFFF68B3FFFF61B0
FFFF5AABFFFF54A7FFFF3B7DFFFFFBF7F4FFD1976AFFFFFFFF00FFFFFF00ECBF
9EFFFBF7F4FF65A4FFFF64A3FFFF60A0FFFF5D9EFFFF5899FFFF5496FFFF4D90
FFFF478BFFFF4284FFFF3D7FFFFFFBF7F4FFD49B6FFFFFFFFF00FFFFFF00EEC1
A1EBFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7
F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFD7A074F8FFFFFF00FFFFFF00EFC2
A37EEFC1A2E3EDC09FFFEBBE9DFFEBBC9AFFE9BA96FFE7B793FFE6B590FFE4B2
8CFFE2AF88FFE0AC84FFDDA980FFDCA57DFFDAA37ACAFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 1
MaxLength = 0
TabOrder = 11
end
object RecurrenceEndsLbl: TLabel
AnchorSideTop.Control = RepeatUntil
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = RepeatUntil
Left = 491
Height = 15
Top = 136
Width = 28
Alignment = taRightJustify
Anchors = [akTop, akRight]
BorderSpacing.Right = 12
Caption = 'Until:'
ParentColor = False
end
object IntervalLbl: TLabel object IntervalLbl: TLabel
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = RecurringLbl AnchorSideTop.Control = RecurringLbl
AnchorSideRight.Control = IntervalUpDown AnchorSideRight.Control = IntervalUpDown
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 616 Left = 614
Height = 15 Height = 15
Top = 78 Top = 78
Width = 77 Width = 77
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.Left = 36 BorderSpacing.Left = 36
Caption = 'Interval (days):' Caption = 'Interval (days):'
Color = clDefault
ParentColor = False ParentColor = False
end end
object CustomInterval: TEdit object CustomInterval: TEdit
AnchorSideLeft.Control = RecurringType AnchorSideLeft.Control = RecurringType
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = StartDate AnchorSideTop.Control = StartDate
Left = 572 Left = 570
Height = 23 Height = 23
Top = 101 Top = 101
Width = 106 Width = 106
@ -664,7 +605,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideLeft.Control = CustomInterval AnchorSideLeft.Control = CustomInterval
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 681 Left = 679
Height = 23 Height = 23
Top = 101 Top = 101
Width = 12 Width = 12
@ -764,7 +705,7 @@ object DlgEventEdit: TDlgEventEdit
Left = 60 Left = 60
Height = 19 Height = 19
Top = 180 Top = 180
Width = 74 Width = 72
BorderSpacing.Left = 12 BorderSpacing.Left = 12
BorderSpacing.Right = 8 BorderSpacing.Right = 8
Caption = '&Reminder:' Caption = '&Reminder:'
@ -778,7 +719,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = AdvanceUpDown AnchorSideRight.Control = AdvanceUpDown
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 142 Left = 140
Height = 23 Height = 23
Top = 178 Top = 178
Width = 77 Width = 77
@ -793,7 +734,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = StartDate AnchorSideRight.Control = StartDate
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 232 Left = 230
Height = 23 Height = 23
Top = 178 Top = 178
Width = 12 Width = 12
@ -810,7 +751,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = AlarmAdvance AnchorSideTop.Control = AlarmAdvance
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
Left = 256 Left = 254
Height = 23 Height = 23
Top = 178 Top = 178
Width = 93 Width = 93
@ -825,7 +766,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Control = AlarmAdvanceType AnchorSideTop.Control = AlarmAdvanceType
AnchorSideBottom.Control = AlarmAdvanceType AnchorSideBottom.Control = AlarmAdvanceType
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 365 Left = 363
Height = 23 Height = 23
Top = 178 Top = 178
Width = 24 Width = 24
@ -849,7 +790,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Control = EndDate AnchorSideTop.Control = EndDate
AnchorSideRight.Control = AlarmAdvanceType AnchorSideRight.Control = AlarmAdvanceType
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 256 Left = 254
Height = 23 Height = 23
Top = 132 Top = 132
Width = 93 Width = 93
@ -864,7 +805,7 @@ object DlgEventEdit: TDlgEventEdit
AnchorSideTop.Control = StartDate AnchorSideTop.Control = StartDate
AnchorSideRight.Control = AlarmAdvanceType AnchorSideRight.Control = AlarmAdvanceType
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 256 Left = 254
Height = 23 Height = 23
Top = 101 Top = 101
Width = 93 Width = 93
@ -873,12 +814,107 @@ object DlgEventEdit: TDlgEventEdit
TabOrder = 5 TabOrder = 5
Text = 'StartTimePlaceholder' Text = 'StartTimePlaceholder'
end end
object Panel2: TPanel
AnchorSideLeft.Control = ImgRecurring
AnchorSideTop.Control = RecurringType
AnchorSideTop.Side = asrBottom
Left = 382
Height = 23
Top = 132
Width = 286
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BevelOuter = bvNone
ClientHeight = 23
ClientWidth = 286
TabOrder = 11
object RepeatUntil: TDateEdit
AnchorSideLeft.Control = rbRepeatUntil
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel2
AnchorSideRight.Side = asrBottom
Left = 93
Height = 23
Top = 0
Width = 114
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
DateOrder = doNone
ButtonWidth = 23
BorderSpacing.Left = 12
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D69E
72C4D3996EF4D19668FFCE9263FFCB8E5EFFC98A5BFFC78756FFC38452FFC384
52FFC38452FFC38452FFC38452FFC38452FFBB7742B0FFFFFF00FFFFFF00D7A1
75FFF8F2EDFFF7F0EAFFF6EDE6FFF4EAE2FFF3E7DEFFF1E4DBFFF0E2D8FFEAD6
C8FFF2E5DCFFFAF4F1FFF9F3F0FFFAF5F2FFC58A5DFDFFFFFF00FFFFFF00D9A4
7AFFF9F3EEFFEBD2BEFFFFFFFFFFEBD3BFFFFFFFFFFFEBD3C0FFFFFFFFFFEAC7
ADFFECD9CDFFF1E4DBFFF9F3F0FFF9F2EFFFC68C5FFFFFFFFF00FFFFFF00DDA8
7EFFF9F3EFFFEBD0BAFFEBD0BBFF75B57AFF75B57AFF75B57AFFEBD1BDFFEACD
B5FFFAF4F0FFEBD9CCFFF1E4DBFFFAF4F1FFC68A5CFFFFFFFF00FFFFFF00DFAA
82FFF9F3EFFFEACEB7FFFFFFFFFF75B57AFF94D49BFF74B579FFFFFFFFFFEACF
BAFFFBF6F2FFFAF3F0FFEBD8CBFFF2E6DDFFC88D5FFFFFFFFF00FFFFFF00E1AE
87FFFAF4F0FFEACBB2FFEACCB3FF75B57AFF74B579FF73B478FFEACEB7FF70B3
75FF6FB274FF6EB172FFE8C8AEFFEAD7C9FFC48654FFFFFFFF00FFFFFF00E3B1
8CFFFAF6F1FFEAC9AEFFFFFFFFFFEAC9B0FFFFFFFFFFE9CBB3FFFFFFFFFF6FB1
73FF8ED295FF6BAF6FFFFFFFFFFFF1E5DBFFC68655FFFFFFFF00FFFFFF00E5B4
8FFFFAF6F2FFE9C6AAFFE9C6ACFFEAC7ACFFE9C7ADFFE9C9AEFFE9C9B0FF6CB0
71FF6AAF6EFF68AD6DFFE8CCB5FFF2E7DEFFC88A59FFFFFFFF00FFFFFF00E7B7
94FFFBF7F4FFE9C3A6FFFFFFFFFFE8C4A9FFFFFFFFFFE9C6AAFFFFFFFFFFE8C7
ACFFFFFFFFFFE8C8B0FFFFFFFFFFF7F1EBFFCB8F5FFFFFFFFF00FFFFFF00E9BA
98FFFBF7F4FF65A4FFFF64A3FFFF62A2FFFF61A1FFFF5F9FFFFF5C9DFFFF5A9A
FFFF5798FFFF5495FFFF5294FFFFFBF7F4FFCE9364FFFFFFFF00FFFFFF00EBBD
9BFFFBF7F4FF64A4FFFF79BDFFFF75BBFFFF71B9FFFF6DB8FFFF68B3FFFF61B0
FFFF5AABFFFF54A7FFFF3B7DFFFFFBF7F4FFD1976AFFFFFFFF00FFFFFF00ECBF
9EFFFBF7F4FF65A4FFFF64A3FFFF60A0FFFF5D9EFFFF5899FFFF5496FFFF4D90
FFFF478BFFFF4284FFFF3D7FFFFFFBF7F4FFD49B6FFFFFFFFF00FFFFFF00EEC1
A1EBFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7
F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFD7A074F8FFFFFF00FFFFFF00EFC2
A37EEFC1A2E3EDC09FFFEBBE9DFFEBBC9AFFE9BA96FFE7B793FFE6B590FFE4B2
8CFFE2AF88FFE0AC84FFDDA980FFDCA57DFFDAA37ACAFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 1
MaxLength = 0
TabOrder = 1
end
object rbRepeatUntil: TRadioButton
AnchorSideLeft.Control = Panel2
AnchorSideTop.Control = RepeatUntil
AnchorSideTop.Side = asrCenter
Left = 0
Height = 19
Top = 2
Width = 81
Caption = 'Repeat until'
Checked = True
TabOrder = 0
TabStop = True
end
object rbRepeatForever: TRadioButton
AnchorSideLeft.Control = RepeatUntil
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = RepeatUntil
AnchorSideTop.Side = asrCenter
Left = 231
Height = 19
Top = 2
Width = 55
BorderSpacing.Left = 24
Caption = 'forever'
TabOrder = 2
end
end
end end
object NotesMemo: TMemo object NotesMemo: TMemo
Left = 0 Left = 0
Height = 232 Height = 200
Top = 251 Top = 251
Width = 741 Width = 707
Align = alClient Align = alClient
Constraints.MinHeight = 200 Constraints.MinHeight = 200
ScrollBars = ssVertical ScrollBars = ssVertical
@ -888,13 +924,13 @@ object DlgEventEdit: TDlgEventEdit
Left = 0 Left = 0
Height = 12 Height = 12
Top = 239 Top = 239
Width = 741 Width = 707
Align = alTop Align = alTop
Shape = bsSpacer Shape = bsSpacer
end end
end end
object FileDialog: TOpenDialog object FileDialog: TOpenDialog
left = 440 Left = 440
top = 352 Top = 352
end end
end end

View File

@ -72,6 +72,9 @@ type
TDlgEventEdit = class(TForm) TDlgEventEdit = class(TForm)
AlarmAdvance: TEdit; AlarmAdvance: TEdit;
Bevel4: TBevel; Bevel4: TBevel;
Panel2: TPanel;
rbRepeatForever: TRadioButton;
rbRepeatUntil: TRadioButton;
StartTimePlaceholder: TEdit; StartTimePlaceholder: TEdit;
EndTimePlaceholder: TEdit; EndTimePlaceholder: TEdit;
LocationEdit: TEdit; LocationEdit: TEdit;
@ -111,7 +114,6 @@ type
CBAllDay: TCheckBox; CBAllDay: TCheckBox;
CustomInterval: TEdit; CustomInterval: TEdit;
imgClock: TImage; imgClock: TImage;
RecurrenceEndsLbl: TLabel;
procedure AdvanceUpDownClick(Sender: TObject; Button: TUDBtnType); procedure AdvanceUpDownClick(Sender: TObject; Button: TUDBtnType);
procedure AlarmAdvanceChange(Sender: TObject); procedure AlarmAdvanceChange(Sender: TObject);
procedure AlarmSetClick(Sender: TObject); procedure AlarmSetClick(Sender: TObject);
@ -417,6 +419,7 @@ end;
procedure TDlgEventEdit.PopulateDialog; procedure TDlgEventEdit.PopulateDialog;
var var
I: Integer; I: Integer;
d: TDate;
begin begin
{ Resource } { Resource }
ResourceNameLbl.Caption := Resource.Description; ResourceNameLbl.Caption := Resource.Description;
@ -424,7 +427,16 @@ begin
{ Events } { Events }
StartDate.Date := trunc(Event.StartTime); StartDate.Date := trunc(Event.StartTime);
EndDate.Date := trunc(Event.EndTime); EndDate.Date := trunc(Event.EndTime);
RepeatUntil.Date := trunc(Event.RepeatRangeEnd); d := trunc(Event.RepeatRangeEnd);
if d = FOREVER_DATE then
begin
RepeatUntil.Text := '';
rbRepeatForever.Checked := true;
end else
begin
RepeatUntil.Date := d;
rbRepeatUntil.Checked := true;
end;
{$IFDEF NEW_TIME_EDIT} {$IFDEF NEW_TIME_EDIT}
StartTime.Time := frac(Event.StartTime); StartTime.Time := frac(Event.StartTime);
EndTime.Time := frac(Event.EndTime); EndTime.Time := frac(Event.EndTime);
@ -476,7 +488,10 @@ begin
Event.StartTime := StartDate.Date + StrToTime(StartTime.Text); Event.StartTime := StartDate.Date + StrToTime(StartTime.Text);
Event.EndTime := EndDate.Date + StrToTime(EndTime.Text); Event.EndTime := EndDate.Date + StrToTime(EndTime.Text);
{$ENDIF} {$ENDIF}
Event.RepeatRangeEnd := RepeatUntil.Date; if rbRepeatForever.Checked then
Event.RepeatRangeEnd := FOREVER_DATE
else
Event.RepeatRangeEnd := RepeatUntil.Date;
Event.Description := DescriptionEdit.Text; Event.Description := DescriptionEdit.Text;
Event.Location := LocationEdit.Text; Event.Location := LocationEdit.Text;
Event.Notes := NotesMemo.Text; Event.Notes := NotesMemo.Text;
@ -563,7 +578,8 @@ begin
AlarmSet.Caption := RSAlarmSet; AlarmSet.Caption := RSAlarmSet;
RecurringLbl.Caption := RSRecurringLbl; RecurringLbl.Caption := RSRecurringLbl;
IntervalLbl.Caption := RSIntervalLbl; IntervalLbl.Caption := RSIntervalLbl;
RecurrenceEndsLbl.Caption := RSRecurrenceEndsLbl; rbRepeatUntil.Caption := RSRecurrenceEndsLbl;
rbRepeatForever.Caption := RSRecurrenceForever;
CBAllDay.Caption := RSAllDayEvent; CBAllDay.Caption := RSAllDayEvent;
end; end;
{=====} {=====}
@ -627,7 +643,6 @@ begin
Unused(Button); Unused(Button);
CustomInterval.Text := IntToStr(IntervalUpDown.Position); CustomInterval.Text := IntToStr(IntervalUpDown.Position);
end; end;
{=====}
procedure TDlgEventEdit.RecurringTypeChange(Sender: TObject); procedure TDlgEventEdit.RecurringTypeChange(Sender: TObject);
begin begin
@ -636,8 +651,9 @@ begin
then then
RepeatUntil.Date := StartDate.Date + 365; RepeatUntil.Date := StartDate.Date + 365;
RecurrenceEndsLbl.Enabled := (RecurringType.ItemIndex > 0); rbRepeatUntil.Enabled := (RecurringType.ItemIndex > 0);
RepeatUntil.Enabled := RecurrenceEndsLbl.Enabled; rbRepeatForever.Enabled := rbRepeatUntil.Enabled;
RepeatUntil.Enabled := rbRepeatUntil.Enabled and (not rbRepeatForever.Checked);
CustomInterval.Enabled := RecurringType.ItemIndex = ord(rtCustom); CustomInterval.Enabled := RecurringType.ItemIndex = ord(rtCustom);
IntervalLbl.Enabled := CustomInterval.Enabled; IntervalLbl.Enabled := CustomInterval.Enabled;
@ -648,7 +664,6 @@ begin
CustomInterval.SetFocus; CustomInterval.SetFocus;
end; end;
end; end;
{=====}
procedure TDlgEventEdit.AlarmSetClick(Sender: TObject); procedure TDlgEventEdit.AlarmSetClick(Sender: TObject);
begin begin