source: trunk/CrypPlugins/PeerToPeerManager_NEW/ProgressChunks.xaml.cs @ 1199

Last change on this file since 1199 was 1199, checked in by arnold, 12 years ago

P2PManager

  • Enlarged KeyPatternSize range to 1.000, because the new DES/AES-Implementation runs so fast, that a KeyPattern with KeyPatternSize of 150 will be processed in approximately 40 seconds on a modern PC
  • Embellished Layout
  • Enhanced information display (total processing time)
  • Jobs in progress change their color every second between Yellow and LightGray

Samples:

  • Changed from CFB to CBC, because this modus is much faster than CFB!
  • Changed KeyPatternSize to 150, because the new DES/AES Implementation runs much faster
File size: 3.2 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows;
6using System.Windows.Controls;
7using System.Windows.Data;
8using System.Windows.Documents;
9using System.Windows.Input;
10using System.Windows.Media;
11using System.Windows.Media.Imaging;
12using System.Windows.Navigation;
13using System.Windows.Shapes;
14
15namespace Cryptool.Plugins.PeerToPeer
16{
17    /// <summary>
18    /// Interaktionslogik für UserControl1.xaml
19    /// </summary>
20    public partial class ProgressChunks : UserControl
21    {
22        public Brush this[int i]
23        {
24            get
25            {
26                if (!(root.Children == null))
27                    return (root.Children[i] as Rectangle).Fill;
28                else
29                    return null;
30            }
31            set
32            {
33                if (!(root.Children == null))
34                {
35                    (root.Children[i] as Rectangle).Fill = value;
36                }
37            }
38        }
39
40        //private Thickness jobMargin = new Thickness(1, 1, 1, 1);
41        private Thickness jobMargin = new Thickness(0,0,0,0);
42        public Thickness JobMargin
43        { 
44            get 
45            { 
46                return jobMargin; 
47            } 
48            set 
49            {
50                if (value.Bottom.Equals(value.Top) && value.Top.Equals(value.Left) && value.Left.Equals(value.Right))
51                    jobMargin = value;
52                else
53                    return;
54                foreach(Rectangle element in root.Children)
55                {
56                    element.Margin = jobMargin;
57                }
58            } 
59        }
60
61        private int count = 1;
62        public int JobCount
63        {
64            get { return count; }
65            set
66            {
67                count = value;
68                root.Children.Clear();
69                Rectangle rect;
70                for (int i = 0; i < count; i++)
71                {
72                    rect = new Rectangle();
73                    rect.Fill = Brushes.Red;
74                    rect.Margin = JobMargin;
75                    rect.Width = dynX(rect.Margin.Left);
76                    rect.Height = rect.Width;
77                    rect.Stroke = Brushes.White;
78                    rect.StrokeThickness = 0.1;
79                    root.Children.Add(rect);
80                }
81            }
82        }
83
84        public ProgressChunks()
85        {
86            InitializeComponent();
87            this.SizeChanged += new SizeChangedEventHandler(UserControl1_SizeChanged);
88        }
89
90        void UserControl1_SizeChanged(object sender, SizeChangedEventArgs e)
91        {
92            foreach (Rectangle element in root.Children)
93            {
94
95                element.Width = dynX(element.Margin.Left);
96                element.Height = element.Width;
97            }
98        }
99
100        private double dynX(double margin)
101        {
102            double x = Math.Sqrt(this.ActualWidth * this.ActualHeight / count) - 2 * margin;
103            if (x > 0)
104                return x;
105            else
106                return x += 2 * margin; 
107        }
108    }
109}
Note: See TracBrowser for help on using the repository browser.