OSDN Git Service

Support password timeout.
[tombo/Tombo.git] / Src / PocketPCPlatform.cpp
1 #if defined(PLATFORM_PKTPC) || defined(PLATFORM_WM5)\r
2 \r
3 #include <windows.h>\r
4 #include <tchar.h>\r
5 #include <commctrl.h>\r
6 #include <aygshell.h>\r
7 \r
8 #include "Tombo.h"\r
9 #include "resource.h"\r
10 #include "Message.h"\r
11 #include "PlatformLayer.h"\r
12 #include "PocketPCPlatform.h"\r
13 #include "SipControl.h"\r
14 #include "Property.h"\r
15 \r
16 ///////////////////////////////////////////////////////\r
17 // Menu label definitions\r
18 ///////////////////////////////////////////////////////\r
19 \r
20 static MenuMsgRes aMSMemoMenu[] = {\r
21         {  0, IDM_NEWFOLDER,   0, MSG_ID_MENUITEM_MAIN_NEWFOLDER },\r
22         {  1, IDM_CUT,         0, MSG_ID_MENUITEM_MAIN_CUT },\r
23         {  2, IDM_COPY,        0, MSG_ID_MENUITEM_MAIN_COPY },\r
24         {  3, IDM_PASTE,       0, MSG_ID_MENUITEM_MAIN_PASTE },\r
25         {  4, -1,              0, 0 },\r
26         {  5, IDM_RENAME,      0, MSG_ID_MENUITEM_MAIN_RENAME },\r
27         {  6, IDM_DELETEITEM,  0, MSG_ID_MENUITEM_MAIN_DELETE },\r
28         {  7, -1,              0, 0 },\r
29         {  8, IDM_SEARCH,      0, MSG_ID_MENUITEM_MAIN_FIND },\r
30         {  9, IDM_SEARCH_NEXT, 0, MSG_ID_MENUITEM_MAIN_FIND_NEXT },\r
31         { 10, IDM_SEARCH_PREV, 0, MSG_ID_MENUITEM_MAIN_FIND_PREV },\r
32         { 11, -1,              0, 0 },\r
33         { 12, IDM_GREP,        0, MSG_ID_MENUITEM_MAIN_QUICKFILTER },\r
34         // 13 is used by default separator\r
35         { 14, IDM_ENCRYPT,     0, MSG_ID_MENUITEM_MAIN_ENCRYPT },\r
36         { 15, IDM_DECRYPT,     0, MSG_ID_MENUITEM_MAIN_DECRYPT },\r
37 };\r
38 \r
39 static MenuMsgRes aMSToolMenu[] = {\r
40         {  0, IDM_EXIT,        0, MSG_ID_MENUITEM_TOOL_EXIT },\r
41         // 1 is not defined\r
42         {  2, IDM_ABOUT,       0, MSG_ID_MENUITEM_TOOL_ABOUT },\r
43         {  3, IDM_PROPERTY,    0, MSG_ID_MENUITEM_TOOL_PROPERTY},\r
44         {  4, IDM_VFOLDER_DEF, 0, MSG_ID_MENUITEM_TOOL_VFOLDER_DEF},\r
45         {  5, IDM_FORGETPASS,  0, MSG_ID_MENUITEM_TOOL_FORGETPASS},\r
46 };\r
47 \r
48 static MenuMsgRes aMSBookmarkMenu[] = {\r
49         {  0, IDM_BOOKMARK_ADD,    0, MSG_ID_MENUITEM_B_ADDBM },\r
50         {  1, IDM_BOOKMARK_CONFIG, 0, MSG_ID_MENUITEM_B_EDITBM },\r
51         // 2 is not defined\r
52 };\r
53 \r
54 \r
55 static MenuMsgRes aMDEditMenu[] = {\r
56         {  0, IDM_CUT,         0, MSG_ID_MENUITEM_MAIN_CUT },\r
57         {  1, IDM_COPY,        0, MSG_ID_MENUITEM_MAIN_COPY },\r
58         {  2, IDM_PASTE,       0, MSG_ID_MENUITEM_MAIN_PASTE },\r
59         {  3, -1,              0, 0 },\r
60         {  4, IDM_SELALL,      0, MSG_ID_MENUITEM_DETAILS_SELALL },\r
61         // 5 is not defined\r
62         {  6, IDM_SEARCH,      0, MSG_ID_MENUITEM_MAIN_FIND },\r
63         {  7, IDM_SEARCH_NEXT, 0, MSG_ID_MENUITEM_MAIN_FIND_NEXT },\r
64         {  8, IDM_SEARCH_PREV, 0, MSG_ID_MENUITEM_MAIN_FIND_PREV },\r
65 };\r
66 \r
67 static MenuMsgRes aMDToolMenu[] = {\r
68         {  0, IDM_DETAILS_HSCROLL, MF_CHECKED, MSG_ID_MENUITEM_TOOL_WRAP },\r
69         // 1 is not defined\r
70         {  2, IDM_ABOUT,           0,          MSG_ID_MENUITEM_TOOL_ABOUT },\r
71         {  3, IDM_EXIT,            0,          MSG_ID_MENUITEM_TOOL_EXIT },\r
72 };\r
73 \r
74 ///////////////////////////////////////////////////////\r
75 // Toolbar definitions\r
76 ///////////////////////////////////////////////////////\r
77 \r
78 #define NUM_TOOLBAR_BMP 12\r
79 \r
80 #define NUM_MS_TOOLTIP 1\r
81 LPTSTR pMSToolTip[] = {\r
82         NULL, // MSG_TOOLTIPS_NEWMEMO,\r
83 };\r
84 \r
85 #define NUM_MD_TOOLTIP 6\r
86 LPTSTR pMDToolTip[] = {\r
87         NULL, // MSG_TOOLTIPS_RETURNLIST,\r
88         NULL, //MSG_TOOLTIPS_SAVE,\r
89         TEXT(""),\r
90         TEXT(""),\r
91         NULL, // MSG_TOOLTIPS_INSDATE1,\r
92         NULL, // MSG_TOOLTIPS_INSDATE2,\r
93 };\r
94 \r
95 ///////////////////////////////////////////////////////\r
96 // methods\r
97 ///////////////////////////////////////////////////////\r
98 \r
99 void PocketPCPlatform::Create(HWND hWnd, HINSTANCE hInst)\r
100 {\r
101         // menubar for Tree view\r
102         SHMENUBARINFO mbi;\r
103         memset(&mbi, 0, sizeof(SHMENUBARINFO));\r
104         mbi.cbSize = sizeof(SHMENUBARINFO);\r
105         mbi.hwndParent = hWnd;\r
106         mbi.nToolBarId = IDM_MAIN_MENU;\r
107         mbi.hInstRes =hInst;\r
108 #if defined(FOR_VGA)\r
109         mbi.nBmpId = IDB_TOOLBAR_LARGE;\r
110 #else\r
111         mbi.nBmpId = IDB_TOOLBAR;\r
112 #endif\r
113         mbi.cBmpImages = NUM_TOOLBAR_BMP;\r
114         if (!SHCreateMenuBar(&mbi)) {\r
115                 MessageBox(hWnd, TEXT("SHCreateMenuBar failed."), TEXT("DEBUG"), MB_OK);\r
116         }\r
117         hMSCmdBar = mbi.hwndMB;\r
118 \r
119         TBBUTTONINFO tbi;\r
120         memset(&tbi, 0, sizeof(&tbi));\r
121         tbi.cbSize = sizeof(tbi);\r
122         tbi.dwMask = TBIF_TEXT;\r
123 \r
124         tbi.pszText = (LPTSTR)MSG_MENU_NOTE;\r
125         tbi.cchText = _tcslen(MSG_MENU_NOTE);\r
126         SendMessage(hMSCmdBar, TB_SETBUTTONINFO, (WPARAM)(INT)IDM_EDIT_MEMO, (LPARAM)&tbi);\r
127 \r
128         tbi.pszText = (LPTSTR)MSG_MENU_TOOL;\r
129         tbi.cchText = _tcslen(MSG_MENU_TOOL);\r
130         SendMessage(hMSCmdBar, TB_SETBUTTONINFO, (WPARAM)(INT)IDM_MENUITEM3, (LPARAM)&tbi);\r
131 \r
132         pMSToolTip[0] = (LPTSTR)MSG_TOOLTIPS_NEWMEMO;\r
133         SendMessage(hMSCmdBar, TB_SETTOOLTIPS, (WPARAM)NUM_MS_TOOLTIP, (LPARAM)pMSToolTip);\r
134 \r
135         //////////////////////////\r
136         // create menu items\r
137 \r
138         // hMenu is not created when default menu item is empty, leave only one separator.\r
139         OverrideMenuTitle(SHGetSubMenu(hMSCmdBar, IDM_EDIT_MEMO), aMSMemoMenu, sizeof(aMSMemoMenu) / sizeof(MenuMsgRes));\r
140         OverrideMenuTitle(SHGetSubMenu(hMSCmdBar, IDM_MENUITEM3), aMSToolMenu, sizeof(aMSToolMenu) / sizeof(MenuMsgRes));\r
141         OverrideMenuTitle(SHGetSubMenu(hMSCmdBar, IDM_MS_BOOKMARK), aMSBookmarkMenu, sizeof(aMSBookmarkMenu) / sizeof(MenuMsgRes));\r
142 \r
143         ////////////////////--\r
144 \r
145         // menubar for edit view\r
146         memset(&mbi, 0, sizeof(SHMENUBARINFO));\r
147         mbi.cbSize = sizeof(SHMENUBARINFO);\r
148         mbi.hwndParent = hWnd;\r
149         mbi.nToolBarId = IDM_DETAILS_MENU;\r
150         mbi.hInstRes =hInst;\r
151 #if defined(FOR_VGA)\r
152         mbi.nBmpId = IDB_TOOLBAR_LARGE;\r
153 #else\r
154         mbi.nBmpId = IDB_TOOLBAR;\r
155 #endif\r
156         mbi.cBmpImages = NUM_TOOLBAR_BMP;\r
157         if (!SHCreateMenuBar(&mbi)) {\r
158                 MessageBox(hWnd, TEXT("SHCreateMenuBar failed."), TEXT("DEBUG"), MB_OK);\r
159         }\r
160         hMDCmdBar = mbi.hwndMB;\r
161 \r
162         pMDToolTip[0] = (LPTSTR)MSG_TOOLTIPS_RETURNLIST;\r
163         pMDToolTip[1] = (LPTSTR)MSG_TOOLTIPS_SAVE;\r
164         pMDToolTip[4] = (LPTSTR)MSG_TOOLTIPS_INSDATE1;\r
165         pMDToolTip[5] = (LPTSTR)MSG_TOOLTIPS_INSDATE2;\r
166         SendMessage(hMDCmdBar, TB_SETTOOLTIPS, (WPARAM)NUM_MD_TOOLTIP, (LPARAM)pMDToolTip);\r
167 \r
168         OverrideMenuTitle(SHGetSubMenu(hMDCmdBar, IDM_EDIT_MEMO), aMDEditMenu, sizeof(aMDEditMenu) / sizeof(MenuMsgRes));\r
169         OverrideMenuTitle(SHGetSubMenu(hMDCmdBar, IDM_DETAILS_TOOL), aMDToolMenu, sizeof(aMDToolMenu) / sizeof(MenuMsgRes));\r
170 \r
171         ShowWindow(hMDCmdBar, SW_HIDE);\r
172 }\r
173 \r
174 HMENU PocketPCPlatform::GetMDToolMenu() { return SHGetSubMenu(hMDCmdBar, IDM_DETAILS_TOOL); }\r
175 HMENU PocketPCPlatform::GetMSEditMenu() { return SHGetSubMenu(hMSCmdBar, IDM_EDIT_MEMO); }\r
176 HMENU PocketPCPlatform::GetMSBookMarkMenu() { return SHGetSubMenu(hMSCmdBar, IDM_MS_BOOKMARK); }\r
177 \r
178 void PocketPCPlatform::EnableMenu(UINT uid, BOOL bEnable)\r
179 {\r
180         BOOL bSBS = FALSE;\r
181         BOOL bMenu = TRUE;\r
182         HWND hTB;\r
183 \r
184         HMENU hMenu;\r
185         switch (uid) {\r
186         case IDM_DECRYPT:\r
187         case IDM_ENCRYPT:\r
188         case IDM_DELETEITEM:\r
189         case IDM_RENAME:\r
190         case IDM_CUT:\r
191         case IDM_COPY:\r
192         case IDM_PASTE:\r
193         case IDM_NEWFOLDER:\r
194         case IDM_GREP:\r
195                 hMenu = GetMSEditMenu();\r
196                 break;\r
197         case IDM_NEWMEMO:\r
198                 bSBS = TRUE;\r
199                 hTB = hMSCmdBar;\r
200                 hMenu = GetMSEditMenu();\r
201                 break;\r
202         case IDM_SAVE:\r
203                 bMenu = FALSE;\r
204                 bSBS = TRUE;\r
205                 hTB = hMDCmdBar;\r
206                 break;\r
207         default:\r
208                 return;\r
209         }\r
210 \r
211         if (bMenu) {\r
212                 if (bEnable) {\r
213                         EnableMenuItem(hMenu, uid, MF_BYCOMMAND | MF_ENABLED);\r
214                 } else {\r
215                         EnableMenuItem(hMenu, uid, MF_BYCOMMAND | MF_GRAYED);\r
216                 }\r
217         }\r
218 \r
219         if (bSBS) {\r
220                 SendMessage(hTB, TB_ENABLEBUTTON, uid, MAKELONG(bEnable, 0));\r
221         }\r
222 }\r
223 \r
224 void PocketPCPlatform::CheckMenu(UINT uid, BOOL bCheck)\r
225 {\r
226         HWND hTB;\r
227         HMENU hMenu = NULL;\r
228         BOOL bCBS = FALSE;\r
229         switch(uid) {\r
230         case IDM_TOGGLEPANE:\r
231                 bCBS = TRUE;\r
232                 hTB = hMSCmdBar;\r
233                 bCheck = !bCheck;\r
234                 break;\r
235         case IDM_DETAILS_HSCROLL:\r
236                 bCBS = FALSE;\r
237                 hMenu = GetMDToolMenu();\r
238                 break;\r
239         default:\r
240                 return;\r
241         }\r
242 \r
243         if (bCBS) {\r
244                 SendMessage(hTB, TB_CHECKBUTTON, uid, MAKELONG(bCheck, 0));\r
245         }\r
246         if (hMenu) {\r
247                 CheckMenuItem(hMenu, uid, MF_BYCOMMAND | (bCheck ? MF_CHECKED : MF_UNCHECKED));\r
248         }\r
249 }\r
250 \r
251 void PocketPCPlatform::OpenDetailsView()\r
252 {\r
253         ShowWindow(hMDCmdBar, SW_SHOW);\r
254         ShowWindow(hMSCmdBar, SW_HIDE);\r
255 \r
256         TBBUTTONINFO tbi;\r
257         memset(&tbi, 0, sizeof(&tbi));\r
258         tbi.cbSize = sizeof(tbi);\r
259         tbi.dwMask = TBIF_TEXT;\r
260 \r
261         tbi.pszText = (LPTSTR)MSG_MENU_TOOL;\r
262         tbi.cchText = _tcslen(MSG_MENU_TOOL);\r
263         SendMessage(hMDCmdBar, TB_SETBUTTONINFO, (WPARAM)(INT)IDM_DETAILS_TOOL, (LPARAM)&tbi);\r
264 \r
265         tbi.pszText = (LPTSTR)MSG_MENU_EDIT;\r
266         tbi.cchText = _tcslen(MSG_MENU_EDIT);\r
267         SendMessage(hMDCmdBar, TB_SETBUTTONINFO, (WPARAM)(INT)IDM_EDIT_MEMO, (LPARAM)&tbi);\r
268 \r
269 }\r
270 \r
271 void PocketPCPlatform::CloseDetailsView()\r
272 {\r
273         ShowWindow(hMDCmdBar, SW_HIDE);\r
274         ShowWindow(hMSCmdBar, SW_SHOW);\r
275 }\r
276 \r
277 void PocketPCPlatform::EnableSearchNext()\r
278 {\r
279         SendMessage(hMSCmdBar, TB_SETSTATE, IDM_SEARCH_PREV, MAKELONG(TBSTATE_ENABLED, 0)); \r
280         SendMessage(hMSCmdBar, TB_SETSTATE, IDM_SEARCH_NEXT, MAKELONG(TBSTATE_ENABLED, 0)); \r
281         SendMessage(hMDCmdBar, TB_SETSTATE, IDM_SEARCH_PREV, MAKELONG(TBSTATE_ENABLED, 0)); \r
282         SendMessage(hMDCmdBar, TB_SETSTATE, IDM_SEARCH_NEXT, MAKELONG(TBSTATE_ENABLED, 0)); \r
283 }\r
284 \r
285 void PocketPCPlatform::AdjustUserRect(RECT *r)\r
286 {\r
287         // menubar\r
288         RECT rMenuRect;\r
289         GetWindowRect(hMSCmdBar, &rMenuRect);\r
290         DWORD nHOffset = rMenuRect.bottom - rMenuRect.top;\r
291 \r
292         r->bottom -= nHOffset - 1;\r
293 \r
294         // SIP\r
295         BOOL bStat;\r
296         SipControl sc;\r
297         if (!sc.Init()) return;\r
298         if (!sc.GetSipStat(&bStat)) return;\r
299 \r
300         if (bStat) {\r
301                 RECT rSip = sc.GetRect();\r
302                 DWORD nDelta = g_Property.GetSipSizeDelta();\r
303         \r
304                 r->bottom -= (rSip.bottom - rSip.top + nDelta);\r
305         }\r
306 }\r
307 \r
308 ///////////////////////////////////////////////////////\r
309 //\r
310 ///////////////////////////////////////////////////////\r
311 static MenuMsgRes aMSPopupMenu[] = {\r
312         {  0, IDM_CUT,        0, MSG_ID_MENUITEM_MAIN_CUT },\r
313         {  1, IDM_COPY,       0, MSG_ID_MENUITEM_MAIN_COPY },\r
314         {  2, IDM_PASTE,      0, MSG_ID_MENUITEM_MAIN_PASTE },\r
315         {  3, -1, 0, 0},\r
316         {  4, IDM_DELETEITEM, 0, MSG_ID_MENUITEM_MAIN_DELETE },\r
317         {  5, IDM_RENAME,     0, MSG_ID_MENUITEM_MAIN_RENAME },\r
318         {  6, -1, 0, 0},\r
319         {  7, IDM_ENCRYPT,    0, MSG_ID_MENUITEM_MAIN_ENCRYPT },\r
320         {  8, IDM_DECRYPT,    0, MSG_ID_MENUITEM_MAIN_DECRYPT },\r
321 \r
322 };\r
323 \r
324 HMENU PocketPCPlatform::LoadSelectViewPopupMenu()\r
325 {\r
326         HMENU hMenu = CreatePopupMenu();\r
327         OverrideMenuTitle(hMenu, aMSPopupMenu, sizeof(aMSPopupMenu) / sizeof(MenuMsgRes));\r
328         return hMenu;\r
329 }\r
330 \r
331 static MenuMsgRes aMDPopupMenu[] = {\r
332         { 0, IDM_CUT,      0, MSG_ID_MENUITEM_MAIN_CUT },\r
333         { 1, IDM_COPY,     0, MSG_ID_MENUITEM_MAIN_COPY },\r
334         { 2, IDM_PASTE,    0, MSG_ID_MENUITEM_MAIN_PASTE },\r
335         { 3, -1, 0, 0},\r
336         { 4, IDM_INSDATE1, 0, MSG_ID_TOOLTIPS_INSDATE1 },\r
337         { 5, IDM_INSDATE2, 0, MSG_ID_TOOLTIPS_INSDATE2 },\r
338 };\r
339 \r
340 HMENU PocketPCPlatform::LoadDetailsViewPopupMenu()\r
341 {\r
342         HMENU hMenu = CreatePopupMenu();\r
343         OverrideMenuTitle(hMenu, aMDPopupMenu, sizeof(aMDPopupMenu) / sizeof(MenuMsgRes));\r
344         return hMenu;\r
345 }\r
346 \r
347 #endif // PLATFORM_PKTPC