You've already forked lazarus-ccr
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:
@ -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;
|
||||||
|
Reference in New Issue
Block a user