| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetInfo () declarative as String | 
| { | 
|   Description: 'Get information about the Event and the RecurrencePattern in textual format.' | 
|   TextBody: | 
|   [* | 
|     value   := ""; | 
|     event   := this.Event(); | 
|      | 
|     if( this.IsRecurring() ) | 
|     {  | 
|       fromTo := " from  " + event.StartTimeOfDay().Format( "H:m" ) | 
|               + " to "    + event.EndTimeOfDay()  .Format( "H:m" ); | 
|      | 
|       value := this.RecurrencePattern().Info() + fromTo; | 
|     } | 
|     else | 
|     { | 
|       timezone := event.Calendar().GetTimeZone(); | 
|       value    := LibCal_Participation::GetInfoNonRecurring( this.StartDate(), event.StartTimeOfDay(), | 
|                                                              this.EndDate(),   event.EndTimeOfDay(), | 
|                                                              timezone,         event.Duration() ); | 
|     } | 
|      | 
|     // Add the duration, except when it concerns event "Always available". | 
|     if( not event.IsAlwaysAvailableEvent() ) | 
|     { | 
|       value := value + LibCal_Participation::GetInfoDuration( event.Duration() ); | 
|     } | 
|        | 
|     return value; | 
|      | 
|     /* @PvG | 
|     value   := ""; | 
|     event   := this.Event(); | 
|     convOps := ConversionOptions::ISO(); | 
|      | 
|     if( this.IsRecurring() ) | 
|     {  | 
|       fromTo := " from  " + event.StartTimeOfDay().Format( "H:m" ) | 
|               + " to "    + event.EndTimeOfDay()  .Format( "H:m" ); | 
|      | 
|       value := this.RecurrencePattern().Info() + fromTo; | 
|     } | 
|     else | 
|     { | 
|       // No RecurrencePattern, only from and to. | 
|       // Format depending on whether the participation is on one day or not. | 
|       // Show the info using the timezone of the calendar instead of in GMT. | 
|       timezone       := this.Event().Calendar().GetTimeZone(); | 
|       startDate      := this.StartTime().Date(      timezone ); | 
|       startTimeOfDay := this.StartTime().TimeOfDay( timezone ); | 
|       endDate        := this.EndTime()  .Date(      timezone ); | 
|       endTimeOfDay   := this.EndTime()  .TimeOfDay( timezone ); | 
|         | 
|       if( this.EndDate() = this.StartDate() ) | 
|       { | 
|         value :=             startDate.Format( "dd D-MM-Y" ) | 
|                + " from  " + startTimeOfDay.Format( "H:m", convOps ) | 
|                + " to "    + endTimeOfDay  .Format( "H:m", convOps ); | 
|       } | 
|       else | 
|       { | 
|         value := "from  " + startDate.Format( "dd D2-MM-Y", convOps ) + startTimeOfDay.Format( "  H:m", convOps ) | 
|                + " to "   + endDate  .Format( "dd D2-MM-Y", convOps ) + endTimeOfDay  .Format( "  H:m", convOps ); | 
|       } | 
|     } | 
|      | 
|     // Don't show the duration for event "Always available". | 
|     if( not event.IsAlwaysAvailableEvent() ) | 
|     { | 
|       // Format the duration depending on its value. | 
|       dur  := event.Duration(); | 
|       mask := "h:m"; | 
|        | 
|       if( dur >= Duration::Days( 1 ) ) | 
|       { | 
|         days := "d 'day" + ifexpr( dur >= Duration::Days( 2 ), "s'", "'" ); | 
|         mask := days     + ifexpr( dur  = dur.StartOfDay()   , ""  , "  " + mask ); | 
|       } | 
|        | 
|       duration := "  (duration = " + dur.Format( mask ) + ")"; | 
|          | 
|       value := value + duration; | 
|     } | 
|        | 
|     return value; | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |