Tue, 27 May 2003 03:38:52 +0000
[gaim-migrate @ 5937]
This is:
-AIM over OSCAR use Christian's new, kick ass
gaim_notify_email stuff for new mail notification. This
should be good, but it's kind of a pain to test. Let me
know if you have any problems
-Minor fix to the translation README
-2 minor changes to the doxygen of 2 major header files
(this means you'll have to recompile a lot of files :-) )
-If your global proxy setting is "No Proxy" and your global
proxy host is empty, but $http_proxy is set to something,
gaim used to switch your global proxy setting to "HTTP." It
no longer does this. This makes more sense to me. If you
disagree, please let me know--this is open to debate, and
what not. Also, the use of environmental proxy settings
will be changed a bit in the next day or two
| 3946 | 1 | /* |
|
5399
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
2 | * gaim - Windows Gaim systray module |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
3 | * |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
4 | * File: systray.c |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
5 | * Date: November, 2002 |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
6 | * |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
7 | * Copyright (C) 2002, Herman Bloggs <hermanator12002@yahoo.com> |
| 3946 | 8 | * |
|
5399
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
9 | * This program is free software; you can redistribute it and/or modify |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
10 | * it under the terms of the GNU General Public License as published by |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
11 | * the Free Software Foundation; either version 2 of the License, or |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
12 | * (at your option) any later version. |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
13 | * |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
14 | * This program is distributed in the hope that it will be useful, |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
17 | * GNU General Public License for more details. |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
18 | * |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
19 | * You should have received a copy of the GNU General Public License |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
20 | * along with this program; if not, write to the Free Software |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
22 | * |
| 3946 | 23 | */ |
| 24 | #include <windows.h> | |
| 25 | #include <gdk/gdkwin32.h> | |
| 26 | #include "resource.h" | |
| 27 | #include "gaim.h" | |
| 28 | #include "win32dep.h" | |
| 29 | #include "MinimizeToTray.h" | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
30 | #include "ui.h" |
|
5248
f4f944f4dbe0
[gaim-migrate @ 5620]
Mark Doliner <markdoliner@pidgin.im>
parents:
5084
diff
changeset
|
31 | #include "gtkblist.h" |
| 3946 | 32 | |
| 33 | /* | |
| 34 | * DEFINES, MACROS & DATA TYPES | |
| 35 | */ | |
| 36 | #define GAIM_SYSTRAY_HINT _("Gaim Instant Messenger") | |
| 37 | #define GAIM_SYSTRAY_DISCONN_HINT _("Gaim Instant Messenger - Signed off") | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
38 | #define GAIM_SYSTRAY_AWAY_HINT _("Gaim Instant Messenger - Away") |
| 3946 | 39 | #define WM_TRAYMESSAGE WM_USER /* User defined WM Message */ |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
40 | #define MAX_AWY_MESSAGES 50 |
| 3946 | 41 | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
42 | enum _SYSTRAY_STATE { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
43 | SYSTRAY_STATE_ONLINE, |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
44 | SYSTRAY_STATE_ONLINE_CONNECTING, |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
45 | SYSTRAY_STATE_OFFLINE, |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
46 | SYSTRAY_STATE_OFFLINE_CONNECTING, |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
47 | SYSTRAY_STATE_AWAY, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
48 | SYSTRAY_STATE_COUNT |
| 3946 | 49 | }; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
50 | typedef enum _SYSTRAY_STATE SYSTRAY_STATE; |
| 3946 | 51 | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
52 | enum _SYSTRAY_CMND { |
|
5399
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
53 | SYSTRAY_CMND_MENU_EXIT=100, |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
54 | SYSTRAY_CMND_SIGNON, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
55 | SYSTRAY_CMND_SIGNOFF, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
56 | SYSTRAY_CMND_AUTOLOGIN, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
57 | SYSTRAY_CMND_PREFS, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
58 | SYSTRAY_CMND_BACK, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
59 | SYSTRAY_CMND_SET_AWY_NEW, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
60 | SYSTRAY_CMND_SET_AWY, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
61 | SYSTRAY_CMND_SET_AWY_LAST=SYSTRAY_CMND_SET_AWY+MAX_AWY_MESSAGES |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
62 | }; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
63 | typedef enum _SYSTRAY_CMND SYSTRAY_CMND; |
| 3946 | 64 | |
| 65 | /* | |
| 66 | * LOCALS | |
| 67 | */ | |
| 68 | static HWND systray_hwnd=0; | |
| 69 | static HICON sysicon_disconn=0; | |
| 70 | static HICON sysicon_conn=0; | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
71 | static HICON sysicon_away=0; |
| 3946 | 72 | static NOTIFYICONDATA wgaim_nid; |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
73 | static SYSTRAY_STATE st_state=SYSTRAY_STATE_OFFLINE; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
74 | static HMENU systray_menu=0; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
75 | static HMENU systray_away_menu=0; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
76 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
77 | /* |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
78 | * GLOBALS |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
79 | */ |
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
80 | extern GtkWidget *imaway; |
| 3946 | 81 | |
| 82 | /* | |
| 83 | * PRIVATE CODE | |
| 84 | */ | |
| 85 | ||
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
86 | /* |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
87 | * SYSTRAY HELPERS |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
88 | ********************/ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
89 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
90 | /* Returns 1 if menu item exists, 0 if not */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
91 | static int IsMenuItem( HMENU hMenu, UINT id ) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
92 | if(0xFFFFFFFF == GetMenuState(hMenu, id, MF_BYCOMMAND)) |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
93 | return 0; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
94 | else |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
95 | return 1; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
96 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
97 | |
|
5399
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
98 | static int GetMenuItemPosition( HMENU hMenu, UINT id ) { |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
99 | int count = GetMenuItemCount(hMenu); |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
100 | int i; |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
101 | |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
102 | for(i=0;i<count;i++) { |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
103 | if(GetMenuItemID(hMenu, i)==id) |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
104 | return i; |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
105 | } |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
106 | return -1; |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
107 | } |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
108 | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
109 | /* |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
110 | * WGAIM SYSTRAY GUI |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
111 | ********************/ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
112 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
113 | static HMENU systray_create_awy_menu(void) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
114 | int item_count = SYSTRAY_CMND_SET_AWY; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
115 | struct away_message *a = NULL; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
116 | GSList *awy = away_messages; |
|
5377
621008da1987
[gaim-migrate @ 5753]
Herman Bloggs <herman@bluedigits.com>
parents:
5376
diff
changeset
|
117 | char* locenc=NULL; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
118 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
119 | /* Delete previous away submenu */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
120 | if(systray_away_menu) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
121 | DestroyMenu(systray_away_menu); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
122 | systray_away_menu = 0; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
123 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
124 | systray_away_menu = CreatePopupMenu(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
125 | while (awy && (item_count <= SYSTRAY_CMND_SET_AWY+MAX_AWY_MESSAGES)) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
126 | a = (struct away_message *)awy->data; |
|
5376
742cacf926ef
[gaim-migrate @ 5752]
Herman Bloggs <herman@bluedigits.com>
parents:
5365
diff
changeset
|
127 | locenc = g_locale_from_utf8(a->name, -1, NULL, NULL, NULL); |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
128 | AppendMenu(systray_away_menu, MF_STRING, item_count, locenc); |
|
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
129 | g_free(locenc); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
130 | awy = g_slist_next(awy); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
131 | item_count+=1; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
132 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
133 | AppendMenu(systray_away_menu, MF_SEPARATOR, 0, 0); |
|
5376
742cacf926ef
[gaim-migrate @ 5752]
Herman Bloggs <herman@bluedigits.com>
parents:
5365
diff
changeset
|
134 | locenc = g_locale_from_utf8(_("New"), -1, NULL, NULL, NULL); |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
135 | AppendMenu(systray_away_menu, MF_STRING, SYSTRAY_CMND_SET_AWY_NEW, locenc); |
|
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
136 | g_free(locenc); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
137 | return systray_away_menu; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
138 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
139 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
140 | static void systray_show_menu(int x, int y, BOOL connected) { |
|
5377
621008da1987
[gaim-migrate @ 5753]
Herman Bloggs <herman@bluedigits.com>
parents:
5376
diff
changeset
|
141 | char* locenc=NULL; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
142 | /* need to call this so that the menu disappears if clicking outside |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
143 | of the menu scope */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
144 | SetForegroundWindow(systray_hwnd); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
145 | |
|
5399
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
146 | /* in both connected and disconnected case delete away message menu */ |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
147 | if(systray_away_menu) { |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
148 | if(!DeleteMenu(systray_menu, (UINT)systray_away_menu, MF_BYCOMMAND)) |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
149 | debug_printf("Error using DeleteMenu\n"); |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
150 | } |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
151 | |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
152 | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
153 | /* Different menus depending on signed on/off state */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
154 | if(connected) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
155 | /* If signoff item dosn't exist.. create it */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
156 | if(!IsMenuItem(systray_menu, SYSTRAY_CMND_SIGNOFF)) { |
|
5399
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
157 | int pos; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
158 | DeleteMenu(systray_menu, SYSTRAY_CMND_SIGNON, MF_BYCOMMAND); |
|
5376
742cacf926ef
[gaim-migrate @ 5752]
Herman Bloggs <herman@bluedigits.com>
parents:
5365
diff
changeset
|
159 | locenc = g_locale_from_utf8(_("Signoff"), -1, NULL, NULL, NULL); |
|
5399
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
160 | pos = GetMenuItemPosition(systray_menu, SYSTRAY_CMND_MENU_EXIT) - 1; |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
161 | if(!InsertMenu(systray_menu, pos, |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
162 | MF_BYPOSITION | MF_STRING, SYSTRAY_CMND_SIGNOFF, locenc)) |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
163 | debug_printf("InsertMenu failed: %s\n", GetLastError()); |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
164 | debug_printf("Inserted Menu with ID: %d\n", SYSTRAY_CMND_SIGNOFF); |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
165 | g_free(locenc); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
166 | } |
|
5376
742cacf926ef
[gaim-migrate @ 5752]
Herman Bloggs <herman@bluedigits.com>
parents:
5365
diff
changeset
|
167 | locenc = g_locale_from_utf8(_("Set Away Message"), -1, NULL, NULL, NULL); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
168 | InsertMenu(systray_menu, SYSTRAY_CMND_PREFS, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
169 | MF_BYCOMMAND | MF_POPUP | MF_STRING, (UINT)systray_create_awy_menu(), |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
170 | locenc); |
|
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
171 | g_free(locenc); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
172 | EnableMenuItem(systray_menu, SYSTRAY_CMND_AUTOLOGIN, MF_GRAYED); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
173 | /* If away, put "I'm Back" option in menu */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
174 | if(st_state == SYSTRAY_STATE_AWAY) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
175 | if(!IsMenuItem(systray_menu, SYSTRAY_CMND_BACK)) { |
|
5376
742cacf926ef
[gaim-migrate @ 5752]
Herman Bloggs <herman@bluedigits.com>
parents:
5365
diff
changeset
|
176 | locenc = g_locale_from_utf8(_("I'm Back"), -1, NULL, NULL, NULL); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
177 | InsertMenu(systray_menu, (UINT)systray_away_menu, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
178 | MF_BYCOMMAND | MF_STRING, SYSTRAY_CMND_BACK, |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
179 | locenc); |
|
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
180 | g_free(locenc); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
181 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
182 | } else { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
183 | /* Delete I'm Back item if it exists */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
184 | DeleteMenu(systray_menu, SYSTRAY_CMND_BACK, MF_BYCOMMAND); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
185 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
186 | } else { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
187 | /* If signon item dosn't exist.. create it */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
188 | if(!IsMenuItem(systray_menu, SYSTRAY_CMND_SIGNON)) { |
|
5399
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
189 | int pos; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
190 | DeleteMenu(systray_menu, SYSTRAY_CMND_SIGNOFF, MF_BYCOMMAND); |
|
5376
742cacf926ef
[gaim-migrate @ 5752]
Herman Bloggs <herman@bluedigits.com>
parents:
5365
diff
changeset
|
191 | locenc = g_locale_from_utf8(_("Sign On"), -1, NULL, NULL, NULL); |
|
5399
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
192 | pos = GetMenuItemPosition(systray_menu, SYSTRAY_CMND_MENU_EXIT) - 1; |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
193 | if(!InsertMenu(systray_menu, pos, |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
194 | MF_BYPOSITION | MF_STRING, SYSTRAY_CMND_SIGNON, locenc)) |
|
f27120021822
[gaim-migrate @ 5775]
Herman Bloggs <herman@bluedigits.com>
parents:
5389
diff
changeset
|
195 | debug_printf("InsertMenu failed: %s\n", GetLastError()); |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
196 | g_free(locenc); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
197 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
198 | EnableMenuItem(systray_menu, SYSTRAY_CMND_AUTOLOGIN, MF_ENABLED); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
199 | EnableMenuItem(systray_menu, (UINT)systray_away_menu, MF_GRAYED); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
200 | /* Delete I'm Back item if it exists */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
201 | DeleteMenu(systray_menu, SYSTRAY_CMND_BACK, MF_BYCOMMAND); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
202 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
203 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
204 | TrackPopupMenu(systray_menu, // handle to shortcut menu |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
205 | TPM_RIGHTALIGN | TPM_BOTTOMALIGN | TPM_LEFTBUTTON, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
206 | x, // horizontal position, in screen coordinates |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
207 | y, // vertical position, in screen coordinates |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
208 | 0, // reserved, must be zero |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
209 | systray_hwnd, // handle to owner window |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
210 | NULL // ignored |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
211 | ); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
212 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
213 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
214 | /* Set nth away message from away_messages list */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
215 | static void systray_set_away(int nth) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
216 | int item_count = 0; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
217 | GSList *awy = away_messages; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
218 | struct away_message *a = NULL; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
219 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
220 | while (awy && (item_count != nth)) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
221 | awy = g_slist_next(awy); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
222 | item_count+=1; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
223 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
224 | if(awy) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
225 | a = (struct away_message *)awy->data; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
226 | do_away_message(NULL, a); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
227 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
228 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
229 | |
| 3946 | 230 | static LRESULT CALLBACK systray_mainmsg_handler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { |
|
5389
d557e64e6d8c
[gaim-migrate @ 5765]
Herman Bloggs <herman@bluedigits.com>
parents:
5377
diff
changeset
|
231 | static UINT taskbarRestartMsg; /* static here means value is kept across multiple calls to this func */ |
| 3946 | 232 | |
| 233 | switch(msg) { | |
| 234 | case WM_CREATE: | |
| 235 | debug_printf("WM_CREATE\n"); | |
|
5389
d557e64e6d8c
[gaim-migrate @ 5765]
Herman Bloggs <herman@bluedigits.com>
parents:
5377
diff
changeset
|
236 | taskbarRestartMsg = RegisterWindowMessage("TaskbarCreated"); |
| 3946 | 237 | break; |
| 238 | ||
| 239 | case WM_TIMER: | |
| 240 | debug_printf("WM_TIMER\n"); | |
| 241 | break; | |
| 242 | ||
| 243 | case WM_DESTROY: | |
| 244 | debug_printf("WM_DESTROY\n"); | |
| 245 | break; | |
| 246 | ||
| 247 | case WM_COMMAND: | |
| 248 | debug_printf("WM_COMMAND\n"); | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
249 | switch(LOWORD(wparam)) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
250 | case SYSTRAY_CMND_MENU_EXIT: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
251 | do_quit(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
252 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
253 | case SYSTRAY_CMND_SIGNON: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
254 | debug_printf("signon\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
255 | show_login(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
256 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
257 | case SYSTRAY_CMND_SIGNOFF: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
258 | debug_printf("signoff\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
259 | signoff_all(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
260 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
261 | case SYSTRAY_CMND_AUTOLOGIN: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
262 | debug_printf("autologin\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
263 | auto_login(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
264 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
265 | case SYSTRAY_CMND_PREFS: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
266 | debug_printf("Prefs\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
267 | show_prefs(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
268 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
269 | case SYSTRAY_CMND_BACK: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
270 | debug_printf("I'm back\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
271 | do_im_back(NULL, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
272 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
273 | case SYSTRAY_CMND_SET_AWY_NEW: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
274 | debug_printf("New away item\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
275 | create_away_mess(NULL, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
276 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
277 | default: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
278 | /* SYSTRAY_CMND_SET_AWY */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
279 | if((LOWORD(wparam) >= SYSTRAY_CMND_SET_AWY) && |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
280 | (LOWORD(wparam) <= (SYSTRAY_CMND_SET_AWY + MAX_AWY_MESSAGES))) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
281 | debug_printf("Set away message\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
282 | systray_set_away(LOWORD(wparam)-SYSTRAY_CMND_SET_AWY); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
283 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
284 | } |
| 3946 | 285 | break; |
| 286 | case WM_TRAYMESSAGE: | |
| 287 | { | |
| 288 | if( lparam == WM_LBUTTONDBLCLK ) { | |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
289 | /* Double Click */ |
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
290 | /* Either hide or show current window (login or buddy) */ |
|
4715
714d2fa57d79
[gaim-migrate @ 5026]
Herman Bloggs <herman@bluedigits.com>
parents:
4500
diff
changeset
|
291 | gaim_gtk_blist_docklet_toggle(); |
| 3946 | 292 | debug_printf("Systray got double click\n"); |
| 293 | } | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
294 | if( lparam == WM_RBUTTONUP ) { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
295 | /* Right Click */ |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
296 | POINT mpoint; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
297 | GetCursorPos(&mpoint); |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
298 | |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
299 | switch(st_state) { |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
300 | case SYSTRAY_STATE_OFFLINE: |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
301 | case SYSTRAY_STATE_OFFLINE_CONNECTING: |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
302 | systray_show_menu(mpoint.x, mpoint.y, 0); |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
303 | break; |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
304 | default: |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
305 | systray_show_menu(mpoint.x, mpoint.y, 1); |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
306 | } |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
307 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
308 | break; |
| 3946 | 309 | } |
|
5389
d557e64e6d8c
[gaim-migrate @ 5765]
Herman Bloggs <herman@bluedigits.com>
parents:
5377
diff
changeset
|
310 | default: |
|
d557e64e6d8c
[gaim-migrate @ 5765]
Herman Bloggs <herman@bluedigits.com>
parents:
5377
diff
changeset
|
311 | if (msg == taskbarRestartMsg) { |
|
d557e64e6d8c
[gaim-migrate @ 5765]
Herman Bloggs <herman@bluedigits.com>
parents:
5377
diff
changeset
|
312 | /* explorer crashed and left us hanging... |
|
d557e64e6d8c
[gaim-migrate @ 5765]
Herman Bloggs <herman@bluedigits.com>
parents:
5377
diff
changeset
|
313 | This will put the systray icon back in it's place, when it restarts */ |
|
d557e64e6d8c
[gaim-migrate @ 5765]
Herman Bloggs <herman@bluedigits.com>
parents:
5377
diff
changeset
|
314 | Shell_NotifyIcon(NIM_ADD,&wgaim_nid); |
|
d557e64e6d8c
[gaim-migrate @ 5765]
Herman Bloggs <herman@bluedigits.com>
parents:
5377
diff
changeset
|
315 | } |
|
d557e64e6d8c
[gaim-migrate @ 5765]
Herman Bloggs <herman@bluedigits.com>
parents:
5377
diff
changeset
|
316 | break; |
| 3946 | 317 | }/* end switch */ |
| 318 | ||
| 319 | return DefWindowProc(hwnd, msg, wparam, lparam); | |
| 320 | } | |
| 321 | ||
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
322 | /* Create hidden window to process systray messages */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
323 | static HWND systray_create_hiddenwin() { |
| 3946 | 324 | WNDCLASSEX wcex; |
| 325 | TCHAR wname[32]; | |
| 326 | ||
| 327 | strcpy(wname, "GaimWin"); | |
| 328 | ||
| 329 | wcex.cbSize = sizeof(WNDCLASSEX); | |
| 330 | ||
| 331 | wcex.style = 0; | |
| 332 | wcex.lpfnWndProc = (WNDPROC)systray_mainmsg_handler; | |
| 333 | wcex.cbClsExtra = 0; | |
| 334 | wcex.cbWndExtra = 0; | |
| 335 | wcex.hInstance = wgaim_hinstance(); | |
| 336 | wcex.hIcon = NULL; | |
| 337 | wcex.hCursor = NULL, | |
| 338 | wcex.hbrBackground = NULL; | |
| 339 | wcex.lpszMenuName = NULL; | |
| 340 | wcex.lpszClassName = wname; | |
| 341 | wcex.hIconSm = NULL; | |
| 342 | ||
| 343 | RegisterClassEx(&wcex); | |
| 344 | ||
| 345 | // Create the window | |
| 346 | return (CreateWindow(wname, "", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, wgaim_hinstance(), 0)); | |
| 347 | } | |
| 348 | ||
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
349 | static void systray_create_menu(void) { |
|
5377
621008da1987
[gaim-migrate @ 5753]
Herman Bloggs <herman@bluedigits.com>
parents:
5376
diff
changeset
|
350 | char* locenc=NULL; |
|
621008da1987
[gaim-migrate @ 5753]
Herman Bloggs <herman@bluedigits.com>
parents:
5376
diff
changeset
|
351 | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
352 | /* create popup menu */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
353 | if((systray_menu = CreatePopupMenu())) { |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
354 | if(!AppendMenu(systray_menu, MF_STRING, SYSTRAY_CMND_PREFS, |
|
5376
742cacf926ef
[gaim-migrate @ 5752]
Herman Bloggs <herman@bluedigits.com>
parents:
5365
diff
changeset
|
355 | (locenc=g_locale_from_utf8(_("Preferences"), -1, NULL, NULL, NULL)))) |
|
5084
21d2e7ec99ce
[gaim-migrate @ 5439]
Herman Bloggs <herman@bluedigits.com>
parents:
4881
diff
changeset
|
356 | debug_printf("AppendMenu error: %ld\n", GetLastError()); |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
357 | g_free(locenc); |
|
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
358 | if(!AppendMenu(systray_menu, MF_STRING, SYSTRAY_CMND_AUTOLOGIN, |
|
5376
742cacf926ef
[gaim-migrate @ 5752]
Herman Bloggs <herman@bluedigits.com>
parents:
5365
diff
changeset
|
359 | (locenc=g_locale_from_utf8(_("Auto-login"), -1, NULL, NULL, NULL)))) |
|
5084
21d2e7ec99ce
[gaim-migrate @ 5439]
Herman Bloggs <herman@bluedigits.com>
parents:
4881
diff
changeset
|
360 | debug_printf("AppendMenu error: %ld\n", GetLastError()); |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
361 | g_free(locenc); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
362 | if(!AppendMenu(systray_menu, MF_SEPARATOR, 0, 0)) |
|
5084
21d2e7ec99ce
[gaim-migrate @ 5439]
Herman Bloggs <herman@bluedigits.com>
parents:
4881
diff
changeset
|
363 | debug_printf("AppendMenu error: %ld\n", GetLastError()); |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
364 | if(!AppendMenu(systray_menu, MF_STRING, SYSTRAY_CMND_MENU_EXIT, |
|
5376
742cacf926ef
[gaim-migrate @ 5752]
Herman Bloggs <herman@bluedigits.com>
parents:
5365
diff
changeset
|
365 | (locenc=g_locale_from_utf8(_("Exit"), -1, NULL, NULL, NULL)))) |
|
5084
21d2e7ec99ce
[gaim-migrate @ 5439]
Herman Bloggs <herman@bluedigits.com>
parents:
4881
diff
changeset
|
366 | debug_printf("AppendMenu error: %ld\n", GetLastError()); |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
367 | g_free(locenc); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
368 | } else |
|
5084
21d2e7ec99ce
[gaim-migrate @ 5439]
Herman Bloggs <herman@bluedigits.com>
parents:
4881
diff
changeset
|
369 | debug_printf("CreatePopupMenu error: %ld\n", GetLastError()); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
370 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
371 | |
| 3946 | 372 | static void systray_init_icon(HWND hWnd, HICON icon) { |
|
5377
621008da1987
[gaim-migrate @ 5753]
Herman Bloggs <herman@bluedigits.com>
parents:
5376
diff
changeset
|
373 | char* locenc=NULL; |
|
621008da1987
[gaim-migrate @ 5753]
Herman Bloggs <herman@bluedigits.com>
parents:
5376
diff
changeset
|
374 | |
| 3946 | 375 | ZeroMemory(&wgaim_nid,sizeof(wgaim_nid)); |
| 376 | wgaim_nid.cbSize=sizeof(NOTIFYICONDATA); | |
| 377 | wgaim_nid.hWnd=hWnd; | |
| 378 | wgaim_nid.uID=0; | |
| 379 | wgaim_nid.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP; | |
| 380 | wgaim_nid.uCallbackMessage=WM_TRAYMESSAGE; | |
| 381 | wgaim_nid.hIcon=icon; | |
|
5376
742cacf926ef
[gaim-migrate @ 5752]
Herman Bloggs <herman@bluedigits.com>
parents:
5365
diff
changeset
|
382 | locenc=g_locale_from_utf8(GAIM_SYSTRAY_DISCONN_HINT, -1, NULL, NULL, NULL); |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
383 | strcpy(wgaim_nid.szTip, locenc); |
|
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
384 | g_free(locenc); |
| 3946 | 385 | Shell_NotifyIcon(NIM_ADD,&wgaim_nid); |
| 386 | } | |
| 387 | ||
| 388 | static void systray_change_icon(HICON icon, char* text) { | |
|
5377
621008da1987
[gaim-migrate @ 5753]
Herman Bloggs <herman@bluedigits.com>
parents:
5376
diff
changeset
|
389 | char *locenc=NULL; |
| 3946 | 390 | wgaim_nid.hIcon = icon; |
|
5376
742cacf926ef
[gaim-migrate @ 5752]
Herman Bloggs <herman@bluedigits.com>
parents:
5365
diff
changeset
|
391 | locenc = g_locale_from_utf8(text, -1, NULL, NULL, NULL); |
|
5365
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
392 | lstrcpy(wgaim_nid.szTip, locenc); |
|
9708d37a3b21
[gaim-migrate @ 5741]
Herman Bloggs <herman@bluedigits.com>
parents:
5248
diff
changeset
|
393 | g_free(locenc); |
| 3946 | 394 | Shell_NotifyIcon(NIM_MODIFY,&wgaim_nid); |
| 395 | } | |
| 396 | ||
| 397 | static void systray_remove_nid(void) { | |
| 398 | Shell_NotifyIcon(NIM_DELETE,&wgaim_nid); | |
| 399 | } | |
| 400 | ||
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
401 | static void systray_update_icon() { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
402 | switch(st_state) { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
403 | case SYSTRAY_STATE_ONLINE: |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
404 | systray_change_icon(sysicon_conn, GAIM_SYSTRAY_HINT); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
405 | break; |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
406 | case SYSTRAY_STATE_ONLINE_CONNECTING: |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
407 | case SYSTRAY_STATE_OFFLINE_CONNECTING: |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
408 | break; |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
409 | case SYSTRAY_STATE_OFFLINE: |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
410 | systray_change_icon(sysicon_disconn, GAIM_SYSTRAY_DISCONN_HINT); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
411 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
412 | case SYSTRAY_STATE_AWAY: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
413 | systray_change_icon(sysicon_away, GAIM_SYSTRAY_AWAY_HINT); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
414 | break; |
|
5084
21d2e7ec99ce
[gaim-migrate @ 5439]
Herman Bloggs <herman@bluedigits.com>
parents:
4881
diff
changeset
|
415 | case SYSTRAY_STATE_COUNT: /* not a state, here to avoid warning */ |
|
21d2e7ec99ce
[gaim-migrate @ 5439]
Herman Bloggs <herman@bluedigits.com>
parents:
4881
diff
changeset
|
416 | default: |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
417 | } |
| 3946 | 418 | } |
| 419 | ||
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
420 | static void systray_update_status() { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
421 | SYSTRAY_STATE old_state = st_state; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
422 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
423 | if(connections) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
424 | if(awaymessage) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
425 | st_state = SYSTRAY_STATE_AWAY; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
426 | } else if(connecting_count) { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
427 | st_state = SYSTRAY_STATE_ONLINE_CONNECTING; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
428 | } else { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
429 | st_state = SYSTRAY_STATE_ONLINE; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
430 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
431 | } else { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
432 | if(connecting_count) { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
433 | /* Don't rely on this state.. signoff in multi.c sends |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
434 | event_signoff before decrementing connecting_count |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
435 | for a reason unknown to me.. |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
436 | */ |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
437 | st_state = SYSTRAY_STATE_OFFLINE_CONNECTING; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
438 | } else { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
439 | st_state = SYSTRAY_STATE_OFFLINE; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
440 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
441 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
442 | if(st_state != old_state) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
443 | systray_update_icon(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
444 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
445 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
446 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
447 | /* |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
448 | * GAIM EVENT CALLBACKS |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
449 | ***********************/ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
450 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
451 | static void st_signon(struct gaim_connection *gc, void *data) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
452 | systray_update_status(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
453 | } |
| 3946 | 454 | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
455 | static void st_signoff(struct gaim_connection *gc, void *data) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
456 | systray_update_status(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
457 | } |
| 3946 | 458 | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
459 | static void st_away(struct gaim_connection *gc, void *data) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
460 | systray_update_status(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
461 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
462 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
463 | static void st_back(struct gaim_connection *gc, void *data) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
464 | systray_update_status(); |
| 3946 | 465 | } |
| 466 | ||
| 467 | /* | |
| 468 | * PUBLIC CODE | |
| 469 | */ | |
| 470 | ||
| 471 | /* Create a hidden window and associate it with the systray icon. | |
| 472 | We use this hidden window to proccess WM_TRAYMESSAGE msgs. */ | |
| 473 | void wgaim_systray_init(void) { | |
|
4715
714d2fa57d79
[gaim-migrate @ 5026]
Herman Bloggs <herman@bluedigits.com>
parents:
4500
diff
changeset
|
474 | gaim_gtk_blist_docklet_add(); |
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
475 | |
| 3946 | 476 | /* dummy window to process systray messages */ |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
477 | systray_hwnd = systray_create_hiddenwin(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
478 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
479 | systray_create_menu(); |
| 3946 | 480 | |
| 481 | /* Load icons, and init systray notify icon */ | |
|
4101
a27b5966a1ac
[gaim-migrate @ 4316]
Herman Bloggs <herman@bluedigits.com>
parents:
4087
diff
changeset
|
482 | sysicon_disconn = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_OFFLINE_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
a27b5966a1ac
[gaim-migrate @ 4316]
Herman Bloggs <herman@bluedigits.com>
parents:
4087
diff
changeset
|
483 | sysicon_conn = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
|
a27b5966a1ac
[gaim-migrate @ 4316]
Herman Bloggs <herman@bluedigits.com>
parents:
4087
diff
changeset
|
484 | sysicon_away = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAY_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
| 3946 | 485 | |
| 486 | /* Create icon in systray */ | |
| 487 | systray_init_icon(systray_hwnd, sysicon_disconn); | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
488 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
489 | /* Register Gaim event callbacks */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
490 | gaim_signal_connect(NULL, event_signon, st_signon, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
491 | gaim_signal_connect(NULL, event_signoff, st_signoff, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
492 | gaim_signal_connect(NULL, event_away, st_away, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
493 | gaim_signal_connect(NULL, event_back, st_back, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
494 | /*gaim_signal_connect(NULL, event_connecting, wgaim_st_connecting, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
495 | gaim_signal_connect(NULL, event_im_displayed_rcvd, wgaim_st_im_displayed_recv, NULL);*/ |
| 3946 | 496 | } |
| 497 | ||
| 498 | void wgaim_systray_cleanup(void) { | |
|
4728
048393024194
[gaim-migrate @ 5041]
Herman Bloggs <herman@bluedigits.com>
parents:
4715
diff
changeset
|
499 | /*gaim_gtk_blist_docklet_remove();*/ |
| 3946 | 500 | systray_remove_nid(); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
501 | DestroyMenu(systray_menu); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
502 | DestroyWindow(systray_hwnd); |
| 3946 | 503 | } |
| 504 | ||
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
505 | void wgaim_systray_minimize( GtkWidget *window ) { |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
506 | MinimizeWndToTray(GDK_WINDOW_HWND(window->window)); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
507 | } |
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
508 | |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
509 | void wgaim_systray_maximize( GtkWidget *window ) { |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
510 | RestoreWndFromTray(GDK_WINDOW_HWND(window->window)); |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
511 | } |