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