diff --git a/components/tvplanit/languages/demo.de.po b/components/tvplanit/languages/demo.de.po index 63daf33f3..7426b727f 100644 --- a/components/tvplanit/languages/demo.de.po +++ b/components/tvplanit/languages/demo.de.po @@ -50,3 +50,4 @@ msgstr "Info" #: tmainform.tabtasks.caption msgid "Tasks" msgstr "Aufgaben" + diff --git a/components/tvplanit/source/vpdayview.pas b/components/tvplanit/source/vpdayview.pas index 344bfb01b..036461ceb 100644 --- a/components/tvplanit/source/vpdayview.pas +++ b/components/tvplanit/source/vpdayview.pas @@ -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); diff --git a/components/tvplanit/source/vpmisc.pas b/components/tvplanit/source/vpmisc.pas index 6105c1f7f..a6f4a616f 100644 --- a/components/tvplanit/source/vpmisc.pas +++ b/components/tvplanit/source/vpmisc.pas @@ -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;