tvplanit: Minor refactoring in day drawing routines of TVpWeekViewPainter.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4823 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-06-24 14:38:05 +00:00
parent d80869e322
commit 61e01e7744

View File

@ -55,6 +55,7 @@ type
implementation implementation
uses uses
StrUtils,
VpCanvasUtils, VpMisc, VpSR; VpCanvasUtils, VpMisc, VpSR;
type type
@ -256,12 +257,19 @@ var
EventList: TList; EventList: TList;
TodayStartTime: Double; TodayStartTime: Double;
TodayEndTime: Double; TodayEndTime: Double;
dayHeadHeight: Integer;
rowHeight: Integer;
timeFmt: String;
begin begin
// Abbreviations
dayHeadHeight := TVpWeekviewOpener(FWeekView).wvDayHeadHeight;
rowHeight := TVpWeekViewOpener(FWeekView).wvRowHeight;
{ draw day head} { draw day head}
RenderCanvas.Font.Assign(FWeekView.DayHeadAttributes.Font); RenderCanvas.Font.Assign(FWeekView.DayHeadAttributes.Font);
RenderCanvas.Brush.Color := RealDayHeadAttrColor; RenderCanvas.Brush.Color := RealDayHeadAttrColor;
TextRect := DayRect; TextRect := DayRect;
TextRect.Bottom := DayRect.Top + TVpWeekViewOpener(FWeekView).wvDayHeadHeight; TextRect.Bottom := DayRect.Top + dayHeadHeight;
TPSFillRect(RenderCanvas, Angle, RenderIn, TextRect); TPSFillRect(RenderCanvas, Angle, RenderIn, TextRect);
if FWeekView.DayHeadAttributes.Bordered then if FWeekView.DayHeadAttributes.Bordered then
TPSRectangle(RenderCanvas, Angle, RenderIn, TextRect); TPSRectangle(RenderCanvas, Angle, RenderIn, TextRect);
@ -287,7 +295,7 @@ begin
if (FWeekView.DataStore <> nil) and (FWeekView.DataStore.Resource <> nil) and if (FWeekView.DataStore <> nil) and (FWeekView.DataStore.Resource <> nil) and
(FWeekView.DataStore.Resource.Schedule.EventCountByDay(StartDate + AIndex) > 0) and (FWeekView.DataStore.Resource.Schedule.EventCountByDay(StartDate + AIndex) > 0) and
(HeightOf(DayRect) >= TextMargin * 2 + TVpWeekViewOpener(FWeekView).wvDayHeadHeight) (HeightOf(DayRect) >= TextMargin * 2 + dayHeadHeight)
then begin then begin
{ events exist for this day } { events exist for this day }
EventList := TList.Create; EventList := TList.Create;
@ -296,8 +304,8 @@ begin
FWeekView.DataStore.Resource.Schedule.EventsByDate(StartDate + AIndex, EventList); FWeekView.DataStore.Resource.Schedule.EventsByDate(StartDate + AIndex, EventList);
{ initialize TextRect for this day } { initialize TextRect for this day }
TextRect := DayRect; TextRect := DayRect;
TextRect.Top := DayRect.Top + TVpWeekViewOpener(FWeekView).wvDayHeadHeight; TextRect.Top := DayRect.Top + dayHeadHeight;
TextRect.Bottom := TextRect.Top + TVpWeekViewOpener(FWeekView).wvRowHeight; TextRect.Bottom := TextRect.Top + rowHeight;
{ Handle All Day Events } { Handle All Day Events }
tmpRect := TextRect; tmpRect := TextRect;
@ -343,20 +351,19 @@ begin
{ format the display text } { format the display text }
DayStr := ''; DayStr := '';
TodayStartTime := TVpEvent(EventList.List^[j]).StartTime; TodayStartTime := TVpEvent(EventList.List^[J]).StartTime;
TodayEndTime := TVpEvent(EventList.List^[j]).EndTime; TodayEndTime := TVpEvent(EventList.List^[J]).EndTime;
if trunc(TodayStartTime) < trunc(StartDate + AIndex) then //First Event if trunc(TodayStartTime) < trunc(StartDate + AIndex) then //First Event
TodayStartTime := 0; TodayStartTime := 0;
if trunc(TodayEndTime) > trunc(StartDate + AIndex) then //Last Event if trunc(TodayEndTime) > trunc(StartDate + AIndex) then //Last Event
TodayEndTime := 0.9999; TodayEndTime := 0.9999;
if FWeekView.ShowEventTime then if FWeekView.ShowEventTime then
begin begin
if FWeekView.TimeFormat = tf24Hour then // wp: why different times for 24 and 12 hours ? timefmt := IfThen(FWeekView.TimeFormat = tf24Hour, 'hh:nn', 'hh:nn AM/PM');
DayStr := FormatDateTime('hh:nn', TodayStartTime) + ' - ' + DayStr := Format('%s - %s: ', [
FormatDateTime('hh:nn', TodayEndTime) + ': ' FormatDateTime(timeFmt, TodayStartTime),
else FormatDateTime(timeFmt, TodayEndTime)
DayStr := FormatDateTime('hh:nn AM/PM', TVpEvent(EventList.List^[J]).StartTime) + ' - ' + ]);
FormatDateTime('hh:nn AM/PM', TVpEvent(EventList.List^[J]).EndTime) + ': ';
end; end;
if DayStr = '' then if DayStr = '' then
DayStr := TVpEvent(EventList.List^[J]).Description DayStr := TVpEvent(EventList.List^[J]).Description
@ -383,7 +390,7 @@ begin
Inc(EAIndex); Inc(EAIndex);
TextRect.Top := TextRect.Bottom; TextRect.Top := TextRect.Bottom;
TextRect.Bottom := TextRect.Top + TVpWeekViewOpener(FWeekView).wvRowHeight; TextRect.Bottom := TextRect.Top + rowHeight;
end; { for loop } end; { for loop }
finally finally
EventList.Free; EventList.Free;
@ -456,6 +463,7 @@ var
DayRect: TRect; DayRect: TRect;
EAIndex: Integer; EAIndex: Integer;
I: Integer; I: Integer;
headerHeight: Integer;
{ {
TextRect: TRect; TextRect: TRect;
I, J, SL: Integer; I, J, SL: Integer;
@ -465,7 +473,7 @@ var
TodayEndTime: Double; TodayEndTime: Double;
} }
begin begin
{ initialize WeekdayArray } { Initialize WeekdayArray }
with TVpWeekViewOpener(FWeekView) do with TVpWeekViewOpener(FWeekView) do
for I := 0 to pred(Length(wvWeekdayArray)) do begin for I := 0 to pred(Length(wvWeekdayArray)) do begin
wvWeekdayArray[I].Rec.TopLeft := Point(-1, -1); wvWeekdayArray[I].Rec.TopLeft := Point(-1, -1);
@ -485,8 +493,19 @@ begin
RenderCanvas.Pen.Color := RealLineColor; RenderCanvas.Pen.Color := RealLineColor;
RenderCanvas.Pen.Style := psSolid; RenderCanvas.Pen.Style := psSolid;
{ build the first dayrect } { build the first day rect }
DayRectHeight := (RealBottom - RealTop - TVpWeekViewOpener(FWeekView).wvHeaderHeight) div 3; headerHeight := TVpWeekViewOpener(FWeekView).wvHeaderHeight;
DayRectHeight := (RealBottom - RealTop - headerHeight) div 3;
DayRect := Rect(
RealLeft + 1,
RealTop + headerHeight + 2,
RealLeft + (RealRight - RealLeft) div 2 + 1,
Realtop + headerHeight + DayRectHeight
);
if FWeekView.DrawingStyle = ds3D then
inc(DayRect.Top, 1);
(*
if FWeekView.DrawingStyle = ds3D then if FWeekView.DrawingStyle = ds3D then
DayRect.TopLeft := Point(RealLeft + 1, RealTop + TVpWeekViewOpener(FWeekView).wvHeaderHeight + 3) DayRect.TopLeft := Point(RealLeft + 1, RealTop + TVpWeekViewOpener(FWeekView).wvHeaderHeight + 3)
else else
@ -494,7 +513,7 @@ begin
DayRect.BottomRight := Point( DayRect.BottomRight := Point(
RealLeft + (RealRight - RealLeft) div 2 + 1, RealLeft + (RealRight - RealLeft) div 2 + 1,
RealTop + TVpWeekViewOpener(FWeekView).wvHeaderHeight + DayRectHeight RealTop + TVpWeekViewOpener(FWeekView).wvHeaderHeight + DayRectHeight
); ); *)
{ draw the day frames } { draw the day frames }
for I := 0 to 6 do for I := 0 to 6 do
@ -502,12 +521,8 @@ begin
{ Draw the center vertical line } { Draw the center vertical line }
RenderCanvas.Pen.Color := RealLineColor; RenderCanvas.Pen.Color := RealLineColor;
TPSMoveTo(RenderCanvas, Angle, RenderIn, TPSMoveTo(RenderCanvas, Angle, RenderIn, RealLeft + (RealRight - RealLeft) div 2, RealTop + headerHeight + 2);
RealLeft + (RealRight - RealLeft) div 2, RealTop + TVpWeekViewOpener(FWeekView).wvHeaderHeight + 2 TPSLineTo(RenderCanvas, Angle, RenderIn, RealLeft + (RealRight - RealLeft) div 2, RealBottom - 1);
);
TPSLineTo(RenderCanvas, Angle, RenderIn,
RealLeft + (RealRight - RealLeft) div 2, RealBottom - 1
);
end; end;
procedure TVpWeekViewPainter.DrawHeader; procedure TVpWeekViewPainter.DrawHeader;