Changeset 2285


Ignore:
Timestamp:
Jan 4, 2011, 3:52:08 PM (11 years ago)
Author:
matkovic
Message:

-added sort for the statistics
-arranged position for the chunk display
-added ProgressBar color alternations
-fixed size
-added Chunk sum
-minor Design choices

By Viktor Matkovic, Dennis Nolte

Location:
trunk/CrypPlugins/KeySearcher
Files:
4 edited

Legend:

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

    r2283 r2285  
    12491249                //taking the dictionary in this avatarname
    12501250                Dictionary<long, Information> MaschCount = updatedStatistics[avname];
    1251 
     1251               
    12521252                //if the avatarname already exists in the statistics
    12531253                if (statistic.ContainsKey(avname))
     
    12811281                    statistic[avname] = MaschCount;
    12821282                }
     1283
     1284                statistic[avname] = statistic[avname].OrderByDescending((x) => x.Value.Count).ToDictionary(x => x.Key, y => y.Value);
    12831285            }         
    12841286            WriteStatistics(dataIdentifier);
     1287
    12851288            ((QuickWatch) QuickWatchPresentation).StatisticsPresentation.Statistics = statistic;
    12861289            updateToplist();
  • trunk/CrypPlugins/KeySearcher/KeySearcher.csproj

    r2235 r2285  
    125125    <Compile Include="P2P\Helper\ConnectionHelper.cs" />
    126126    <Compile Include="P2P\Helper\DatabaseStatistics.cs" />
     127    <Compile Include="P2P\Helper\WidthConverter.cs" />
    127128    <Compile Include="P2P\Presentation\StatisticsGenerator.cs" />
    128129    <Compile Include="P2P\Presentation\StatusContainer.cs" />
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/StatisticsPresentation.xaml

    r2267 r2285  
    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" xmlns:Controls="clr-namespace:KeySearcherPresentation.Controls" xmlns:System="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d"
     5             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
     6             xmlns:g="clr-namespace:KeySearcher.P2P.Helper"
     7             xmlns:Controls="clr-namespace:KeySearcherPresentation.Controls" xmlns:System="clr-namespace:System;assembly=mscorlib" mc:Ignorable="d"
    68             d:DesignHeight="300" d:DesignWidth="300">
    79    <UserControl.Resources>
    810        <Controls:InformationToProgressConverter x:Key="InformationToProgressConverter"/>
    911        <Controls:InformationToProgressConverter2 x:Key="InformationToProgressConverter2"/>
     12        <Controls:ChunkSumConverter x:Key="ChunkSumConverter"></Controls:ChunkSumConverter>
     13        <g:WidthConverter x:Key="WidthConverter"></g:WidthConverter>
     14        <AlternationConverter x:Key="TeamsBackgroundConverter">
     15            <SolidColorBrush>LimeGreen</SolidColorBrush>
     16            <SolidColorBrush>Red</SolidColorBrush>
     17            <SolidColorBrush>Blue</SolidColorBrush>
     18        </AlternationConverter>
    1019    </UserControl.Resources>
    1120   
    1221    <Grid>
    13         <TreeView HorizontalAlignment="Stretch" Name="statisticsTree" VerticalAlignment="Stretch" ItemsSource="{Binding}">
     22        <TreeView HorizontalAlignment="Stretch" Name="statisticsTree" VerticalAlignment="Stretch" ItemsSource="{Binding}" AlternationCount="3">
    1423            <TreeView.ItemTemplate>
    1524                <HierarchicalDataTemplate ItemsSource="{Binding Path=Value}">
    1625                    <HierarchicalDataTemplate.ItemTemplate>
    1726                        <HierarchicalDataTemplate ItemsSource="{Binding}">
    18                             <Grid>
    19                                 <Grid.ColumnDefinitions>
     27                            <StackPanel Orientation="Horizontal" Margin="1">
     28                                <!--<Grid.ColumnDefinitions>
    2029                                    <ColumnDefinition Width="200" />
    2130                                    <ColumnDefinition Width="5" />
    22                                     <ColumnDefinition/>
    23                                     <ColumnDefinition/>
    24                                     <ColumnDefinition Width="5" />                                   
    25                                     <ColumnDefinition/>
    26                                 </Grid.ColumnDefinitions>
    27                                 <ProgressBar Value="{Binding Path=Value.Count, Mode=OneTime, Converter={StaticResource ResourceKey=InformationToProgressConverter2}}" Grid.Column="0" Maximum="1" />
    28                                 <TextBlock Text="Chunks: " Grid.Column="2"/>
    29                                 <TextBlock Text="{Binding Path=Value.Count, StringFormat=\{0\,-5\}}" Grid.Column="3"/>
    30                                 <TextBlock Text="{Binding Path=Value.Hostname}" Grid.Column="5"/>
    31                             </Grid>
     31                                    <ColumnDefinition/>                                   
     32                                </Grid.ColumnDefinitions>-->
     33                                <Grid>
     34                                    <ProgressBar Foreground="{Binding RelativeSource={RelativeSource FindAncestor,  AncestorLevel=2, AncestorType={x:Type TreeViewItem}},Path=(ItemsControl.AlternationIndex),Converter={StaticResource ResourceKey=TeamsBackgroundConverter}}" Value="{Binding Path=Value.Count, Mode=OneTime, Converter={StaticResource ResourceKey=InformationToProgressConverter2}}" Width="{Binding ElementName=statisticsTree, Path=ActualWidth, Converter={StaticResource ResourceKey=WidthConverter}}" Maximum="1" />
     35                                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
     36                                        <TextBlock Text="Chunks: "/>
     37                                        <TextBlock Text="{Binding Path=Value.Count, StringFormat=\{0\,-5\}}"/>
     38                                    </StackPanel>
     39                                </Grid>
     40                                <TextBlock Text="{Binding Path=Value.Hostname}" Grid.Column="3"/>
     41                            </StackPanel>
    3242                        </HierarchicalDataTemplate>
    3343                    </HierarchicalDataTemplate.ItemTemplate>
    34                    
    35                     <Grid>
    36                         <Grid.ColumnDefinitions>
    37                             <ColumnDefinition Width="200" />
    38                             <ColumnDefinition Width="5" />
    39                             <ColumnDefinition/>
    40                         </Grid.ColumnDefinitions>                       
    41                         <ProgressBar Value="{Binding Path=Value, Mode=OneTime, Converter={StaticResource ResourceKey=InformationToProgressConverter}}" Grid.Column="0" Maximum="1" />
    42                         <TextBlock Text="{Binding Path=Key}" Grid.Column="2"/>                       
    43                     </Grid>
     44
     45
     46                    <StackPanel Orientation="Horizontal" Margin="1">
     47                        <!--<Grid.ColumnDefinitions>
     48                                    <ColumnDefinition Width="200" />
     49                                    <ColumnDefinition Width="5" />
     50                                    <ColumnDefinition/>                                   
     51                                </Grid.ColumnDefinitions>-->
     52                        <Grid>
     53                            <ProgressBar x:Name="Bar" Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TreeViewItem}},Path=(ItemsControl.AlternationIndex),Converter={StaticResource ResourceKey=TeamsBackgroundConverter}}" Value="{Binding Path=Value, Mode=OneTime, Converter={StaticResource ResourceKey=InformationToProgressConverter}}" Width="{Binding ElementName=statisticsTree, Path=ActualWidth, Converter={StaticResource ResourceKey=WidthConverter}}" Maximum="1" />
     54                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
     55                                <TextBlock Text="Chunks: "/>
     56                                <TextBlock Text="{Binding Path=Key, Converter={StaticResource ResourceKey=ChunkSumConverter}, StringFormat=\{0\,-5\}}"/>
     57                            </StackPanel>
     58                        </Grid>
     59                        <TextBlock Text="{Binding Path=Key}"/>
     60                    </StackPanel>
    4461                </HierarchicalDataTemplate>
    4562            </TreeView.ItemTemplate>
  • trunk/CrypPlugins/KeySearcher/Presentation/Controls/StatisticsPresentation.xaml.cs

    r2267 r2285  
    3131            {
    3232                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;
     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(string), typeof(Double))]
     49    class ChunkSumConverter : 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                string key = (string) value;
     58                var data = (StatisticsPresentation.Statistics)[key];
     59                return data.Sum(i => i.Value.Count);
    3560            }
    3661            else
     
    80105            ((InformationToProgressConverter)Resources["InformationToProgressConverter"]).StatisticsPresentation = this;
    81106            ((InformationToProgressConverter2)Resources["InformationToProgressConverter2"]).StatisticsPresentation = this;
     107            ((ChunkSumConverter)Resources["ChunkSumConverter"]).StatisticsPresentation = this;
     108
     109
     110
    82111
    83112            //statisticsTree.Items.SortDescriptions.Add(new SortDescription("ItemTemplate.VisualTree.Children[0].Value", ListSortDirection.Ascending));
     
    92121                statistics = value;
    93122                Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
    94                                                 {
    95                                                     statisticsTree.DataContext = Statistics;
    96                                                     statisticsTree.Items.Refresh();
     123                                               {
     124                                                   var orderedstats = statistics.OrderByDescending((x) => x.Value.Sum((z) => z.Value.Count));
     125                                                   statisticsTree.DataContext = orderedstats;
     126                                                   statisticsTree.Items.Refresh();
    97127                                                }, null);
    98128
Note: See TracChangeset for help on using the changeset viewer.