You've already forked lazarus-ccr
TVPlanIt: Fix display of overlapping "same" events in DayView.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8177 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -82,7 +82,6 @@ const
|
|||||||
ExtraBarWidth = 2; { The extra, draggable area on either side }
|
ExtraBarWidth = 2; { The extra, draggable area on either side }
|
||||||
{ of the Contact Grid's horizontal bars. }
|
{ of the Contact Grid's horizontal bars. }
|
||||||
CompareTimeEPS = 0.1 * OneSecond; { Epsilon for time comparison, 0.1 sec }
|
CompareTimeEPS = 0.1 * OneSecond; { Epsilon for time comparison, 0.1 sec }
|
||||||
// CompareTimeEPS = 1.0 / (24*60*60*10); { Epsilon for time comparison, 0.1 sec }
|
|
||||||
|
|
||||||
cmPerInch = 2.54; { 1 inch is 2.54 cm }
|
cmPerInch = 2.54; { 1 inch is 2.54 cm }
|
||||||
|
|
||||||
|
@ -187,10 +187,7 @@ begin
|
|||||||
{ start time AND its end time is after or equal to the Event's }
|
{ start time AND its end time is after or equal to the Event's }
|
||||||
{ end time, then the events overlap and we will need to increment }
|
{ end time, then the events overlap and we will need to increment }
|
||||||
{ the value of K. }
|
{ the value of K. }
|
||||||
(
|
(SameTimeOrEarlier(tmpStart, EventStart) and SameTimeOrLater(tmpEnd, EventEnd))
|
||||||
(SameTime(tmpStart, EventStart) or (tmpStart < EventStart)) and
|
|
||||||
(SameTime(tmpEnd, EventEnd) or (tmpEnd > EventEnd))
|
|
||||||
)
|
|
||||||
then begin
|
then begin
|
||||||
{ Count this event at this level }
|
{ Count this event at this level }
|
||||||
Inc(Levels[EArray[K].Level]);
|
Inc(Levels[EArray[K].Level]);
|
||||||
@ -260,21 +257,28 @@ end;
|
|||||||
function TVpDayViewPainter.GetMaxOLEvents(Event: TVpEvent; const EArray: TVpDvEventArray): Integer;
|
function TVpDayViewPainter.GetMaxOLEvents(Event: TVpEvent; const EArray: TVpDvEventArray): Integer;
|
||||||
var
|
var
|
||||||
K: Integer;
|
K: Integer;
|
||||||
Tmp: TVpEvent;
|
tmp: TVpEvent;
|
||||||
|
tmpStart, tmpEnd: TTime;
|
||||||
|
eventStart, eventEnd: TTime;
|
||||||
begin
|
begin
|
||||||
result := 1;
|
result := 1;
|
||||||
K := 0;
|
K := 0;
|
||||||
Tmp := TVpEvent(EArray[K].Event);
|
eventStart := frac(Event.StartTime);
|
||||||
while Tmp <> nil do begin
|
eventEnd := frac(Event.EndTime);
|
||||||
|
tmp := TVpEvent(EArray[K].Event);
|
||||||
|
while tmp <> nil do begin
|
||||||
|
tmpStart := frac(tmp.StartTime);
|
||||||
|
tmpEnd := frac(tmp.EndTime);
|
||||||
{ if the Tmp event's StartTime or EndTime falls within the range of Event. }
|
{ if the Tmp event's StartTime or EndTime falls within the range of Event. }
|
||||||
if TimeInRange(frac(Tmp.StartTime), frac(Event.StartTime), frac(Event.EndTime), false) or
|
if TimeInRange(tmpStart, EventStart, EventEnd, false) or
|
||||||
TimeInRange(frac(Tmp.EndTime), frac(Event.StartTime), frac(Event.EndTime), false) or
|
TimeInRange(tmpEnd, EventStart, EventEnd, false) or
|
||||||
{ or the Tmp event's StartTime is before or equal to the Event's }
|
{ or the Tmp event's StartTime is before or equal to the Event's }
|
||||||
{ start time AND its end time is after or equal to the Event's }
|
{ start time AND its end time is after or equal to the Event's }
|
||||||
{ end time, then the events overlap and we will need to check the }
|
{ end time, then the events overlap and we will need to check the }
|
||||||
{ value of OLLevels. If it is bigger than result, then modify }
|
{ value of OLLevels. If it is bigger than result, then modify }
|
||||||
{ Result accordingly. }
|
{ Result accordingly. }
|
||||||
((frac(Tmp.StartTime) <= frac(Event.StartTime)) and (frac(Tmp.EndTime) >= frac(Event.EndTime)))
|
(SameTimeOrEarlier(tmpStart, EventStart) and SameTimeOrLater(tmpEnd, EventEnd))
|
||||||
|
// ((frac(Tmp.StartTime) <= frac(Event.StartTime)) and (frac(Tmp.EndTime) >= frac(Event.EndTime)))
|
||||||
then begin
|
then begin
|
||||||
if EArray[K].OLLevels > result then
|
if EArray[K].OLLevels > result then
|
||||||
Result := EArray[K].OLLevels;
|
Result := EArray[K].OLLevels;
|
||||||
|
@ -147,6 +147,8 @@ function GetWeekOfYear(ADate: TDateTime): byte;
|
|||||||
function IsWeekEnd(ADate: TDateTime): Boolean;
|
function IsWeekEnd(ADate: TDateTime): Boolean;
|
||||||
function SameDate(dt1, dt2: TDateTime): Boolean;
|
function SameDate(dt1, dt2: TDateTime): Boolean;
|
||||||
function SameTime(t1, t2: TTime): Boolean;
|
function SameTime(t1, t2: TTime): Boolean;
|
||||||
|
function SameTimeOrEarlier(t1, t2: TTime): Boolean;
|
||||||
|
function SameTimeOrLater(t1, t2: TTime): Boolean;
|
||||||
function DateInRange(ADate, StartDate, EndDate: TDateTime; IncludeLimits: Boolean): Boolean;
|
function DateInRange(ADate, StartDate, EndDate: TDateTime; IncludeLimits: Boolean): Boolean;
|
||||||
function TimeInRange(ATime, StartTime, EndTime: TDateTime; IncludeLimits: Boolean): Boolean;
|
function TimeInRange(ATime, StartTime, EndTime: TDateTime; IncludeLimits: Boolean): Boolean;
|
||||||
|
|
||||||
@ -806,6 +808,16 @@ begin
|
|||||||
Result := SameValue(t1, t2, CompareTimeEps);
|
Result := SameValue(t1, t2, CompareTimeEps);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function SameTimeOrEarlier(t1, t2: TTime): Boolean;
|
||||||
|
begin
|
||||||
|
Result := SameTime(t1, t2) or (t1 < t2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function SameTimeOrLater(t1, t2: TTime): Boolean;
|
||||||
|
begin
|
||||||
|
Result := SameTime(t1, t2) or (t1 > t2);
|
||||||
|
end;
|
||||||
|
|
||||||
// Calculates ISO week number (checked with Jan 1, 2016, which is in week 53).
|
// Calculates ISO week number (checked with Jan 1, 2016, which is in week 53).
|
||||||
function GetWeekOfYear(ADate: TDateTime): byte;
|
function GetWeekOfYear(ADate: TDateTime): byte;
|
||||||
// wp: was in TvWeekView.
|
// wp: was in TvWeekView.
|
||||||
|
Reference in New Issue
Block a user