1 | #include "mailFromGui.h"
|
---|
2 |
|
---|
3 | #include <stdio.h>
|
---|
4 | #include <stdint.h>
|
---|
5 | #include <stdbool.h>
|
---|
6 |
|
---|
7 |
|
---|
8 | #define WIN_WIDTH 450
|
---|
9 | #define WIN_HEIGHT 270
|
---|
10 |
|
---|
11 | enum {
|
---|
12 | TXT_INFO,
|
---|
13 | TXT_MAIL,
|
---|
14 | EDIT_MAIL,
|
---|
15 | CHK_CC,
|
---|
16 | BTN_SEND,
|
---|
17 | BTN_ABORT
|
---|
18 | } window_objects;
|
---|
19 |
|
---|
20 | bool isSendSelected = false;
|
---|
21 | bool isCCSelected = false;
|
---|
22 | char* emailFrom = 0;
|
---|
23 |
|
---|
24 | static HWND hwndEditMail;
|
---|
25 |
|
---|
26 | static bool verifyMail() {
|
---|
27 | char* at = strchr(emailFrom, '@');
|
---|
28 | char* dot = strrchr(emailFrom, '.');
|
---|
29 | if (at == NULL || dot == NULL)
|
---|
30 | return false;
|
---|
31 | if (dot <= at)
|
---|
32 | return false;
|
---|
33 |
|
---|
34 | unsigned int atPos = at - emailFrom;
|
---|
35 | unsigned int dotPos = dot - emailFrom;
|
---|
36 | if (atPos < 1 || (dotPos - atPos) < 2)
|
---|
37 | return false;
|
---|
38 | if (dotPos >= strlen(emailFrom)-1)
|
---|
39 | return false;
|
---|
40 |
|
---|
41 | return true;
|
---|
42 | }
|
---|
43 |
|
---|
44 | static void handleWindowCreate(HWND hwnd) {
|
---|
45 | static LPCSTR txtInfo = "\
|
---|
46 | With this program you can request help from the AE\n\
|
---|
47 | support team if you have trouble installing the AE.\n\
|
---|
48 | \n\
|
---|
49 | Please only use this if you are asked to on the forum!\n\
|
---|
50 | \n\
|
---|
51 | The information that is sent is:\n\
|
---|
52 | - AEI updater's updater_output.log\n\
|
---|
53 | - AEI-ProxySettings.xml\n\
|
---|
54 | - A list of files within your AE/ folder";
|
---|
55 |
|
---|
56 | int top = 0, left = 5;
|
---|
57 | int height, width = WIN_WIDTH - 2*left - 4;
|
---|
58 |
|
---|
59 | top += 5;
|
---|
60 | height = 150;
|
---|
61 | CreateWindowA("STATIC", txtInfo,
|
---|
62 | WS_CHILD | WS_VISIBLE | SS_LEFT,
|
---|
63 | left, top, width, height,
|
---|
64 | hwnd, (HMENU) TXT_INFO, NULL, NULL);
|
---|
65 |
|
---|
66 | top += height + 5;
|
---|
67 | height = 20;
|
---|
68 | width = 145;
|
---|
69 | CreateWindowA("STATIC", "Your e-mail address:",
|
---|
70 | WS_CHILD | WS_VISIBLE | SS_LEFT,
|
---|
71 | left, top, width, height,
|
---|
72 | hwnd, (HMENU) TXT_MAIL, NULL, NULL);
|
---|
73 | left += width + 5;
|
---|
74 | width = WIN_WIDTH - 20 - width;
|
---|
75 | hwndEditMail = CreateWindowA("Edit", NULL,
|
---|
76 | WS_CHILD | WS_VISIBLE | WS_BORDER,
|
---|
77 | left, top, width, height, hwnd, (HMENU) EDIT_MAIL,
|
---|
78 | NULL, NULL);
|
---|
79 | left = 5;
|
---|
80 | width = WIN_WIDTH - 2*left - 4;
|
---|
81 |
|
---|
82 | top += height + 5;
|
---|
83 | height = 20;
|
---|
84 | CreateWindowA("button", "Send a copy of the mail to you",
|
---|
85 | WS_VISIBLE | WS_CHILD | BS_CHECKBOX,
|
---|
86 | left, top, width, height, hwnd, (HMENU) CHK_CC,
|
---|
87 | NULL, NULL);
|
---|
88 |
|
---|
89 | top += height + 5;
|
---|
90 | height = 28;
|
---|
91 | width = 100;
|
---|
92 | left = WIN_WIDTH - 3*5 - 2*width;
|
---|
93 | CreateWindowA("button", "Send request",
|
---|
94 | WS_VISIBLE | WS_CHILD ,
|
---|
95 | left, top, width, height,
|
---|
96 | hwnd, (HMENU) BTN_SEND, NULL, NULL);
|
---|
97 | left = WIN_WIDTH - 2*5 - 1*width;
|
---|
98 | CreateWindowA("button", "Abort",
|
---|
99 | WS_VISIBLE | WS_CHILD ,
|
---|
100 | left, top, width, height,
|
---|
101 | hwnd, (HMENU) BTN_ABORT, NULL, NULL);
|
---|
102 | }
|
---|
103 |
|
---|
104 | static void handleWindowCommand(HWND hwnd, WPARAM wParam) {
|
---|
105 | bool checked;
|
---|
106 | int len;
|
---|
107 |
|
---|
108 | switch (LOWORD(wParam)) {
|
---|
109 | case BTN_SEND:
|
---|
110 | len = GetWindowTextLengthA(hwndEditMail) + 1;
|
---|
111 | emailFrom = malloc(len);
|
---|
112 | GetWindowTextA(hwndEditMail, emailFrom, len);
|
---|
113 |
|
---|
114 | if (verifyMail()) {
|
---|
115 | isSendSelected = true;
|
---|
116 | ShowWindow(hwnd, SW_HIDE);
|
---|
117 | PostQuitMessage(0);
|
---|
118 | } else {
|
---|
119 | MessageBox(hwnd, "Please enter a valid e-mail address", "Invalid e-mail", MB_OK | MB_ICONEXCLAMATION);
|
---|
120 | }
|
---|
121 | break;
|
---|
122 | case BTN_ABORT:
|
---|
123 | PostQuitMessage(0);
|
---|
124 | break;
|
---|
125 | case CHK_CC:
|
---|
126 | checked = IsDlgButtonChecked(hwnd, CHK_CC);
|
---|
127 | if (checked) {
|
---|
128 | CheckDlgButton(hwnd, CHK_CC, BST_UNCHECKED);
|
---|
129 | isCCSelected = false;
|
---|
130 | } else {
|
---|
131 | CheckDlgButton(hwnd, CHK_CC, BST_CHECKED);
|
---|
132 | isCCSelected = true;
|
---|
133 | }
|
---|
134 | break;
|
---|
135 | }
|
---|
136 | }
|
---|
137 |
|
---|
138 | static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
---|
139 | {
|
---|
140 | switch(msg)
|
---|
141 | {
|
---|
142 | case WM_CREATE:
|
---|
143 | handleWindowCreate(hwnd);
|
---|
144 | break;
|
---|
145 |
|
---|
146 | case WM_COMMAND:
|
---|
147 | handleWindowCommand(hwnd, wParam);
|
---|
148 | break;
|
---|
149 |
|
---|
150 | case WM_DESTROY:
|
---|
151 | PostQuitMessage(0);
|
---|
152 | return 0;
|
---|
153 | }
|
---|
154 |
|
---|
155 | return DefWindowProcW(hwnd, msg, wParam, lParam);
|
---|
156 | }
|
---|
157 |
|
---|
158 |
|
---|
159 | void mailFromGui(HMODULE hInstance, int nCmdShow)
|
---|
160 | {
|
---|
161 | static const LPCWSTR title = L"Request Help";
|
---|
162 |
|
---|
163 | MSG msg;
|
---|
164 | HWND hwnd;
|
---|
165 | WNDCLASSW wc;
|
---|
166 |
|
---|
167 | wc.style = CS_HREDRAW | CS_VREDRAW;
|
---|
168 | wc.cbClsExtra = 0;
|
---|
169 | wc.cbWndExtra = 0;
|
---|
170 | wc.lpszClassName = L"Window";
|
---|
171 | wc.hInstance = hInstance;
|
---|
172 | wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
|
---|
173 | wc.lpszMenuName = NULL;
|
---|
174 | wc.lpfnWndProc = WndProc;
|
---|
175 | wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
---|
176 | wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
|
---|
177 |
|
---|
178 | RegisterClassW(&wc);
|
---|
179 | hwnd = CreateWindowW( wc.lpszClassName, title,
|
---|
180 | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_VISIBLE,
|
---|
181 | CW_USEDEFAULT, CW_USEDEFAULT, WIN_WIDTH, WIN_HEIGHT, NULL, NULL, hInstance, NULL);
|
---|
182 |
|
---|
183 | ShowWindow(hwnd, nCmdShow);
|
---|
184 | UpdateWindow(hwnd);
|
---|
185 |
|
---|
186 | while( GetMessage(&msg, NULL, 0, 0)) {
|
---|
187 | TranslateMessage(&msg);
|
---|
188 | DispatchMessage(&msg);
|
---|
189 | }
|
---|
190 | }
|
---|
191 |
|
---|