source: trunk/CrypPlugins/P2PEditor/GUI/Controls/ConnectView.xaml.cs @ 2379

Last change on this file since 2379 was 2379, checked in by kopal, 11 years ago
  • changing user name and/or password in settings now changes these also on the connect view
  • removed the lase message boxes and replaced them by label outputs
File size: 6.7 KB
Line 
1using System;
2using System.Windows;
3using Cryptool.P2P;
4using System.Windows.Media.Animation;
5using System.Windows.Threading;
6using System.Threading;
7using Cryptool.P2P.Internal;
8using PeersAtPlay.CertificateLibrary.Certificates;
9using Cryptool.PluginBase;
10using System.IO;
11using System.ComponentModel;
12
13namespace Cryptool.P2PEditor.GUI.Controls
14{
15    public partial class ConnectTab
16    {
17
18        public static readonly DependencyProperty IsP2PConnectingProperty =
19            DependencyProperty.Register("IsP2PConnecting",
20                                        typeof(
21                                            Boolean),
22                                        typeof(
23                                            ConnectTab), new PropertyMetadata(false));
24
25        public Boolean IsP2PConnecting
26        {
27            get { return (Boolean)GetValue(IsP2PConnectingProperty); }
28            set { SetValue(IsP2PConnectingProperty, value); }
29        }
30
31        public ConnectTab()
32        {
33            InitializeComponent();
34
35            P2PManager.ConnectionManager.OnP2PTryConnectingStateChangeOccurred += new ConnectionManager.P2PTryConnectingStateChangeEventHandler(delegate(object sender, bool newState)
36            {
37                if (newState)
38                {
39                   
40                    this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
41                    {
42                        ((P2PEditorPresentation)P2PEditor.Presentation).UpdateConnectionState();
43                        Storyboard storyboard = (Storyboard)FindResource("AnimateBigWorldIcon");
44                        storyboard.Begin();
45                    }
46                    , null);
47                }
48                else
49                {
50                    this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
51                    {
52                        ((P2PEditorPresentation)P2PEditor.Presentation).UpdateConnectionState();                   
53                        Storyboard storyboard = (Storyboard)FindResource("AnimateBigWorldIcon");
54                        storyboard.Stop(); 
55                    }
56                    , null);         
57                }
58            });           
59        }
60
61        private void ConnectButtonClick(object sender, RoutedEventArgs e)
62        {
63            this.MessageLabel.Visibility = Visibility.Hidden;
64            try
65            {
66                if (CertificateServices.GetPeerCertificateByAvatar(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "PeersAtPlay" + Path.DirectorySeparatorChar + "Certificates" + Path.DirectorySeparatorChar),
67                    P2PSettings.Default.PeerName, P2PBase.DecryptString(P2PSettings.Default.Password)) == null)
68                {
69                    this.MessageLabel.Content = "Cannot connect, account \"" + P2PSettings.Default.PeerName + "\" not found!";
70                    this.MessageLabel.Visibility = Visibility.Visible;
71                    return;
72                }
73            }
74            catch (NoCertificateFoundException)
75            {
76                this.MessageLabel.Content = "Cannot connect, account \"" + P2PSettings.Default.PeerName + "\" not found!";
77                this.MessageLabel.Visibility = Visibility.Visible;
78                return;
79            }           
80            catch (Exception ex)
81            {
82                this.MessageLabel.Content = "Cannot connect using account \"" + P2PSettings.Default.PeerName + "\": " + (ex.InnerException != null ? ex.InnerException.Message : ex.Message);
83                this.MessageLabel.Visibility = Visibility.Visible;
84                return;
85            }
86
87            if (!P2PManager.IsConnected)
88                P2PManager.Connect();
89        }
90
91        private void HelpButtonClick(object sender, RoutedEventArgs e)
92        {
93            ((P2PEditorPresentation) P2PEditor.Presentation).ShowHelp();
94        }
95       
96        private void GetACertificateLabel_Click(object sender, RoutedEventArgs e)
97        {
98            P2PEditorPresentation.ShowGetNewCertificateView();
99        }
100
101        private void ForgotPasswordLabel_Click(object sender, RoutedEventArgs e)
102        {
103           //todo
104        }
105
106        private void Username_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
107        {
108            ((P2PEditorSettings)((P2PEditor)GetValue(P2PEditorProperty)).Settings).PeerName = this.Username.Text;
109        }
110
111        private void Password_PasswordChanged(object sender, RoutedEventArgs e)
112        {
113            ((P2PEditorSettings)((P2PEditor)GetValue(P2PEditorProperty)).Settings).Password = this.Password.Password;
114        }
115
116        private void P2PUserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
117        {           
118            this.Username.Text = ((P2PEditorSettings)((P2PEditor)GetValue(P2PEditorProperty)).Settings).PeerName;
119            this.Password.Password = ((P2PEditorSettings)((P2PEditor)GetValue(P2PEditorProperty)).Settings).Password;
120            if (this.IsP2PConnecting)
121            {
122                Storyboard storyboard = (Storyboard)FindResource("AnimateBigWorldIcon");
123                storyboard.Begin();
124            }
125            else
126            {
127                Storyboard storyboard = (Storyboard)FindResource("AnimateBigWorldIcon");
128                storyboard.Stop();
129            }
130        }
131
132        private void OnPropertyChanged_Settings(object sender, PropertyChangedEventArgs args)
133        {           
134            if(args.PropertyName.Equals("PeerName")){
135                //this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
136                //{
137                    if (this.Username.Text != ((P2PEditorSettings)sender).PeerName)
138                    {
139
140                        this.Username.Text = ((P2PEditorSettings)sender).PeerName;
141                    }
142                //},null);
143            }
144            if(args.PropertyName.Equals("Password")){
145                //this.Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
146                //{
147                    if (this.Password.Password != ((P2PEditorSettings)sender).Password)
148                    {
149                        this.Password.Password = ((P2PEditorSettings)sender).Password;
150                    }
151                //},null);
152            }           
153        }
154
155        private void P2PUserControl_Loaded(object sender, RoutedEventArgs e)
156        {
157            ((P2PEditorSettings)((P2PEditor)GetValue(P2PEditorProperty)).Settings).PropertyChanged += OnPropertyChanged_Settings;
158        }
159    }
160}
Note: See TracBrowser for help on using the repository browser.