private void TrvMenu_Expanded(object sender, RoutedEventArgs e) { if (!(e.OriginalSource is TreeViewItem tvi)) { return; } if (!(tvi.DataContext is TreePathItem node)) { return; } if (node.Type == Item.FileType.NONE) { return; } try { node.Items.Clear(); this.Handler.SetCurrentPath(node.Path + "\\"); foreach (var t in this.Handler.ListDirectory(node.Path)) { TreePathItem n1; try { n1 = new TreePathItem(t); try { if (this.Handler.ListDirectory(this.Handler.GetCurrentPath()).Length == 0) { n1.Items.Clear(); //clear default item } } catch (Exception exception) { var tcs = TreePathItem.Empty; tcs.Name = exception.Message; n1.Items.Add(tcs); } } catch { n1 = TreePathItem.Empty; n1.Name = t.Name; } node.Items.Add(n1); } } catch { // ignored } }
private void MainWindow_OnLoaded(object sender, RoutedEventArgs e) { NativeMethods.EnableBlur(new WindowInteropHelper(this).Handle); GetControls(); var helper = new WindowInteropHelper(this); if (helper.Handle != null) { var source = HwndSource.FromHwnd(helper.Handle); if (source != null) { source.AddHook(HwndMessageHook); } } if (SettingsHandler.ConsolePresent) { StartConsole(); } else { var consoleWrapper = new Thread(StartConsole); consoleWrapper.Start(); } this._root = TreePathItem.Empty; this._root.Icon = DefaultIcons.ShieldIcon; this._root.Name = SettingsHandler.ROOT_FOLDER; this._root.Path = SettingsHandler.ROOT_FOLDER; this.TreeControl.Items.Add(this._root); this._root.Items.Add(new TreePathItem(new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.System)))); this._root.Items.Add(new TreePathItem(new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)))); this._root.Items.Add(new TreePathItem(new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)))); this._root.Items.Add(new TreePathItem(new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)))); this._root.Items.Add(new TreePathItem(new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)))); this._root.Items.Add(new TreePathItem(new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)))); this._root.Items.Add(new TreePathItem(new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures)))); this._root.Items.Add(new TreePathItem(new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyVideos)))); foreach (var driveInfo in DriveInfo.GetDrives()) { var node = new TreePathItem(driveInfo.RootDirectory); this.TreeControl.Items.Add(node); } #if PerformanceTest CreateContextMenu(); var t = new Thread(() => { const int MaxTaps = 100; var r = new Random(); while (true && Program.Running) { Thread.Sleep(2000); for (int i = 0; i < MaxTaps; i++) { this.Dispatcher?.Invoke(() => { AddTab(r.NextDouble() > .9 ? TapType.Settings : TapType.Explorer, "S:\\"); }); Thread.Sleep(10); } Thread.Sleep(1000); for (int i = 0; i < MaxTaps; i++) { var fg = i; this.Dispatcher?.Invoke(() => { this.TabControl.SelectedIndex = fg; }); Thread.Sleep(20); } Thread.Sleep(1000); for (int i = 0; i < MaxTaps; i++) { this.Dispatcher?.Invoke(() => { CloseTap((TabItem)this.TabControl.Items[0]); }); Thread.Sleep(20); } Thread.Sleep(1000); GC.Collect(1, GCCollectionMode.Forced, true); } }); t.SetApartmentState(ApartmentState.STA); t.Start(); #endif AddTab(TapType.EXPLORER); }