Quintiq file version 2.0 #parent: #root Method UpdateStartAndEnd () id:Method_LibCal_dlgCalendarSettings_UpdateStartAndEnd { #keys: '[131094.1.162996849]' 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 ); *] }