Changeset 2260


Ignore:
Timestamp:
Dec 26, 2010, 9:21:20 PM (11 years ago)
Author:
Sven Rech
Message:

added statistics to quickwatch.

Location:
trunk/CrypPlugins/KeySearcher
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/KeySearcher.cs

    r2257 r2260  
    12741274            }
    12751275            WriteStatistics(dataIdentifier);
     1276            ((QuickWatch) QuickWatchPresentation).StatisticsPresentation.Statistics = statistic;
    12761277            updateToplist();
    12771278        }
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/StatisticsPresentation.xaml

    r2235 r2260  
    33             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    44             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    5              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    6              mc:Ignorable="d"
     5             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:Controls="clr-namespace:KeySearcherPresentation.Controls" xmlns:System="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d"
    76             d:DesignHeight="300" d:DesignWidth="300">
     7    <UserControl.Resources>
     8        <Controls:InformationToProgressConverter x:Key="InformationToProgressConverter"/>
     9        <Controls:InformationToProgressConverter2 x:Key="InformationToProgressConverter2"/>
     10    </UserControl.Resources>
     11   
    812    <Grid>
    9         <Label Content="Nothing here yet!" />
     13        <TreeView HorizontalAlignment="Stretch" Name="statisticsTree" VerticalAlignment="Stretch" ItemsSource="{Binding}">
     14            <TreeView.ItemTemplate>
     15                <HierarchicalDataTemplate ItemsSource="{Binding Path=Value}">
     16                    <HierarchicalDataTemplate.ItemTemplate>
     17                        <HierarchicalDataTemplate ItemsSource="{Binding}">
     18                            <Grid>
     19                                <Grid.ColumnDefinitions>
     20                                    <ColumnDefinition Width="200" />
     21                                    <ColumnDefinition/>
     22                                </Grid.ColumnDefinitions>
     23                                <ProgressBar Value="{Binding Path=Value.Count, Mode=OneTime,Converter={StaticResource ResourceKey=InformationToProgressConverter2}}" Grid.Column="0" Maximum="1" />
     24                                <TextBlock Text="{Binding Path=Value.Hostname}" Grid.Column="1"/>
     25                            </Grid>
     26                        </HierarchicalDataTemplate>
     27                    </HierarchicalDataTemplate.ItemTemplate>
     28                   
     29                    <Grid>
     30                        <Grid.ColumnDefinitions>
     31                            <ColumnDefinition Width="200" />
     32                            <ColumnDefinition/>
     33                        </Grid.ColumnDefinitions>                       
     34                        <ProgressBar Value="{Binding Path=Value, Mode=OneTime, Converter={StaticResource ResourceKey=InformationToProgressConverter}}" Grid.Column="0" Maximum="1" />
     35                        <TextBlock Text="{Binding Path=Key}" Grid.Column="1"/>
     36                    </Grid>
     37                </HierarchicalDataTemplate>
     38            </TreeView.ItemTemplate>
     39        </TreeView>
    1040    </Grid>
    1141</UserControl>
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/StatisticsPresentation.xaml.cs

    r2235 r2260  
    11using System;
    22using System.Collections.Generic;
     3using System.ComponentModel;
     4using System.Globalization;
    35using System.Linq;
    46using System.Text;
     7using System.Threading;
    58using System.Windows;
    69using System.Windows.Controls;
     
    1215using System.Windows.Navigation;
    1316using System.Windows.Shapes;
     17using System.Windows.Threading;
     18using KeySearcher;
    1419
    1520namespace KeySearcherPresentation.Controls
    1621{
     22
     23    [ValueConversion(typeof(Dictionary<long, Information>), typeof(Double))]
     24    class InformationToProgressConverter : IValueConverter
     25    {
     26        public StatisticsPresentation StatisticsPresentation { get; set; }
     27
     28        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     29        {
     30            if (StatisticsPresentation != null)
     31            {
     32                double allCount = (StatisticsPresentation.Statistics).Sum(i => i.Value.Sum(j => j.Value.Count));
     33                double vCount = ((Dictionary<long, Information>) value).Sum(i => i.Value.Count);
     34                return vCount/allCount;
     35            }
     36            else
     37            {
     38                return 0;
     39            }
     40        }
     41
     42        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
     43        {
     44            throw new NotImplementedException();
     45        }
     46    }
     47
     48    [ValueConversion(typeof(Int32), typeof(Double))]
     49    class InformationToProgressConverter2 : IValueConverter
     50    {
     51        public StatisticsPresentation StatisticsPresentation { get; set; }
     52
     53        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
     54        {
     55            if (StatisticsPresentation != null)
     56            {
     57                double allCount = (StatisticsPresentation.Statistics).Sum(i => i.Value.Sum(j => j.Value.Count));
     58                return (int)value / allCount;
     59            }
     60            else
     61            {
     62                return 0;
     63            }
     64        }
     65
     66        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
     67        {
     68            throw new NotImplementedException();
     69        }
     70    }
     71
    1772    /// <summary>
    1873    /// Interaction logic for StatisticsPresentation.xaml
     
    2378        {
    2479            InitializeComponent();
     80            ((InformationToProgressConverter)Resources["InformationToProgressConverter"]).StatisticsPresentation = this;
     81            ((InformationToProgressConverter2)Resources["InformationToProgressConverter2"]).StatisticsPresentation = this;
     82
     83            //statisticsTree.Items.SortDescriptions.Add(new SortDescription("ItemTemplate.VisualTree.Children[0].Value", ListSortDirection.Ascending));
     84        }
     85
     86        private Dictionary<string, Dictionary<long, Information>> statistics = null;
     87        public Dictionary<string, Dictionary<long, Information>> Statistics
     88        {
     89            get { return statistics; }
     90            set
     91            {
     92                statistics = value;
     93                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     94                                                {
     95                                                    //statisticsTree.DataContext = null;
     96                                                    statisticsTree.DataContext = Statistics;
     97                                                    statisticsTree.Items.Refresh();
     98                                                }, null);
     99
     100            }
    25101        }
    26102    }
Note: See TracChangeset for help on using the changeset viewer.