コード例 #1
0
        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
            }
        }
コード例 #2
0
        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);
        }