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="OwnEvents" script:language="StarBasic">Option Explicit 4 5Public Const SBDATEUNDEFINED as Double = -98765432.1 6 7Sub Main 8 Call CalAutopilotTable() 9End Sub 10 11 12Sub CalSaveOwnData() 13Dim FileName as String 14Dim FileChannel as Integer 15Dim i as Integer 16 If bCalOwnDataChanged Then 17 FileName = GetPathSettings("UserConfig", False) & "/" & "DATE.DAT" 18 SaveDataToFile(FileName, DlgCalModel.lstOwnData.StringItemList()) 19 End If 20End Sub 21 22 23Sub CalLoadOwnData() 24Dim FileName as String 25Dim LocList() as String 26 FileName = GetPathSettings("UserConfig", False) & "/DATE.DAT" 27 If LoadDataFromFile(FileName, LocList()) Then 28 DlgCalModel.lstOwnData.StringItemList() = LocList() 29 End If 30End Sub 31 32 33Function CalCreateDateStrOfInput() as String 34Dim DateStr as String 35Dim CurOwnMonth as Integer 36Dim CurOwnDay as Integer 37Dim FormatDateStr as String 38Dim dblDate as Double 39Dim iLen as Integer 40Dim iDiff as Integer 41Dim i as Integer 42 CurOwnDay = DlgCalModel.txtOwnEventDay.Value 43 CurOwnMonth = DlgCalendar.GetControl("lstOwnEventMonth").getselectedItemPos() + 1 44 DateStr = DateSerial(0, CurOwnMonth, CurOwnDay) 45 dblDate = CDbl(DateValue(DateStr)) 46 FormatDateStr = oNumberFormatter.convertNumberToString(lDateFormat, dblDate) 47 iLen = Len(FormatDateStr) 48 iDiff = 16 - iLen 49 If iDiff > 0 Then 50 For i = 0 To iDiff 51 FormatDateStr = FormatDateStr + " " 52 Next i 53 Else 54 MsgBox("Invalid DateFormat: 'FormatDateStr'", 16, sWizardTitle) 55 CalCreateDateStrOfInput = "" 56 Exit Function 57 End If 58 DateStr = FormatDateStr & Trim(DlgCalModel.txtEvent.Text) 59 CalCreateDateStrOfInput = DateStr 60End Function 61 62 63 64Sub CalcmdInsertData() 65Dim MaxIndex as Integer 66Dim UIDateStr as String 67Dim DateStr as String 68Dim NewDate as Double 69Dim bInserted as Boolean 70Dim i as Integer 71Dim CurOwnDay as Integer 72Dim CurOwnMonth as Integer 73Dim CurOwnYear as Integer 74 CurOwnDay = DlgCalModel.txtOwnEventDay.Value 75 CurOwnMonth = DlgCalendar.GetControl("lstOwnEventMonth").getSelectedItemPos() + 1 76 UIDateStr = CalCreateDateStrOfInput() 77 NewDate = GetDateUnits(CurOwnDay, CurOwnMonth, UIDateStr) 78 If UIDateStr = "" Then Exit Sub 79 MaxIndex = Ubound(DlgCalModel.lstOwnData.StringItemList()) 80 If MaxIndex = -1 Then 81 DlgCalendar.GetControl("lstOwnData").AddItem(UIDateStr, 0 + 1) 82 bInserted = True 83 Else 84 Dim CurEvMonth(MaxIndex) as Integer 85 Dim CurEvDay(MaxIndex) as Integer 86 Dim CurDate(MaxIndex) as Double 87 ' same Years("no years" are treated like same years) -> delete old entry and insert new one 88 i = 0 89 Do 90 CurDate(i) = GetSelectedDateUnits(CurEvDay(i), CurEvMonth(i), i) 91 If CurDate(i) = NewDate Then 92 DlgCalendar.GetControl("lstOwnData").RemoveItems(i,1) 93 DlgCalendar.GetControl("lstOwnData").AddItem(UIDateStr, i) 94 bInserted = True 95 End If 96 i = i + 1 97 Loop Until bInserted Or i > MaxIndex 98 99 ' There exists already a date 100 If Not bInserted Then 101 i = 0 102 Do 103 If (CurEvMonth(i) = CurOwnMonth) And (CurEvDay(i) = CurOwnDay) Then 104 bInserted = True 105 DlgCalendar.GetControl("lstOwnData").RemoveItems(i,1) 106 DlgCalendar.GetControl("lstOwnData").AddItem(UIDateStr, i) 107 End If 108 i = i + 1 109 Loop Until bInserted Or i > MaxIndex 110 End If 111 112 ' The date is not yet existing and will will be sorted in accordingly 113 If Not bInserted Then 114 i = 0 115 Do 116 bInserted = NewDate < CurDate(i) 117 If bInserted Then 118 DlgCalendar.GetControl("lstOwnData").AddItem(UIDateStr, i) 119 End If 120 i = i + 1 121 Loop Until bInserted Or i > MaxIndex 122 If Not bInserted Then 123 DlgCalendar.GetControl("lstOwnData").AddItem(UIDateStr, MaxIndex+1) 124 End If 125 End If 126 End If 127 bCalOwnDataChanged = True 128 Call CalClearInputMask() 129End Sub 130 131 132Function GetSelectedDateUnits(CurEvDay as Integer, CurEvMonth as Integer, i as Integer) as Double 133Dim dblDate as Double 134Dim DateStr as String 135 dblDate = SBDATEUNDEFINED 136 DateStr = DlgCalModel.lstOwnData.StringItemList(i) 137 If DateStr <> "" Then 138 dblDate = GetDateUnits(CurEvDay, CurEvMonth, DateStr) 139 End If 140 GetSelectedDateUnits() = dblDate 141End Function 142 143 144Function GetDateUnits(CurEvDay as Integer, CurEvMonth as Integer, DateStr) as Double 145Dim bEventOnce as String 146Dim LocDateStr as String 147Dim dblDate as Double 148Dim lDate as Long 149 LocDateStr = Mid(DateStr, 1, 15) 150 LocDateStr = Trim(LocDateStr) 151 152 bEventOnce = True 153 On Local Error Goto NODATEFORMAT 154 dblDate = oNumberFormatter.convertStringToNumber(lDateFormat, LocDateStr) 155 lDate = Clng(dblDate) 156 CurEvMonth = Month(lDate) 157 CurEvDay = Day(lDate) 158 GetDateUnits() = dblDate 159 Exit Function 160 GetDateUnits() =SBDATEUNDEFINED 161NODATEFORMAT: 162 If Err <> 0 Then 163 MsgBox("Error: Date : ' " & LocDateStr & "' is not a valid Format", 16, sWizardTitle) 164 Resume GETRETURNVALUE 165GETRETURNVALUE: 166 GetDateUnits() = SBDATEUNDEFINED 167 End If 168End Function 169 170 171Function CalGetNameOfEvent(ByVal ListIndex as Integer) as String 172Dim NameStr as String 173 NameStr = DlgCalModel.lstOwnData.StringItemList(ListIndex) 174 NameStr = Trim (Mid(NameStr, 16)) 175 CalGetNameOfEvent = NameStr 176End Function 177 178 179 180Sub CheckInsertedDates(Optional ControlEnvironment, Optional CurOwnMonth as Integer) 181Dim EvYear as Long 182Dim EvDay as Long 183Dim sEvMonth as String 184Dim bDoEnable as Boolean 185Dim ListboxName as String 186Dim MaxValue as Integer 187 If Not IsMissing(ControlEnvironment) Then 188 CurOwnMonth = DlgCalendar.GetControl("lstOwnEventMonth").getSelectedItemPos()+1 189 End If 190 EvYear = Year(Now()) 191 bDoEnable = CurOwnMonth <> 0 192 If bDoEnable Then 193 MaxValue = CalMaxDayInMonth(EvYear, CurOwnMonth) 194 DlgCalModel.txtOwnEventDay.ValueMax = MaxValue 195 If DlgCalModel.txtOwnEventDay.Value > MaxValue Then 196 DlgCalModel.txtOwnEventDay.Value = MaxValue 197 End If 198 bDoEnable = DlgCalModel.txtOwnEventDay.Value <> 0 199 If bDoEnable Then 200 bDoEnable = Ubound(DlgCalModel.lstOwnEventMonth.SelectedItems()) > -1 201 If bDoEnable Then 202 bDoEnable = LTrim(DlgCalModel.txtEvent.Text) <> "" 203 End If 204 End If 205 End If 206 DlgCalModel.cmdInsert.Enabled = bDoEnable 207End Sub 208 209 210Sub GetOwnMonth() 211Dim EvYear as Integer 212Dim CurOwnMonth as Integer 213 EvYear = year(now()) 214 CurOwnMonth = DlgCalModel.lstOwnEventMonth.SelectedItems(0) + 1 215 DlgCalModel.txtOwnEventDay.ValueMax = CalMaxDayInMonth(EvYear, CurOwnMonth) 216 CheckInsertedDates(,CurOwnMonth) 217End Sub</script:module>