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
msgid "Tasks"
msgstr "Aufgaben"

View File

@ -1480,258 +1480,21 @@ end;
procedure TVpDayView.SetTimeIntervals(UseGran: TVpGranularity);
var
I, J: Integer;
grPerHour: Integer;
begin
case UseGran of
gr60Min:
begin
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;
FLineCount := MinutesInDay div GranularityMinutes[UseGran];
dvTimeIncSize := GranularityMinutes[UseGran] / MinutesInDay;
grPerHour := 60 div GranularityMinutes[UseGran];
SetLength(dvLineMatrix, NumDays);
for I := 0 to pred(NumDays) do
SetLength(dvLineMatrix[I], LineCount + 1);
for I := 0 to pred(NumDays) do begin
SetLength(dvLineMatrix[I], LineCount);
for J := 0 to pred(LineCount) do begin
dvLineMatrix[I,J].Time := 0.0;
if J = 0 then begin
dvLineMatrix[I,J].Hour := TVpHours(0);
dvLineMatrix[I,J].Minute := 0;
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...}
dvLineMatrix[I,J].Hour := TVpHours(J div grPerHour);
dvLineMatrix[I,J].Minute := (J mod grPerHour) * GranularityMinutes[UseGran];
dvLineMatrix[I,J].Time := ord(dvLineMatrix[I,J].Hour) / 24 + dvTimeIncSize * (J mod grPerHour);
end;
end;
if FLineCount <= FVisibleLines then
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, 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;
{-return the number of days in the specified month of a given year}
function DefaultEpoch : Integer;