Develop and Download Open Source Software

Browse CVS Repository

Contents of /tombo/Tombo/Src/WM5Platform.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (show annotations) (download) (as text)
Thu Sep 7 16:39:57 2006 UTC (17 years, 7 months ago) by hirami
Branch: MAIN
CVS Tags: Tombo_2_0b4, Tombo_2_0b2, Tombo_2_0b3, B228, B229, B231, B230, B227, HEAD
Changes since 1.2: +11 -8 lines
File MIME type: text/x-c++src
* FIX: libexpatw.dll was not included in desktop version.
* Add insert date menu to wm5 version.
* Add Ctrl+Insert, Ctrl+Delete, Shift+Insert key binding.

1 #if defined(PLATFORM_WM5)
2
3 #include <windows.h>
4 #include <tchar.h>
5 #include <commctrl.h>
6 #include <aygshell.h>
7
8 #include "Tombo.h"
9 #include "resource.h"
10 #include "Message.h"
11 #include "PlatformLayer.h"
12 #include "PocketPCPlatform.h"
13 #include "SipControl.h"
14 #include "Property.h"
15
16 #define MENUBAR_MENU_LEFT 0
17 #define MENUBAR_MENU_RIGHT 1
18
19 ///////////////////////////////////////////////////////
20 // Menu definitions
21 ///////////////////////////////////////////////////////
22 // To retrieve submenu depends on the item's position.
23 // Be careful if order changes.
24
25 // Treeview
26
27 static MenuMsgRes aMSLeftMenu[] = {
28 { 0, IDM_NEWMEMO, 0, MSG_ID_TOOLTIPS_NEWMEMO, NULL },
29 { 1, -1, 0, 0, NULL },
30 { 2, IDM_BOOKMARK_ADD, 0, MSG_ID_MENUITEM_B_ADDBM, NULL },
31 { 3, IDM_BOOKMARK_CONFIG, 0, MSG_ID_MENUITEM_B_EDITBM, NULL },
32 { 4, -1, 0, 0, NULL },
33 { -1, 0, 0, 0, NULL },
34 };
35
36 static MenuMsgRes aMSRightEditSubMenu[] = {
37 { 0, IDM_CUT, 0, MSG_ID_MENUITEM_MAIN_CUT, NULL },
38 { 1, IDM_COPY, 0, MSG_ID_MENUITEM_MAIN_COPY, NULL },
39 { 2, IDM_PASTE, 0, MSG_ID_MENUITEM_MAIN_PASTE, NULL },
40 { -1, 0, 0, 0, NULL },
41 };
42
43 static MenuMsgRes aMSRightFindSubMenu[] = {
44 { 0, IDM_SEARCH, 0, MSG_ID_MENUITEM_MAIN_FIND, NULL },
45 { 1, IDM_SEARCH_NEXT, MF_GRAYED, MSG_ID_MENUITEM_MAIN_FIND_NEXT, NULL },
46 { 2, IDM_SEARCH_PREV, MF_GRAYED, MSG_ID_MENUITEM_MAIN_FIND_PREV, NULL },
47 { 3, -1, 0, 0, NULL },
48 { 4, IDM_GREP, 0, MSG_ID_MENUITEM_MAIN_QUICKFILTER, NULL },
49 { -1, 0, 0, 0, NULL },
50 };
51
52 static MenuMsgRes aMSRightSecuritySubMenu[] = {
53 { 0, IDM_ENCRYPT, 0, MSG_ID_MENUITEM_MAIN_ENCRYPT, NULL },
54 { 1, IDM_DECRYPT, 0, MSG_ID_MENUITEM_MAIN_DECRYPT, NULL },
55 { 2, -1, 0, 0, NULL },
56 { 3, IDM_FORGETPASS, 0, MSG_ID_MENUITEM_TOOL_FORGETPASS, NULL },
57 { -1, 0, 0, 0, NULL },
58 };
59
60 static MenuMsgRes aMSRightFileSubMenu[] = {
61 { 0, IDM_RENAME, 0, MSG_ID_MENUITEM_MAIN_RENAME, NULL },
62 { 1, IDM_NEWFOLDER, 0, MSG_ID_MENUITEM_MAIN_NEWFOLDER, NULL },
63 { 2, -1, 0, 0, NULL },
64 { 3, IDM_DELETEITEM, 0, MSG_ID_MENUITEM_MAIN_DELETE, NULL },
65 { -1, 0, 0, 0, NULL },
66 };
67
68 static MenuMsgRes aMSRightPropertySubMenu[] = {
69 { 0, IDM_VFOLDER_DEF, 0, MSG_ID_MENUITEM_TOOL_VFOLDER_DEF, NULL },
70 { 1, IDM_PROPERTY, 0, MSG_ID_MENUITEM_TOOL_PROPERTY, NULL },
71 { -1, 0, 0, 0, NULL },
72 };
73
74 #define MS_R_EDIT_SUBMENU_POS 0
75 #define MS_R_FIND_SUBMENU_POS 1
76 #define MS_R_SECURITY_SUBMENU_POS 2
77 #define MS_R_FILE_SUBMENU_POS 3
78 #define MS_R_PROPERTY_SUBMENU_POS 4
79
80 static MenuMsgRes aMSRightMenu[] = {
81 { 0, 0, 0, MSG_ID_EDIT, aMSRightEditSubMenu },
82 { 1, 0, 0, MSG_ID_MENUITEM_MAIN_FIND, aMSRightFindSubMenu },
83 { 2, 0, 0, MSG_ID_PROPTAB_PASS_TIMEOUT, aMSRightSecuritySubMenu },
84 { 3, 0, 0, MSG_ID_MENUITEM_FILE, aMSRightFileSubMenu },
85 { 4, 0, 0, MSG_ID_PROPTAB_TITLE, aMSRightPropertySubMenu },
86 { 5, -1, 0, 0, NULL },
87 { 6, IDM_TOGGLEPANE, 0, MSG_ID_MENUITEM_BE_T_TWOPANE, NULL },
88 { 7, -1, 0, 0, NULL },
89 { 8, IDM_ABOUT, 0, MSG_ID_MENUITEM_TOOL_ABOUT, NULL },
90 { 9, IDM_EXIT, 0, MSG_ID_MENUITEM_TOOL_EXIT, NULL },
91 { -1, 0, 0, 0, NULL },
92 };
93
94 // Editview
95
96 static MenuMsgRes aMDRightEditSubMenu[] = {
97 { 0, IDM_CUT, 0, MSG_ID_MENUITEM_MAIN_CUT, NULL },
98 { 1, IDM_COPY, 0, MSG_ID_MENUITEM_MAIN_COPY, NULL },
99 { 2, IDM_PASTE, 0, MSG_ID_MENUITEM_MAIN_PASTE, NULL },
100 { 3, -1, 0, 0, NULL },
101 { 4, IDM_INSDATE1, 0, MSG_ID_TOOLTIPS_INSDATE1, NULL },
102 { 5, IDM_INSDATE2, 0, MSG_ID_TOOLTIPS_INSDATE2, NULL },
103 { -1, 0, 0, 0, NULL },
104 };
105
106 static MenuMsgRes aMDRightFindSubMenu[] = {
107 { 0, IDM_SEARCH, 0, MSG_ID_MENUITEM_MAIN_FIND, NULL },
108 { 1, IDM_SEARCH_NEXT, MF_GRAYED, MSG_ID_MENUITEM_MAIN_FIND_NEXT, NULL },
109 { 2, IDM_SEARCH_PREV, MF_GRAYED, MSG_ID_MENUITEM_MAIN_FIND_PREV, NULL },
110 { -1, 0, 0, 0, NULL },
111 };
112
113 #define MD_R_EDIT_SUBMENU_POS 0
114 #define MD_R_FIND_SUBMENU_POS 1
115
116 static MenuMsgRes aMDRightMenu[] = {
117 { 0, 0, 0, MSG_ID_EDIT, aMDRightEditSubMenu },
118 { 1, 0, 0, MSG_ID_MENUITEM_MAIN_FIND, aMDRightFindSubMenu },
119 { 2, -1, 0, 0, NULL },
120 { 3, IDM_DETAILS_HSCROLL, MF_CHECKED, MSG_ID_MENUITEM_TOOL_WRAP, NULL },
121 { 4, -1, 0, 0, NULL },
122 { 5, IDM_EXIT, 0, MSG_ID_MENUITEM_TOOL_EXIT, NULL },
123 { -1, 0, 0, 0, NULL },
124 };
125
126 ///////////////////////////////////////////////////////
127 // util
128 ///////////////////////////////////////////////////////
129
130 static HMENU GetMenuFromMenubar(HWND hWnd, DWORD nIndex) {
131 TBBUTTONINFO tbbi = {0};
132 tbbi.cbSize = sizeof(tbbi);
133 tbbi.dwMask = TBIF_LPARAM | TBIF_BYINDEX;
134 SendMessage(hWnd, TB_GETBUTTONINFO, nIndex, (LPARAM)&tbbi);
135 return (HMENU)tbbi.lParam;
136 }
137
138 static HWND CreateMenubar(HWND hWnd, HINSTANCE hInst, UINT nToolBarId, MenuMsgRes *pLeft, MenuMsgRes *pRight)
139 {
140 SHMENUBARINFO mbi;
141 memset(&mbi, 0, sizeof(SHMENUBARINFO));
142 mbi.cbSize = sizeof(SHMENUBARINFO);
143 mbi.hwndParent = hWnd;
144 mbi.nToolBarId = nToolBarId;
145 mbi.hInstRes =hInst;
146
147 if (!SHCreateMenuBar(&mbi)) {
148 TCHAR buf[1024];
149 wsprintf(buf, TEXT("SHCreateMenuBar failed(%d)."), GetLastError());
150 MessageBox(hWnd, buf, TEXT("DEBUG"), MB_OK);
151 return NULL;
152 }
153
154 if (pLeft != NULL) {
155 HMENU hMenu = GetMenuFromMenubar(mbi.hwndMB, MENUBAR_MENU_LEFT);
156 RemoveMenu(hMenu, 0, MF_BYPOSITION);
157 AddMenuItemByMsgRes(hMenu, pLeft);
158 }
159 if (pRight != NULL) {
160 HMENU hMenu = GetMenuFromMenubar(mbi.hwndMB, MENUBAR_MENU_RIGHT);
161 RemoveMenu(hMenu, 0, MF_BYPOSITION);
162 AddMenuItemByMsgRes(hMenu, pRight);
163 }
164
165 return mbi.hwndMB;
166 }
167
168 static HMENU GetSubMenu(HMENU hMenu, DWORD nIndex)
169 {
170 MENUITEMINFO mi;
171 ZeroMemory(&mi, sizeof(mi));
172 mi.cbSize = sizeof(mi);
173 mi.fMask = MIIM_SUBMENU;
174 if (!GetMenuItemInfo(hMenu, nIndex, TRUE, &mi)) {
175 return NULL;
176 }
177 return mi.hSubMenu;
178 }
179
180 ///////////////////////////////////////////////////////
181 // methods
182 ///////////////////////////////////////////////////////
183
184 void WM5Platform::Create(HWND hWnd, HINSTANCE hInst)
185 {
186 hMainWnd = hWnd;
187
188 // create menubar
189 hMSCmdBar = CreateMenubar(hWnd, hInst, IDM_MAIN_MENU, aMSLeftMenu, aMSRightMenu);
190 hMDCmdBar = CreateMenubar(hWnd, hInst, IDM_DETAILS_MENU, NULL, aMDRightMenu);
191
192 TBBUTTONINFO tbi;
193 ZeroMemory(&tbi, sizeof(tbi));
194 tbi.cbSize = sizeof(tbi);
195 tbi.dwMask = TBIF_BYINDEX | TBIF_TEXT;
196
197 tbi.pszText = (LPTSTR)MSG_MEMO;
198 tbi.cchText = _tcslen(MSG_MEMO);
199 SendMessage(hMSCmdBar, TB_SETBUTTONINFO, 0, (LPARAM)&tbi);
200 tbi.pszText = (LPTSTR)MSG_TOOL;
201 tbi.cchText = _tcslen(MSG_TOOL);
202 SendMessage(hMSCmdBar, TB_SETBUTTONINFO, 1, (LPARAM)&tbi);
203 SendMessage(hMDCmdBar, TB_SETBUTTONINFO, 1, (LPARAM)&tbi);
204
205 ShowWindow(hMDCmdBar, SW_HIDE);
206 }
207
208 HMENU WM5Platform::GetMDToolMenu() { return SHGetSubMenu(hMDCmdBar, IDM_DETAILS_TOOL); }
209 HMENU WM5Platform::GetMSBookMarkMenu()
210 {
211 return GetMenuFromMenubar(hMSCmdBar, MENUBAR_MENU_LEFT);
212 }
213
214 void WM5Platform::EnableMenu(UINT uid, BOOL bEnable)
215 {
216 BOOL bSBS = FALSE;
217 BOOL bMenu = TRUE;
218 HWND hTB;
219
220 HMENU hMenu = NULL;
221 switch (uid) {
222 case IDM_CUT:
223 case IDM_COPY:
224 case IDM_PASTE:
225 hMenu = GetSubMenu(GetMenuFromMenubar(hMSCmdBar, MENUBAR_MENU_RIGHT), MS_R_EDIT_SUBMENU_POS);
226 break;
227 case IDM_GREP:
228 hMenu = GetSubMenu(GetMenuFromMenubar(hMSCmdBar, MENUBAR_MENU_RIGHT), MS_R_FIND_SUBMENU_POS);
229 break;
230 case IDM_DECRYPT:
231 case IDM_ENCRYPT:
232 hMenu = GetSubMenu(GetMenuFromMenubar(hMSCmdBar, MENUBAR_MENU_RIGHT), MS_R_SECURITY_SUBMENU_POS);
233 break;
234 case IDM_DELETEITEM:
235 case IDM_RENAME:
236 case IDM_NEWFOLDER:
237 hMenu = GetSubMenu(GetMenuFromMenubar(hMSCmdBar, MENUBAR_MENU_RIGHT), MS_R_FILE_SUBMENU_POS);
238 break;
239 case IDM_NEWMEMO:
240 hMenu = GetMenuFromMenubar(hMSCmdBar, MENUBAR_MENU_LEFT);
241 break;
242 case IDM_SAVE:
243 bSBS = TRUE;
244 hTB = hMDCmdBar;
245 break;
246 default:
247 return;
248 }
249
250 if (hMenu != NULL) {
251 if (bEnable) {
252 EnableMenuItem(hMenu, uid, MF_BYCOMMAND | MF_ENABLED);
253 } else {
254 EnableMenuItem(hMenu, uid, MF_BYCOMMAND | MF_GRAYED);
255 }
256 }
257
258 if (bSBS) {
259 SendMessage(hTB, TB_ENABLEBUTTON, uid, MAKELONG(bEnable, 0));
260 }
261 }
262
263 void WM5Platform::CheckMenu(UINT uid, BOOL bCheck)
264 {
265 HMENU hMenu = NULL;
266 switch (uid) {
267 case IDM_TOGGLEPANE:
268 hMenu = GetMenuFromMenubar(hMSCmdBar, MENUBAR_MENU_RIGHT);
269 break;
270 case IDM_DETAILS_HSCROLL:
271 hMenu = GetMenuFromMenubar(hMDCmdBar, MENUBAR_MENU_RIGHT);
272 break;
273 default:
274 return;
275 }
276
277 if (hMenu) {
278 CheckMenuItem(hMenu, uid, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));
279 }
280 }
281
282 void WM5Platform::OpenDetailsView()
283 {
284 ShowWindow(hMDCmdBar, SW_SHOW);
285 ShowWindow(hMSCmdBar, SW_HIDE);
286
287 SHDoneButton(hMainWnd, SHDB_SHOW);
288 }
289
290 void WM5Platform::CloseDetailsView()
291 {
292 ShowWindow(hMDCmdBar, SW_HIDE);
293 ShowWindow(hMSCmdBar, SW_SHOW);
294
295 SHDoneButton(hMainWnd, SHDB_HIDE);
296 }
297
298 void WM5Platform::EnableSearchNext()
299 {
300 HMENU hMSMenu = GetSubMenu(GetMenuFromMenubar(hMSCmdBar, MENUBAR_MENU_RIGHT), MS_R_FIND_SUBMENU_POS);
301 EnableMenuItem(hMSMenu, IDM_SEARCH_PREV, MF_BYCOMMAND | MF_ENABLED);
302 EnableMenuItem(hMSMenu, IDM_SEARCH_NEXT, MF_BYCOMMAND | MF_ENABLED);
303
304 HMENU hMDMenu = GetSubMenu(GetMenuFromMenubar(hMDCmdBar, MENUBAR_MENU_RIGHT), MD_R_FIND_SUBMENU_POS);
305 EnableMenuItem(hMDMenu, IDM_SEARCH_PREV, MF_BYCOMMAND | MF_ENABLED);
306 EnableMenuItem(hMDMenu, IDM_SEARCH_NEXT, MF_BYCOMMAND | MF_ENABLED);
307 }
308
309 void WM5Platform::AdjustUserRect(RECT *r)
310 {
311 // menubar
312 RECT rMenuRect;
313 GetWindowRect(hMSCmdBar, &rMenuRect);
314 DWORD nHOffset = rMenuRect.bottom - rMenuRect.top;
315
316 r->bottom -= nHOffset - 1;
317
318 // SIP
319 BOOL bStat;
320 SipControl sc;
321 if (!sc.Init()) return;
322 if (!sc.GetSipStat(&bStat)) return;
323
324 if (bStat) {
325 RECT rSip = sc.GetRect();
326 DWORD nDelta = g_Property.GetSipSizeDelta();
327
328 r->bottom -= (rSip.bottom - rSip.top + nDelta);
329 }
330 }
331
332 ///////////////////////////////////////////////////////
333 //
334 ///////////////////////////////////////////////////////
335 static MenuMsgRes aMSPopupMenu[] = {
336 { 0, IDM_CUT, 0, MSG_ID_MENUITEM_MAIN_CUT },
337 { 1, IDM_COPY, 0, MSG_ID_MENUITEM_MAIN_COPY },
338 { 2, IDM_PASTE, 0, MSG_ID_MENUITEM_MAIN_PASTE },
339 { 3, -1, 0, 0},
340 { 4, IDM_DELETEITEM, 0, MSG_ID_MENUITEM_MAIN_DELETE },
341 { 5, IDM_RENAME, 0, MSG_ID_MENUITEM_MAIN_RENAME },
342 { 6, -1, 0, 0},
343 { 7, IDM_ENCRYPT, 0, MSG_ID_MENUITEM_MAIN_ENCRYPT },
344 { 8, IDM_DECRYPT, 0, MSG_ID_MENUITEM_MAIN_DECRYPT },
345
346 };
347
348 HMENU WM5Platform::LoadSelectViewPopupMenu()
349 {
350 HMENU hMenu = CreatePopupMenu();
351 OverrideMenuTitle(hMenu, aMSPopupMenu, sizeof(aMSPopupMenu) / sizeof(MenuMsgRes));
352 return hMenu;
353 }
354
355 static MenuMsgRes aMDPopupMenu[] = {
356 { 0, IDM_CUT, 0, MSG_ID_MENUITEM_MAIN_CUT },
357 { 1, IDM_COPY, 0, MSG_ID_MENUITEM_MAIN_COPY },
358 { 2, IDM_PASTE, 0, MSG_ID_MENUITEM_MAIN_PASTE },
359 { 3, -1, 0, 0},
360 { 4, IDM_INSDATE1, 0, MSG_ID_TOOLTIPS_INSDATE1 },
361 { 5, IDM_INSDATE2, 0, MSG_ID_TOOLTIPS_INSDATE2 },
362 };
363
364 HMENU WM5Platform::LoadDetailsViewPopupMenu()
365 {
366 HMENU hMenu = CreatePopupMenu();
367 OverrideMenuTitle(hMenu, aMDPopupMenu, sizeof(aMDPopupMenu) / sizeof(MenuMsgRes));
368 return hMenu;
369 }
370
371 #endif // PLATFORM_WM5

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26