Thu, 22 Feb 2007 20:01:17 +0000
remove old tray icon stock items
|
6278
d0cd8645bf90
[gaim-migrate @ 6777]
Herman Bloggs <herman@bluedigits.com>
parents:
6261
diff
changeset
|
1 | /* |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
2 | * System tray icon (aka docklet) plugin for Winpidgin |
| 6209 | 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> | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
8 | * |
| 6209 | 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. | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
18 | * |
| 6209 | 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; |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
53 | static NOTIFYICONDATA _nicon_data; |
| 6209 | 54 | |
| 55 | static LRESULT CALLBACK systray_mainmsg_handler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { | |
| 56 | static UINT taskbarRestartMsg; /* static here means value is kept across multiple calls to this func */ | |
| 57 | ||
| 58 | switch(msg) { | |
| 59 | case WM_CREATE: | |
|
14813
c24dda7fb69e
[gaim-migrate @ 17508]
Casey Harkins <charkins@pidgin.im>
parents:
14745
diff
changeset
|
60 | gaim_debug(GAIM_DEBUG_INFO, "docklet", "WM_CREATE\n"); |
| 6209 | 61 | taskbarRestartMsg = RegisterWindowMessage("TaskbarCreated"); |
| 62 | break; | |
| 63 | ||
| 64 | case WM_TIMER: | |
|
14813
c24dda7fb69e
[gaim-migrate @ 17508]
Casey Harkins <charkins@pidgin.im>
parents:
14745
diff
changeset
|
65 | gaim_debug(GAIM_DEBUG_INFO, "docklet", "WM_TIMER\n"); |
| 6209 | 66 | break; |
| 67 | ||
| 68 | case WM_DESTROY: | |
|
14813
c24dda7fb69e
[gaim-migrate @ 17508]
Casey Harkins <charkins@pidgin.im>
parents:
14745
diff
changeset
|
69 | gaim_debug(GAIM_DEBUG_INFO, "docklet", "WM_DESTROY\n"); |
| 6209 | 70 | break; |
| 71 | ||
| 72 | case WM_TRAYMESSAGE: | |
| 73 | { | |
| 74 | int type = 0; | |
| 75 | ||
| 76 | /* We'll use Double Click - Single click over on linux */ | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
77 | if(lparam == WM_LBUTTONDBLCLK) |
| 6209 | 78 | type = 1; |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
79 | else if(lparam == WM_MBUTTONUP) |
| 6209 | 80 | type = 2; |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
81 | else if(lparam == WM_RBUTTONUP) |
| 6209 | 82 | type = 3; |
| 83 | else | |
| 84 | break; | |
| 85 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15522
diff
changeset
|
86 | pidgin_docklet_clicked(type); |
| 6209 | 87 | break; |
| 88 | } | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
89 | default: |
| 6209 | 90 | if (msg == taskbarRestartMsg) { |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
91 | /* explorer crashed and left us hanging... |
| 6209 | 92 | This will put the systray icon back in it's place, when it restarts */ |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
93 | Shell_NotifyIcon(NIM_ADD, &_nicon_data); |
| 6209 | 94 | } |
| 95 | break; | |
| 96 | }/* end switch */ | |
| 97 | ||
| 98 | return DefWindowProc(hwnd, msg, wparam, lparam); | |
| 99 | } | |
| 100 | ||
| 101 | /* Create hidden window to process systray messages */ | |
| 102 | static HWND systray_create_hiddenwin() { | |
| 103 | WNDCLASSEX wcex; | |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
104 | LPCTSTR wname; |
| 6209 | 105 | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
106 | wname = TEXT("WinpidginSystrayWinCls"); |
| 6209 | 107 | |
| 108 | ||
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
109 | wcex.cbSize = sizeof(wcex); |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
110 | wcex.style = 0; |
|
14745
d43256e1e6fd
[gaim-migrate @ 17435]
Daniel Atallah <datallah@pidgin.im>
parents:
14743
diff
changeset
|
111 | wcex.lpfnWndProc = systray_mainmsg_handler; |
| 6209 | 112 | wcex.cbClsExtra = 0; |
| 113 | wcex.cbWndExtra = 0; | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
114 | wcex.hInstance = winpidgin_hinstance(); |
| 6209 | 115 | wcex.hIcon = NULL; |
| 116 | wcex.hCursor = NULL, | |
| 117 | wcex.hbrBackground = NULL; | |
| 118 | wcex.lpszMenuName = NULL; | |
| 119 | wcex.lpszClassName = wname; | |
| 120 | wcex.hIconSm = NULL; | |
| 121 | ||
| 122 | RegisterClassEx(&wcex); | |
| 123 | ||
|
9863
323e4fe28791
[gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents:
9709
diff
changeset
|
124 | /* Create the window */ |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
125 | return (CreateWindow(wname, "", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, winpidgin_hinstance(), 0)); |
| 6209 | 126 | } |
| 127 | ||
| 128 | static void systray_init_icon(HWND hWnd, HICON icon) { | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
129 | ZeroMemory(&_nicon_data, sizeof(_nicon_data)); |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
130 | _nicon_data.cbSize = sizeof(NOTIFYICONDATA); |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
131 | _nicon_data.hWnd = hWnd; |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
132 | _nicon_data.uID = 0; |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
133 | _nicon_data.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
134 | _nicon_data.uCallbackMessage = WM_TRAYMESSAGE; |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
135 | _nicon_data.hIcon = icon; |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
136 | lstrcpy(_nicon_data.szTip, PIDGIN_NAME); |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
137 | Shell_NotifyIcon(NIM_ADD, &_nicon_data); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15522
diff
changeset
|
138 | pidgin_docklet_embedded(); |
| 6209 | 139 | } |
| 140 | ||
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
141 | static void systray_change_icon(HICON icon) { |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
142 | _nicon_data.hIcon = icon; |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
143 | Shell_NotifyIcon(NIM_MODIFY, &_nicon_data); |
| 6209 | 144 | } |
| 145 | ||
| 146 | static void systray_remove_nid(void) { | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
147 | Shell_NotifyIcon(NIM_DELETE, &_nicon_data); |
| 6209 | 148 | } |
| 149 | ||
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
150 | static void winpidgin_tray_update_icon(DockletStatus icon) { |
| 6209 | 151 | switch (icon) { |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
152 | case DOCKLET_STATUS_OFFLINE: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
153 | systray_change_icon(sysicon_disconn); |
| 6209 | 154 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
155 | case DOCKLET_STATUS_CONNECTING: |
| 6209 | 156 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
157 | case DOCKLET_STATUS_ONLINE: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
158 | systray_change_icon(sysicon_conn); |
| 6209 | 159 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
160 | case DOCKLET_STATUS_ONLINE_PENDING: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
161 | systray_change_icon(sysicon_pend); |
| 6209 | 162 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
163 | case DOCKLET_STATUS_AWAY: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
164 | systray_change_icon(sysicon_away); |
| 6209 | 165 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
166 | case DOCKLET_STATUS_AWAY_PENDING: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
167 | systray_change_icon(sysicon_awypend); |
| 6209 | 168 | break; |
| 169 | } | |
| 170 | } | |
| 171 | ||
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
172 | static void winpidgin_tray_blank_icon() { |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
173 | systray_change_icon(sysicon_blank); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
174 | } |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
175 | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
176 | static void winpidgin_tray_set_tooltip(gchar *tooltip) { |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
177 | if (tooltip) { |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
178 | char *locenc = NULL; |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
179 | locenc = g_locale_from_utf8(tooltip, -1, NULL, NULL, NULL); |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
180 | lstrcpyn(_nicon_data.szTip, locenc, sizeof(_nicon_data.szTip) / sizeof(TCHAR)); |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
181 | g_free(locenc); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
182 | } else { |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
183 | lstrcpy(_nicon_data.szTip, PIDGIN_NAME); |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
184 | } |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
185 | Shell_NotifyIcon(NIM_MODIFY, &_nicon_data); |
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
186 | } |
|
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
187 | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
188 | static void winpidgin_tray_minimize(PidginBuddyList *gtkblist) { |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
189 | MinimizeWndToTray(GDK_WINDOW_HWND(gtkblist->window->window)); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
190 | } |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
191 | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
192 | static void winpidgin_tray_maximize(PidginBuddyList *gtkblist) { |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
193 | RestoreWndFromTray(GDK_WINDOW_HWND(gtkblist->window->window)); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
194 | } |
|
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 | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
197 | static void winpidgin_tray_create() { |
|
10520
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
198 | OSVERSIONINFO osinfo; |
| 6209 | 199 | /* dummy window to process systray messages */ |
| 200 | systray_hwnd = systray_create_hiddenwin(); | |
| 201 | ||
|
10520
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
202 | osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
203 | GetVersionEx(&osinfo); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
204 | |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
205 | /* Load icons, and init systray notify icon |
|
13087
0ed686d2bd7a
[gaim-migrate @ 15448]
Daniel Atallah <datallah@pidgin.im>
parents:
12498
diff
changeset
|
206 | * 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
|
207 | * 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
|
208 | * but will scale it back to 4-bits for display. |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
209 | * 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
|
210 | if ((osinfo.dwMajorVersion == 5 && osinfo.dwMinorVersion > 0) || |
|
584e9d47fe35
[gaim-migrate @ 17066]
Mark Doliner <markdoliner@pidgin.im>
parents:
14421
diff
changeset
|
211 | (osinfo.dwMajorVersion >= 6)) |
|
584e9d47fe35
[gaim-migrate @ 17066]
Mark Doliner <markdoliner@pidgin.im>
parents:
14421
diff
changeset
|
212 | { |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
213 | sysicon_disconn = (HICON)LoadImage(winpidgin_hinstance(), MAKEINTRESOURCE(GAIM_OFFLINE_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
214 | sysicon_conn = (HICON)LoadImage(winpidgin_hinstance(), MAKEINTRESOURCE(GAIM_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
215 | sysicon_away = (HICON)LoadImage(winpidgin_hinstance(), MAKEINTRESOURCE(GAIM_AWAY_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
216 | sysicon_pend = (HICON)LoadImage(winpidgin_hinstance(), MAKEINTRESOURCE(GAIM_PEND_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
217 | sysicon_awypend = (HICON)LoadImage(winpidgin_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
|
218 | } else { |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
219 | sysicon_disconn = (HICON)LoadImage(winpidgin_hinstance(), MAKEINTRESOURCE(GAIM_OFFLINE_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
220 | sysicon_conn = (HICON)LoadImage(winpidgin_hinstance(), MAKEINTRESOURCE(GAIM_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
221 | sysicon_away = (HICON)LoadImage(winpidgin_hinstance(), MAKEINTRESOURCE(GAIM_AWAY_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
222 | sysicon_pend = (HICON)LoadImage(winpidgin_hinstance(), MAKEINTRESOURCE(GAIM_PEND_TRAY_ICON_4BIT), IMAGE_ICON, 16, 16, 0); |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
223 | sysicon_awypend = (HICON)LoadImage(winpidgin_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
|
224 | } |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
225 | sysicon_blank = (HICON)LoadImage(winpidgin_hinstance(), MAKEINTRESOURCE(GAIM_BLANK_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
| 6209 | 226 | |
| 227 | /* Create icon in systray */ | |
| 228 | systray_init_icon(systray_hwnd, sysicon_disconn); | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
229 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15522
diff
changeset
|
230 | gaim_signal_connect(pidgin_blist_get_handle(), "gtkblist-hiding", |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
231 | pidgin_docklet_get_handle(), GAIM_CALLBACK(winpidgin_tray_minimize), NULL); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15522
diff
changeset
|
232 | gaim_signal_connect(pidgin_blist_get_handle(), "gtkblist-unhiding", |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
233 | pidgin_docklet_get_handle(), GAIM_CALLBACK(winpidgin_tray_maximize), NULL); |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
234 | |
|
14813
c24dda7fb69e
[gaim-migrate @ 17508]
Casey Harkins <charkins@pidgin.im>
parents:
14745
diff
changeset
|
235 | gaim_debug(GAIM_DEBUG_INFO, "docklet", "created\n"); |
| 6209 | 236 | } |
| 237 | ||
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
238 | static void winpidgin_tray_destroy() { |
| 6209 | 239 | systray_remove_nid(); |
| 240 | DestroyWindow(systray_hwnd); | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15522
diff
changeset
|
241 | pidgin_docklet_remove(); |
| 6209 | 242 | } |
| 243 | ||
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
244 | static struct docklet_ui_ops winpidgin_tray_ops = |
| 6209 | 245 | { |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
246 | winpidgin_tray_create, |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
247 | winpidgin_tray_destroy, |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
248 | winpidgin_tray_update_icon, |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
249 | winpidgin_tray_blank_icon, |
|
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
250 | winpidgin_tray_set_tooltip, |
|
10268
862ed5d3f227
[gaim-migrate @ 11414]
Christian Hammond <chipx86@chipx86.com>
parents:
9863
diff
changeset
|
251 | NULL |
| 6209 | 252 | }; |
| 253 | ||
| 254 | /* Used by docklet's plugin load func */ | |
| 255 | void docklet_ui_init() { | |
|
15574
18d9d1c05994
Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents:
15562
diff
changeset
|
256 | pidgin_docklet_set_ui_ops(&winpidgin_tray_ops); |
| 6209 | 257 | } |