Widow – Blame information for rev 15

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 using System;
2 using System.ComponentModel;
3 using System.Configuration;
8 office 4 using System.Globalization;
1 office 5 using System.Threading.Tasks;
6 using System.Windows.Forms;
15 office 7 using AutoUpdaterDotNET;
1 office 8 using Widow.Properties;
9 using Widow.Serialization;
10  
11 namespace Widow
12 {
6 office 13 public partial class MainForm : Form
1 office 14 {
15 #region Public Events & Delegates
16  
17 public event EventHandler<WindowCreatedEventArgs> WindowCreated;
18  
19 public event EventHandler<WindowDestroyedEventArgs> WindowDestroyed;
20  
21 #endregion
22  
23 #region Public Enums, Properties and Fields
24  
25 public Windows.Windows Windows { get; set; }
26  
27 public RuleEditForm RuleEditForm { get; set; }
28  
9 office 29 public WindowManipulation WindowManipulation { get; set; }
1 office 30  
5 office 31 public AboutForm AboutForm { get; set; }
32  
1 office 33 #endregion
34  
35 #region Constructors, Destructors and Finalizers
36  
6 office 37 public MainForm()
1 office 38 {
39 InitializeComponent();
15 office 40 AutoUpdater.Start("http://widow.grimore.org/update/update.xml");
6 office 41  
1 office 42 // Bind to settings changed event.
43 Settings.Default.SettingsLoaded += Default_SettingsLoaded;
44 Settings.Default.SettingsSaving += Default_SettingsSaving;
45 Settings.Default.PropertyChanged += Default_PropertyChanged;
46  
47 Natives.RegisterShellHookWindow(Handle);
48  
6 office 49 LoadWindows().ContinueWith(task =>
50 {
9 office 51 WindowManipulation = new WindowManipulation(this, Windows, Settings.Default);
6 office 52 });
1 office 53 }
54  
55 /// <summary>
56 /// Clean up any resources being used.
57 /// </summary>
58 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
59 protected override void Dispose(bool disposing)
60 {
61 if (disposing && components != null)
62 {
63 Settings.Default.SettingsLoaded -= Default_SettingsLoaded;
64 Settings.Default.SettingsSaving -= Default_SettingsSaving;
65 Settings.Default.PropertyChanged -= Default_PropertyChanged;
66  
67 components.Dispose();
68 }
69  
70 base.Dispose(disposing);
71 }
72  
73 #endregion
74  
75 #region Private Overrides
76  
77 protected override void WndProc(ref Message m)
78 {
79 var handle = m.LParam;
80 var windowName = Helpers.GetWindowTitle(handle);
81  
82 switch (m.WParam.ToInt32())
83 {
84 case (int) Natives.WM.HSHELL_WINDOWCREATED:
85 WindowCreated?.Invoke(this, new WindowCreatedEventArgs(windowName, handle));
86 break;
87 case (int) Natives.WM.HSHELL_WINDOWDESTROYED:
88 WindowDestroyed?.Invoke(this, new WindowDestroyedEventArgs(windowName, handle));
89 break;
90 }
91  
92 base.WndProc(ref m);
93 }
94  
95 #endregion
96  
97 #region Event Handlers
98  
8 office 99 private static void Default_PropertyChanged(object sender, PropertyChangedEventArgs e)
1 office 100 {
101 Settings.Default.Save();
102 }
103  
8 office 104 private static void Default_SettingsSaving(object sender, CancelEventArgs e)
1 office 105 {
106 }
107  
8 office 108 private static void Default_SettingsLoaded(object sender, SettingsLoadedEventArgs e)
1 office 109 {
110 }
111  
112 private void NewToolStripMenuItem_Click(object sender, EventArgs e)
113 {
11 office 114 if (RuleEditForm != null)
115 {
116 return;
117 }
118  
1 office 119 RuleEditForm = new RuleEditForm(this, Windows);
120 RuleEditForm.Closed += RuleEditForm_Closed;
121 RuleEditForm.Show();
122 }
123  
124 private async void RuleEditForm_Closed(object sender, EventArgs e)
125 {
126 RuleEditForm.Closed -= RuleEditForm_Closed;
127 RuleEditForm.Dispose();
128 RuleEditForm = null;
129  
130 switch (await WindowsSerialization.Serialize(Windows, "Windows.xml"))
131 {
132 case SerializationSuccess serializationSuccess:
133 break;
134 case SerializationFailure serializationFailure:
135 break;
136 }
137 }
138  
139 private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
140 {
141 Application.Exit();
142 }
143  
144 private void LaunchOnBootToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
145 {
146 Settings.Default.LaunchOnBoot = ((ToolStripMenuItem) sender).Checked;
147  
148 LaunchOnBoot.Set(Settings.Default.LaunchOnBoot);
149 }
150  
5 office 151 private void OnWindowCreateToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
152 {
153 Settings.Default.OnWindowCreate = ((ToolStripMenuItem) sender).Checked;
154  
9 office 155 WindowManipulation.OnWindowCreate = Settings.Default.OnWindowCreate;
5 office 156 }
157  
158 private void AboutToolStripMenuItem_Click(object sender, EventArgs e)
159 {
160 // Show the about form.
161 AboutForm = new AboutForm();
162 AboutForm.Show();
163 }
164  
11 office 165 private async void ApplyNowToolStripMenuItem_Click(object sender, EventArgs e)
7 office 166 {
11 office 167 await WindowManipulation.Apply();
7 office 168 }
169  
8 office 170 private void OnEveryToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
171 {
172 var toolStripMenuItem = (ToolStripMenuItem) sender;
173  
174 if (!int.TryParse(toolStripTextBox1.Text, out var time))
175 {
176 return;
177 }
178  
179 Settings.Default.ApplyEveryTimeEnabled = toolStripMenuItem.Checked;
180 Settings.Default.ApplyEveryTime = time.ToString(CultureInfo.InvariantCulture);
181  
9 office 182 WindowManipulation.ApplyEveryTime = time;
183 WindowManipulation.ApplyEveryTimeEnabled = toolStripMenuItem.Checked;
8 office 184 }
185  
13 office 186 private void NotifyIcon1_DoubleClick(object sender, EventArgs e)
187 {
188 if (RuleEditForm != null)
189 {
190 return;
191 }
192  
193 RuleEditForm = new RuleEditForm(this, Windows);
194 RuleEditForm.Closed += RuleEditForm_Closed;
195 RuleEditForm.Show();
196 }
197  
198 private async void NotifyIcon1_Click(object sender, EventArgs e)
199 {
200 await WindowManipulation.Apply();
201 }
202  
1 office 203 #endregion
204  
205 #region Private Methods
206  
207 private async Task LoadWindows()
208 {
209 switch (await WindowsSerialization.Deserialize("Windows.xml"))
210 {
211 case SerializationSuccess serializationSuccess:
212 Windows = serializationSuccess.Windows;
213 break;
214 case SerializationFailure serializationFailure:
215 Windows = new Windows.Windows();
216 break;
217 }
218 }
219  
220 #endregion
221 }
222 }