root / trunk / Pithos.Client.WPF / Shell / MessageView.xaml.cs @ b449fa49
History | View | Annotate | Download (5.6 kB)
1 | d53bbdf0 | Panagiotis Kanavos | using System; |
---|---|---|---|
2 | d53bbdf0 | Panagiotis Kanavos | using System.Collections.Generic; |
3 | d53bbdf0 | Panagiotis Kanavos | using System.Collections.ObjectModel; |
4 | d53bbdf0 | Panagiotis Kanavos | using System.ComponentModel; |
5 | d53bbdf0 | Panagiotis Kanavos | using System.ComponentModel.Composition; |
6 | d53bbdf0 | Panagiotis Kanavos | using System.Linq; |
7 | d53bbdf0 | Panagiotis Kanavos | using System.Linq.Expressions; |
8 | c92e02f3 | Panagiotis Kanavos | using System.Net; |
9 | d53bbdf0 | Panagiotis Kanavos | using System.Net.Mail; |
10 | d53bbdf0 | Panagiotis Kanavos | using System.Text; |
11 | d53bbdf0 | Panagiotis Kanavos | using System.Windows; |
12 | d53bbdf0 | Panagiotis Kanavos | using System.Windows.Controls; |
13 | d53bbdf0 | Panagiotis Kanavos | using System.Windows.Data; |
14 | d53bbdf0 | Panagiotis Kanavos | using System.Windows.Documents; |
15 | d53bbdf0 | Panagiotis Kanavos | using System.Windows.Input; |
16 | d53bbdf0 | Panagiotis Kanavos | using System.Windows.Media; |
17 | d53bbdf0 | Panagiotis Kanavos | using System.Windows.Media.Imaging; |
18 | d53bbdf0 | Panagiotis Kanavos | using System.Windows.Shapes; |
19 | d53bbdf0 | Panagiotis Kanavos | using Caliburn.Micro; |
20 | 2c27cdd0 | Panagiotis Kanavos | using Pithos.Client.WPF.Shell; |
21 | c92e02f3 | Panagiotis Kanavos | using Pithos.Network; |
22 | d53bbdf0 | Panagiotis Kanavos | |
23 | d53bbdf0 | Panagiotis Kanavos | namespace Pithos.Client.WPF |
24 | d53bbdf0 | Panagiotis Kanavos | { |
25 | d53bbdf0 | Panagiotis Kanavos | /// <summary> |
26 | d53bbdf0 | Panagiotis Kanavos | /// Interaction logic for MessageView.xaml |
27 | d53bbdf0 | Panagiotis Kanavos | /// </summary> |
28 | d53bbdf0 | Panagiotis Kanavos | public partial class MessageView : Window, INotifyPropertyChanged |
29 | d53bbdf0 | Panagiotis Kanavos | { |
30 | d53bbdf0 | Panagiotis Kanavos | public ObservableCollection<UserMessage> UserMessages { get; set; } |
31 | d53bbdf0 | Panagiotis Kanavos | |
32 | d53bbdf0 | Panagiotis Kanavos | private string _message; |
33 | d53bbdf0 | Panagiotis Kanavos | public string Message |
34 | d53bbdf0 | Panagiotis Kanavos | { |
35 | d53bbdf0 | Panagiotis Kanavos | get |
36 | d53bbdf0 | Panagiotis Kanavos | { |
37 | d53bbdf0 | Panagiotis Kanavos | return _message; |
38 | d53bbdf0 | Panagiotis Kanavos | } |
39 | d53bbdf0 | Panagiotis Kanavos | set |
40 | d53bbdf0 | Panagiotis Kanavos | { |
41 | d53bbdf0 | Panagiotis Kanavos | _message = value; |
42 | d53bbdf0 | Panagiotis Kanavos | NotifyOfPropertyChange(()=>Message); |
43 | d53bbdf0 | Panagiotis Kanavos | } |
44 | d53bbdf0 | Panagiotis Kanavos | } |
45 | d53bbdf0 | Panagiotis Kanavos | |
46 | d53bbdf0 | Panagiotis Kanavos | |
47 | d53bbdf0 | Panagiotis Kanavos | public MessageView(IEnumerable<UserMessage> userMessages) |
48 | d53bbdf0 | Panagiotis Kanavos | { |
49 | d53bbdf0 | Panagiotis Kanavos | UserMessages = new ObservableCollection<UserMessage>(userMessages); |
50 | d53bbdf0 | Panagiotis Kanavos | DataContext = this; |
51 | d53bbdf0 | Panagiotis Kanavos | InitializeComponent(); |
52 | d53bbdf0 | Panagiotis Kanavos | } |
53 | d53bbdf0 | Panagiotis Kanavos | |
54 | c92e02f3 | Panagiotis Kanavos | |
55 | c92e02f3 | Panagiotis Kanavos | |
56 | c92e02f3 | Panagiotis Kanavos | public MessageView(WebException exception) |
57 | c92e02f3 | Panagiotis Kanavos | { |
58 | c92e02f3 | Panagiotis Kanavos | DataContext = this; |
59 | c92e02f3 | Panagiotis Kanavos | InitializeComponent(); |
60 | c92e02f3 | Panagiotis Kanavos | |
61 | c92e02f3 | Panagiotis Kanavos | var messages = new List<UserMessage>(); |
62 | c92e02f3 | Panagiotis Kanavos | |
63 | c92e02f3 | Panagiotis Kanavos | if ((exception.Response as HttpWebResponse).StatusCode == HttpStatusCode.Unauthorized) |
64 | c92e02f3 | Panagiotis Kanavos | { |
65 | c92e02f3 | Panagiotis Kanavos | Message = "Your authorization token has expired. Please renew the token and try again "; |
66 | c92e02f3 | Panagiotis Kanavos | Title = "Authorization expired"; |
67 | c92e02f3 | Panagiotis Kanavos | } |
68 | c92e02f3 | Panagiotis Kanavos | else |
69 | c92e02f3 | Panagiotis Kanavos | { |
70 | c92e02f3 | Panagiotis Kanavos | messages.Add(new UserMessage |
71 | c92e02f3 | Panagiotis Kanavos | { |
72 | c92e02f3 | Panagiotis Kanavos | Message = exception.InnerException.Message, |
73 | c92e02f3 | Panagiotis Kanavos | Details = exception.InnerException.ToString(), |
74 | c92e02f3 | Panagiotis Kanavos | Severity = Severity.Warn |
75 | c92e02f3 | Panagiotis Kanavos | }); |
76 | c92e02f3 | Panagiotis Kanavos | Message = "There was an error while retrieving the item's information"; |
77 | c92e02f3 | Panagiotis Kanavos | Title = "Error"; |
78 | c92e02f3 | Panagiotis Kanavos | } |
79 | c92e02f3 | Panagiotis Kanavos | UserMessages = new ObservableCollection<UserMessage>(messages); |
80 | c92e02f3 | Panagiotis Kanavos | } |
81 | c92e02f3 | Panagiotis Kanavos | |
82 | c92e02f3 | Panagiotis Kanavos | public MessageView(RetryException exception) |
83 | c92e02f3 | Panagiotis Kanavos | { |
84 | c92e02f3 | Panagiotis Kanavos | DataContext = this; |
85 | c92e02f3 | Panagiotis Kanavos | InitializeComponent(); |
86 | c92e02f3 | Panagiotis Kanavos | |
87 | c92e02f3 | Panagiotis Kanavos | var messages = new List<UserMessage>{ |
88 | c92e02f3 | Panagiotis Kanavos | new UserMessage{ |
89 | c92e02f3 | Panagiotis Kanavos | Message = exception.InnerException.Message, |
90 | c92e02f3 | Panagiotis Kanavos | Details = exception.InnerException.ToString(), |
91 | c92e02f3 | Panagiotis Kanavos | Severity = Severity.Warn |
92 | c92e02f3 | Panagiotis Kanavos | } |
93 | c92e02f3 | Panagiotis Kanavos | }; |
94 | c92e02f3 | Panagiotis Kanavos | |
95 | c92e02f3 | Panagiotis Kanavos | Title = "Network error"; |
96 | c92e02f3 | Panagiotis Kanavos | Message = "The connection to the server timed out. Please check your network connection and try again later"; |
97 | c92e02f3 | Panagiotis Kanavos | |
98 | c92e02f3 | Panagiotis Kanavos | UserMessages = new ObservableCollection<UserMessage>(messages); |
99 | c92e02f3 | Panagiotis Kanavos | } |
100 | c92e02f3 | Panagiotis Kanavos | |
101 | c92e02f3 | Panagiotis Kanavos | public MessageView(Exception exception) |
102 | c92e02f3 | Panagiotis Kanavos | { |
103 | c92e02f3 | Panagiotis Kanavos | DataContext = this; |
104 | c92e02f3 | Panagiotis Kanavos | InitializeComponent(); |
105 | c92e02f3 | Panagiotis Kanavos | |
106 | c92e02f3 | Panagiotis Kanavos | var messages = new List<UserMessage>{ |
107 | c92e02f3 | Panagiotis Kanavos | new UserMessage{ |
108 | c92e02f3 | Panagiotis Kanavos | Message = exception.InnerException.Message, |
109 | c92e02f3 | Panagiotis Kanavos | Details = exception.InnerException.ToString(), |
110 | c92e02f3 | Panagiotis Kanavos | Severity = Severity.Warn |
111 | c92e02f3 | Panagiotis Kanavos | } |
112 | c92e02f3 | Panagiotis Kanavos | }; |
113 | c92e02f3 | Panagiotis Kanavos | |
114 | c92e02f3 | Panagiotis Kanavos | Title = "Unexpected error"; |
115 | c92e02f3 | Panagiotis Kanavos | Message = "An unexpected error has occured"; |
116 | c92e02f3 | Panagiotis Kanavos | |
117 | c92e02f3 | Panagiotis Kanavos | UserMessages = new ObservableCollection<UserMessage>(messages); |
118 | c92e02f3 | Panagiotis Kanavos | } |
119 | c92e02f3 | Panagiotis Kanavos | |
120 | d53bbdf0 | Panagiotis Kanavos | /// <summary> |
121 | d53bbdf0 | Panagiotis Kanavos | /// Copies the messages to the clipboard |
122 | d53bbdf0 | Panagiotis Kanavos | /// </summary> |
123 | d53bbdf0 | Panagiotis Kanavos | private void OnCopy(object sender, ExecutedRoutedEventArgs e) |
124 | d53bbdf0 | Panagiotis Kanavos | { |
125 | 2c27cdd0 | Panagiotis Kanavos | var text = GetLogText(); |
126 | 2c27cdd0 | Panagiotis Kanavos | Clipboard.SetText(text); |
127 | 2c27cdd0 | Panagiotis Kanavos | } |
128 | 2c27cdd0 | Panagiotis Kanavos | |
129 | 2c27cdd0 | Panagiotis Kanavos | private string GetLogText() |
130 | 2c27cdd0 | Panagiotis Kanavos | { |
131 | 2c27cdd0 | Panagiotis Kanavos | StringBuilder logText = new StringBuilder() |
132 | d53bbdf0 | Panagiotis Kanavos | .Append('-', 30) |
133 | 2c27cdd0 | Panagiotis Kanavos | .AppendLine("\r\nPithos") |
134 | d53bbdf0 | Panagiotis Kanavos | .Append('-', 30) |
135 | d53bbdf0 | Panagiotis Kanavos | .AppendLine() |
136 | d53bbdf0 | Panagiotis Kanavos | .AppendLine(); |
137 | d53bbdf0 | Panagiotis Kanavos | foreach (var message in UserMessages) |
138 | d53bbdf0 | Panagiotis Kanavos | { |
139 | 2c27cdd0 | Panagiotis Kanavos | logText |
140 | d53bbdf0 | Panagiotis Kanavos | .Append('-', 20) |
141 | d53bbdf0 | Panagiotis Kanavos | .AppendFormat("\r\n[{0,5}]\t{1}", message.Severity, message.Message) |
142 | d53bbdf0 | Panagiotis Kanavos | .AppendLine() |
143 | d53bbdf0 | Panagiotis Kanavos | .AppendLine(message.Details) |
144 | d53bbdf0 | Panagiotis Kanavos | .AppendLine(); |
145 | d53bbdf0 | Panagiotis Kanavos | } |
146 | d53bbdf0 | Panagiotis Kanavos | |
147 | 2c27cdd0 | Panagiotis Kanavos | var text = logText.ToString(); |
148 | 2c27cdd0 | Panagiotis Kanavos | return text; |
149 | d53bbdf0 | Panagiotis Kanavos | } |
150 | d53bbdf0 | Panagiotis Kanavos | |
151 | d53bbdf0 | Panagiotis Kanavos | private void OnClose(object sender, ExecutedRoutedEventArgs e) |
152 | d53bbdf0 | Panagiotis Kanavos | { |
153 | d53bbdf0 | Panagiotis Kanavos | this.Close(); |
154 | d53bbdf0 | Panagiotis Kanavos | } |
155 | d53bbdf0 | Panagiotis Kanavos | |
156 | d53bbdf0 | Panagiotis Kanavos | public event PropertyChangedEventHandler PropertyChanged; |
157 | d53bbdf0 | Panagiotis Kanavos | |
158 | d53bbdf0 | Panagiotis Kanavos | private void NotifyOfPropertyChange<TProperty>(Expression<Func<TProperty>> property) |
159 | d53bbdf0 | Panagiotis Kanavos | { |
160 | d53bbdf0 | Panagiotis Kanavos | if (PropertyChanged!=null) |
161 | d53bbdf0 | Panagiotis Kanavos | PropertyChanged(this,new PropertyChangedEventArgs(property.GetMemberInfo().Name)); |
162 | d53bbdf0 | Panagiotis Kanavos | } |
163 | d53bbdf0 | Panagiotis Kanavos | |
164 | d53bbdf0 | Panagiotis Kanavos | private void OnSend(object sender, RoutedEventArgs e) |
165 | d53bbdf0 | Panagiotis Kanavos | { |
166 | 2c27cdd0 | Panagiotis Kanavos | var manager=IoC.Get<IWindowManager>(); |
167 | 2c27cdd0 | Panagiotis Kanavos | var logText = GetLogText(); |
168 | 2c27cdd0 | Panagiotis Kanavos | var feedBack = IoC.Get<FeedbackViewModel>(); |
169 | 2c27cdd0 | Panagiotis Kanavos | feedBack.AppendData(logText); |
170 | 2c27cdd0 | Panagiotis Kanavos | manager.ShowWindow(feedBack); |
171 | 2c27cdd0 | Panagiotis Kanavos | this.Close(); |
172 | d53bbdf0 | Panagiotis Kanavos | } |
173 | d53bbdf0 | Panagiotis Kanavos | } |
174 | d53bbdf0 | Panagiotis Kanavos | |
175 | d53bbdf0 | Panagiotis Kanavos | public class UserMessage |
176 | d53bbdf0 | Panagiotis Kanavos | { |
177 | d53bbdf0 | Panagiotis Kanavos | public string Message { get; set; } |
178 | d53bbdf0 | Panagiotis Kanavos | |
179 | d53bbdf0 | Panagiotis Kanavos | public Severity Severity { get; set; } |
180 | d53bbdf0 | Panagiotis Kanavos | public string Details { get; set; } |
181 | d53bbdf0 | Panagiotis Kanavos | } |
182 | d53bbdf0 | Panagiotis Kanavos | |
183 | d53bbdf0 | Panagiotis Kanavos | public enum Severity |
184 | d53bbdf0 | Panagiotis Kanavos | { |
185 | d53bbdf0 | Panagiotis Kanavos | Info, |
186 | d53bbdf0 | Panagiotis Kanavos | Warn, |
187 | d53bbdf0 | Panagiotis Kanavos | Error |
188 | d53bbdf0 | Panagiotis Kanavos | } |
189 | d53bbdf0 | Panagiotis Kanavos | } |