tvplanit: Fix Event Editor if start and end times are in reverse order. Some cosmetic changes

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4871 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-06-29 22:24:10 +00:00
parent 3767e20c54
commit 4f83704448
7 changed files with 43 additions and 207 deletions

View File

@@ -921,6 +921,10 @@ msgstr "Klang-Suche"
msgid "Error: Unable to update "
msgstr "Fehler: Kann nicht updaten"
#: vpsr.rsstartendtimeerror
msgid "Incorrect order of start and end times. Do you want to flip them?"
msgstr "Falsche Reihenfolge der Start- und Ende-Zeit. Wollen Sie die beiden vertauschen?"
#: vpsr.rsstarttimelbl
msgid "Start time:"
msgstr "Start-Zeit:"

View File

@@ -911,6 +911,10 @@ msgstr ""
msgid "Error: Unable to update "
msgstr ""
#: vpsr.rsstartendtimeerror
msgid "Incorrect order of start and end times. Do you want to flip them?"
msgstr ""
#: vpsr.rsstarttimelbl
msgid "Start time:"
msgstr ""

View File

@@ -937,6 +937,10 @@ msgstr ""
msgid "Error: Unable to update "
msgstr "Ошибка обновления"
#: vpsr.rsstartendtimeerror
msgid "Incorrect order of start and end times. Do you want to flip them?"
msgstr ""
#: vpsr.rsstarttimelbl
#, fuzzy
#| msgid "Start Time:"

View File

@@ -214,18 +214,6 @@ type
protected
FCat: array[0..9] of TVpCategoryInfo;
procedure SetCat(AIndex: Integer; AValue: TVpCategoryInfo);
{
FCat0: TVpCategoryInfo;
FCat1: TVpCategoryInfo;
FCat2: TVpCategoryInfo;
FCat3: TVpCategoryInfo;
FCat4: TVpCategoryInfo;
FCat5: TVpCategoryInfo;
FCat6: TVpCategoryInfo;
FCat7: TVpCategoryInfo;
FCat8: TVpCategoryInfo;
FCat9: TVpCategoryInfo;
}
public
constructor Create;
destructor Destroy; override;

View File

@@ -406,7 +406,6 @@ object DlgEventEdit: TDlgEventEdit
}
NumGlyphs = 1
MaxLength = 0
OnChangeBounds = StartDateChange
TabOrder = 4
end
object EndDate: TDateEdit
@@ -457,7 +456,6 @@ object DlgEventEdit: TDlgEventEdit
}
NumGlyphs = 1
MaxLength = 0
OnChangeBounds = EndDateChange
TabOrder = 5
end
object RepeatUntil: TDateEdit

View File

@@ -101,21 +101,15 @@ type
procedure OKBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure StartDateChange(Sender: TObject);
procedure StartTimeChange(Sender: TObject);
procedure EndTimeChange(Sender: TObject);
procedure AlarmAdvanceChange(Sender: TObject);
procedure AdvanceUpDownClick(Sender: TObject; Button: TUDBtnType);
procedure CustomIntervalChange(Sender: TObject);
procedure IntervalUpDownClick(Sender: TObject; Button: TUDBtnType);
procedure RecurringTypeChange(Sender: TObject);
procedure AlarmSetClick(Sender: TObject);
procedure EndDateChange(Sender: TObject);
procedure CBAllDayClick(Sender: TObject);
procedure SoundFinderBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure StartTimeExit(Sender: TObject);
procedure EndTimeExit(Sender: TObject);
private { Private declarations }
{$IFDEF LCL}
@@ -181,6 +175,7 @@ uses
{$R *.dfm}
{$ENDIF}
{ TVpRightAlignedEdit }
constructor TVpRightAlignedEdit.Create(AOwner: TComponent);
@@ -256,22 +251,19 @@ end;
procedure TDlgEventEdit.OKBtnClick(Sender: TObject);
var
res: Integer;
tStart, tEnd, t: TDateTime;
tStart, tEnd: TDateTime;
begin
tStart := StartDate.Date + StartTime.Time;
tEnd := EndDate.Date + EndTime.Time;
tStart := trunc(StartDate.Date) + frac(StartTime.Time);
tEnd := trunc(EndDate.Date) + frac(EndTime.Time);
if (tStart > tEnd) then begin
res := MessageDlg('Incorrect order of start and end times. Do you want to flip them?',
res := MessageDlg(RSStartEndTimeError,
mtConfirmation, [mbYes, mbNo], 0);
if res = mrYes then begin
t := tStart;
tStart := tEnd;
tEnd := t;
StartDate.Date := trunc(tStart);
StartTime.Time := frac(tStart);
EndDate.Date := trunc(tEnd);
EndTime.Time := frac(tEnd);
StartDate.Date := trunc(tEnd);
StartTime.Time := frac(tEnd);
EndDate.Date := trunc(tStart);
EndTime.Time := frac(tStart);
end else
exit;
end;
@@ -288,49 +280,9 @@ var
ColorRect: TRect;
begin
Category.Canvas.FillRect(ARect);
Color := clBlack;
case Index of
0: begin
Color := CatColorMap.Category0.Color;
Name := CatColorMap.Category0.Description;
end;
1: begin
Color := CatColorMap.Category1.Color;
Name := CatColorMap.Category1.Description;
end;
2: begin
Color := CatColorMap.Category2.Color;
Name := CatColorMap.Category2.Description;
end;
3: begin
Color := CatColorMap.Category3.Color;
Name := CatColorMap.Category3.Description;
end;
4: begin
Color := CatColorMap.Category4.Color;
Name := CatColorMap.Category4.Description;
end;
5: begin
Color := CatColorMap.Category5.Color;
Name := CatColorMap.Category5.Description;
end;
6: begin
Color := CatColorMap.Category6.Color;
Name := CatColorMap.Category6.Description;
end;
7: begin
Color := CatColorMap.Category7.Color;
Name := CatColorMap.Category7.Description;
end;
8: begin
Color := CatColorMap.Category8.Color;
Name := CatColorMap.Category8.Description;
end;
9: begin
Color := CatColorMap.Category9.Color;
Name := CatColorMap.Category9.Description;
end;
end; {Case}
Color := CatColorMap.GetCategory(Index).Color;
Name := CatColorMap.GetCategory(Index).Description;
SaveColor := Category.Canvas.Brush.Color;
Category.Canvas.Brush.Color := Color;
@@ -351,13 +303,10 @@ begin
Category.Canvas.TextOut(ARect.Left, ARect.Top, Name);
end;
{=====}
procedure TDlgEventEdit.CancelBtnClick(Sender: TObject);
begin
Close;
end;
{=====}
procedure TDlgEventEdit.PopulateDialog;
var
@@ -367,13 +316,17 @@ begin
ResourceNameLbl.Caption := Resource.Description;
{ Events }
StartDate.Date := Event.StartTime;
EndDate.Date := Event.EndTime;
RepeatUntil.Date := Event.RepeatRangeEnd;
StartDate.Date := trunc(Event.StartTime);
EndDate.Date := trunc(Event.EndTime);
RepeatUntil.Date := trunc(Event.RepeatRangeEnd);
{$IFDEF LCL}
StartTime.Time := frac(Event.StartTime);
EndTime.Time := frac(Event.EndTime);
{$ELSE}
StartTime.Text := FormatDateTime('hh:nn',Event.StartTime);
EndTime.Text := FormatDateTime('hh:nn',Event.EndTime);
{$ENDIF}
StartTimeChange(Self);
CBAllDay.Checked := Event.AllDayEvent;
AlarmWavPath := Event.DingPath;
@@ -406,13 +359,17 @@ begin
FLastEndTime := Event.EndTime;
end;
{=====}
procedure TDlgEventEdit.DePopulateDialog;
begin
{ Events }
{$IFDEF LCL}
Event.StartTime := StartDate.Date + StartTime.Time;
Event.EndTime := EndDate.Date + EndTime.Time;
{$ELSE}
Event.StartTime := StartDate.Date + StrToTime(StartTime.Text);
Event.EndTime := EndDate.Date + StrToTime(EndTime.Text);
{$ENDIF}
Event.RepeatRangeEnd := RepeatUntil.Date;
Event.Description := DescriptionEdit.Text;
Event.Location := LocationEdit.Text;
@@ -426,86 +383,6 @@ begin
Event.AllDayEvent := CBAllDay.Checked;
Event.DingPath := AlarmWavPath;
end;
{=====}
procedure TDlgEventEdit.StartDateChange(Sender: TObject);
begin
if StartDate.Date > EndDate.Date then
EndDate.Date := StartDate.Date;
end;
{=====}
procedure TDlgEventEdit.EndDateChange(Sender: TObject);
begin
if StartDate.Date > EndDate.Date then
StartDate.Date := EndDate.Date;
end;
{=====}
procedure TDlgEventEdit.StartTimeChange(Sender: TObject);
var
ST: TDateTime;
begin
{ Verify the value is valid }
try
ST := StrToTime(StartTime.Text);
except
StartTime.Color := clRed;
if Visible then
StartTime.SetFocus;
Exit;
end;
StartTime.Color := clWindow;
(*
{ if the end time is less than the start time then change the end time to }
{ follow the start time by 30 minutes }
if ST > StrToTime(EndTime.Text) then begin
if TimeFormat = tf24Hour then
EndTime.Text := FormatDateTime('h:nn', ST + 30 / MinutesInDay)
else
EndTime.Text := FormatDateTime('hh:nn AM/PM', ST + 30 / MinutesInDay);
end;
*)
end;
{=====}
procedure TDlgEventEdit.EndTimeChange(Sender: TObject);
function IsMidnight(ATime: TDateTime) : Boolean;
begin
Result := ATime = Trunc(ATime);
end;
var
ET: TDateTime;
begin
{ Verify the value is valid }
try
ET := StrToTime(EndTime.Text);
if (IsMidnight(ET)) and (not IsMidnight(FLastEndTime)) then
EndDate.Date := EndDate.Date + 1
else if (not IsMidnight(ET)) and (IsMidnight(FLastEndTime)) then
EndDate.Date := EndDate.Date - 1;
FLastEndTime := ET;
except
EndTime.Color := clRed;
EndTime.SetFocus;
Exit;
end;
EndTime.Color := clWindow;
{ if the end time is less than the start time then change the start time to }
{ precede the end time by 30 minutes }
if ET < StrToTime(StartTime.Text) then begin
if TimeFormat = tf24Hour then
StartTime.Text := FormatDateTime('h:mm', ET - 30 / MinutesInDay)
else
StartTime.Text := FormatDateTime('h:mm AM/PM', ET - 30 / MinutesInDay);
end;
end;
{=====}
procedure TDlgEventEdit.PopLists;
{$IFDEF DELPHI}
@@ -591,11 +468,12 @@ var
Str: string;
begin
if AAVerifying then exit;
AAVerifying := true;
{ Don't allow non numeric values. }
Str := AlarmAdvance.Text;
I := Length(Str);
if (Str[I] > #57) or (Str[I] < #48) then
if (Str[I] > '9') or (Str[I] < '0') then
Delete(Str, I, 1);
AlarmAdvance.Text := Str;
AAVerifying := false;
@@ -628,7 +506,7 @@ begin
CIVerifying := true;
Str := FCustomInterval.Text;
for I := 1 to Length(Str) do
if (Ord(Str[I]) in [48..57]) then
if (Str[I] in ['0'..'9']) then
Continue
else
Delete(Str, I, 1);
@@ -788,6 +666,7 @@ begin
CategoryLbl.Left := Category.Left - DELTA - GetLabelWidth(CategoryLbl);
end;
{ TVpEventEditDialog }
constructor TVpEventEditDialog.Create(AOwner: TComponent);
@@ -842,49 +721,6 @@ begin
end;
end;
end;
{=====}
procedure TDlgEventEdit.StartTimeExit(Sender: TObject);
var
ST : TDateTime;
begin
{ Verify the value is valid }
try
ST := StartDate.Date + StrToTime(StartTime.Text);
except
StartTime.Color := clRed;
StartTime.SetFocus;
Exit;
end;
StartTime.Color := clWindow;
{ If the end time is less than the start time then change the end }
{ time to follow the start time by 30 minutes }
if ST > EndDate.Date + StrToTime (EndTime.Text) then
EndTime.Text := FormatDateTime('hh:nn', ST + 30 / MinutesInDay);
end;
procedure TDlgEventEdit.EndTimeExit(Sender: TObject);
var
ET: TDateTime;
begin
{ Verify the value is valid }
try
ET := EndDate.Date + StrToTime(EndTime.Text);
except
EndTime.Color := clRed;
EndTime.SetFocus;
Exit;
end;
EndTime.Color := clWindow;
{ If the end time is less than the start time then change the }
{ start time to precede the end time by 30 minutes }
if ET < StartDate.Date + StrToTime (StartTime.Text) then
StartTime.Text := FormatDateTime('hh:nn', ET - 30 / MinutesInDay);
end;
end.

View File

@@ -137,6 +137,8 @@ resourcestring
{Event Specific}
RSFromSchedule = 'from your schedule?';
RSConfirmDeleteEvent = 'Delete event from schedule?';
RSStartEndTimeError = 'Incorrect order of start and end times. ' +
'Do you want to flip them?';
{Task Specific}
RSConfirmDeleteTask = 'Delete this task from your list?';