Minor changes for ATAPI Srb Functions
[reactos.git] / base / applications / rapps / toolbar.c
1 /*
2 * PROJECT: ReactOS Applications Manager
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/applications/rapps/toolbar.c
5 * PURPOSE: ToolBar functions
6 * PROGRAMMERS: Dmitry Chapyshev (dmitry@reactos.org)
7 */
8
9 #include "rapps.h"
10
11 #define TOOLBAR_HEIGHT 24
12
13 HWND hToolBar;
14 HWND hSearchBar;
15
16 static WCHAR szInstallBtn[MAX_STR_LEN];
17 static WCHAR szUninstallBtn[MAX_STR_LEN];
18 static WCHAR szModifyBtn[MAX_STR_LEN];
19
20 /* Toolbar buttons */
21 static const TBBUTTON Buttons[] =
22 { /* iBitmap, idCommand, fsState, fsStyle, bReserved[2], dwData, iString */
23 { 0, ID_INSTALL, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, (INT_PTR)szInstallBtn},
24 { 1, ID_UNINSTALL, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, (INT_PTR)szUninstallBtn},
25 { 2, ID_MODIFY, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, (INT_PTR)szModifyBtn},
26 { 5, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0},
27 { 3, ID_REFRESH, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, 0},
28 { 4, ID_RESETDB, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, 0},
29 { 5, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0},
30 { 5, ID_SETTINGS, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, 0},
31 { 6, ID_EXIT, TBSTATE_ENABLED, BTNS_BUTTON | BTNS_AUTOSIZE, {0}, 0, 0}
32 };
33
34
35 VOID
36 ToolBarOnGetDispInfo(LPTOOLTIPTEXT lpttt)
37 {
38 UINT idButton = (UINT)lpttt->hdr.idFrom;
39
40 switch (idButton)
41 {
42 case ID_EXIT:
43 lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_EXIT);
44 break;
45
46 case ID_INSTALL:
47 lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_INSTALL);
48 break;
49
50 case ID_UNINSTALL:
51 lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_UNINSTALL);
52 break;
53
54 case ID_MODIFY:
55 lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_MODIFY);
56 break;
57
58 case ID_SETTINGS:
59 lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_SETTINGS);
60 break;
61
62 case ID_REFRESH:
63 lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_REFRESH);
64 break;
65
66 case ID_RESETDB:
67 lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_UPDATE_DB);
68 break;
69 }
70 }
71
72 VOID
73 AddImageToImageList(HIMAGELIST hImageList, UINT ImageIndex)
74 {
75 HANDLE hImage;
76
77 if (!(hImage = LoadImage(hInst,
78 MAKEINTRESOURCE(ImageIndex),
79 IMAGE_ICON,
80 TOOLBAR_HEIGHT,
81 TOOLBAR_HEIGHT,
82 0)))
83 {
84 /* TODO: Error message */
85 }
86
87 ImageList_AddIcon(hImageList, hImage);
88 DeleteObject(hImage);
89 }
90
91 HIMAGELIST
92 InitImageList(VOID)
93 {
94 HIMAGELIST hImageList;
95
96 /* Create the toolbar icon image list */
97 hImageList = ImageList_Create(TOOLBAR_HEIGHT,//GetSystemMetrics(SM_CXSMICON),
98 TOOLBAR_HEIGHT,//GetSystemMetrics(SM_CYSMICON),
99 ILC_MASK | GetSystemColorDepth(),
100 1,
101 1);
102 if (!hImageList)
103 {
104 /* TODO: Error message */
105 return NULL;
106 }
107
108 AddImageToImageList(hImageList, IDI_INSTALL);
109 AddImageToImageList(hImageList, IDI_UNINSTALL);
110 AddImageToImageList(hImageList, IDI_MODIFY);
111 AddImageToImageList(hImageList, IDI_REFRESH);
112 AddImageToImageList(hImageList, IDI_UPDATE_DB);
113 AddImageToImageList(hImageList, IDI_SETTINGS);
114 AddImageToImageList(hImageList, IDI_EXIT);
115
116 return hImageList;
117 }
118
119 static
120 BOOL
121 CreateSearchBar(VOID)
122 {
123 WCHAR szBuf[MAX_STR_LEN];
124
125 hSearchBar = CreateWindowExW(WS_EX_CLIENTEDGE,
126 L"Edit",
127 NULL,
128 WS_CHILD | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL,
129 0,
130 5,
131 200,
132 22,
133 hToolBar,
134 (HMENU)0,
135 hInst,
136 0);
137
138 SendMessageW(hSearchBar, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), 0);
139
140 LoadStringW(hInst, IDS_SEARCH_TEXT, szBuf, sizeof(szBuf) / sizeof(WCHAR));
141 SetWindowTextW(hSearchBar, szBuf);
142
143 SetParent(hSearchBar, hToolBar);
144
145 return TRUE;
146 }
147
148 BOOL
149 CreateToolBar(HWND hwnd)
150 {
151 INT NumButtons = sizeof(Buttons) / sizeof(Buttons[0]);
152 HIMAGELIST hImageList;
153
154 LoadStringW(hInst, IDS_INSTALL, szInstallBtn, sizeof(szInstallBtn) / sizeof(WCHAR));
155 LoadStringW(hInst, IDS_UNINSTALL, szUninstallBtn, sizeof(szUninstallBtn) / sizeof(WCHAR));
156 LoadStringW(hInst, IDS_MODIFY, szModifyBtn, sizeof(szModifyBtn) / sizeof(WCHAR));
157
158 hToolBar = CreateWindowExW(0,
159 TOOLBARCLASSNAMEW,
160 NULL,
161 WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS | TBSTYLE_LIST,
162 0, 0, 0, 0,
163 hwnd,
164 0,
165 hInst,
166 NULL);
167
168 if (!hToolBar)
169 {
170 /* TODO: Show error message */
171 return FALSE;
172 }
173
174 SendMessageW(hToolBar, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_HIDECLIPPEDBUTTONS);
175 SendMessageW(hToolBar, TB_BUTTONSTRUCTSIZE, sizeof(Buttons[0]), 0);
176
177 hImageList = InitImageList();
178
179 if (!hImageList)
180 {
181 /* TODO: Show error message */
182 return FALSE;
183 }
184
185 ImageList_Destroy((HIMAGELIST)SendMessageW(hToolBar,
186 TB_SETIMAGELIST,
187 0,
188 (LPARAM)hImageList));
189
190 SendMessageW(hToolBar, TB_ADDBUTTONS, NumButtons, (LPARAM)Buttons);
191
192 CreateSearchBar();
193
194 return TRUE;
195 }