lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Quintiq file version 2.0
#parent: #root
Method UpdateDuration () id:Method_LibCal_dlgEditTimeInterval_UpdateDuration
{
  #keys: '[131094.0.2073176582]'
  Body:
  [*
    if( dsStartDate.Date().IsFinite() and
        dsEndDate  .Date().IsFinite() )
    {
      timezone := TimeZone::UTCTimeZone();  // Use the UTC-timezone here, don't correct for a specific timezone.  
      
      // Don't use AddAsPeriod here, the 'nett' duration should be calculated here.
      start    := dsStartDate.Date().Add( timezone, durStartTimeOfDay.Duration() );
      end      := dsEndDate  .Date().Add( timezone, durEndTimeOfDay  .Duration() );
      duration := end - start;
      
      // When the duration is one or more full days, the time should not be shown.
      hideTime := LibCal_Event::USE_ONLY_DAYS() or
                  ( duration.HourOfDay() = 0 and duration.MinuteOfHour() = 0 );
      
      mask := ifexpr( hideTime, "", "h:m" );
      
      if( abs( duration ) >= Duration::Days( 1 ) )
      {
        mask := "d 'day" + ifexpr( abs( duration ) >= Duration::Days( 2 ), "s'", "'" ) + "  " + mask;
      }
      
      valDuration.Text( duration.Format( mask ) );
    }
  *]
}