Sun, 20 Aug 2006 16:49:37 +0000
[gaim-migrate @ 16905]
First step of getting wingaim working again.
libgaim and gtk are compiling.
The protocols aren't compiling yet.
There are a number of things that are compiling, but should be cleaned up.
|
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 "gtkprefs.h" | |
| 32 | #include "debug.h" | |
| 33 | ||
| 34 | #include "gaim.h" | |
|
9709
2e73f176cc80
[gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents:
6894
diff
changeset
|
35 | #include "gtkdialogs.h" |
| 6209 | 36 | |
| 37 | #include "resource.h" | |
| 38 | #include "MinimizeToTray.h" | |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
39 | #include "gtkwin32dep.h" |
| 6209 | 40 | #include "docklet.h" |
| 41 | ||
| 42 | /* | |
| 43 | * DEFINES, MACROS & DATA TYPES | |
| 44 | */ | |
| 45 | #define WM_TRAYMESSAGE WM_USER /* User defined WM Message */ | |
| 46 | ||
| 47 | /* | |
| 48 | * LOCALS | |
| 49 | */ | |
| 50 | static HWND systray_hwnd=0; | |
| 51 | static HICON sysicon_disconn=0; | |
| 52 | static HICON sysicon_conn=0; | |
| 53 | static HICON sysicon_away=0; | |
| 54 | static HICON sysicon_pend=0; | |
| 55 | static HICON sysicon_awypend=0; | |
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
56 | static HICON sysicon_blank=0; |
| 6209 | 57 | static NOTIFYICONDATA wgaim_nid; |
| 58 | ||
| 59 | ||
| 60 | static LRESULT CALLBACK systray_mainmsg_handler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { | |
| 61 | static UINT taskbarRestartMsg; /* static here means value is kept across multiple calls to this func */ | |
| 62 | ||
| 63 | switch(msg) { | |
| 64 | case WM_CREATE: | |
|
6425
3e86c949c98a
[gaim-migrate @ 6933]
Herman Bloggs <herman@bluedigits.com>
parents:
6278
diff
changeset
|
65 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "WM_CREATE\n"); |
| 6209 | 66 | taskbarRestartMsg = RegisterWindowMessage("TaskbarCreated"); |
| 67 | break; | |
| 68 | ||
| 69 | case WM_TIMER: | |
|
6425
3e86c949c98a
[gaim-migrate @ 6933]
Herman Bloggs <herman@bluedigits.com>
parents:
6278
diff
changeset
|
70 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "WM_TIMER\n"); |
| 6209 | 71 | break; |
| 72 | ||
| 73 | case WM_DESTROY: | |
|
6425
3e86c949c98a
[gaim-migrate @ 6933]
Herman Bloggs <herman@bluedigits.com>
parents:
6278
diff
changeset
|
74 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "WM_DESTROY\n"); |
| 6209 | 75 | break; |
| 76 | ||
| 77 | case WM_TRAYMESSAGE: | |
| 78 | { | |
| 79 | int type = 0; | |
| 80 | ||
| 81 | /* We'll use Double Click - Single click over on linux */ | |
| 82 | if( lparam == WM_LBUTTONDBLCLK ) | |
| 83 | type = 1; | |
| 84 | else if( lparam == WM_MBUTTONUP ) | |
| 85 | type = 2; | |
| 86 | else if( lparam == WM_RBUTTONUP ) | |
| 87 | type = 3; | |
| 88 | else | |
| 89 | break; | |
| 90 | ||
| 91 | docklet_clicked(type); | |
| 92 | break; | |
| 93 | } | |
| 94 | default: | |
| 95 | if (msg == taskbarRestartMsg) { | |
| 96 | /* explorer crashed and left us hanging... | |
| 97 | This will put the systray icon back in it's place, when it restarts */ | |
| 98 | Shell_NotifyIcon(NIM_ADD,&wgaim_nid); | |
| 99 | } | |
| 100 | break; | |
| 101 | }/* end switch */ | |
| 102 | ||
| 103 | return DefWindowProc(hwnd, msg, wparam, lparam); | |
| 104 | } | |
| 105 | ||
| 106 | /* Create hidden window to process systray messages */ | |
| 107 | static HWND systray_create_hiddenwin() { | |
| 108 | WNDCLASSEX wcex; | |
| 109 | TCHAR wname[32]; | |
| 110 | ||
| 111 | strcpy(wname, "GaimWin"); | |
| 112 | ||
| 113 | wcex.cbSize = sizeof(WNDCLASSEX); | |
| 114 | ||
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
115 | wcex.style = 0; |
| 6209 | 116 | wcex.lpfnWndProc = (WNDPROC)systray_mainmsg_handler; |
| 117 | wcex.cbClsExtra = 0; | |
| 118 | wcex.cbWndExtra = 0; | |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
119 | wcex.hInstance = gtkwgaim_hinstance(); |
| 6209 | 120 | wcex.hIcon = NULL; |
| 121 | wcex.hCursor = NULL, | |
| 122 | wcex.hbrBackground = NULL; | |
| 123 | wcex.lpszMenuName = NULL; | |
| 124 | wcex.lpszClassName = wname; | |
| 125 | wcex.hIconSm = NULL; | |
| 126 | ||
| 127 | RegisterClassEx(&wcex); | |
| 128 | ||
|
9863
323e4fe28791
[gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents:
9709
diff
changeset
|
129 | /* Create the window */ |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
130 | return (CreateWindow(wname, "", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, gtkwgaim_hinstance(), 0)); |
| 6209 | 131 | } |
| 132 | ||
| 133 | static void systray_init_icon(HWND hWnd, HICON icon) { | |
| 134 | ZeroMemory(&wgaim_nid,sizeof(wgaim_nid)); | |
| 135 | wgaim_nid.cbSize=sizeof(NOTIFYICONDATA); | |
| 136 | wgaim_nid.hWnd=hWnd; | |
| 137 | wgaim_nid.uID=0; | |
| 138 | wgaim_nid.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP; | |
| 139 | wgaim_nid.uCallbackMessage=WM_TRAYMESSAGE; | |
| 140 | wgaim_nid.hIcon=icon; | |
|
13087
0ed686d2bd7a
[gaim-migrate @ 15448]
Daniel Atallah <datallah@pidgin.im>
parents:
12498
diff
changeset
|
141 | lstrcpy(wgaim_nid.szTip, "Gaim"); |
| 6209 | 142 | Shell_NotifyIcon(NIM_ADD,&wgaim_nid); |
| 143 | docklet_embedded(); | |
| 144 | } | |
| 145 | ||
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
146 | static void systray_change_icon(HICON icon) { |
| 6209 | 147 | wgaim_nid.hIcon = icon; |
| 148 | Shell_NotifyIcon(NIM_MODIFY,&wgaim_nid); | |
| 149 | } | |
| 150 | ||
| 151 | static void systray_remove_nid(void) { | |
| 152 | Shell_NotifyIcon(NIM_DELETE,&wgaim_nid); | |
| 153 | } | |
| 154 | ||
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
155 | static void wgaim_tray_update_icon(DockletStatus icon) { |
| 6209 | 156 | switch (icon) { |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
157 | case DOCKLET_STATUS_OFFLINE: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
158 | systray_change_icon(sysicon_disconn); |
| 6209 | 159 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
160 | case DOCKLET_STATUS_CONNECTING: |
| 6209 | 161 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
162 | case DOCKLET_STATUS_ONLINE: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
163 | systray_change_icon(sysicon_conn); |
| 6209 | 164 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
165 | case DOCKLET_STATUS_ONLINE_PENDING: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
166 | systray_change_icon(sysicon_pend); |
| 6209 | 167 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
168 | case DOCKLET_STATUS_AWAY: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
169 | systray_change_icon(sysicon_away); |
| 6209 | 170 | break; |
|
11709
da6e9cd5f6d9
[gaim-migrate @ 14000]
Casey Harkins <charkins@pidgin.im>
parents:
10520
diff
changeset
|
171 | case DOCKLET_STATUS_AWAY_PENDING: |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
172 | systray_change_icon(sysicon_awypend); |
| 6209 | 173 | break; |
| 174 | } | |
| 175 | } | |
| 176 | ||
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
177 | static void wgaim_tray_blank_icon() { |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
178 | systray_change_icon(sysicon_blank); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
179 | } |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
180 | |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
181 | static void wgaim_tray_set_tooltip(gchar *tooltip) { |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
182 | if (tooltip) { |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
183 | char *locenc = NULL; |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
184 | locenc = g_locale_from_utf8(tooltip, -1, NULL, NULL, NULL); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
185 | lstrcpyn(wgaim_nid.szTip, locenc, sizeof(wgaim_nid.szTip)/sizeof(TCHAR)); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
186 | g_free(locenc); |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
187 | } else { |
|
13087
0ed686d2bd7a
[gaim-migrate @ 15448]
Daniel Atallah <datallah@pidgin.im>
parents:
12498
diff
changeset
|
188 | lstrcpy(wgaim_nid.szTip, "Gaim"); |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
189 | } |
|
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
190 | Shell_NotifyIcon(NIM_MODIFY, &wgaim_nid); |
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
191 | } |
|
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
192 | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
193 | void wgaim_tray_minimize(GaimGtkBuddyList *gtkblist) { |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
194 | MinimizeWndToTray(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 | void wgaim_tray_maximize(GaimGtkBuddyList *gtkblist) { |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
198 | RestoreWndFromTray(GDK_WINDOW_HWND(gtkblist->window->window)); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
199 | } |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
200 | |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
201 | |
| 6209 | 202 | static void wgaim_tray_create() { |
|
10520
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
203 | OSVERSIONINFO osinfo; |
| 6209 | 204 | /* dummy window to process systray messages */ |
| 205 | systray_hwnd = systray_create_hiddenwin(); | |
| 206 | ||
|
10520
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
207 | osinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
208 | GetVersionEx(&osinfo); |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
209 | |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
210 | /* Load icons, and init systray notify icon |
|
13087
0ed686d2bd7a
[gaim-migrate @ 15448]
Daniel Atallah <datallah@pidgin.im>
parents:
12498
diff
changeset
|
211 | * 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
|
212 | * 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
|
213 | * but will scale it back to 4-bits for display. |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
214 | * That is why we use custom 4-bit icons for pre XP Windowses */ |
|
c0fdc3638fab
[gaim-migrate @ 11835]
Daniel Atallah <datallah@pidgin.im>
parents:
10268
diff
changeset
|
215 | if (osinfo.dwMajorVersion == 5 && osinfo.dwMinorVersion > 0) { |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
216 | 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
|
217 | 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
|
218 | 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
|
219 | 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
|
220 | 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
|
221 | } else { |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
222 | 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
|
223 | 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
|
224 | 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
|
225 | 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
|
226 | 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
|
227 | } |
|
14286
9ff15ceacd34
[gaim-migrate @ 16905]
Daniel Atallah <datallah@pidgin.im>
parents:
14253
diff
changeset
|
228 | sysicon_blank = (HICON)LoadImage(gtkwgaim_hinstance(), MAKEINTRESOURCE(GAIM_BLANK_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
| 6209 | 229 | |
| 230 | /* Create icon in systray */ | |
| 231 | systray_init_icon(systray_hwnd, sysicon_disconn); | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
232 | |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
233 | gaim_signal_connect(gaim_gtk_blist_get_handle(), "gtkblist-hiding", |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
234 | &handle, GAIM_CALLBACK(wgaim_tray_minimize), NULL); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
235 | gaim_signal_connect(gaim_gtk_blist_get_handle(), "gtkblist-unhiding", |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
236 | &handle, GAIM_CALLBACK(wgaim_tray_maximize), NULL); |
|
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
237 | |
| 6209 | 238 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "created\n"); |
| 239 | } | |
| 240 | ||
| 241 | static void wgaim_tray_destroy() { | |
|
12016
0517ad5d0196
[gaim-migrate @ 14309]
Casey Harkins <charkins@pidgin.im>
parents:
11709
diff
changeset
|
242 | gaim_signals_disconnect_by_handle(&handle); |
| 6209 | 243 | systray_remove_nid(); |
| 244 | DestroyWindow(systray_hwnd); | |
|
12498
93591c1f68f1
[gaim-migrate @ 14810]
Casey Harkins <charkins@pidgin.im>
parents:
12471
diff
changeset
|
245 | docklet_remove(); |
| 6209 | 246 | } |
| 247 | ||
| 248 | static struct docklet_ui_ops wgaim_tray_ops = | |
| 249 | { | |
| 250 | wgaim_tray_create, | |
| 251 | wgaim_tray_destroy, | |
|
6894
8c6e286b079d
[gaim-migrate @ 7441]
Herman Bloggs <herman@bluedigits.com>
parents:
6425
diff
changeset
|
252 | wgaim_tray_update_icon, |
|
10268
862ed5d3f227
[gaim-migrate @ 11414]
Christian Hammond <chipx86@chipx86.com>
parents:
9863
diff
changeset
|
253 | wgaim_tray_blank_icon, |
|
12471
5d7c12d525ed
[gaim-migrate @ 14781]
Casey Harkins <charkins@pidgin.im>
parents:
12016
diff
changeset
|
254 | wgaim_tray_set_tooltip, |
|
10268
862ed5d3f227
[gaim-migrate @ 11414]
Christian Hammond <chipx86@chipx86.com>
parents:
9863
diff
changeset
|
255 | NULL |
| 6209 | 256 | }; |
| 257 | ||
| 258 | /* Used by docklet's plugin load func */ | |
| 259 | void docklet_ui_init() { | |
| 260 | docklet_set_ui_ops(&wgaim_tray_ops); | |
| 261 | } |