Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method UpdateStartAndEnd () id:Method_LibCal_dpCalendarSettings_UpdateStartAndEnd 
 | 
{ 
 | 
  #keys: '[146730.0.1349443075]' 
 | 
  Body: 
 | 
  [* 
 | 
    now      := DateTime::Now(); 
 | 
    base     := dtBase.DateTime(); 
 | 
    window   := [Number]edtWindow.Text(); 
 | 
    history  := [Number]edtHistory.Text(); 
 | 
    interval := durUpdateInterval.Duration(); 
 | 
    timezone := LibCal_GlobalState.GetLocalTimeZone(); 
 | 
     
 | 
    if( TimeZone::HasTimeZoneSupport() ) 
 | 
    { 
 | 
      now  := now  + timezone.RawOffset();  // now and base are in GMT (?) and need to be adjusted 
 | 
      base := base + timezone.RawOffset();  // in order to calculate the correct times to show in the dialog 
 | 
    } 
 | 
     
 | 
    start      := base; 
 | 
    lastUpdate := base; 
 | 
     
 | 
    if( now >= base and 
 | 
        interval > Duration::Zero() ) 
 | 
    { 
 | 
      if( base.IsInfinite() ) 
 | 
      { 
 | 
        base := now.StartOfDay( timezone ); 
 | 
      } 
 | 
     
 | 
      nrOfIntervalsSinceBase := ( now - base ) div interval; 
 | 
      lastUpdate             := base + nrOfIntervalsSinceBase * interval; 
 | 
    } 
 | 
     
 | 
    start := lastUpdate - Duration::Days( history ); 
 | 
    end   := guard( start + Duration::Days( window ), DateTime::MinDateTime() ); 
 | 
     
 | 
    mask    := "D2-MM-Y  H2:m"; 
 | 
    convOps := ConversionOptions::ISO(); 
 | 
     
 | 
    lblStart.Text( start.Format( mask, convOps ) ); 
 | 
    lblEnd.Text(   end  .Format( mask, convOps ) ); 
 | 
     
 | 
    lblLastUpdate.Text( lastUpdate.Format( mask, convOps ) ); 
 | 
     
 | 
    nextUpdate := "-"; 
 | 
    if( interval > Duration::Zero() ) 
 | 
    { 
 | 
      nextUpdate := ifexpr( base > now, base, lastUpdate + interval ).Format( mask, convOps ); 
 | 
    } 
 | 
    lblNextUpdate.Text( nextUpdate ); 
 | 
  *] 
 | 
} 
 |