tvplanit: Refactor TVpDayView.SetTimeIntervals

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4781 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-06-20 10:21:06 +00:00
parent 8cd357069e
commit f4e4f7fb99
3 changed files with 13 additions and 247 deletions

View File

@ -50,3 +50,4 @@ msgstr "Info"
#: tmainform.tabtasks.caption #: tmainform.tabtasks.caption
msgid "Tasks" msgid "Tasks"
msgstr "Aufgaben" msgstr "Aufgaben"

View File

@ -1480,258 +1480,21 @@ end;
procedure TVpDayView.SetTimeIntervals(UseGran: TVpGranularity); procedure TVpDayView.SetTimeIntervals(UseGran: TVpGranularity);
var var
I, J: Integer; I, J: Integer;
grPerHour: Integer;
begin begin
case UseGran of FLineCount := MinutesInDay div GranularityMinutes[UseGran];
gr60Min: dvTimeIncSize := GranularityMinutes[UseGran] / MinutesInDay;
begin grPerHour := 60 div GranularityMinutes[UseGran];
FLineCount := 24;
dvTimeIncSize := 60 / MinutesInDay;
end;
gr30Min:
begin
FLineCount := 48;
dvTimeIncSize := 30 / MinutesInDay;
end;
gr20Min:
begin
FLineCount := 72;
dvTimeIncSize := 20 / MinutesInDay;
end;
gr15Min:
begin
FLineCount := 96;
dvTimeIncSize := 15 / MinutesInDay;
end;
gr10Min:
begin
FLineCount := 144;
dvTimeIncSize := 10 / MinutesInDay;
end;
gr06Min:
begin
FLineCount := 240;
dvTimeIncSize := 6 / MinutesInDay;
end;
gr05Min:
begin
FLineCount := 288;
dvTimeIncSize := 5 / MinutesInDay;
end;
end;
SetLength(dvLineMatrix, NumDays); SetLength(dvLineMatrix, NumDays);
for I := 0 to pred(NumDays) do
SetLength(dvLineMatrix[I], LineCount + 1);
for I := 0 to pred(NumDays) do begin for I := 0 to pred(NumDays) do begin
SetLength(dvLineMatrix[I], LineCount);
for J := 0 to pred(LineCount) do begin for J := 0 to pred(LineCount) do begin
dvLineMatrix[I,J].Time := 0.0; dvLineMatrix[I,J].Hour := TVpHours(J div grPerHour);
if J = 0 then begin dvLineMatrix[I,J].Minute := (J mod grPerHour) * GranularityMinutes[UseGran];
dvLineMatrix[I,J].Hour := TVpHours(0); dvLineMatrix[I,J].Time := ord(dvLineMatrix[I,J].Hour) / 24 + dvTimeIncSize * (J mod grPerHour);
dvLineMatrix[I,J].Minute := 0; end;
end end;
else begin
case UseGran of
gr60Min:
begin
dvLineMatrix[I,J].Time := J * (60 / MinutesInDay);
dvLineMatrix[I,J].Hour := TVpHours(J);
dvLineMatrix[I,J].Minute := 0;
end;
gr30Min:
begin
dvLineMatrix[I,J].Hour := TVpHours(J div 2);
case (J mod 2) of
0: begin
dvLineMatrix[I,J].Time := (J div 2) * (60 / MinutesInDay);
dvLineMatrix[I,J].Minute := 0;
end;
1: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize;
dvLineMatrix[I,J].Minute := 30;
end;
end;
end;
gr20Min:
begin
dvLineMatrix[I,J].Hour := TVpHours(J div 3);
case (J mod 3) of
0: begin
dvLineMatrix[I,J].Time := (J div 3) * (60 / MinutesInDay);
dvLineMatrix[I,J].Minute := 0;
end;
1: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize;
dvLineMatrix[I,J].Minute := 20;
end;
2: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 2;
dvLineMatrix[I,J].Minute := 40;
end;
end;
end;
gr15Min:
begin
dvLineMatrix[I,J].Hour := TVpHours(J div 4);
case J mod 4 of
0: begin
dvLineMatrix[I,J].Time := (J div 4) * (60 / MinutesInDay);
dvLineMatrix[I,J].Minute := 0;
end;
1: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize;
dvLineMatrix[I,J].Minute := 15;
end;
2: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 2;
dvLineMatrix[I,J].Minute := 30;
end;
3: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 3;
dvLineMatrix[I,J].Minute := 45;
end;
end;
end;
gr10Min:
begin
dvLineMatrix[I,J].Hour := TVpHours(J div 6);
case (J mod 6) of
0: begin
dvLineMatrix[I,J].Time := (J div 6) * (60 / MinutesInDay);
dvLineMatrix[I,J].Minute := 0;
end;
1: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize;
dvLineMatrix[I,J].Minute := 10;
end;
2: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 2;
dvLineMatrix[I,J].Minute := 20;
end;
3: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 3;
dvLineMatrix[I,J].Minute := 30;
end;
4: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 4;
dvLineMatrix[I,J].Minute := 40;
end;
5: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 5;
dvLineMatrix[I,J].Minute := 50;
end;
end;
end;
gr06Min:
begin
dvLineMatrix[I,J].Hour := TVpHours(J div 10);
case (J mod 10) of
0: begin
dvLineMatrix[I,J].Time := (J div 10) * (60 / MinutesInDay);
dvLineMatrix[I,J].Minute := 0;
end;
1: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize;
dvLineMatrix[I,J].Minute := 6;
end;
2: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 2;
dvLineMatrix[I,J].Minute := 12;
end;
3: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 3;
dvLineMatrix[I,J].Minute := 18;
end;
4: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 4;
dvLineMatrix[I,J].Minute := 24;
end;
5: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 5;
dvLineMatrix[I,J].Minute := 30;
end;
6: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 6;
dvLineMatrix[I,J].Minute := 36;
end;
7: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 7;
dvLineMatrix[I,J].Minute := 42;
end;
8: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 8;
dvLineMatrix[I,J].Minute := 48;
end;
9: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 9;
dvLineMatrix[I,J].Minute := 54;
end;
end;
end;
gr05Min:
begin
dvLineMatrix[I,J].Hour := TVpHours(J div 12);
case J mod 12 of
0: begin
dvLineMatrix[I,J].Time := (J div 12) * (60 / MinutesInDay);
dvLineMatrix[I,J].Minute := 0;
end;
1: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize;
dvLineMatrix[I,J].Minute := 5;
end;
2: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 2;
dvLineMatrix[I,J].Minute := 10;
end;
3: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 3;
dvLineMatrix[I,J].Minute := 15;
end;
4: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 4;
dvLineMatrix[I,J].Minute := 20;
end;
5: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 5;
dvLineMatrix[I,J].Minute := 25;
end;
6: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 6;
dvLineMatrix[I,J].Minute := 30;
end;
7: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 7;
dvLineMatrix[I,J].Minute := 35;
end;
8: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 8;
dvLineMatrix[I,J].Minute := 40;
end;
9: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 9;
dvLineMatrix[I,J].Minute := 45;
end;
10: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 10;
dvLineMatrix[I,J].Minute := 50;
end;
11: begin
dvLineMatrix[I,J].Time := Ord(dvLineMatrix[I,J].Hour) * (60 / MinutesInDay) + dvTimeIncSize * 11;
dvLineMatrix[I,J].Minute := 55;
end;
end;
end;
end;
end;
end; {for J...}
end; {for I...}
if FLineCount <= FVisibleLines then if FLineCount <= FVisibleLines then
FTopLine := HourToLine(h_00, FGranularity); FTopLine := HourToLine(h_00, FGranularity);

View File

@ -58,6 +58,8 @@ const
((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31), ((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)); (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31));
GranularityMinutes: Array[TVpGranularity] of Integer = (5, 6, 10, 15, 20, 30, 60);
function DaysInMonth(Year, Month : Integer) : Integer; function DaysInMonth(Year, Month : Integer) : Integer;
{-return the number of days in the specified month of a given year} {-return the number of days in the specified month of a given year}
function DefaultEpoch : Integer; function DefaultEpoch : Integer;