#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.0.0 Author: Vincent Willems Script version: V1.0 build 29 Script Function: Call management system. #ce ---------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include Global $DoubleClicked = False, $callist If FileExists("calls.dat") Then check() Else FileWrite("calls.dat", "") check() EndIf Func check() If FileExists("user.dat") Then login() Else First_time() EndIf EndFunc ;==>check Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam) Local $tagNMHDR, $event, $hwndFrom, $code $tagNMHDR = DllStructCreate("int;int;int", $lParam) If @error Then Return 0 $code = DllStructGetData($tagNMHDR, 3) If $wParam = $callist And $code = -3 Then $DoubleClicked = True Return $GUI_RUNDEFMSG EndFunc ;==>WM_NOTIFY Func First_time() MsgBox(0, "Error", "User database was not found." & @CRLF & "Please enter a username and password to create the admin account.") GUICreate("Password", 340, 180) Opt("GUICoordMode", 2) GUICtrlCreateLabel("Username:", 10, 20, 160, 20) $userfield = GUICtrlCreateInput("", 1, -20, 160, 20) GUICtrlCreateLabel("Password:", -320, 20, 160, 20) $pwfield1 = GUICtrlCreateInput("", 1, -20, 160, 20, $ES_PASSWORD) GUICtrlCreateLabel("Password again:", -320, 20, 160, 20) $pwfield2 = GUICtrlCreateInput("", 1, -1, 160, 20, $ES_PASSWORD) $ok = GUICtrlCreateButton("Ok", -320, 20, 140, 20, $BS_DEFPUSHBUTTON) $cancel = GUICtrlCreateButton("Cancel", 40, -20) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $ok If GUICtrlRead($pwfield1) = GUICtrlRead($pwfield2) Then FileWrite("user.dat", "[" & GUICtrlRead($userfield) & "]" & @CRLF) FileWriteLine("user.dat", "pass=" & _StringEncrypt(1, GUICtrlRead($pwfield1), "admin", 1)) MsgBox(0, "Info", "Admin username en password saved" & @CRLF & @CRLF & "Please login now.") GUIDelete("Wachtwoord") login() ExitLoop Else MsgBox(0, "Error", "Password does not match, please try again.") EndIf Case $msg = $cancel ExitLoop EndSelect WEnd EndFunc ;==>First_time Func login() GUICreate("Login", 340, 130) Opt("GUICoordMode", 2) GUICtrlCreateLabel("Username:", 10, 20, 160, 20) $userlogin = GUICtrlCreateInput("", 1, -20, 160, 20) GUICtrlCreateLabel("Password:", -320, 20, 160, 20) $pwlogin = GUICtrlCreateInput("", 1, -20, 160, 20, $ES_PASSWORD) $ok = GUICtrlCreateButton("Ok", -320, 20, 140, 20, $BS_DEFPUSHBUTTON) $cancel = GUICtrlCreateButton("Cancel", 40, -20) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $ok $key = GUICtrlRead($userlogin) $pass = _StringEncrypt(0, IniRead("user.dat", $key, "pass", "FAILED"), "admin", 1) If GUICtrlRead($pwlogin) = $pass Then Global $aanmeldernaam = IniRead("user.dat", GUICtrlRead($userlogin), "achternaam", "failed") & ", " & IniRead("user.dat", GUICtrlRead($userlogin), "voornaam", "failed") Global $usedloginname = GUICtrlRead($userlogin) GUIDelete("Aanmelden") If FileExists("settings.ini") Then Else MsgBox(0, "Info", "Settings are not configured yet. Please click Settings to configure them.") EndIf main() ExitLoop Else MsgBox(0, "Error", "Username and/or password incorrect.") EndIf Case $msg = $cancel ExitLoop EndSelect WEnd EndFunc ;==>login Func main() $mainscreen = GUICreate("RegCall 1.0", 840, 600) Opt("GUICoordMode", 2) $callist = GUICtrlCreateListView("Call no:|Status:|Name:|Subject:|Call date:|Priority:|Logged by:", 30, 30, 780, 250) GUICtrlCreateLabel("Filters", -725, 50, 50, 20) $call_all = GUICtrlCreateButton("All Calls", -105, 10, 140, 20) $call_open = GUICtrlCreateButton("Open Calls", -1, 20) $call_waituser = GUICtrlCreateButton("Wait for User Calls", -1, 20) $call_find = GUICtrlCreateButton("Find Calls", -1, 20) $call_closed = GUICtrlCreateButton("Closed Calls", -1, 20) $call_new = GUICtrlCreateButton("New Call...", 180, -180, 140, 20) $call_edit = GUICtrlCreateButton("Edit Call...", -1, 20) $call_close = GUICtrlCreateButton("Close Call", -1, 20) $call_reopen = GUICtrlCreateButton("Reopen Call", -1, 20) $users = GUICtrlCreateButton("Users...", 180, -140, 140, 20) $settings = GUICtrlCreateButton("Settings...", -1, 20, 140, 20) $exit = GUICtrlCreateButton("Exit", -1, 20) $export = GUICtrlCreateButton("Export to Excel...", -460, 60) GUICtrlCreateGraphic(15, 320, 800, 600) GUICtrlSetGraphic(-1, $GUI_GR_LINE, 0, 230) GUICtrlSetGraphic(-1, $GUI_GR_LINE, 165, 230) GUICtrlSetGraphic(-1, $GUI_GR_LINE, 165, -1) GUICtrlSetGraphic(-1, $GUI_GR_LINE, -1, -1) $var = IniReadSectionNames("calls.dat") If $var = 1 Then $i = 1 Else For $i = 1 To $var[0] GUICtrlCreateListViewItem(IniRead("calls.dat", $var[$i], "callno", "N/A") & "|" & (IniRead("calls.dat", $var[$i], "status", "N/A")) & "|" & IniRead("calls.dat", $var[$i], "name", "N/A") & "|" & IniRead("calls.dat", $var[$i], "subject", "N/A") & "|" & IniRead("calls.dat", $var[$i], "open_date", "N/A") & "|" & IniRead("calls.dat", $var[$i], "priority", "N/A") & "|" & IniRead("calls.dat", $var[$i], "made_by", "N/A"), $callist) Next EndIf _GUICtrlListView_SetColumnWidth($callist, 3, 250) GUISetState() GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") While 1 $msg = GUIGetMsg() Select Case $msg = $export If $var = 1 Then MsgBox(0, "Error", "Nothing to export.") Else ProgressOn("Progress Meter", "One moment please...", "") $oExcel = ObjCreate("Excel.Application") $oExcel.Visible = 0 $oExcel.WorkBooks.Add $oExcel.ActiveWorkBook.ActiveSheet.Cells(1, 1).Value = "Call no:" $oExcel.ActiveWorkBook.ActiveSheet.Cells(1, 2).Value = "Status" $oExcel.ActiveWorkBook.ActiveSheet.Cells(1, 3).Value = "Name:" $oExcel.ActiveWorkBook.ActiveSheet.Cells(1, 4).Value = "Subject:" $oExcel.ActiveWorkBook.ActiveSheet.Cells(1, 5).Value = "Call date:" $oExcel.ActiveWorkBook.ActiveSheet.Cells(1, 6).Value = "Priority:" $oExcel.ActiveWorkBook.ActiveSheet.Cells(1, 7).Value = "Logged by:" ProgressSet(30) $var = IniReadSectionNames("calls.dat") $count = 1 For $i = 1 To $var[0] $count = 1 + $count $oExcel.ActiveWorkBook.ActiveSheet.Cells($count, 1).Value = IniRead("calls.dat", $var[$i], "callno", "N/A") $oExcel.ActiveWorkBook.ActiveSheet.Cells($count, 2).Value = IniRead("calls.dat", $var[$i], "status", "N/A") $oExcel.ActiveWorkBook.ActiveSheet.Cells($count, 3).Value = IniRead("calls.dat", $var[$i], "name", "N/A") $oExcel.ActiveWorkBook.ActiveSheet.Cells($count, 4).Value = IniRead("calls.dat", $var[$i], "subject", "N/A") $oExcel.ActiveWorkBook.ActiveSheet.Cells($count, 5).Value = IniRead("calls.dat", $var[$i], "open_date", "N/A") $oExcel.ActiveWorkBook.ActiveSheet.Cells($count, 6).Value = IniRead("calls.dat", $var[$i], "priority", "N/A") $oExcel.ActiveWorkBook.ActiveSheet.Cells($count, 7).Value = IniRead("calls.dat", $var[$i], "made_by", "N/A") Next ProgressSet(65) $oExcel.Range("A1:G1" ).Select $oExcel.Selection.Font.Bold = True $oExcel.Range("A1:A1" ).Select $oExcel.Selection.AutoFilter $oExcel.Columns("A:A" ).EntireColumn.AutoFit $oExcel.Columns("B:B" ).EntireColumn.AutoFit $oExcel.Columns("C:C" ).EntireColumn.AutoFit $oExcel.Columns("D:D" ).EntireColumn.AutoFit $oExcel.Columns("E:E" ).EntireColumn.AutoFit $oExcel.Columns("F:F" ).EntireColumn.AutoFit $oExcel.Columns("G:G" ).EntireColumn.AutoFit ProgressSet(80) $oExcel.ActiveSheet.Select $oExcel.ActiveSheet.Name = "Call List" $oExcel.ActiveSheet.PageSetup.CenterHeader = "Call List" $oExcel.ActiveSheet.PageSetup.LeftFooter = "Regcall v1.0" $oExcel.ActiveSheet.PageSetup.RightFooter = "By Vincent Willems" ;$oExcel.ActiveSheet.PageSetup.Orientation = xlLandscape $oExcel.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" ProgressSet(99) ProgressOff() $oExcel.Visible = 1 EndIf Case $msg = $settings settings() Case $msg = $call_edit Or $DoubleClicked If GUICtrlRead($callist) = 0 Then MsgBox(0, "Error", "No selection made") Else $calledittemp = GUICtrlRead(GUICtrlRead($callist)) $calleditnr = StringLeft($calledittemp, 6) $guiedit = GUICreate("Edit Call", 620, 590) Opt("GUICoordMode", 1) GUICtrlCreateLabel("Call no:", 30, 20) $callno = GUICtrlCreateInput(IniRead("calls.dat", $calleditnr, "callno", "N/A"), 100, 20, 50, 20, $ES_READONLY) GUICtrlCreateLabel("Logged by:", 330, 20, 65) $madeby = GUICtrlCreateInput(IniRead("calls.dat", $calleditnr, "made_by", "N/A"), 400, 20, 190, 20, $ES_READONLY) GUICtrlCreateLabel("Name:", 30, 60, 49) $callname = GUICtrlCreateInput(IniRead("calls.dat", $calleditnr, "name", "N/A"), 100, 60, 190, 20) GUICtrlCreateLabel("Subject:", 30, 100) $callsubject = GUICtrlCreateInput(IniRead("calls.dat", $calleditnr, "subject", "N/A"), 100, 100, 190, 20) GUICtrlCreateLabel("Date:", 30, 140) $calldate = GUICtrlCreateInput(IniRead("calls.dat", $calleditnr, "open_date", "N/A"), 100, 140, 190, 20, $ES_READONLY) GUICtrlCreateLabel("Priority:", 30, 180) $callprio = GUICtrlCreateCombo(IniRead("calls.dat", $calleditnr, "priority", "N/A"), 100, 180, 190, 20) GUICtrlSetData($callprio, "High|Medium|Low", IniRead("calls.dat", $calleditnr, "priority", "N/A")) GUICtrlCreateLabel("Status:", 30, 220) $callstatus = GUICtrlCreateCombo(IniRead("calls.dat", $calleditnr, "status", "N/A"), 100, 220, 190, 20) GUICtrlSetData($callstatus, "Open|Closed|Wait for user", IniRead("calls.dat", $calleditnr, "status", "N/A")) GUICtrlCreateLabel("Actions", 30, 260) $callaction = GUICtrlCreateEdit(StringReplace(IniRead("calls.dat", $calleditnr, "actions", "N/A"), "[\r\n]", @CRLF), 100, 260, 500, 125, BitOR($ES_MULTILINE, $ES_WANTRETURN, $ES_AUTOVSCROLL, $WS_VSCROLL)) GUICtrlCreateLabel("Description", 30, 400) GUICtrlCreateLabel("Close date:", 330, 60, 65) $close_date = GUICtrlCreateInput(IniRead("calls.dat", $calleditnr, "close_date", "N/A"), 400, 60, 190, 20, $ES_READONLY) $timestampaction = GUICtrlCreateButton("Timestamp ->", 15, 280, 80, 20) $timestampdisc = GUICtrlCreateButton("Timestamp ->", 15, 420, 80, 20) $calldiscription = GUICtrlCreateEdit(StringReplace(IniRead("calls.dat", $calleditnr, "description", "N/A"), "[\r\n]", @CRLF), 100, 400, 500, 125, BitOR($ES_MULTILINE, $ES_WANTRETURN, $ES_AUTOVSCROLL, $WS_VSCROLL)) $ok = GUICtrlCreateButton("OK", 100, 550, 100, 20) $cancel = GUICtrlCreateButton("Annuleren", 220, 550, 100, 20) GUISetState() While 2 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE GUIDelete($guiedit) ExitLoop Case $msg = $ok If GUICtrlRead($callname) = "" Or GUICtrlRead($callsubject) = "" Then MsgBox(0, "Error", "Not all required field are filled in" & @CRLF & "Required fields are:" & @CRLF & @CRLF & "Name" & @CRLF & "Subject") Else IniWrite("calls.dat", GUICtrlRead($callno), "callno", GUICtrlRead($callno)) IniWrite("calls.dat", GUICtrlRead($callno), "name", GUICtrlRead($callname)) IniWrite("calls.dat", GUICtrlRead($callno), "subject", GUICtrlRead($callsubject)) IniWrite("calls.dat", GUICtrlRead($callno), "open_date", GUICtrlRead($calldate)) IniWrite("calls.dat", GUICtrlRead($callno), "description", StringReplace(GUICtrlRead($calldiscription), @CRLF, "[\r\n]")) IniWrite("calls.dat", GUICtrlRead($callno), "actions", StringReplace(GUICtrlRead($callaction), @CRLF, "[\r\n]")) IniWrite("calls.dat", GUICtrlRead($callno), "priority", GUICtrlRead($callprio)) IniWrite("calls.dat", GUICtrlRead($callno), "status", GUICtrlRead($callstatus)) IniWrite("calls.dat", GUICtrlRead($callno), "made_by", GUICtrlRead($madeby)) If GUICtrlRead($callstatus) = "Closed" Then IniWrite("calls.dat", GUICtrlRead($callno), "close_date", _NowDate()) If GUICtrlRead($callstatus) = "Open" Or "Wait for user" Then IniWrite("calls.dat", GUICtrlRead($callno), "close_date", "N/A") MsgBox(0, "Info", "Changes are saved.") GUIDelete($guiedit) _GUICtrlListView_DeleteAllItems($callist) For $i = 1 To $var[0] GUICtrlCreateListViewItem(IniRead("calls.dat", $var[$i], "callno", "N/A") & "|" & (IniRead("calls.dat", $var[$i], "status", "N/A")) & "|" & IniRead("calls.dat", $var[$i], "name", "N/A") & "|" & IniRead("calls.dat", $var[$i], "subject", "N/A") & "|" & IniRead("calls.dat", $var[$i], "open_date", "N/A") & "|" & IniRead("calls.dat", $var[$i], "priority", "N/A") & "|" & IniRead("calls.dat", $var[$i], "made_by", "N/A"), $callist) Next ExitLoop EndIf Case $msg = $timestampaction GUICtrlSetData($callaction, $aanmeldernaam & " on " & _NowDate() & " " & " wrote:" & @CRLF & "-> write comment here <-" & @CRLF & "=================================" & @CRLF & StringReplace(IniRead("calls.dat", $calleditnr, "actions", ""), "[\r\n]", @CRLF)) Case $msg = $timestampdisc GUICtrlSetData($calldiscription, $aanmeldernaam & " on " & _NowDate() & " " & " wrote:" & @CRLF & "-> write comment here <-" & @CRLF & "=================================" & @CRLF & StringReplace(IniRead("calls.dat", $calleditnr, "description", ""), "[\r\n]", @CRLF)) Case $msg = $cancel GUIDelete($guiedit) ExitLoop EndSelect WEnd EndIf $DoubleClicked = False Case $msg = $users users() Case $msg = $call_close If GUICtrlRead($callist) = 0 Then MsgBox(0, "Error", "No selection made") Else $callclosetemp = GUICtrlRead(GUICtrlRead($callist)) $callclosenr = StringLeft($callclosetemp, 6) $checkopen1 = IniRead("calls.dat", $callclosenr, "status", "") If $checkopen1 = "Closed" Then MsgBox(0, "Error", "Call allready Closed.") Else $guicall_close = GUICreate("Reason?", 450, 200) Opt("GUICoordMode", 2) GUICtrlCreateLabel("Reason for close?", 10, 20, 160, 20) $closereason = GUICtrlCreateEdit("", 1, -20, 260, 120) $ok = GUICtrlCreateButton("Ok", -320, 20, 140, 20) $cancel = GUICtrlCreateButton("Cancel", 40, -20) GUISetState() While 3 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE GUIDelete($guicall_close) ExitLoop Case $msg = $ok IniWrite("calls.dat", $callclosenr, "actions", $aanmeldernaam & " on " & _NowDate() & " " & " call closed:[\r\n]" & GUICtrlRead($closereason) & "[\r\n]=================================[\r\n]" & IniRead("calls.dat", $callclosenr, "actions", "")) IniWrite("calls.dat", $callclosenr, "status", "Closed") IniWrite("calls.dat", $callclosenr, "close_date", _NowDate()) MsgBox(0, "", "Call number " & $callclosenr & " Closed") _GUICtrlListView_DeleteAllItems($callist) $var = IniReadSectionNames("calls.dat") For $i = 1 To $var[0] If IniRead("calls.dat", $var[$i], "status", "N/A") = "Closed" Then GUICtrlCreateListViewItem(IniRead("calls.dat", $var[$i], "callno", "N/A") & "|" & (IniRead("calls.dat", $var[$i], "status", "N/A")) & "|" & IniRead("calls.dat", $var[$i], "name", "N/A") & "|" & IniRead("calls.dat", $var[$i], "subject", "N/A") & "|" & IniRead("calls.dat", $var[$i], "open_date", "N/A") & "|" & IniRead("calls.dat", $var[$i], "priority", "N/A") & "|" & IniRead("calls.dat", $var[$i], "made_by", "N/A"), $callist) Next GUIDelete($guicall_close) ExitLoop Case $msg = $cancel GUIDelete($guicall_close) ExitLoop EndSelect WEnd EndIf EndIf Case $msg = $call_reopen If GUICtrlRead($callist) = 0 Then MsgBox(0, "Error", "No selection made") Else $callclosetemp = GUICtrlRead(GUICtrlRead($callist)) $callclosenr = StringLeft($callclosetemp, 6) $checkopen1 = IniRead("calls.dat", $callclosenr, "status", "") If $checkopen1 = "Open" Or $checkopen1 = "Wait for user" Then MsgBox(0, "Error", "Call allready open.") Else $guicall_close = GUICreate("Reason?", 450, 200) Opt("GUICoordMode", 2) GUICtrlCreateLabel("Reason for reopen?", 10, 20, 160, 20) $closereason = GUICtrlCreateEdit("", 1, -20, 260, 120) $ok = GUICtrlCreateButton("Ok", -320, 20, 140, 20) $cancel = GUICtrlCreateButton("Cancel", 40, -20) GUISetState() While 3 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE GUIDelete($guicall_close) ExitLoop Case $msg = $ok IniWrite("calls.dat", $callclosenr, "actions", $aanmeldernaam & " on " & _NowDate() & " " & " call reopened:[\r\n]" & GUICtrlRead($closereason) & "[\r\n]=================================[\r\n]" & IniRead("calls.dat", $callclosenr, "actions", "")) IniWrite("calls.dat", $callclosenr, "status", "Open") IniWrite("calls.dat", $callclosenr, "close_date", "N/A") MsgBox(0, "", "Call number " & $callclosenr & " reopened") _GUICtrlListView_DeleteAllItems($callist) $var = IniReadSectionNames("calls.dat") For $i = 1 To $var[0] If IniRead("calls.dat", $var[$i], "status", "N/A") = "Open" Then GUICtrlCreateListViewItem(IniRead("calls.dat", $var[$i], "callno", "N/A") & "|" & (IniRead("calls.dat", $var[$i], "status", "N/A")) & "|" & IniRead("calls.dat", $var[$i], "name", "N/A") & "|" & IniRead("calls.dat", $var[$i], "subject", "N/A") & "|" & IniRead("calls.dat", $var[$i], "open_date", "N/A") & "|" & IniRead("calls.dat", $var[$i], "priority", "N/A") & "|" & IniRead("calls.dat", $var[$i], "made_by", "N/A"), $callist) Next GUIDelete($guicall_close) ExitLoop Case $msg = $cancel GUIDelete($guicall_close) ExitLoop EndSelect WEnd EndIf EndIf Case $msg = $call_new $guinewcall = GUICreate("New Call", 620, 530) Opt("GUICoordMode", 2) $var = IniReadSectionNames("calls.dat") If $var = 1 Then $i = 1 Else For $i = 1 To $var[0] IniRead("calls.dat", $var[$i], "callno", "N/A") Next EndIf If StringLen($i) = 1 Then $newcallno = "00000" & $i ElseIf StringLen($i) = 2 Then $newcallno = "0000" & $i ElseIf StringLen($i) = 3 Then $newcallno = "000" & $i ElseIf StringLen($i) = 4 Then $newcallno = "00" & $i ElseIf StringLen($i) = 4 Then $newcallno = "0" & $i ElseIf StringLen($i) = 5 Then $newcallno = $i EndIf $guinewcall = GUICreate("New Call", 620, 590) Opt("GUICoordMode", 1) GUICtrlCreateLabel("Call no:", 30, 20) $callno = GUICtrlCreateInput($newcallno, 100, 20, 50, 20, $ES_READONLY) GUICtrlCreateLabel("Logged by:", 330, 20, 65) $madeby = GUICtrlCreateInput($aanmeldernaam, 400, 20, 190, 20, $ES_READONLY) GUICtrlCreateLabel("Name:", 30, 60, 49) $callname = GUICtrlCreateInput("", 100, 60, 190, 20) GUICtrlCreateLabel("Subject:", 30, 100) $callsubject = GUICtrlCreateInput("", 100, 100, 190, 20) GUICtrlCreateLabel("Date:", 30, 140) $calldate = GUICtrlCreateDate("", 100, 140, 190, 20, $DTS_SHORTDATEFORMAT) GUICtrlCreateLabel("Priority:", 30, 180) $callprio = GUICtrlCreateCombo("", 100, 180, 190, 20) GUICtrlSetData($callprio, "High|Medium|Low", "Medium") GUICtrlCreateLabel("Status:", 30, 220) $callstatus = GUICtrlCreateCombo("", 100, 220, 190, 20) GUICtrlSetData($callstatus, "Open|Closed|Wait for user", "Open") GUICtrlCreateLabel("Actions", 30, 260) $callaction = GUICtrlCreateEdit("", 100, 260, 500, 125, BitOR($ES_MULTILINE, $ES_WANTRETURN, $ES_AUTOVSCROLL, $WS_VSCROLL)) GUICtrlCreateLabel("Description", 30, 400) $timestampaction = GUICtrlCreateButton("Timestamp ->", 15, 280, 80, 20) $timestampdisc = GUICtrlCreateButton("Timestamp ->", 15, 420, 80, 20) $calldiscription = GUICtrlCreateEdit("", 100, 400, 500, 125, BitOR($ES_MULTILINE, $ES_WANTRETURN, $ES_AUTOVSCROLL, $WS_VSCROLL)) $ok = GUICtrlCreateButton("OK", 100, 550, 100, 20) $cancel = GUICtrlCreateButton("Annuleren", 220, 550, 100, 20) GUISetState() While 2 $msg = GUIGetMsg() Select Case $msg = $timestampaction GUICtrlSetData($callaction, $aanmeldernaam & " on " & _NowDate() & " " & " wrote:" & @CRLF & "-> write comment here <-" & @CRLF & "=================================" & @CRLF & StringReplace(IniRead("calls.dat", $newcallno, "actions", ""), "[\r\n]", @CRLF)) Case $msg = $timestampdisc GUICtrlSetData($calldiscription, $aanmeldernaam & " on " & _NowDate() & " " & " wrote:" & @CRLF & "-> write comment here <-" & @CRLF & "=================================" & @CRLF & StringReplace(IniRead("calls.dat", $newcallno, "description", ""), "[\r\n]", @CRLF)) Case $msg = $GUI_EVENT_CLOSE GUIDelete($guinewcall) ExitLoop Case $msg = $ok If GUICtrlRead($callname) = "" Or GUICtrlRead($callsubject) = "" Then MsgBox(0, "Error", "Not all required field are filled in" & @CRLF & "Required fields are:" & @CRLF & @CRLF & "Name" & @CRLF & "Subject") Else IniWrite("calls.dat", GUICtrlRead($callno), "callno", GUICtrlRead($callno)) IniWrite("calls.dat", GUICtrlRead($callno), "name", GUICtrlRead($callname)) IniWrite("calls.dat", GUICtrlRead($callno), "subject", GUICtrlRead($callsubject)) IniWrite("calls.dat", GUICtrlRead($callno), "open_date", GUICtrlRead($calldate)) IniWrite("calls.dat", GUICtrlRead($callno), "actions", StringReplace(GUICtrlRead($callaction), @CRLF, "[\r\n]")) IniWrite("calls.dat", GUICtrlRead($callno), "description", StringReplace(GUICtrlRead($calldiscription), @CRLF, "[\r\n]")) IniWrite("calls.dat", GUICtrlRead($callno), "priority", GUICtrlRead($callprio)) IniWrite("calls.dat", GUICtrlRead($callno), "status", GUICtrlRead($callstatus)) IniWrite("calls.dat", GUICtrlRead($callno), "made_by", GUICtrlRead($madeby)) MsgBox(0, "Info", "Call saved") GUIDelete($guinewcall) ExitLoop EndIf _GUICtrlListView_DeleteAllItems($callist) For $i = 1 To $var[0] GUICtrlCreateListViewItem(IniRead("calls.dat", $var[$i], "callno", "N/A") & "|" & (IniRead("calls.dat", $var[$i], "status", "N/A")) & "|" & IniRead("calls.dat", $var[$i], "name", "N/A") & "|" & IniRead("calls.dat", $var[$i], "subject", "N/A") & "|" & IniRead("calls.dat", $var[$i], "open_date", "N/A") & "|" & IniRead("calls.dat", $var[$i], "priority", "N/A") & "|" & IniRead("calls.dat", $var[$i], "made_by", "N/A"), $callist) Next Case $msg = $cancel GUIDelete($guinewcall) ExitLoop EndSelect WEnd _GUICtrlListView_DeleteAllItems($callist) $var = IniReadSectionNames("calls.dat") If $var = 1 Then $i = 1 Else For $i = 1 To $var[0] GUICtrlCreateListViewItem(IniRead("calls.dat", $var[$i], "callno", "N/A") & "|" & (IniRead("calls.dat", $var[$i], "status", "N/A")) & "|" & IniRead("calls.dat", $var[$i], "name", "N/A") & "|" & IniRead("calls.dat", $var[$i], "subject", "N/A") & "|" & IniRead("calls.dat", $var[$i], "open_date", "N/A") & "|" & IniRead("calls.dat", $var[$i], "priority", "N/A") & "|" & IniRead("calls.dat", $var[$i], "made_by", "N/A"), $callist) Next EndIf Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $call_open _GUICtrlListView_DeleteAllItems($callist) $var = IniReadSectionNames("calls.dat") If $var = 1 Then $i = 1 Else For $i = 1 To $var[0] If IniRead("calls.dat", $var[$i], "status", "N/A") = "Closed" Then Else GUICtrlCreateListViewItem(IniRead("calls.dat", $var[$i], "callno", "N/A") & "|" & (IniRead("calls.dat", $var[$i], "status", "N/A")) & "|" & IniRead("calls.dat", $var[$i], "name", "N/A") & "|" & IniRead("calls.dat", $var[$i], "subject", "N/A") & "|" & IniRead("calls.dat", $var[$i], "open_date", "N/A") & "|" & IniRead("calls.dat", $var[$i], "priority", "N/A") & "|" & IniRead("calls.dat", $var[$i], "made_by", "N/A"), $callist) EndIf Next EndIf Case $msg = $call_closed _GUICtrlListView_DeleteAllItems($callist) $var = IniReadSectionNames("calls.dat") If $var = 1 Then $i = 1 Else For $i = 1 To $var[0] If IniRead("calls.dat", $var[$i], "status", "N/A") = "Closed" Then GUICtrlCreateListViewItem(IniRead("calls.dat", $var[$i], "callno", "N/A") & "|" & (IniRead("calls.dat", $var[$i], "status", "N/A")) & "|" & IniRead("calls.dat", $var[$i], "name", "N/A") & "|" & IniRead("calls.dat", $var[$i], "subject", "N/A") & "|" & IniRead("calls.dat", $var[$i], "open_date", "N/A") & "|" & IniRead("calls.dat", $var[$i], "priority", "N/A") & "|" & IniRead("calls.dat", $var[$i], "made_by", "N/A"), $callist) Else EndIf Next EndIf Case $msg = $call_waituser _GUICtrlListView_DeleteAllItems($callist) $var = IniReadSectionNames("calls.dat") If $var = 1 Then $i = 1 Else For $i = 1 To $var[0] If IniRead("calls.dat", $var[$i], "status", "N/A") = "Wait for user" Then GUICtrlCreateListViewItem(IniRead("calls.dat", $var[$i], "callno", "N/A") & "|" & (IniRead("calls.dat", $var[$i], "status", "N/A")) & "|" & IniRead("calls.dat", $var[$i], "name", "N/A") & "|" & IniRead("calls.dat", $var[$i], "subject", "N/A") & "|" & IniRead("calls.dat", $var[$i], "open_date", "N/A") & "|" & IniRead("calls.dat", $var[$i], "priority", "N/A") & "|" & IniRead("calls.dat", $var[$i], "made_by", "N/A"), $callist) Else EndIf Next EndIf Case $msg = $call_all _GUICtrlListView_DeleteAllItems($callist) If $var = 1 Then $i = 1 Else For $i = 1 To $var[0] GUICtrlCreateListViewItem(IniRead("calls.dat", $var[$i], "callno", "N/A") & "|" & (IniRead("calls.dat", $var[$i], "status", "N/A")) & "|" & IniRead("calls.dat", $var[$i], "name", "N/A") & "|" & IniRead("calls.dat", $var[$i], "subject", "N/A") & "|" & IniRead("calls.dat", $var[$i], "open_date", "N/A") & "|" & IniRead("calls.dat", $var[$i], "priority", "N/A") & "|" & IniRead("calls.dat", $var[$i], "made_by", "N/A"), $callist) Next EndIf Case $msg = $exit GUIDelete($mainscreen) ExitLoop Case $msg = $call_find $searchscreen = GUICreate("Search", 430, 100) Opt("GUICoordMode", 2) GUICtrlCreateLabel("Field:", 20, 20, 30, 20) $search_field = GUICtrlCreateCombo("", 20, -22, 75, 20) GUICtrlSetData($search_field, "Call no|Status|Name|Subject|Call date|Priority|Logged by", "Call no") GUICtrlCreateLabel("Search string:", 20, -17, 70, 20) $search_string = GUICtrlCreateInput("", 20, -23, 150, 20) $ok = GUICtrlCreateButton("Search", -1, 25, 70, 20) $cancel = GUICtrlCreateButton("Cancel", 10, -1, 70, 20) $var = IniReadSectionNames("calls.dat") GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $ok If GUICtrlRead($search_field) = "Call no" Then $search_key = "callno" If GUICtrlRead($search_field) = "Status" Then $search_key = "status" If GUICtrlRead($search_field) = "Name" Then $search_key = "name" If GUICtrlRead($search_field) = "Subject" Then $search_key = "subject" If GUICtrlRead($search_field) = "Call date" Then $search_key = "open_date" If GUICtrlRead($search_field) = "Priority" Then $search_key = "priority" If GUICtrlRead($search_field) = "Logged by" Then $search_key = "made_by" _GUICtrlListView_DeleteAllItems($callist) $var = IniReadSectionNames("calls.dat") If $var = 1 Then $i = 1 Else For $i = 1 To $var[0] If IniRead("calls.dat", $var[$i], $search_key, "N/A") = GUICtrlRead($search_string) Then GUICtrlCreateListViewItem(IniRead("calls.dat", $var[$i], "callno", "N/A") & "|" & (IniRead("calls.dat", $var[$i], "status", "N/A")) & "|" & IniRead("calls.dat", $var[$i], "name", "N/A") & "|" & IniRead("calls.dat", $var[$i], "subject", "N/A") & "|" & IniRead("calls.dat", $var[$i], "open_date", "N/A") & "|" & IniRead("calls.dat", $var[$i], "priority", "N/A") & "|" & IniRead("calls.dat", $var[$i], "made_by", "N/A"), $callist) Else EndIf Next EndIf GUIDelete($searchscreen) ExitLoop Case $msg = $GUI_EVENT_CLOSE GUIDelete($searchscreen) ExitLoop Case $msg = $cancel GUIDelete($searchscreen) ExitLoop EndSelect WEnd EndSelect WEnd EndFunc ;==>main Func users() $guigebruikers = GUICreate("Users", 280, 180) Opt("GUICoordMode", 2) $userlist = GUICtrlCreateList("", 10, 20, 100, 130) $newuser = GUICtrlCreateButton("New...", 10, -130, 140, 20) $edituser = GUICtrlCreateButton("Edit user...", -1, 10) $deluser = GUICtrlCreateButton("Delete...", -1, 10) $changepw = GUICtrlCreateButton("Change password...", -1, 10) $sluiten = GUICtrlCreateButton("Close", -1, 10) $var = IniReadSectionNames("user.dat") For $i = 1 To $var[0] GUICtrlSetData($userlist, $var[$i]) Next GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $edituser If GUICtrlRead($userlist) = "" Then MsgBox(0, "Error", "No selection made") Else $guinewuser = GUICreate("Edit user", 340, 210) Opt("GUICoordMode", 2) GUICtrlCreateLabel("Username:", 10, 20, 160, 20) $newuserfield = GUICtrlCreateInput(GUICtrlRead($userlist), 1, -20, 160, 20, $ES_READONLY) GUICtrlCreateLabel("First name:", -321, 20, 160, 20) $newvoornaam = GUICtrlCreateInput(IniRead("user.dat", GUICtrlRead($userlist), "voornaam", "Not found"), 1, -20, 160, 20) GUICtrlCreateLabel("Last name:", -321, 20, 160, 20) $newachternaam = GUICtrlCreateInput(IniRead("user.dat", GUICtrlRead($userlist), "achternaam", "Notfound"), 1, -20, 160, 20) GUICtrlCreateLabel("Email adress", -321, 20, 160, 20) $newemail = GUICtrlCreateInput(IniRead("user.dat", GUICtrlRead($userlist), "email", "Notfound"), 1, -20, 160, 20) $ok = GUICtrlCreateButton("Ok", -321, 20, 140, 20) $cancel = GUICtrlCreateButton("Cancel", 40, -20) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE GUIDelete($guinewuser) ExitLoop Case $msg = $ok IniWrite("user.dat", GUICtrlRead($newuserfield), "voornaam", GUICtrlRead($newvoornaam)) IniWrite("user.dat", GUICtrlRead($newuserfield), "achternaam", GUICtrlRead($newachternaam)) IniWrite("user.dat", GUICtrlRead($newuserfield), "email", GUICtrlRead($newemail)) GUIDelete($guinewuser) ExitLoop Case $msg = $cancel GUIDelete($guinewuser) ExitLoop EndSelect WEnd EndIf Case $msg = $GUI_EVENT_CLOSE GUIDelete($guigebruikers) ExitLoop Case $msg = $changepw Global $selected_user $selected_user = GUICtrlRead($userlist) If $selected_user = "" Then MsgBox(0, "Error", "No user selected.") Else $guichangepw = GUICreate("Change password", 340, 130) Opt("GUICoordMode", 2) GUICtrlCreateLabel("New password", 10, 20, 160, 20) $newpass1 = GUICtrlCreateInput("", 1, -20, 160, 20, $ES_PASSWORD) GUICtrlCreateLabel("Retype password", -320, 20, 160, 20) $newpass2 = GUICtrlCreateInput("", 1, -20, 160, 20, $ES_PASSWORD) $ok = GUICtrlCreateButton("Ok", -320, 20, 140, 20) $cancel = GUICtrlCreateButton("Cancel", 40, -20) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE GUIDelete($guichangepw) ExitLoop Case $msg = $ok If GUICtrlRead($newpass1) = GUICtrlRead($newpass2) Then IniWrite("user.dat", GUICtrlRead($userlist), "pass", _StringEncrypt(1, GUICtrlRead($newpass1), "admin", 1)) GUIDelete($guichangepw) ExitLoop Else MsgBox(0, "Error", "Password does not match. Please try again.") EndIf Case $msg = $cancel GUIDelete($guichangepw) ExitLoop EndSelect WEnd EndIf Case $msg = $sluiten GUIDelete($guigebruikers) ExitLoop Case $msg = $deluser $msgbox = MsgBox(4, "Delete?", "Are you sure you want to delete user " & GUICtrlRead($userlist)) If $msgbox = 6 Then Sleep(10) IniDelete("user.dat", GUICtrlRead($userlist)) _GUICtrlListBox_BeginUpdate(GUICtrlGetHandle($userlist)) _GUICtrlListBox_ResetContent(GUICtrlGetHandle($userlist)) _GUICtrlListBox_EndUpdate(GUICtrlGetHandle($userlist)) $var1 = IniReadSectionNames("user.dat") For $i = 1 To $var1[0] GUICtrlSetData($userlist, $var1[$i]) Next EndIf Case $msg = $newuser new_user() _GUICtrlListBox_BeginUpdate(GUICtrlGetHandle($userlist)) _GUICtrlListBox_ResetContent(GUICtrlGetHandle($userlist)) _GUICtrlListBox_EndUpdate(GUICtrlGetHandle($userlist)) $var1 = IniReadSectionNames("user.dat") For $i = 1 To $var1[0] GUICtrlSetData($userlist, $var1[$i]) Next EndSelect WEnd EndFunc ;==>users Func new_user() $guinewuser = GUICreate("New user", 340, 250) Opt("GUICoordMode", 2) GUICtrlCreateLabel("Username:", 10, 20, 160, 20) $newuserfield = GUICtrlCreateInput("", 1, -20, 160, 20) GUICtrlCreateLabel("Password:", -321, 20, 160, 20) $newpwfield = GUICtrlCreateInput("", 1, -20, 160, 20, $ES_PASSWORD) GUICtrlCreateLabel("First name:", -321, 20, 160, 20) $newvoornaam = GUICtrlCreateInput("", 1, -20, 160, 20) GUICtrlCreateLabel("Last name:", -321, 20, 160, 20) $newachternaam = GUICtrlCreateInput("", 1, -20, 160, 20) GUICtrlCreateLabel("Email adress:", -321, 20, 160, 20) $newemail = GUICtrlCreateInput("", 1, -20, 160, 20) $ok = GUICtrlCreateButton("Ok", -320, 20, 140, 20) $cancel = GUICtrlCreateButton("Cancel", 40, -20) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE GUIDelete($guinewuser) ExitLoop Case $msg = $ok IniWrite("user.dat", GUICtrlRead($newuserfield), "pass", _StringEncrypt(1, GUICtrlRead($newpwfield), "admin", 1)) IniWrite("user.dat", GUICtrlRead($newuserfield), "voornaam", GUICtrlRead($newvoornaam)) IniWrite("user.dat", GUICtrlRead($newuserfield), "achternaam", GUICtrlRead($newachternaam)) IniWrite("user.dat", GUICtrlRead($newuserfield), "email", GUICtrlRead($newemail)) GUIDelete($guinewuser) ExitLoop Case $msg = $cancel GUIDelete($guinewuser) ExitLoop EndSelect WEnd EndFunc ;==>new_user Func settings() $guisettings = GUICreate("Settings", 350, 100) Opt("GUICoordMode", 2) GUICtrlCreateLabel("SMTP Server:", 10, 20, 160, 20) $smtpserver = GUICtrlCreateInput("", 1, -20, 160, 20) $ok = GUICtrlCreateButton("Ok", -320, 20, 140, 20) $cancel = GUICtrlCreateButton("Cancel", 40, -20) If FileExists("settings.ini") Then GUICtrlSetData($smtpserver, IniRead("settings.ini", "settings", "smtp-server", "")) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE GUIDelete($guisettings) ExitLoop Case $msg = $ok IniWrite("settings.ini", "settings", "smtp-server", GUICtrlRead($smtpserver)) MsgBox(0, "Info", "Settings saved.") GUIDelete($guisettings) ExitLoop Case $msg = $cancel GUIDelete($guisettings) ExitLoop EndSelect WEnd EndFunc ;==>settings