comparison plugins/docklet/docklet-win32.c @ 6894:c2fb9192377b

[gaim-migrate @ 7441] robot101: instead of blinking between the one with the envelope, and the one without, it's going to blink between blank and the one with the envelope committer: Tailor Script <tailor@pidgin.im>
author Herman Bloggs <hermanator12002@yahoo.com>
date Fri, 19 Sep 2003 23:18:40 +0000
parents 26b739bc9f1a
children 4d05b6e9e9cd
comparison
equal deleted inserted replaced
6893:126e123bf065 6894:c2fb9192377b
53 static HICON sysicon_disconn=0; 53 static HICON sysicon_disconn=0;
54 static HICON sysicon_conn=0; 54 static HICON sysicon_conn=0;
55 static HICON sysicon_away=0; 55 static HICON sysicon_away=0;
56 static HICON sysicon_pend=0; 56 static HICON sysicon_pend=0;
57 static HICON sysicon_awypend=0; 57 static HICON sysicon_awypend=0;
58 static HICON sysicon_blank=0;
58 static NOTIFYICONDATA wgaim_nid; 59 static NOTIFYICONDATA wgaim_nid;
59 60
60 61
61 static LRESULT CALLBACK systray_mainmsg_handler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { 62 static LRESULT CALLBACK systray_mainmsg_handler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) {
62 static UINT taskbarRestartMsg; /* static here means value is kept across multiple calls to this func */ 63 static UINT taskbarRestartMsg; /* static here means value is kept across multiple calls to this func */
149 } 150 }
150 151
151 static void systray_change_icon(HICON icon, char* text) { 152 static void systray_change_icon(HICON icon, char* text) {
152 char *locenc=NULL; 153 char *locenc=NULL;
153 wgaim_nid.hIcon = icon; 154 wgaim_nid.hIcon = icon;
154 locenc = g_locale_from_utf8(text, -1, NULL, NULL, NULL); 155 if(text) {
155 lstrcpy(wgaim_nid.szTip, locenc); 156 locenc = g_locale_from_utf8(text, -1, NULL, NULL, NULL);
156 g_free(locenc); 157 lstrcpy(wgaim_nid.szTip, locenc);
158 g_free(locenc);
159 }
157 Shell_NotifyIcon(NIM_MODIFY,&wgaim_nid); 160 Shell_NotifyIcon(NIM_MODIFY,&wgaim_nid);
158 } 161 }
159 162
160 static void systray_remove_nid(void) { 163 static void systray_remove_nid(void) {
161 Shell_NotifyIcon(NIM_DELETE,&wgaim_nid); 164 Shell_NotifyIcon(NIM_DELETE,&wgaim_nid);
180 break; 183 break;
181 case away_pending: 184 case away_pending:
182 systray_change_icon(sysicon_awypend, GAIM_SYSTRAY_AWAY_HINT); 185 systray_change_icon(sysicon_awypend, GAIM_SYSTRAY_AWAY_HINT);
183 break; 186 break;
184 } 187 }
188 }
189
190 static void wgaim_tray_blank_icon() {
191 systray_change_icon(sysicon_blank, NULL);
185 } 192 }
186 193
187 static void wgaim_tray_create() { 194 static void wgaim_tray_create() {
188 /* dummy window to process systray messages */ 195 /* dummy window to process systray messages */
189 systray_hwnd = systray_create_hiddenwin(); 196 systray_hwnd = systray_create_hiddenwin();
192 sysicon_disconn = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_OFFLINE_TRAY_ICON), IMAGE_ICON, 16, 16, 0); 199 sysicon_disconn = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_OFFLINE_TRAY_ICON), IMAGE_ICON, 16, 16, 0);
193 sysicon_conn = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_TRAY_ICON), IMAGE_ICON, 16, 16, 0); 200 sysicon_conn = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_TRAY_ICON), IMAGE_ICON, 16, 16, 0);
194 sysicon_away = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAY_TRAY_ICON), IMAGE_ICON, 16, 16, 0); 201 sysicon_away = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAY_TRAY_ICON), IMAGE_ICON, 16, 16, 0);
195 sysicon_pend = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_PEND_TRAY_ICON), IMAGE_ICON, 16, 16, 0); 202 sysicon_pend = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_PEND_TRAY_ICON), IMAGE_ICON, 16, 16, 0);
196 sysicon_awypend = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAYPEND_TRAY_ICON), IMAGE_ICON, 16, 16, 0); 203 sysicon_awypend = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAYPEND_TRAY_ICON), IMAGE_ICON, 16, 16, 0);
204 sysicon_blank = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_BLANK_TRAY_ICON), IMAGE_ICON, 16, 16, 0);
197 205
198 /* Create icon in systray */ 206 /* Create icon in systray */
199 systray_init_icon(systray_hwnd, sysicon_disconn); 207 systray_init_icon(systray_hwnd, sysicon_disconn);
200 gaim_debug(GAIM_DEBUG_INFO, "tray icon", "created\n"); 208 gaim_debug(GAIM_DEBUG_INFO, "tray icon", "created\n");
201 } 209 }
208 216
209 static struct docklet_ui_ops wgaim_tray_ops = 217 static struct docklet_ui_ops wgaim_tray_ops =
210 { 218 {
211 wgaim_tray_create, 219 wgaim_tray_create,
212 wgaim_tray_destroy, 220 wgaim_tray_destroy,
213 wgaim_tray_update_icon 221 wgaim_tray_update_icon,
222 wgaim_tray_blank_icon
214 }; 223 };
215 224
216 /* Used by docklet's plugin load func */ 225 /* Used by docklet's plugin load func */
217 void docklet_ui_init() { 226 void docklet_ui_init() {
218 docklet_set_ui_ops(&wgaim_tray_ops); 227 docklet_set_ui_ops(&wgaim_tray_ops);