#include <GUIConstants.au3>
#include <GUIComboBox.au3>
#Include <GuiListView.au3>
#include <File.au3>
#NoTrayIcon

Local $ListView1, $exStyles = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES), $hListView
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Filmmanager v2.1          (c) Carsten Schneider", 588, 355, 332, 186)
GUISetBkColor(0xC0DCC0)
GUISetCursor(14)
$ListView1 = _GUICtrlListView_Create($Form1, "Name|VHS|DVD|CZ", 3, 3, 334, 304, -1, 0x00000020)
_GUICtrlListView_SetExtendedListViewStyle ($ListView1, $exStyles)
_GUICtrlListView_SetColumnWidth($ListView1, 0, 197)
_GUICtrlListView_SetColumnWidth($ListView1, 1, 40)
_GUICtrlListView_SetColumnWidth($ListView1, 2, 40)
_GUICtrlListView_SetColumnWidth($ListView1, 3, 40)
$Button1 = GUICtrlCreateButton("Film entfernen", 339, 228, 246, 43, 0)
$Label1 = GUICtrlCreateLabel("Filmname:", 339, 6, 117, 33)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
$Input1 = GUICtrlCreateInput("", 339, 42, 244, 28)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Typ:", 339, 78, 51, 33)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
$Combo1 = GUICtrlCreateCombo("", 339, 114, 244, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "VHS|DVD|CZ")
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
_GUICtrlComboBox_SetCurSel($Combo1, 0)
$Button3 = GUICtrlCreateButton("Ausgewählten Film bearbeiten", 339, 144, 246, 43, 0)
$Button4 = GUICtrlCreateButton("Neuen Film erstellen", 339, 186, 246, 43, 0)
$Button5 = GUICtrlCreateButton("Filmliste neu laden und sortieren", 2, 309, 336, 43, 0)
GUICtrlSetState($Input1, $GUI_FOCUS)
$Button6 = GUICtrlCreateButton("Schließen", 339, 270, 246, 39, 0)
$Button7 = GUICtrlCreateButton("Suchen", 462, 309, 123, 43)
$Button8 = GUICtrlCreateButton("Liste drucken", 339, 309, 123, 43, 0)
$Button9 = GUICtrlCreateButton("Abrufen", 460, 3, 123, 35)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$merken = ""

Func _laden()
	If FileExists("data.ini") Then
		$count = IniReadSectionNames("data.ini")
		SplashTextOn("", "Daten werden geladen (" & $count[0] & " Filme) ...", 300, 50, -1, -1, 33)
		_GUICtrlListView_DeleteAllItems($ListView1)
		$dataname = IniReadSectionNames("data.ini")
		For $i = 1 to $dataname[0]
			$datatyp = IniRead("data.ini", $dataname[$i], "typ", "Error")
			_GUICtrlListView_AddItem($ListView1, $dataname[$i], $i)
			If $datatyp = "VHS" Then
				_GUICtrlListView_AddSubItem($ListView1, $i - 1, "    X", 1)
			ElseIf $datatyp = "DVD" Then
				_GUICtrlListView_AddSubItem($ListView1, $i - 1, "    X", 2)
			ElseIf $datatyp = "CZ" Then
				_GUICtrlListView_AddSubItem($ListView1, $i - 1, "    X", 3)
			EndIf
		Next
	Else
		MsgBox(0, "Error", "Filme konnten nicht geladen werden da die Datei 'data.ini' nicht gefunden wurde. Datei wird nach dem ersten neu erstellten Film erstellt.")
	EndIf
	SplashOff()
	_sort()
EndFunc

Func _sort()
	$count = _GUICtrlListView_GetItemCount($ListView1)
	SplashTextOn("", "Filme werden sortiert (" & $count & " Filme) ...", 300, 50, -1, -1, 33)
	Global $B_DESCENDING[_GUICtrlListView_GetColumnCount ($ListView1) ]
	_GUICtrlListView_SimpleSort($ListView1, $B_DESCENDING, 0)
	SplashOff()
EndFunc

_laden()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button6
			Exit
		Case $Button5
			_laden()
		Case $Button4
			$newname = GUICtrlRead($input1)
			$newtyp = GUICtrlRead($Combo1)
			If $newname = "" Then
				MsgBox(0, "Error", "Bitte geben Sie einen Filmname ein.")
			Else
				IniWrite("data.ini", $newname, "typ", $newtyp)
			EndIf
			_laden()
		Case $Button3
			$selected = _GUICtrlListView_GetSelectedIndices($ListView1)
			$newname = GUICtrlRead($input1)
			$newtyp = GUICtrlRead($Combo1)
			If $newname = "" Then
				MsgBox(0, "Error", "Bitte geben Sie einen Filmname ein.")
			ElseIf $selected = "-1" Then
				MsgBox(0, "Error", "Bitte wählen Sie einen Film zum editieren aus.")
			Else
				$selectedname = _GUICtrlListView_GetItemText($ListView1, $selected)
				IniDelete("data.ini", $selectedname)
				IniWrite("data.ini", $newname, "typ", $newtyp)
			EndIf
			_laden()
		Case $Button1
			$selected = _GUICtrlListView_GetSelectedIndices($ListView1)
			If $selected = "-1" Then
				MsgBox(0, "Error", "Bitte wählen Sie einen Film zum löschen aus.")
			Else
				$selectedname = _GUICtrlListView_GetItemText($ListView1, $selected)
				IniDelete("data.ini", $selectedname)
			EndIf
			_laden()
		Case $Button7
			$suchbegriff = InputBox("Suche", "Bitte geben Sie einen Suchbegriff ein" & @CRLF & "ACHTUNG: Groß- und Kleinschriebung beachten!")
			$suche = _GUICtrlListView_FindText($ListView1, $suchbegriff)
			If $suche = -1 Then
				MsgBox(0, "Error", "Es konnte kein Film gefunden werden.")
			Else
				_GUICtrlListView_SetItemSelected($ListView1, $suche)
				MsgBox(0, "Suche", "Der gesuchte Film wurde markiert. Bitte beachten Sie dass das automatische scrollen noch nicht möglich ist.")
			EndIf
		Case $Button9
			$selid = _GUICtrlListView_GetSelectionMark($ListView1)
			$sel = _GUICtrlListView_GetItemTextArray($ListView1, $selid)
			GUICtrlSetData($Input1, $sel[1])
			If $sel[4] = "    X" Then
				GUICtrlSetData($Combo1, "CZ")
			ElseIf $sel[3] = "    X" Then
				GUICtrlSetData($Combo1, "DVD")
			ElseIf $sel[2] = "    X" Then
				GUICtrlSetData($Combo1, "VHS")
			EndIf
		Case $Button8
			SplashTextOn("", "Druckvorgang wird vorbereitet...", 300, 50, -1, -1, 33)
			If FileExists("data.ini") Then
				$datacount = _GUICtrlListView_GetItemCount ($ListView1)
				$printfile = @TempDir & "\" & random(0, 999, 1) & ".txt"
				For $i = 1 to $datacount
					$e = $i - 1
					$data = _GUICtrlListView_GetItemTextArray($ListView1, $e)
					If $data[4] = "    X" Then
						FileWriteLine($printfile, "[CZ ]" & $data[1])
					ElseIf $data[3] = "    X" Then
						FileWriteLine($printfile, "[DVD]" & $data[1])
					ElseIf $data[2] = "    X" Then
						FileWriteLine($printfile, "[VHS]" & $data[1])
					EndIf
				Next
			EndIf
			SplashOff()
			SplashTextOn("", "Drucken...", 300, 50, -1, -1, 33)
			$print = _FilePrint($printfile)
			SplashOff()
			If $print Then
				MsgBox(0, "Druckvorgang", "Der Druckvorgang wurde erfolgreich an Ihren Standarddrucker gestartet!")
				Else
				MsgBox(0, "Druckvorgang", "Error: " & @error & @CRLF & "Datei konnte nicht gedruckt werden.")
			EndIf
	EndSwitch
WEnd