plugins/docklet/docklet-win32.c

changeset 11709
da6e9cd5f6d9
parent 10520
c0fdc3638fab
child 12016
0517ad5d0196
equal deleted inserted replaced
11708:47593a05096e 11709:da6e9cd5f6d9
112 112
113 strcpy(wname, "GaimWin"); 113 strcpy(wname, "GaimWin");
114 114
115 wcex.cbSize = sizeof(WNDCLASSEX); 115 wcex.cbSize = sizeof(WNDCLASSEX);
116 116
117 wcex.style = 0; 117 wcex.style = 0;
118 wcex.lpfnWndProc = (WNDPROC)systray_mainmsg_handler; 118 wcex.lpfnWndProc = (WNDPROC)systray_mainmsg_handler;
119 wcex.cbClsExtra = 0; 119 wcex.cbClsExtra = 0;
120 wcex.cbWndExtra = 0; 120 wcex.cbWndExtra = 0;
121 wcex.hInstance = wgaim_hinstance(); 121 wcex.hInstance = wgaim_hinstance();
122 wcex.hIcon = NULL; 122 wcex.hIcon = NULL;
150 } 150 }
151 151
152 static void systray_change_icon(HICON icon, char* text) { 152 static void systray_change_icon(HICON icon, char* text) {
153 char *locenc=NULL; 153 char *locenc=NULL;
154 wgaim_nid.hIcon = icon; 154 wgaim_nid.hIcon = icon;
155 if(text) { 155 if (text) {
156 locenc = g_locale_from_utf8(text, -1, NULL, NULL, NULL); 156 locenc = g_locale_from_utf8(text, -1, NULL, NULL, NULL);
157 lstrcpy(wgaim_nid.szTip, locenc); 157 lstrcpy(wgaim_nid.szTip, locenc);
158 g_free(locenc); 158 g_free(locenc);
159 } 159 }
160 Shell_NotifyIcon(NIM_MODIFY,&wgaim_nid); 160 Shell_NotifyIcon(NIM_MODIFY,&wgaim_nid);
161 } 161 }
162 162
163 static void systray_remove_nid(void) { 163 static void systray_remove_nid(void) {
164 Shell_NotifyIcon(NIM_DELETE,&wgaim_nid); 164 Shell_NotifyIcon(NIM_DELETE,&wgaim_nid);
165 } 165 }
166 166
167 static void wgaim_tray_update_icon(enum docklet_status icon) { 167 static void wgaim_tray_update_icon(DockletStatus icon) {
168 switch (icon) { 168 switch (icon) {
169 case offline: 169 case DOCKLET_STATUS_OFFLINE:
170 systray_change_icon(sysicon_disconn, GAIM_SYSTRAY_DISCONN_HINT); 170 systray_change_icon(sysicon_disconn, GAIM_SYSTRAY_DISCONN_HINT);
171 break; 171 break;
172 case offline_connecting: 172 case DOCKLET_STATUS_CONNECTING:
173 case online_connecting: 173 break;
174 break; 174 case DOCKLET_STATUS_ONLINE:
175 case online:
176 systray_change_icon(sysicon_conn, GAIM_SYSTRAY_HINT); 175 systray_change_icon(sysicon_conn, GAIM_SYSTRAY_HINT);
177 break; 176 break;
178 case online_pending: 177 case DOCKLET_STATUS_ONLINE_PENDING:
179 systray_change_icon(sysicon_pend, GAIM_SYSTRAY_HINT); 178 systray_change_icon(sysicon_pend, GAIM_SYSTRAY_HINT);
180 break; 179 break;
181 case away: 180 case DOCKLET_STATUS_AWAY:
182 systray_change_icon(sysicon_away, GAIM_SYSTRAY_AWAY_HINT); 181 systray_change_icon(sysicon_away, GAIM_SYSTRAY_AWAY_HINT);
183 break; 182 break;
184 case away_pending: 183 case DOCKLET_STATUS_AWAY_PENDING:
185 systray_change_icon(sysicon_awypend, GAIM_SYSTRAY_AWAY_HINT); 184 systray_change_icon(sysicon_awypend, GAIM_SYSTRAY_AWAY_HINT);
186 break; 185 break;
187 } 186 }
188 } 187 }
189 188
190 static void wgaim_tray_blank_icon() { 189 static void wgaim_tray_blank_icon() {
191 systray_change_icon(sysicon_blank, NULL); 190 systray_change_icon(sysicon_blank, NULL);
192 } 191 }
193 192
194 static void wgaim_tray_create() { 193 static void wgaim_tray_create() {
195 OSVERSIONINFO osinfo; 194 OSVERSIONINFO osinfo;
196 /* dummy window to process systray messages */ 195 /* dummy window to process systray messages */
228 systray_remove_nid(); 227 systray_remove_nid();
229 DestroyWindow(systray_hwnd); 228 DestroyWindow(systray_hwnd);
230 docklet_remove(TRUE); 229 docklet_remove(TRUE);
231 } 230 }
232 231
232 void wgaim_tray_minimize(GtkWidget *window) {
233 MinimizeWndToTray(GDK_WINDOW_HWND(window->window));
234 }
235
236 void wgaim_tray_maximize(GtkWidget *window) {
237 RestoreWndFromTray(GDK_WINDOW_HWND(window->window));
238 }
239
233 static struct docklet_ui_ops wgaim_tray_ops = 240 static struct docklet_ui_ops wgaim_tray_ops =
234 { 241 {
235 wgaim_tray_create, 242 wgaim_tray_create,
236 wgaim_tray_destroy, 243 wgaim_tray_destroy,
237 wgaim_tray_update_icon, 244 wgaim_tray_update_icon,
238 wgaim_tray_blank_icon, 245 wgaim_tray_blank_icon,
246 wgaim_tray_minimize,
247 wgaim_tray_maximize,
239 NULL 248 NULL
240 }; 249 };
241 250
242 /* Used by docklet's plugin load func */ 251 /* Used by docklet's plugin load func */
243 void docklet_ui_init() { 252 void docklet_ui_init() {

mercurial