xref: /trunk/main/wizards/source/schedule/CalendarMain.xba (revision fc9fd3f14a55d77b35643a64034752a178b2a5b0)
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3<script:module xmlns:script="http://openoffice.org/2000/script" script:name="CalendarMain" script:language="StarBasic">Option Explicit
4
5Const _DEBUG = 0
6
7&apos; CalenderMain
8Public sCurLangLocale as String
9Public sCurCountryLocale as String
10&apos; This flag serves as a query if the individual Data should be saved
11Public bCalOwnDataChanged as Boolean
12
13&apos;BankHoliday Functions
14Public CalBankholidayName$ (1 To 374)
15Public CalTypeOfBankHoliday% (1 To 374)
16
17Public Const cHolidayType_None = 0
18Public Const cHolidayType_Full = 1
19Public Const cHolidayType_Half = 2
20Public Const cHolidayType_Own = 4
21
22Public cCalSubcmdDeleteSelect_DeleteSelEntry$
23Public cCalSubcmdDeleteSelect_DeleteSelEntryTitle$
24Public cCalSubcmdSwitchOwnDataOrGeneral_Back$
25Public cCalSubcmdSwitchOwnDataOrGeneral_OwnData$
26
27&apos;Language
28Public cCalLongMonthNames(11) as String
29Public cCalShortMonthNames(11) as String
30
31Public sBitmapFilename$
32Public sCalendarTitle$, sMonthTitle$, sWizardTitle$, sError$
33Public cCalStyleWorkday$, cCalStyleWeekend$
34
35Public CalChoosenLand as Integer
36
37Public oDocument as Object
38Public oSheets as Object
39Public oSheet as Object
40Public oStatusLine as Object
41Public bCancelTask as Boolean
42Public oNumberFormatter as Object
43
44&apos; BL* means &quot;BundesLand&quot; (for german states only)
45Public CONST CalBLBayern         = 1
46Public CONST CalBLBadenWuert     = 2
47Public CONST CalBLBerlin         = 3
48Public CONST CalBLBremen         = 4
49Public CONST CalBLBrandenburg    = 5
50Public CONST CalBLHamburg        = 6
51Public CONST CalBLHessen         = 7
52Public CONST CalBLMeckPomm       = 8
53Public CONST CalBLNiedersachsen  = 9
54Public CONST CalBLNordrheinWest  = 10
55Public CONST CalBLRheinlandPfalz = 11
56Public CONST CalBLSaarland       = 12
57Public CONST CalBLSachsen        = 13
58Public CONST CalBLSachsenAnhalt  = 14
59Public CONST CalBLSchlHolstein   = 15
60Public CONST CalBLThueringen     = 16
61
62Public DlgCalendar as Object
63Public DlgCalModel as Object
64Public lDateFormat as Long
65Public lDateStandardFormat as Long
66
67
68
69Sub CalAutopilotTable()
70Dim BitmapDir as String
71Dim iThisMonth as Integer
72
73&apos;On Error Goto ErrorHandler
74    BasicLibraries.LoadLibrary(&quot;Tools&quot;)
75    bSelectByMouseMove = True
76    oDocument = ThisComponent
77    oStatusline = oDocument.GetCurrentController.GetFrame.CreateStatusIndicator
78    ToggleWindow(False)
79    sCurLangLocale = oDocument.CharLocale.Language
80    sCurCountryLocale = oDocument.CharLocale.Country
81    DlgCalendar = LoadDialog(&quot;Schedule&quot;, &quot;DlgCalendar&quot;)
82    DlgCalModel = DlgCalendar.Model
83    LoadLanguage(sCurLangLocale)
84    CalInitGlobalVariablesDate()
85    BitmapDir = GetOfficeSubPath(&quot;Template&quot;,&quot;../wizard/bitmap&quot;)
86    DlgCalModel.imgCountry.ImageURL = BitmapDir &amp; sBitmapFilename
87    CalChoosenLand = -2
88    CalLoadOwnData()
89
90    With DlgCalModel
91        .cmdDelete.Enabled = False
92        .lstMonth.StringItemList() = cCalShortMonthNames()
93        Select Case sCurLangLocale
94            Case cLANGUAGE_JAPANESE
95                .lstOwnData.FontName = &quot;HG MinochoL&quot;
96                .txtEvent.FontName = &quot;HG MinchoL&quot;
97            Case cLANGUAGE_CHINESE
98                If oDocument.CharLocale.Country = &quot;CN&quot; Then
99                    .lstOwnData.FontName = &quot;FZ Song Ti&quot;
100                    .txtEvent.FontName = &quot;FZ Song Ti&quot;
101                Else
102                    .lstOwnData.FontName = &quot;FZ Ming Ti&quot;
103                    .txtEvent.FontName = &quot;FZ Ming Ti&quot;
104                End If
105            Case &quot;ko&quot;
106                .lstOwnData.FontName = &quot;Sun Gulim&quot;
107                .txtEvent.FontName = &quot;Sun Gulim&quot;
108        End Select
109        .lstOwnEventMonth.StringItemList() = cCalShortMonthNames()
110        .optYear.State = 1
111        .txtYear.Value = Year(Now())
112        .txtYear.Tag = .txtYear.Value
113        .Step = 1
114    End With
115    SetupNumberFormatter(sCurLangLocale, sCurCountryLocale)
116    CalChooseCalendar()  &apos; month
117    iThisMonth = Month(Now)
118    DlgCalendar.GetControl(&quot;lstMonth&quot;).SelectItemPos(iThisMonth-1, True)
119    DlgCalendar.GetControl(&quot;lstHolidays&quot;).SelectItemPos(0,True)
120    DlgCalModel.cmdGoOn.DefaultButton = True
121    ToggleWindow(True)
122    DlgCalendar.GetControl(&quot;lblHolidays&quot;).Visible = sCurLangLocale  = cLANGUAGE_GERMAN
123    DlgCalendar.GetControl(&quot;lstHolidays&quot;).Visible = sCurLangLocale  = cLANGUAGE_GERMAN
124    fHeightCorrFactor = DlgCalendar.GetControl(&quot;imgCountry&quot;).Size.Height/198
125    fWidthCorrFactor = DlgCalendar.GetControl(&quot;imgCountry&quot;).Size.Width/166
126    DlgCalendar.Execute()
127    DlgCalendar.Dispose()
128    Exit Sub
129ErrorHandler:
130    MsgBox(sError$, 16, sWizardTitle$)
131End Sub
132
133
134Sub SetupNumberFormatter(sCurLangLocale as String, sCurCountryLocale as String)
135Dim oFormats as Object
136Dim DateFormatString as String
137    oFormats = oDocument.getNumberFormats()
138    Select Case sCurLangLocale
139        Case cLANGUAGE_GERMAN
140            DateFormatString = &quot;TT.MMM&quot;
141        Case cLANGUAGE_ENGLISH
142            DateFormatString = &quot;MMM DD&quot;
143        Case cLANGUAGE_FRENCH
144            DateFormatString = &quot;JJ/MMM&quot;
145        Case cLANGUAGE_ITALIAN
146            DateFormatString = &quot;GG/MMM&quot;
147        Case cLANGUAGE_SPANISH
148            DateFormatString = &quot;DD/MMM&quot;
149        Case cLANGUAGE_PORTUGUESE
150            If sCurCountryLocale = &quot;BR&quot; Then
151                DateFormatString = &quot;DD/MMM&quot;
152            Else
153                DateFormatString = &quot;DD-MMM&quot;
154            End If
155        Case cLANGUAGE_DUTCH
156            DateFormatString = &quot;DD/MMM&quot;
157        Case cLANGUAGE_SWEDISH
158            DateFormatString = &quot;MMM DD&quot;
159        Case cLANGUAGE_DANISH
160            DateFormatString = &quot;DD-MMM&quot;
161        Case cLANGUAGE_POLISH
162            DateFormatString = &quot;MMM DD&quot;
163        Case cLANGUAGE_RUSSIAN
164            DateFormatString = &quot;MMM DD&quot;
165        Case cLANGUAGE_JAPANESE
166            DateFormatString = &quot;M月D日&quot;
167        Case cLANGUAGE_CHINESE
168            If sCurCountryLocale = &quot;TW&quot; Then
169                DateFormatString = &quot;MMMMD&quot; &amp;&quot;&quot;&quot;&quot; &amp; &quot;日&quot; &amp; &quot;&quot;&quot;&quot;
170            Else
171                DateFormatString = &quot;M&quot; &amp; &quot;&quot;&quot;&quot; &amp; &quot;月&quot; &amp; &quot;&quot;&quot;&quot; &amp; &quot;D&quot; &amp;&quot;&quot;&quot;&quot; &amp; &quot;日&quot; &amp; &quot;&quot;&quot;&quot;
172            End If
173        Case cLANGUAGE_GREEK
174            DateFormatString = &quot;DD/MMM&quot;
175        Case cLANGUAGE_TURKISH
176            DateFormatString = &quot;DD/MMM&quot;
177        Case cLANGUAGE_POLISH
178            DateFormatString = &quot;MMM DD&quot;
179        Case cLANGUAGE_FINNISH
180            DateFormatString = &quot;PP.KKK&quot;
181    End Select
182
183    lDateFormat = AddNumberFormat(oFormats, DateFormatString, oDocument.CharLocale)
184    lDateStandardFormat = oFormats.getStandardFormat(com.sun.star.util.NumberFormat.DATE, oDocument.CharLocale)
185
186&apos;  lDateStandardFormat = AddNumberFormat(oFormats, StandardDateFormatString, oDocument.CharLocale)
187    oNumberFormatter = createUNOService(&quot;com.sun.star.util.NumberFormatter&quot;)
188    oNumberFormatter.attachNumberFormatsSupplier(oDocument)
189End Sub
190
191
192Function AddNumberFormat(oNumberFormats as Object, FormatString as String, oLocale as Object) as Long
193Dim lLocDateFormat as Long
194    lLocDateFormat = oNumberFormats.QueryKey(FormatString, oLocale, True)
195    If lLocDateFormat = -1 Then
196        lLocDateFormat = oNumberFormats.addNew(FormatString, oLocale)
197    End If
198    AddNumberFormat() = lLocDateFormat
199End Function
200
201
202Sub CalChooseCalendar()
203    With DlgCalModel
204        .lstMonth.Enabled = .optMonth.State = 1
205        .lblMonth.Enabled = .optMonth.State = 1
206    End With
207End Sub
208
209
210Sub CalcmdCancel()
211    Call CalSaveOwnData()
212    DlgCalendar.EndExecute
213End Sub
214
215
216Sub CalcmdOk()
217    &apos; cmdOk is called when the Button &apos;Read&apos; is clicked on
218    &apos; It is either given out a month or a year
219Dim i, iSelYear as Integer
220Dim SelYear as String
221&apos;  DlgCalendar.Visible = False
222
223    oSheets = oDocument.sheets
224    Call CalSaveOwnData()
225    UnprotectSheets(oSheets)
226    oSheets.RemovebyName(oSheets.GetbyIndex(0).Name)
227    iSelYear = DlgCalModel.txtYear.Value
228    Select Case sCurLangLocale
229        Case cLANGUAGE_GERMAN
230            If Ubound(DlgCalModel.lstHolidays.SelectedItems()) &gt; -1 Then
231                CalChoosenLand = DlgCalModel.lstHolidays.SelectedItems(0)
232            Else
233                CalChoosenLand = 0
234            End If
235            Call CalFindWholeYearHolidays_GERMANY(iSelYear, CalChoosenLand)
236        Case cLANGUAGE_ENGLISH
237            Call FindWholeYearHolidays_US(iSelYear)
238        Case cLANGUAGE_FRENCH
239            Call FindWholeYearHolidays_FRANCE(iSelYear)
240        Case cLANGUAGE_ITALIAN
241            Call FindWholeYearHolidays_ITA(iSelYear)
242        Case cLANGUAGE_SPANISH
243            Call FindWholeYearHolidays_SPAIN(iSelYear)
244        Case cLANGUAGE_PORTUGUESE
245            Call FindWholeYearHolidays_PORT(iSelYear)
246        Case cLANGUAGE_DUTCH
247            Call FindWholeYearHolidays_NL(iSelYear)
248        Case cLANGUAGE_SWEDISH
249            Call FindWholeYearHolidays_SWED(iSelYear)
250        Case cLANGUAGE_DANISH
251            Call FindWholeYearHolidays_DK(iSelYear)
252        Case cLANGUAGE_POLISH
253            Call FindWholeYearHolidays_PL(iSelYear)
254        Case cLANGUAGE_RUSSIAN
255            Call FindWholeYearHolidays_RU(iSelYear)
256        Case cLANGUAGE_JAPANESE
257            Call FindWholeYearHolidays_JP(iSelYear)
258        Case cLANGUAGE_CHINESE
259            If sCurCountryLocale = &quot;TW&quot; Then
260                Call FindWholeYearHolidays_TW(iSelYear)
261            Else
262                Call FindWholeYearHolidays_CN(iSelYear)
263            End If
264        Case cLANGUAGE_GREEK
265            Call FindWholeYearHolidays_GREEK(iSelYear)
266        Case cLANGUAGE_TURKISH
267            Call FindWholeYearHolidays_TRK(iSelYear)
268        Case cLANGUAGE_POLISH
269            Call FindWholeYearHolidays_PL(iSelYear)
270        Case cLANGUAGE_FINNISH
271            Call FindWholeYearHolidays_FI(iSelYear)
272    End Select
273
274    Call CalInsertOwnDataInTables(iSelYear)
275
276    If DlgCalModel.optYear.State = 1 Then
277        oSheets.RemovebyName(oSheets.GetbyIndex(0).Name)
278        oSheet = oSheets.GetbyIndex(0)
279        oSheet.Name = sCalendarTitle$ + &quot; &quot; + iSelYear
280        oDocument.AddActionLock
281        Call CalCreateYearTable(iSelYear)
282    ElseIf DlgCalModel.optMonth.State = 1 Then
283        Dim iMonth
284        iMonth = DlgCalModel.lstMonth.SelectedItems(0) + 1
285        oSheets.RemovebyName(oSheets.GetbyIndex(1).Name)
286        oSheet = oSheets.GetbyIndex(0)
287        If sMonthTitle = &quot;&quot; Then
288            oSheet.Name = cCalLongMonthNames(iMonth-1)
289        Else
290            oSheet.Name = sMonthTitle + &quot; &quot; + cCalLongMonthNames(iMonth-1)
291        End If
292        oDocument.AddActionLock
293        Call CalCreateMonthTable(iSelYear, iMonth)
294    End If
295
296    oDocument.RemoveActionLock
297    oSheet.protect(&quot;&quot;)
298    oStatusLine.End
299    DlgCalendar.EndExecute()
300    bCancelTask = True
301End Sub
302</script:module>