Widow – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 using System;
2 using System.ComponentModel;
3 using System.Configuration;
4 using System.Threading.Tasks;
5 using System.Windows.Forms;
6 using Widow.Properties;
7 using Widow.Serialization;
8  
9 namespace Widow
10 {
11 public partial class Form1 : Form
12 {
13 #region Public Events & Delegates
14  
15 public event EventHandler<WindowCreatedEventArgs> WindowCreated;
16  
17 public event EventHandler<WindowDestroyedEventArgs> WindowDestroyed;
18  
19 #endregion
20  
21 #region Public Enums, Properties and Fields
22  
23 public Windows.Windows Windows { get; set; }
24  
25 public RuleEditForm RuleEditForm { get; set; }
26  
27 public Apply Apply { get; set; }
28  
29 #endregion
30  
31 #region Constructors, Destructors and Finalizers
32  
33 public Form1()
34 {
35 InitializeComponent();
36 // Bind to settings changed event.
37 Settings.Default.SettingsLoaded += Default_SettingsLoaded;
38 Settings.Default.SettingsSaving += Default_SettingsSaving;
39 Settings.Default.PropertyChanged += Default_PropertyChanged;
40  
41 Natives.RegisterShellHookWindow(Handle);
42  
43 LoadWindows().ContinueWith(task =>
44 {
45 Apply = new Apply(this, Windows);
46 });
47 }
48  
49 /// <summary>
50 /// Clean up any resources being used.
51 /// </summary>
52 /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
53 protected override void Dispose(bool disposing)
54 {
55 if (disposing && components != null)
56 {
57 Settings.Default.SettingsLoaded -= Default_SettingsLoaded;
58 Settings.Default.SettingsSaving -= Default_SettingsSaving;
59 Settings.Default.PropertyChanged -= Default_PropertyChanged;
60  
61 components.Dispose();
62 }
63  
64 base.Dispose(disposing);
65 }
66  
67 #endregion
68  
69 #region Private Overrides
70  
71 protected override void WndProc(ref Message m)
72 {
73 var handle = m.LParam;
74 var windowName = Helpers.GetWindowTitle(handle);
75  
76 switch (m.WParam.ToInt32())
77 {
78 case (int) Natives.WM.HSHELL_WINDOWCREATED:
79 WindowCreated?.Invoke(this, new WindowCreatedEventArgs(windowName, handle));
80 break;
81 case (int) Natives.WM.HSHELL_WINDOWDESTROYED:
82 WindowDestroyed?.Invoke(this, new WindowDestroyedEventArgs(windowName, handle));
83 break;
84 }
85  
86 base.WndProc(ref m);
87 }
88  
89 #endregion
90  
91 #region Event Handlers
92  
93 private void Default_PropertyChanged(object sender, PropertyChangedEventArgs e)
94 {
95 Settings.Default.Save();
96 }
97  
98 private void Default_SettingsSaving(object sender, CancelEventArgs e)
99 {
100 }
101  
102 private void Default_SettingsLoaded(object sender, SettingsLoadedEventArgs e)
103 {
104 }
105  
106 private void NewToolStripMenuItem_Click(object sender, EventArgs e)
107 {
108 RuleEditForm = new RuleEditForm(this, Windows);
109 RuleEditForm.Closed += RuleEditForm_Closed;
110 RuleEditForm.Show();
111 }
112  
113 private async void RuleEditForm_Closed(object sender, EventArgs e)
114 {
115 RuleEditForm.Closed -= RuleEditForm_Closed;
116 RuleEditForm.Dispose();
117 RuleEditForm = null;
118  
119 switch (await WindowsSerialization.Serialize(Windows, "Windows.xml"))
120 {
121 case SerializationSuccess serializationSuccess:
122 break;
123 case SerializationFailure serializationFailure:
124 break;
125 }
126 }
127  
128 private void ExitToolStripMenuItem_Click(object sender, EventArgs e)
129 {
130 Application.Exit();
131 }
132  
133 private void LaunchOnBootToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
134 {
135 Settings.Default.LaunchOnBoot = ((ToolStripMenuItem) sender).Checked;
136  
137 LaunchOnBoot.Set(Settings.Default.LaunchOnBoot);
138 }
139  
140 #endregion
141  
142 #region Private Methods
143  
144 private async Task LoadWindows()
145 {
146 switch (await WindowsSerialization.Deserialize("Windows.xml"))
147 {
148 case SerializationSuccess serializationSuccess:
149 Windows = serializationSuccess.Windows;
150 break;
151 case SerializationFailure serializationFailure:
152 Windows = new Windows.Windows();
153 break;
154 }
155 }
156  
157 #endregion
158  
159 private void OnWindowCreateToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
160 {
161 Settings.Default.OnWindowCreate = ((ToolStripMenuItem) sender).Checked;
162  
163 Apply.OnWindowCreate = Settings.Default.OnWindowCreate;
164 }
165 }
166 }