home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 March / PCWorld_2003-03_cd.bin / Software / Vyzkuste / openoffice / f_0032 / OwnEvents.xba < prev    next >
Extensible Markup Language  |  2002-02-19  |  7KB  |  246 lines

  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.  
  5. Dim CurOwnMonth as Integer
  6.  
  7. Sub Main
  8.     Call CalAutopilotTable()
  9. End Sub
  10.  
  11.  
  12.  
  13. Sub CalSaveOwnData()
  14. Dim FileName as String
  15. Dim FileChannel as Integer
  16. Dim i as Integer
  17.     If bCalOwnDataChanged Then
  18.         FileName = GetPathSettings("UserConfig", False) & "/" & "DATE.DAT"
  19.         SaveDataToFile(FileName, DlgCalModel.lstOwnData.StringItemList())
  20.     End If
  21. End Sub
  22.  
  23.  
  24. Sub CalLoadOwnData()
  25. Dim FileName as String
  26. Dim LocList() as String
  27.     FileName = GetPathSettings("UserConfig", False) & "/DATE.DAT"
  28.     If LoadDataFromFile(FileName, LocList()) Then
  29.         DlgCalModel.lstOwnData.StringItemList() = LocList()
  30.     End If
  31. End Sub
  32.  
  33.  
  34. Function CalCreateDateFromInput() as Date
  35. '    Generiert aus den Eingabedaten der Ereignisseite 
  36. '    ein Datum im Dateserial Format, 
  37. Dim newDate as Date
  38. Dim EvDay as Integer
  39. Dim EvYear as Integer
  40.     EvDay = DlgCalModel.txtOwnEventDay.Value
  41.     If DlgCalModel.chkEventOnce.State = 1 Then
  42.         EvYear = DlgCalModel.txtOwnEventYear.Value
  43.         newDate = DateSerial(EvYear, CurOwnMonth, EvDay)
  44.     Else
  45.         newDate = DateSerial(0, CurOwnMonth, EvDay)
  46.     End If
  47.     CalCreateDateFromInput = newDate
  48. End Function
  49.  
  50.  
  51.  
  52. Function CalCreateDateStrOfInput() as String
  53. Dim DateStr as String
  54. Dim EvMonth as Integer
  55. Dim EvDay as Integer
  56. Dim CurMonthStr as String
  57.     EvDay = DlgCalModel.txtOwnEventDay.Value
  58.     If EvDay < 10 Then
  59.         DateStr = "0" & EvDay & ". "
  60.     Else
  61.         DateStr = Cstr(EvDay) & ". "
  62.     End If
  63.     CurMonthStr = DlgCalModel.lstOwnEventMonth.StringItemList(CurOwnMonth-1)
  64.     If Len(CurMonthStr) = 2 Then
  65.         CurMonthStr = CurMonthStr & " "
  66.     End If
  67.     DateStr = DateStr & CurMonthStr
  68.     
  69.     If DlgCalModel.chkEventOnce.State = 1 And DlgCalModel.txtOwnEventYear.Value <> 0 Then
  70.         DateStr = DateStr & "  " + DlgCalModel.txtOwnEventYear.Value
  71.     Else
  72.         DateStr = DateStr + "      "
  73.     End If
  74.     DateStr = DateStr  + "  " + Trim(DlgCalModel.txtEvent.Text)
  75.     CalCreateDateStrOfInput = DateStr
  76. End Function
  77.  
  78.  
  79. Function CalGetDateWithoutYear&(ByVal i as Integer)
  80.     CalGetDateWithoutYear& = DateSerial(0, CalGetMonthOfEvent(i), CalGetDayOfEvent(i))
  81. End Function
  82.  
  83.  
  84. Sub CalcmdInsertData()
  85. Dim DateStr as String
  86. Dim LastIndex as Integer
  87. Dim bGetYear as Boolean
  88. Dim NewDate as Date
  89. Dim bInserted as Boolean
  90. Dim bDateDoubled as Boolean
  91. Dim EvYear as Integer
  92. Dim i as Integer
  93. Dim CurDate as Date
  94. Dim CurEvYear as Integer
  95. Dim CurEvMonth as Integer
  96. Dim CurEvDay as Integer
  97.  
  98.     bGetYear = DlgCalModel.chkEventOnce.State = 1
  99.     LastIndex = Ubound(DlgCalModel.lstOwnData.StringItemList())            
  100.     If bGetYear Then
  101.         EvYear = DlgCalModel.txtOwnEventYear.Value
  102.     End If
  103.  
  104.     newDate = CalCreateDateFromInput()
  105.     DateStr = CalCreateDateStrOfInput()
  106.     If DateStr = "" Then Exit Sub
  107.  
  108.     '    Es ist noch garnichts vorhanden
  109.     If Ubound(DlgCalModel.lstOwnData.StringItemList()) = -1 Then
  110.         DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, 0 + 1)
  111.         bInserted = True
  112.     Else
  113.         '    gleiche jahre(auch keine Jahre sind gleiche jahre)->alt l├╢schen neu rein
  114.         i = 0
  115.         Do
  116.             CurEvYear = CalGetYearOfEvent(i)
  117.             CurEvMonth = CalGetMonthOfEvent(i)
  118.             CurEvDay = CalGetDayOfEvent(i)
  119.             If DateSerial(CurEvYear, CurEvMonth, CurEvDay) = NewDate Then
  120.                 ' Todo: Abchecken wie das ist mit 'Ereignis einmalig' oder nicht
  121.                 DlgCalendar.GetControl("lstOwnData").RemoveItems(i,1)
  122.                 DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i)
  123.                 bInserted = True
  124.             End If
  125.             i = i + 1
  126.         Loop Until bInserted Or i > LastIndex
  127.         
  128.         '    Es existiert ein Datum mit Jahreszahl. Es wird dasselbe Datum
  129.         '    ohne Angabe der Jahreszahl angegeben.
  130.         If Not bInserted And Not bGetYear Then
  131.             i = 0
  132.             Do
  133.                 bInserted = CalGetDateWithoutYear(i) = newDate
  134.                 i = i + 1
  135.                 If bInserted Then
  136.                     If CalGetYearOfEvent(i) <> 0 Then
  137.                         DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i)
  138.                     End If
  139.                 End If    
  140.             Loop Until bInserted Or i > LastIndex
  141.         End If
  142.     
  143.         '    Das einzuf├╝gende Datum besitzt eine Jahreszahl, es gibt bereits
  144.         '    das Datum in der Liste, jedoch ohne Datum.
  145.         If Not bInserted And bGetYear Then
  146.             i = 0
  147.             Do
  148.                 bInserted = CalGetDateWithoutYear(i) = newDate
  149.                 i = i + 1
  150.                 If bInserted Then
  151.                     DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i)
  152.                 End If
  153.             Loop Until bInserted Or i > LastIndex
  154.         End If
  155.     
  156.         '    Das Datum ist noch nicht vorhanden und wird richtig einsortiert
  157.         If Not bInserted And Not bDateDoubled Then
  158.             i = 0
  159.             Do 
  160.                 CurDate = CalGetDateWithoutYear(i)
  161.                 bInserted = newDate < CurDate
  162.                 If bInserted Then
  163.                     Exit Do
  164.                 End If
  165.                 i = i + 1
  166.             Loop Until bInserted Or i > LastIndex
  167.             DlgCalendar.GetControl("lstOwnData").AddItem(DateStr, i)
  168.         End If
  169.     End If
  170.     
  171.     bCalOwnDataChanged = True
  172.     
  173.     Call CalClearInputMask()
  174. End Sub
  175.  
  176.  
  177. Function CalGetYearOfEvent(ByVal ListIndex as Integer) as Integer
  178. Dim YearStr as String
  179.     YearStr = DlgCalModel.lstOwnData.StringItemList(ListIndex)
  180.     CalGetYearOfEvent = Val(Mid(YearStr, 10, 4))
  181. End Function
  182.  
  183.  
  184. Function CalGetDayOfEvent(ByVal ListIndex as Integer) as Integer
  185. Dim DayStr as String
  186.     DayStr = DlgCalModel.lstOwnData.StringItemList(ListIndex)
  187.     CalGetDayOfEvent = Val(Left(DayStr,2))
  188. End Function
  189.  
  190.  
  191. Function CalGetNameOfEvent(ByVal ListIndex as Integer) as String
  192. Dim NameStr as String
  193.     NameStr = DlgCalModel.lstOwnData.StringItemList(ListIndex)
  194.     NameStr = Trim (Mid(NameStr, 16))
  195.     CalGetNameOfEvent = NameStr
  196. End Function
  197.  
  198.  
  199. Function CalGetMonthOfEvent(ByVal ListIndex as Integer) as Integer
  200. Dim MonthStr as String
  201.     MonthStr = DlgCalModel.lstOwnData.StringItemList(ListIndex)
  202.     MonthStr = Mid(MonthStr, 5, 3)
  203.     ' In chinese Short Monthnames may be only 2 characters long. 
  204.     ' In this case the third character is filled up with an empty space
  205.     MonthStr = RTrim(MonthStr)
  206.     CalGetMonthOfEvent = CalGetIntOfShortMonthName(MonthStr)
  207. End Function
  208.  
  209.  
  210. Function GetOwnYear()    
  211.     If DlgCalModel.chkEventOnce.State = 1 Then
  212.         GetOwnYear() = DlgCalModel.txtOwnEventYear.Value
  213.     Else
  214.         GetOwnYear() = Year(Now())
  215.     End If
  216. End Function
  217.  
  218.  
  219. Sub CheckInsertedDates()
  220. Dim EvYear as Long
  221. Dim EvDay as Long
  222. Dim sEvMonth as String
  223. Dim bDoEnable as Boolean    
  224.     EvYear = GetOwnYear()
  225.     bDoEnable = (EvYear <> 0) And (CurOwnMonth <> -1)
  226.     If bDoEnable Then
  227.         DlgCalModel.txtOwnEventDay.ValueMax = CalMaxDayInMonth(EvYear, CurOwnMonth)
  228.         bDoEnable = DlgCalModel.txtOwnEventDay.Value <> 0
  229.         If bDoEnable Then
  230.             bDoEnable = Ubound(DlgCalModel.lstOwnEventMonth.SelectedItems()) > -1
  231.             If bDoEnable Then
  232.                 bDoEnable = LTrim(DlgCalModel.txtEvent.Text) <> ""
  233.             End If
  234.         End If
  235.     End If
  236.     DlgCalModel.cmdInsert.Enabled = bDoEnable
  237. End Sub
  238.  
  239.  
  240. Sub GetOwnMonth()
  241. Dim EvYear as Integer
  242.     EvYear = GetOwnYear()
  243.     CurOwnMonth = DlgCalModel.lstOwnEventMonth.SelectedItems(0) + 1
  244.     DlgCalModel.txtOwnEventDay.ValueMax = CalMaxDayInMonth(EvYear, CurOwnMonth)
  245.     CheckInsertedDates()
  246. End Sub</script:module>