function Load_main { param ($root) # Arraydefinition ## 0=Name,1=Größe,2=checked,3=$false->Name $true->Größe $Script:sortmain=@("up","up",$false, $false) # XAML Fenster [XML]$Form = @" "@ # Lädt das Fenster $window=[Windows.Markup.XamlReader]::Load((New-Object System.Xml.XmlNodeReader $Form)) # Objekt - Variablen Verknüpfung $pb = $window.findName("pb") $Laufwerk = $window.findName("Laufwerk") $Script:mainimgswitch = $window.findName("imgswitch") $imginfo = $window.findName("imginfo") $Script:mainelements = $window.findName("elemente") $Script:mainsize = $window.findName("size") $Script:bar = $window.findName("pbbar") $Script:last = $window.findName("tblaufwerkauslastung") $Script:maintree = $window.findName("treeview") $Script:mainbrowser = $window.findName("browser") $Script:mainscanner = $window.findName("btnScanner") $Script:mainfilter = $window.findName("btnchoosefilter") $Script:maininfo = $window.findName("btninfo") $Script:mainloading = $window.findName("pbLoading") $Script:mainswitch = $window.findName("btnfiltersw") $Script:maindel = $window.findName("btndel") $Script:mainmove = $window.findName("btnmove") $Script:mainsortname = $window.findName("btnsortname") $Script:mainsortsize = $window.findName("btnsortsize") $Script:maincheckall = $window.findName("btncheckbox") $Script:mainchoosen1 = $window.findName("choosen1") $Script:mainchoosen2 = $window.findName("choosen2") $Script:mainchoosen3 = $window.findName("choosen3") $Script:mainchoosen4 = $window.findName("choosen4") # Verknüpft feste Elemente $window.Title = $Script:Version $window.icon="$root/Source/Logo.png" $Laufwerk.Source = "$root/Source/HDD1.png" $mainimgswitch.Source = "$root/Source/swfalse.png" $imginfo.Source = "$root/Source/info.png" $mainelements.Text = " 0 Elemente" $mainsize.Text = " 0 MB" ### GIF Sanduhr $file = (get-item "$root/Source/mainhourglas.gif") $img = [System.Drawing.Image]::Fromfile($file); $pb.Image = $img return $window } function Set_Defaults_Main { param ($array) if (!$array[5]) { $Script:bar.Value=$array[4] $Script:last.Text=$array[0] }else{ $Script:last.Text="OFFLINE" } } function Get_TreeView { $maintree.Items.Clear() $RootItem = New-Object System.Windows.Controls.TreeViewItem $RootItem.Header = $Script:folderdb[0][0] $RootItem.Tag = 0 for ($i = 5; $i -lt $Script:folderdb[0].count; $i++) { if ($Script:folderdb[0][$i].contains("f")) { $item=$Script:folderdb[0][$i].Substring(1) Get_TreeViewExpand $RootItem $item } [System.Windows.Forms.Application]::DoEvents() } $maintree.Items.Add($RootItem) } function Get_TreeViewExpand { param ($parentItem, $Folder) $int = [int]$Folder if (!$Script:folderdb[$int][4]) { $subItem = New-Object System.Windows.Controls.TreeViewItem $subItem.Header = $Script:folderdb[$int][0] $subItem.Tag = $int [void]$parentItem.Items.Add($subItem) for ($i = 5; $i -lt $Script:folderdb[$int].count; $i++) { if ($Script:folderdb[$int][$i] -match "f") { $item=$Script:folderdb[$int][$i].Substring(1) Get_TreeViewExpand $subItem $item } [System.Windows.Forms.Application]::DoEvents() } } } function Browser_Path { param ($path) $data = @() $c=$false Log "Tree $path" -clear for ($t = 0; $t -lt 3; $t++) { if ($Script:filtercheck[$t]) { $c=$true } [System.Windows.Forms.Application]::DoEvents() } if ($c) { Filter_data $path }else { for ($i = 5; $i -lt $Script:folderdb[$path].count; $i++) { if ($Script:folderdb[$path][$i] -match "f") { $string=$Script:folderdb[$path][$i].Substring(1) $int = [int]$string if (!$Script:folderdb[$int][4]) { if ($Script:folderdb[$int][3]) { $cp = "$Script:ScriptRoot\Source\checked.png" }else { $cp = "$Script:ScriptRoot\Source\unchecked.png" } $Length = calc_Size $Script:folderdb[$int][1] $data += New-Object PSObject -prop @{Source="$Script:ScriptRoot\Source\Folder.png";Name=$Script:folderdb[$int][0];Size="$Length";Tag=$Script:folderdb[$path][$i];SourceChecked="$cp"} } }else { if (!$Script:filedb[$Script:folderdb[$path][$i]][4]) { if ($Script:filedb[$Script:folderdb[$path][$i]][3]) { $cp = "$Script:ScriptRoot\Source\checked.png" }else { $cp = "$Script:ScriptRoot\Source\unchecked.png" } $Length = calc_Size $Script:filedb[$Script:folderdb[$path][$i]][1] $icon = $Script:icontypes[$Script:filedb[$Script:folderdb[$path][$i]][5]] $data += New-Object PSObject -prop @{Source="$Script:ScriptRoot\icons\$icon.ico";Name=$Script:filedb[$Script:folderdb[$path][$i]][0];Size="$Length";Tag=$Script:folderdb[$path][$i];SourceChecked="$cp"} } } [System.Windows.Forms.Application]::DoEvents() $logcontent = "Main: Browser " + $Script:folderdb[$path][$i] Log $logcontent -clear } $item = [System.Windows.Data.ListCollectionView]$data $mainbrowser.Remove $mainbrowser.ItemsSource = $item } } function Check_Browser { param ($tag) $data = @() for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { if (($mainbrowser.Items.Tag[$i] -eq $tag) -or ($mainbrowser.Items.Count -eq 1)) { $item=$mainbrowser.Items[$i] if ($tag -match "f") { $string=$tag.Substring(1) $int = [int]$string if ($Script:folderdb[$int][3]) { $Script:folderdb[$int][3]=$false count_element $false $Script:folderdb[$int][1] $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} }else { $Script:folderdb[$int][3]=$true count_element $true $Script:folderdb[$int][1] $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} } }else { if ($Script:filedb[$tag][3]) { $Script:filedb[$tag][3]=$false count_element $false $Script:filedb[$tag][1] $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} }else { $Script:filedb[$tag][3]=$true count_element $true $Script:filedb[$tag][1] $data += New-Object PSObject -prop @{Source=$item.Source;Name=$item.Name;Size=$item.Size;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} } } }else { $data += $mainbrowser.Items[$i] } [System.Windows.Forms.Application]::DoEvents() } $item = [System.Windows.Data.ListCollectionView]$data $mainbrowser.Remove $mainbrowser.ItemsSource = $item } function main_sortname{ param([switch]$change) $data= @() if ($change) { if ($sortmain[0] -eq "up") { $sortmain[0]="down" }else { $sortmain[0]="up" } } for ($i = 0; $i -lt $mainbrowser.Items.count; $i++) { $item = $mainbrowser.Items[$i] $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$item.Checked;Tag=$item.Tag;SourceChecked=$Item.SourceChecked} [System.Windows.Forms.Application]::DoEvents() } if ($sortmain[0] -eq "up") { $data = $data | Sort-Object -Property Name }else { $data = $data | Sort-Object -Property Name -Descending } $sortmain[3]=$false $ItemList = [System.Windows.Data.ListCollectionView]$data $mainbrowser.ItemsSource = $ItemList } function main_sortsize { param([switch]$change) if ($change) { if ($sortmain[1] -eq "up") { $sortmain[1]="down" }else { $sortmain[1]="up" } } $data=@() $array=@() for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { $item = $mainbrowser.Items[$i] if ($item.Size.EndsWith("GB")) { $stringtrim = $item.Size.TrimEnd(" GB") }else { $stringtrim = $item.Size.TrimEnd(" MB") } $int = [int]$stringtrim $array += New-Object PSObject -prop @{Tag=$item.Tag;Size=$int} [System.Windows.Forms.Application]::DoEvents() } if ($sortmain[1] -eq "up") { $array = $array | Sort-Object -Property Size }else { $array = $array | Sort-Object -Property Size -Descending } for ($i = 0; $i -lt $array.Count; $i++) { for ($e = 0; $e -lt $mainbrowser.items.Count; $e++) { if ($array.Tag[$i] -eq $mainbrowser.Items.Tag[$e]) { $item=$mainbrowser.Items[$e] $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$item.Checked;Tag=$item.Tag;SourceChecked=$Item.SourceChecked} $e=$mainbrowser.items.Count } [System.Windows.Forms.Application]::DoEvents() } [System.Windows.Forms.Application]::DoEvents() } $sortmain[3]=$true $ItemList = [System.Windows.Data.ListCollectionView]$data $mainbrowser.Remove $mainbrowser.ItemsSource = $ItemList } function main_checkall { $data = @() $check = 0 if ($sortmain[2]) { $sortmain[2]=$false for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { $item = $mainbrowser.Items[$i] $tag=$item.Tag if ($tag -match "f") { $string=$tag.Substring(1) $int = [int]$string if ($folderdb[$int][3]) { $folderdb[$int][3]=$false count_element $false $Script:folderdb[$int][1] $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$false;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} $check++ }else { $data += $item } }else { if ($filedb[$tag][3]) { $filedb[$tag][3]=$false count_element $false $Script:filedb[$tag][1] $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$false;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\unchecked.png"} $check++ }else { $data += $item } } [System.Windows.Forms.Application]::DoEvents() } }else { $sortmain[2]=$true for ($i = 0; $i -lt $mainbrowser.Items.Count; $i++) { $item = $mainbrowser.Items[$i] $tag=$item.Tag if ($tag -match "f") { $string=$tag.Substring(1) $int = [int]$string if (!$folderdb[$int][3]) { $folderdb[$int][3]=$true count_element $true $Script:folderdb[$int][1] $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$true;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} $check++ }else { $data += $item } }else { if (!$filedb[$tag][3]) { $filedb[$tag][3]=$true count_element $true $Script:filedb[$tag][1] $data += New-Object PSObject -prop @{Name=$item.Name;Source=$item.Source;Size=$item.Size;Checked=$true;Tag=$item.Tag;SourceChecked="$Script:ScriptRoot\Source\checked.png"} $check++ }else { $data += $item } } [System.Windows.Forms.Application]::DoEvents() } } if ($check -eq 0) { main_checkall }else{ $ItemList = [System.Windows.Data.ListCollectionView]$data $mainbrowser.ItemsSource = $ItemList } } function main_loading { param ($stat) if($stat){ $Script:mainloading.Visibility = "Visible" $Script:maininfo.Visibility = "Hidden" }else { $Script:mainloading.Visibility = "Hidden" $Script:maininfo.Visibility = "Visible" } } Function Select-FolderDialog{ param([string]$Description="Zielverzeichnis wählen",[string]$RootFolder="Desktop") [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |Out-Null $objForm = New-Object System.Windows.Forms.FolderBrowserDialog $objForm.Rootfolder = $RootFolder $objForm.Description = $Description $Show = $objForm.ShowDialog() If ($Show -eq "OK"){ Return $objForm.SelectedPath }else{ Return $false } } Log "### Main geladen ###" -clear