Fri, 06 Oct 2006 05:03:28 +0000
[gaim-migrate @ 17435]
Fix the docklet on wingaim.
What is the plan for the docklet prefs?
|
6278
d0cd8645bf90
[gaim-migrate @ 6777]
Herman Bloggs <herman@bluedigits.com>
parents:
6261
diff
changeset
|
1 | /* |
| 6209 | 2 | * System tray icon (aka docklet) plugin for Gaim |
| 3 | * | |
| 4 | * Copyright (C) 2002-3 Robert McQueen <robot101@debian.org> | |
| 5 | * Copyright (C) 2003 Herman Bloggs <hermanator12002@yahoo.com> | |
| 6 | * Inspired by a similar plugin by: | |
| 7 | * John (J5) Palmieri <johnp@martianrock.com> | |
| 8 | * | |
| 9 | * This program is free software; you can redistribute it and/or | |
| 10 | * modify it under the terms of the GNU General Public License as | |
| 11 | * published by the Free Software Foundation; either version 2 of the | |
| 12 | * License, or (at your option) any later version. | |
| 13 | * | |
| 14 | * This program is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 17 | * General Public License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU General Public License | |
| 20 | * along with this program; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
| 22 | * 02111-1307, USA. | |
| 23 | */ | |
| 24 | ||
| 25 | #include <windows.h> | |
| 26 | #include <gdk/gdkwin32.h> | |
| 27 | #include <gdk/gdk.h> | |
| 28 | ||
| 29 | #include "internal.h" | |
| 30 | #include "gtkblist.h" | |
| 31 | #include "debug.h" | |
| 32 | ||
| 33 | #include "resource.h" | |
| 34 | #include "MinimizeToTray.h" | |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
35 | #include "gtkwin32dep.h" |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
36 | #include "gtkdocklet.h" |
| 6209 | 37 | |
| 38 | /* | |
| 39 | * DEFINES, MACROS & DATA TYPES | |
| 40 | */ | |
| 41 | #define WM_TRAYMESSAGE WM_USER /* User defined WM Message */ | |
| 42 | ||
| 43 | /* | |
| 44 | * LOCALS | |
| 45 | */ | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
46 | static HWND systray_hwnd = 0; |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
47 | static HICON sysicon_disconn = 0; |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
48 | static HICON sysicon_conn = 0; |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
49 | static HICON sysicon_away = 0; |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
50 | static HICON sysicon_pend = 0; |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
51 | static HICON sysicon_awypend = 0; |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
52 | static HICON sysicon_blank = 0; |
| 6209 | 53 | static NOTIFYICONDATA wgaim_nid; |
| 54 | ||
| 55 | ||
| 56 | static LRESULT CALLBACK systray_mainmsg_handler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { | |
| 57 | static UINT taskbarRestartMsg; /* static here means value is kept across multiple calls to this func */ | |
| 58 | ||
| 59 | switch(msg) { | |
| 60 | case WM_CREATE: | |
|
6425
3e86c949c98a
[gaim-migrate @ 6933]
Herman Bloggs <herman@bluedigits.com>
parents:
6278
diff
changeset
|
61 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "WM_CREATE\n"); |
| 6209 | 62 | taskbarRestartMsg = RegisterWindowMessage("TaskbarCreated"); |
| 63 | break; | |
| 64 | ||
| 65 | case WM_TIMER: | |
|
6425
3e86c949c98a
[gaim-migrate @ 6933]
Herman Bloggs <herman@bluedigits.com>
parents:
6278
diff
changeset
|
66 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "WM_TIMER\n"); |
| 6209 | 67 | break; |
| 68 | ||
| 69 | case WM_DESTROY: | |
|
6425
3e86c949c98a
[gaim-migrate @ 6933]
Herman Bloggs <herman@bluedigits.com>
parents:
6278
diff
changeset
|
70 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "WM_DESTROY\n"); |
| 6209 | 71 | break; |
| 72 | ||
| 73 | case WM_TRAYMESSAGE: | |
| 74 | { | |
| 75 | int type = 0; | |
| 76 | ||
| 77 | /* We'll use Double Click - Single click over on linux */ | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
78 | if(lparam == WM_LBUTTONDBLCLK) |
| 6209 | 79 | type = 1; |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
80 | else if(lparam == WM_MBUTTONUP) |
| 6209 | 81 | type = 2; |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
82 | else if(lparam == WM_RBUTTONUP) |
| 6209 | 83 | type = 3; |
| 84 | else | |
| 85 | break; | |
| 86 | ||
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
87 | gaim_gtk_docklet_clicked(type); |
| 6209 | 88 | break; |
| 89 | } | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
90 | default: |
| 6209 | 91 | if (msg == taskbarRestartMsg) { |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
92 | /* explorer crashed and left us hanging... |
| 6209 | 93 | This will put the systray icon back in it's place, when it restarts */ |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
94 | Shell_NotifyIcon(NIM_ADD, &wgaim_nid); |
| 6209 | 95 | } |
| 96 | break; | |
| 97 | }/* end switch */ | |
| 98 | ||
| 99 | return DefWindowProc(hwnd, msg, wparam, lparam); | |
| 100 | } | |
| 101 | ||
| 102 | /* Create hidden window to process systray messages */ | |
| 103 | static HWND systray_create_hiddenwin() { | |
| 104 | WNDCLASSEX wcex; | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
105 | LPCTSTR wname; |
| 6209 | 106 | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
107 | wname = TEXT("WingaimSystrayWinCls"); |
| 6209 | 108 | |
| 109 | ||
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
110 | wcex.cbSize = sizeof(wcex); |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
111 | wcex.style = 0; |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
112 | wcex.lpfnWndProc = systray_mainmsg_handler; |
| 6209 | 113 | wcex.cbClsExtra = 0; |
| 114 | wcex.cbWndExtra = 0; | |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
115 | wcex.hInstance = gtkwgaim_hinstance(); |
| 6209 | 116 | wcex.hIcon = NULL; |
| 117 | wcex.hCursor = NULL, | |
| 118 | wcex.hbrBackground = NULL; | |
| 119 | wcex.lpszMenuName = NULL; | |
| 120 | wcex.lpszClassName = wname; | |
| 121 | wcex.hIconSm = NULL; | |
| 122 | ||
| 123 | RegisterClassEx(&wcex); | |
| 124 | ||
|
9863
323e4fe28791
[gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents:
9709
diff
changeset
|
125 | /* Create the window */ |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
126 | return (CreateWindow(wname, "", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, gtkwgaim_hinstance(), 0)); |
| 6209 | 127 | } |
| 128 | ||
| 129 | static void systray_init_icon(HWND hWnd, HICON icon) { | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
130 | ZeroMemory(&wgaim_nid, sizeof(wgaim_nid)); |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
131 | wgaim_nid.cbSize = sizeof(NOTIFYICONDATA); |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
132 | wgaim_nid.hWnd = hWnd; |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
133 | wgaim_nid.uID = 0; |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
134 | wgaim_nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
135 | wgaim_nid.uCallbackMessage = WM_TRAYMESSAGE; |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
136 | wgaim_nid.hIcon = icon; |
|
13087
0ed686d2bd7a
[gaim-migrate @ 15448]
Daniel Atallah <datallah@pidgin.im>
parents:
12498
diff
changeset
|
137 | lstrcpy(wgaim_nid.szTip, "Gaim"); |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
138 | Shell_NotifyIcon(NIM_ADD, &wgaim_nid); |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
139 | gaim_gtk_docklet_embedded(); |
| 6209 | 140 | } |
| 141 | ||
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
142 | static void systray_change_icon(HICON icon) { |
| 6209 | 143 | wgaim_nid.hIcon = icon; |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
144 | Shell_NotifyIcon(NIM_MODIFY, &wgaim_nid); |
| 6209 | 145 | } |
| 146 | ||
| 147 | static void systray_remove_nid(void) { | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
148 | Shell_NotifyIcon(NIM_DELETE, &wgaim_nid); |
| 6209 | 149 | } |
| 150 | ||
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
151 | static void wgaim_tray_update_icon(DockletStatus icon) { |
| 6209 | 152 | switch (icon) { |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
153 | case DOCKLET_STATUS_OFFLINE: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
154 | systray_change_icon(sysicon_disconn); |
| 6209 | 155 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
156 | case DOCKLET_STATUS_CONNECTING: |
| 6209 | 157 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
158 | case DOCKLET_STATUS_ONLINE: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
159 | systray_change_icon(sysicon_conn); |
| 6209 | 160 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
161 | case DOCKLET_STATUS_ONLINE_PENDING: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
162 | systray_change_icon(sysicon_pend); |
| 6209 | 163 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
164 | case DOCKLET_STATUS_AWAY: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
165 | systray_change_icon(sysicon_away); |
| 6209 | 166 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
167 | case DOCKLET_STATUS_AWAY_PENDING: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
168 | systray_change_icon(sysicon_awypend); |
| 6209 | 169 | break; |
| 170 | } | |
| 171 | } | |
| 172 | ||
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
173 | static void wgaim_tray_blank_icon() { |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
174 | systray_change_icon(sysicon_blank); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
175 | } |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
176 | |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
177 | static void wgaim_tray_set_tooltip(gchar *tooltip) { |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
178 | if (tooltip) { |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
179 | char *locenc = NULL; |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
180 | locenc = g_locale_from_utf8(tooltip, -1, NULL, NULL, NULL); |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
181 | lstrcpyn(wgaim_nid.szTip, locenc, sizeof(wgaim_nid.szTip) / sizeof(TCHAR)); |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
182 | g_free(locenc); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
183 | } else { |
|
13087
0ed686d2bd7a
[gaim-migrate @ 15448]
Daniel Atallah <datallah@pidgin.im>
parents:
12498
diff
changeset
|
184 | lstrcpy(wgaim_nid.szTip, "Gaim"); |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
185 | } |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
186 | Shell_NotifyIcon(NIM_MODIFY, &wgaim_nid); |
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
187 | } |
|
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
188 | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
189 | static void wgaim_tray_minimize(GaimGtkBuddyList *gtkblist) { |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
190 | MinimizeWndToTray(GDK_WINDOW_HWND(gtkblist->window->window)); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
191 | } |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
192 | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
193 | static void wgaim_tray_maximize(GaimGtkBuddyList *gtkblist) { |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
194 | RestoreWndFromTray(GDK_WINDOW_HWND(gtkblist->window->window)); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
195 | } |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
196 | |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
197 | |
| 6209 | 198 | static void wgaim_tray_create() { |
|
10520
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
199 | OSVERSIONINFO osinfo; |
| 6209 | 200 | /* dummy window to process systray messages */ |
| 201 | systray_hwnd = systray_create_hiddenwin(); | |
| 202 | ||
|
10520
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
203 | osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
204 | GetVersionEx(&osinfo); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
205 | |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
206 | /* Load icons, and init systray notify icon |
|
13087
0ed686d2bd7a
[gaim-migrate @ 15448]
Daniel Atallah <datallah@pidgin.im>
parents:
12498
diff
changeset
|
207 | * NOTE: Windows < XP only supports displaying 4-bit images in the Systray, |
|
10520
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
208 | * 2K and ME will use the highest color depth that the desktop will support, |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
209 | * but will scale it back to 4-bits for display. |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
210 | * That is why we use custom 4-bit icons for pre XP Windowses */ |
|
14422
584e9d47fe35
[gaim-migrate @ 17066]
Mark Doliner <markdoliner@pidgin.im>
parents:
14421
diff
changeset
|
211 | if ((osinfo.dwMajorVersion == 5 && osinfo.dwMinorVersion > 0) || |
|
584e9d47fe35
[gaim-migrate @ 17066]
Mark Doliner <markdoliner@pidgin.im>
parents:
14421
diff
changeset
|
212 | (osinfo.dwMajorVersion >= 6)) |
|
584e9d47fe35
[gaim-migrate @ 17066]
Mark Doliner <markdoliner@pidgin.im>
parents:
14421
diff
changeset
|
213 | { |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
214 | sysicon_disconn = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_OFFLINE_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
215 | sysicon_conn = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
216 | sysicon_away = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAY_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
217 | sysicon_pend = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_PEND_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
218 | sysicon_awypend = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAYPEND_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
10520
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
219 | } else { |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
220 | sysicon_disconn = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_OFFLINE_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
221 | sysicon_conn = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
222 | sysicon_away = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAY_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
223 | sysicon_pend = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_PEND_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
224 | sysicon_awypend = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAYPEND_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
10520
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
225 | } |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
226 | sysicon_blank = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_BLANK_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
| 6209 | 227 | |
| 228 | /* Create icon in systray */ | |
| 229 | systray_init_icon(systray_hwnd, sysicon_disconn); | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
230 | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
231 | gaim_signal_connect(gaim_gtk_blist_get_handle(), "gtkblist-hiding", |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
232 | gaim_gtk_docklet_get_handle(), GAIM_CALLBACK(wgaim_tray_minimize), NULL); |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
233 | gaim_signal_connect(gaim_gtk_blist_get_handle(), "gtkblist-unhiding", |
|
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
234 | gaim_gtk_docklet_get_handle(), GAIM_CALLBACK(wgaim_tray_maximize), NULL); |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
235 | |
| 6209 | 236 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "created\n"); |
| 237 | } | |
| 238 | ||
| 239 | static void wgaim_tray_destroy() { | |
| 240 | systray_remove_nid(); | |
| 241 | DestroyWindow(systray_hwnd); | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
242 | gaim_gtk_docklet_remove(); |
| 6209 | 243 | } |
| 244 | ||
| 245 | static struct docklet_ui_ops wgaim_tray_ops = | |
| 246 | { | |
| 247 | wgaim_tray_create, | |
| 248 | wgaim_tray_destroy, | |
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
249 | wgaim_tray_update_icon, |
|
10268
862ed5d3f227
[gaim-migrate @ 11414]
Christian Hammond <chipx86@chipx86.com>
parents:
9863
diff
changeset
|
250 | wgaim_tray_blank_icon, |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
251 | wgaim_tray_set_tooltip, |
|
10268
862ed5d3f227
[gaim-migrate @ 11414]
Christian Hammond <chipx86@chipx86.com>
parents:
9863
diff
changeset
|
252 | NULL |
| 6209 | 253 | }; |
| 254 | ||
| 255 | /* Used by docklet's plugin load func */ | |
| 256 | void docklet_ui_init() { | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
257 | gaim_gtk_docklet_set_ui_ops(&wgaim_tray_ops); |
| 6209 | 258 | } |