Ejemplo n.º 1
0
        private void AddSingleFileResult(List <UDT_DLL.udtPatternMatch> results, List <DemoInfo> demos)
        {
            uint patternBits = 0;

            foreach (var result in results)
            {
                patternBits |= result.Patterns;
            }

            var copyMenuItem = new MenuItem();

            copyMenuItem.Header  = App.CreateContextMenuHeader("Copy to Clipboard", "(Ctrl+C)");
            copyMenuItem.Command = _fileCopyCommand.RoutedCommand;

            var cutMenuItem = new MenuItem();

            cutMenuItem.Header  = "Apply Cut(s)";
            cutMenuItem.Command = _fileCutCommand.RoutedCommand;

            var revealMenuItem = new MenuItem();

            revealMenuItem.Header  = "Reveal in File Explorer";
            revealMenuItem.Command = _fileRevealCommand.RoutedCommand;

            var selectMenuItem = new MenuItem();

            selectMenuItem.Header  = "Select in Demo List";
            selectMenuItem.Command = _fileSelectCommand.RoutedCommand;

            var contextMenu = new ContextMenu();

            contextMenu.Items.Add(copyMenuItem);
            contextMenu.Items.Add(selectMenuItem);
            contextMenu.Items.Add(cutMenuItem);
            contextMenu.Items.Add(new Separator());
            contextMenu.Items.Add(revealMenuItem);

            var fileIndex = results[0].DemoInputIndex;
            var demo      = demos[(int)fileIndex];
            var fileName  = Path.GetFileNameWithoutExtension(demo.FilePath);
            var matches   = results.Count.ToString();
            var patterns  = FormatPatterns(patternBits);
            var cutResult = new SearchResultFileDisplayInfo(fileName, matches, patterns, fileIndex, demo);
            var fileItem  = new ListViewItem();

            fileItem.Content     = cutResult;
            fileItem.ContextMenu = contextMenu;
            _fileResultsListView.Items.Add(fileItem);
        }
Ejemplo n.º 2
0
        public void UpdateResults(List <UDT_DLL.udtPatternMatch> results, List <DemoInfo> demos)
        {
            _cutResultsListView.Items.Clear();
            _fileResultsListView.Items.Clear();

            results.Sort((a, b) => a.StartTimeMs.CompareTo(b.StartTimeMs));
            results.StableSort((a, b) => a.GameStateIndex.CompareTo(b.GameStateIndex));
            results.StableSort((a, b) => a.DemoInputIndex.CompareTo(b.DemoInputIndex));

            _results     = results;
            _resultDemos = demos;

            foreach (var result in results)
            {
                var index = result.DemoInputIndex;
                if (index >= demos.Count)
                {
                    continue;
                }

                var copyMenuItem = new MenuItem();
                copyMenuItem.Header  = App.CreateContextMenuHeader("Copy to Clipboard", "(Ctrl+C)");
                copyMenuItem.Command = _cutCopyCommand.RoutedCommand;

                var cutMenuItem = new MenuItem();
                cutMenuItem.Header  = "Apply Cut(s)";
                cutMenuItem.Command = _cutCutCommand.RoutedCommand;

                var revealMenuItem = new MenuItem();
                revealMenuItem.Header  = "Reveal in File Explorer";
                revealMenuItem.Command = _cutRevealCommand.RoutedCommand;

                var selectMenuItem = new MenuItem();
                selectMenuItem.Header  = "Select in Demo List";
                selectMenuItem.Command = _cutSelectCommand.RoutedCommand;

                var contextMenu = new ContextMenu();
                contextMenu.Items.Add(copyMenuItem);
                contextMenu.Items.Add(selectMenuItem);
                contextMenu.Items.Add(cutMenuItem);
                contextMenu.Items.Add(new Separator());
                contextMenu.Items.Add(revealMenuItem);

                var demo      = demos[(int)index];
                var fileName  = Path.GetFileNameWithoutExtension(demo.FilePath);
                var gs        = result.GameStateIndex.ToString();
                var start     = App.FormatMinutesSeconds(result.StartTimeMs / 1000);
                var end       = App.FormatMinutesSeconds(result.EndTimeMs / 1000);
                var patterns  = FormatPatterns(result.Patterns);
                var cutResult = new SearchResultCutDisplayInfo(fileName, gs, start, end, patterns, result, demo);
                var cutItem   = new ListViewItem();
                cutItem.Content     = cutResult;
                cutItem.ContextMenu = contextMenu;
                _cutResultsListView.Items.Add(cutItem);
            }

            uint currentFileIndex = uint.MaxValue;
            var  fileResults      = new List <UDT_DLL.udtPatternMatch>();

            foreach (var result in results)
            {
                var index = result.DemoInputIndex;
                if (index >= demos.Count)
                {
                    continue;
                }

                if (currentFileIndex != index)
                {
                    if (fileResults.Count > 0)
                    {
                        AddSingleFileResult(fileResults, demos);
                        fileResults.Clear();
                    }
                }
                fileResults.Add(result);
                currentFileIndex = index;
            }
            if (fileResults.Count > 0)
            {
                AddSingleFileResult(fileResults, demos);
            }

            var cutCount  = _cutResultsListView.Items.Count;
            var fileCount = _fileResultsListView.Items.Count;

            _resultsTextBlock.Text = string.Format("Found {0} match{1} in {2} demo file{3}.",
                                                   cutCount, cutCount > 1 ? "es" : "", fileCount, fileCount > 1 ? "s" : "");

            var fileMode = _displayFilesRadioButton.IsChecked ?? false;

            if (fileMode)
            {
                OnFileModeChecked();
            }
            else
            {
                OnCutModeChecked();
            }
        }