Sat, 01 Feb 2003 02:54:55 +0000
[gaim-migrate @ 4775]
Fix for 'no menu' problem after failed connect
| 3946 | 1 | /* |
| 2 | * systray.c | |
| 3 | * | |
| 4 | * Author: Herman Bloggs <hermanator12002@yahoo.com> | |
| 5 | * Date: November, 2002 | |
| 6 | * Description: Gaim systray functionality | |
| 7 | */ | |
| 8 | #include <windows.h> | |
| 9 | #include <gdk/gdkwin32.h> | |
| 10 | #include "resource.h" | |
| 11 | #include "gaim.h" | |
| 12 | #include "win32dep.h" | |
| 13 | #include "MinimizeToTray.h" | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
14 | #include "ui.h" |
| 3946 | 15 | |
| 16 | /* | |
| 17 | * DEFINES, MACROS & DATA TYPES | |
| 18 | */ | |
| 19 | #define GAIM_SYSTRAY_HINT _("Gaim Instant Messenger") | |
| 20 | #define GAIM_SYSTRAY_DISCONN_HINT _("Gaim Instant Messenger - Signed off") | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
21 | #define GAIM_SYSTRAY_AWAY_HINT _("Gaim Instant Messenger - Away") |
| 3946 | 22 | #define WM_TRAYMESSAGE WM_USER /* User defined WM Message */ |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
23 | #define MAX_AWY_MESSAGES 50 |
| 3946 | 24 | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
25 | enum _SYSTRAY_STATE { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
26 | SYSTRAY_STATE_ONLINE, |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
27 | SYSTRAY_STATE_ONLINE_CONNECTING, |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
28 | SYSTRAY_STATE_OFFLINE, |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
29 | SYSTRAY_STATE_OFFLINE_CONNECTING, |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
30 | SYSTRAY_STATE_AWAY, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
31 | SYSTRAY_STATE_COUNT |
| 3946 | 32 | }; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
33 | typedef enum _SYSTRAY_STATE SYSTRAY_STATE; |
| 3946 | 34 | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
35 | enum _SYSTRAY_CMND { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
36 | SYSTRAY_CMND_MENU_EXIT, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
37 | SYSTRAY_CMND_SIGNON, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
38 | SYSTRAY_CMND_SIGNOFF, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
39 | SYSTRAY_CMND_AUTOLOGIN, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
40 | SYSTRAY_CMND_PREFS, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
41 | SYSTRAY_CMND_BACK, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
42 | SYSTRAY_CMND_SET_AWY_NEW, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
43 | SYSTRAY_CMND_SET_AWY, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
44 | 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
|
45 | }; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
46 | typedef enum _SYSTRAY_CMND SYSTRAY_CMND; |
| 3946 | 47 | |
| 48 | /* | |
| 49 | * LOCALS | |
| 50 | */ | |
| 51 | static HWND systray_hwnd=0; | |
| 52 | static HICON sysicon_disconn=0; | |
| 53 | static HICON sysicon_conn=0; | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
54 | static HICON sysicon_away=0; |
| 3946 | 55 | static NOTIFYICONDATA wgaim_nid; |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
56 | static SYSTRAY_STATE st_state=SYSTRAY_STATE_OFFLINE; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
57 | static HMENU systray_menu=0; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
58 | static HMENU systray_away_menu=0; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
59 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
60 | /* |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
61 | * GLOBALS |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
62 | */ |
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
63 | extern GtkWidget *imaway; |
| 3946 | 64 | |
| 65 | /* | |
| 66 | * PRIVATE CODE | |
| 67 | */ | |
| 68 | ||
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
69 | /* |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
70 | * SYSTRAY HELPERS |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
71 | ********************/ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
72 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
73 | /* Returns 1 if menu item exists, 0 if not */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
74 | static int IsMenuItem( HMENU hMenu, UINT id ) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
75 | if(0xFFFFFFFF == GetMenuState(hMenu, id, MF_BYCOMMAND)) |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
76 | return 0; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
77 | else |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
78 | return 1; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
79 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
80 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
81 | /* |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
82 | * WGAIM SYSTRAY GUI |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
83 | ********************/ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
84 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
85 | static HMENU systray_create_awy_menu(void) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
86 | int item_count = SYSTRAY_CMND_SET_AWY; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
87 | struct away_message *a = NULL; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
88 | GSList *awy = away_messages; |
|
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 | /* Delete previous away submenu */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
91 | if(systray_away_menu) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
92 | DestroyMenu(systray_away_menu); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
93 | systray_away_menu = 0; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
94 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
95 | systray_away_menu = CreatePopupMenu(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
96 | while (awy && (item_count <= SYSTRAY_CMND_SET_AWY+MAX_AWY_MESSAGES)) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
97 | a = (struct away_message *)awy->data; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
98 | AppendMenu(systray_away_menu, MF_STRING, item_count, a->name); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
99 | awy = g_slist_next(awy); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
100 | item_count+=1; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
101 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
102 | AppendMenu(systray_away_menu, MF_SEPARATOR, 0, 0); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
103 | AppendMenu(systray_away_menu, MF_STRING, SYSTRAY_CMND_SET_AWY_NEW, _("New")); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
104 | return systray_away_menu; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
105 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
106 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
107 | static void systray_show_menu(int x, int y, BOOL connected) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
108 | /* 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
|
109 | of the menu scope */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
110 | SetForegroundWindow(systray_hwnd); |
|
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 | /* Different menus depending on signed on/off state */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
113 | if(connected) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
114 | /* If signoff item dosn't exist.. create it */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
115 | if(!IsMenuItem(systray_menu, SYSTRAY_CMND_SIGNOFF)) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
116 | DeleteMenu(systray_menu, SYSTRAY_CMND_SIGNON, MF_BYCOMMAND); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
117 | InsertMenu(systray_menu, SYSTRAY_CMND_MENU_EXIT, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
118 | MF_BYCOMMAND | MF_STRING, SYSTRAY_CMND_SIGNOFF, _("Signoff")); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
119 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
120 | /* if away menu exists, remove and rebuild it */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
121 | if(systray_away_menu) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
122 | if(!DeleteMenu(systray_menu, (UINT)systray_away_menu, MF_BYCOMMAND)) |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
123 | debug_printf("Error using DeleteMenu\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
124 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
125 | InsertMenu(systray_menu, SYSTRAY_CMND_PREFS, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
126 | MF_BYCOMMAND | MF_POPUP | MF_STRING, (UINT)systray_create_awy_menu(), |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
127 | _("Set Away Message")); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
128 | EnableMenuItem(systray_menu, SYSTRAY_CMND_AUTOLOGIN, MF_GRAYED); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
129 | /* If away, put "I'm Back" option in menu */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
130 | if(st_state == SYSTRAY_STATE_AWAY) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
131 | if(!IsMenuItem(systray_menu, SYSTRAY_CMND_BACK)) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
132 | InsertMenu(systray_menu, (UINT)systray_away_menu, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
133 | MF_BYCOMMAND | MF_STRING, SYSTRAY_CMND_BACK, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
134 | _("I'm Back")); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
135 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
136 | } else { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
137 | /* Delete I'm Back item if it exists */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
138 | DeleteMenu(systray_menu, SYSTRAY_CMND_BACK, MF_BYCOMMAND); |
|
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 | } else { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
141 | /* If signon item dosn't exist.. create it */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
142 | if(!IsMenuItem(systray_menu, SYSTRAY_CMND_SIGNON)) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
143 | DeleteMenu(systray_menu, SYSTRAY_CMND_SIGNOFF, MF_BYCOMMAND); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
144 | InsertMenu(systray_menu, SYSTRAY_CMND_MENU_EXIT, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
145 | MF_BYCOMMAND | MF_STRING, SYSTRAY_CMND_SIGNON, _("Sign On")); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
146 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
147 | EnableMenuItem(systray_menu, SYSTRAY_CMND_AUTOLOGIN, MF_ENABLED); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
148 | EnableMenuItem(systray_menu, (UINT)systray_away_menu, MF_GRAYED); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
149 | /* Delete I'm Back item if it exists */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
150 | DeleteMenu(systray_menu, SYSTRAY_CMND_BACK, MF_BYCOMMAND); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
151 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
152 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
153 | TrackPopupMenu(systray_menu, // handle to shortcut menu |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
154 | TPM_RIGHTALIGN | TPM_BOTTOMALIGN | TPM_LEFTBUTTON, |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
155 | x, // horizontal position, in screen coordinates |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
156 | y, // vertical position, in screen coordinates |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
157 | 0, // reserved, must be zero |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
158 | systray_hwnd, // handle to owner window |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
159 | NULL // ignored |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
160 | ); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
161 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
162 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
163 | /* Set nth away message from away_messages list */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
164 | static void systray_set_away(int nth) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
165 | int item_count = 0; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
166 | GSList *awy = away_messages; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
167 | struct away_message *a = NULL; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
168 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
169 | while (awy && (item_count != nth)) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
170 | awy = g_slist_next(awy); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
171 | item_count+=1; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
172 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
173 | if(awy) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
174 | a = (struct away_message *)awy->data; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
175 | do_away_message(NULL, a); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
176 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
177 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
178 | |
| 3946 | 179 | static LRESULT CALLBACK systray_mainmsg_handler(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { |
| 180 | ||
| 181 | switch(msg) { | |
| 182 | case WM_CREATE: | |
| 183 | debug_printf("WM_CREATE\n"); | |
| 184 | break; | |
| 185 | ||
| 186 | case WM_TIMER: | |
| 187 | debug_printf("WM_TIMER\n"); | |
| 188 | break; | |
| 189 | ||
| 190 | case WM_DESTROY: | |
| 191 | debug_printf("WM_DESTROY\n"); | |
| 192 | break; | |
| 193 | ||
| 194 | case WM_COMMAND: | |
| 195 | debug_printf("WM_COMMAND\n"); | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
196 | switch(LOWORD(wparam)) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
197 | case SYSTRAY_CMND_MENU_EXIT: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
198 | do_quit(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
199 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
200 | case SYSTRAY_CMND_SIGNON: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
201 | debug_printf("signon\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
202 | show_login(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
203 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
204 | case SYSTRAY_CMND_SIGNOFF: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
205 | debug_printf("signoff\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
206 | signoff_all(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
207 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
208 | case SYSTRAY_CMND_AUTOLOGIN: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
209 | debug_printf("autologin\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
210 | auto_login(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
211 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
212 | case SYSTRAY_CMND_PREFS: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
213 | debug_printf("Prefs\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
214 | show_prefs(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
215 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
216 | case SYSTRAY_CMND_BACK: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
217 | debug_printf("I'm back\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
218 | do_im_back(NULL, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
219 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
220 | case SYSTRAY_CMND_SET_AWY_NEW: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
221 | debug_printf("New away item\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
222 | create_away_mess(NULL, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
223 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
224 | default: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
225 | /* SYSTRAY_CMND_SET_AWY */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
226 | if((LOWORD(wparam) >= SYSTRAY_CMND_SET_AWY) && |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
227 | (LOWORD(wparam) <= (SYSTRAY_CMND_SET_AWY + MAX_AWY_MESSAGES))) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
228 | debug_printf("Set away message\n"); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
229 | systray_set_away(LOWORD(wparam)-SYSTRAY_CMND_SET_AWY); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
230 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
231 | } |
| 3946 | 232 | break; |
| 233 | case WM_TRAYMESSAGE: | |
| 234 | { | |
| 235 | if( lparam == WM_LBUTTONDBLCLK ) { | |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
236 | /* Double Click */ |
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
237 | /* Either hide or show current window (login or buddy) */ |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
238 | docklet_toggle(); |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
239 | /* if away.. hide/show I'm back win too */ |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
240 | if(st_state == SYSTRAY_STATE_AWAY) { |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
241 | if(GTK_WIDGET_VISIBLE(blist) && !GTK_WIDGET_VISIBLE(imaway)) { |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
242 | RestoreWndFromTray(GDK_WINDOW_HWND(GTK_WIDGET(imaway)->window)); |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
243 | gtk_window_present(GTK_WINDOW(imaway)); |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
244 | } else if(!GTK_WIDGET_VISIBLE(blist) && GTK_WIDGET_VISIBLE(imaway)) { |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
245 | wgaim_systray_minimize(imaway); |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
246 | gtk_widget_hide(imaway); |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
247 | } |
| 3946 | 248 | } |
| 249 | debug_printf("Systray got double click\n"); | |
| 250 | } | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
251 | if( lparam == WM_RBUTTONUP ) { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
252 | /* Right Click */ |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
253 | POINT mpoint; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
254 | GetCursorPos(&mpoint); |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
255 | |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
256 | switch(st_state) { |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
257 | case SYSTRAY_STATE_OFFLINE: |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
258 | case SYSTRAY_STATE_OFFLINE_CONNECTING: |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
259 | systray_show_menu(mpoint.x, mpoint.y, 0); |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
260 | break; |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
261 | default: |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
262 | systray_show_menu(mpoint.x, mpoint.y, 1); |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
263 | } |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
264 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
265 | break; |
| 3946 | 266 | } |
| 267 | default: | |
| 268 | }/* end switch */ | |
| 269 | ||
| 270 | return DefWindowProc(hwnd, msg, wparam, lparam); | |
| 271 | } | |
| 272 | ||
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
273 | /* Create hidden window to process systray messages */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
274 | static HWND systray_create_hiddenwin() { |
| 3946 | 275 | WNDCLASSEX wcex; |
| 276 | TCHAR wname[32]; | |
| 277 | ||
| 278 | strcpy(wname, "GaimWin"); | |
| 279 | ||
| 280 | wcex.cbSize = sizeof(WNDCLASSEX); | |
| 281 | ||
| 282 | wcex.style = 0; | |
| 283 | wcex.lpfnWndProc = (WNDPROC)systray_mainmsg_handler; | |
| 284 | wcex.cbClsExtra = 0; | |
| 285 | wcex.cbWndExtra = 0; | |
| 286 | wcex.hInstance = wgaim_hinstance(); | |
| 287 | wcex.hIcon = NULL; | |
| 288 | wcex.hCursor = NULL, | |
| 289 | wcex.hbrBackground = NULL; | |
| 290 | wcex.lpszMenuName = NULL; | |
| 291 | wcex.lpszClassName = wname; | |
| 292 | wcex.hIconSm = NULL; | |
| 293 | ||
| 294 | RegisterClassEx(&wcex); | |
| 295 | ||
| 296 | // Create the window | |
| 297 | return (CreateWindow(wname, "", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, wgaim_hinstance(), 0)); | |
| 298 | } | |
| 299 | ||
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
300 | static void systray_create_menu(void) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
301 | /* create popup menu */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
302 | if((systray_menu = CreatePopupMenu())) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
303 | if(!AppendMenu(systray_menu, MF_STRING, SYSTRAY_CMND_PREFS, _("Preferences"))) |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
304 | debug_printf("AppendMenu error: %d\n", GetLastError()); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
305 | if(!AppendMenu(systray_menu, MF_STRING, SYSTRAY_CMND_AUTOLOGIN, _("Auto-login"))) |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
306 | debug_printf("AppendMenu error: %d\n", GetLastError()); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
307 | if(!AppendMenu(systray_menu, MF_SEPARATOR, 0, 0)) |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
308 | debug_printf("AppendMenu error: %d\n", GetLastError()); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
309 | if(!AppendMenu(systray_menu, MF_STRING, SYSTRAY_CMND_MENU_EXIT, _("Exit"))) |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
310 | debug_printf("AppendMenu error: %d\n", GetLastError()); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
311 | } else |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
312 | debug_printf("CreatePopupMenu error: %d\n", GetLastError()); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
313 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
314 | |
| 3946 | 315 | static void systray_init_icon(HWND hWnd, HICON icon) { |
| 316 | ZeroMemory(&wgaim_nid,sizeof(wgaim_nid)); | |
| 317 | wgaim_nid.cbSize=sizeof(NOTIFYICONDATA); | |
| 318 | wgaim_nid.hWnd=hWnd; | |
| 319 | wgaim_nid.uID=0; | |
| 320 | wgaim_nid.uFlags=NIF_ICON | NIF_MESSAGE | NIF_TIP; | |
| 321 | wgaim_nid.uCallbackMessage=WM_TRAYMESSAGE; | |
| 322 | wgaim_nid.hIcon=icon; | |
| 323 | strcpy(wgaim_nid.szTip,GAIM_SYSTRAY_DISCONN_HINT); | |
| 324 | ||
| 325 | Shell_NotifyIcon(NIM_ADD,&wgaim_nid); | |
| 326 | } | |
| 327 | ||
| 328 | static void systray_change_icon(HICON icon, char* text) { | |
| 329 | wgaim_nid.hIcon = icon; | |
| 330 | lstrcpy(wgaim_nid.szTip, text); | |
| 331 | Shell_NotifyIcon(NIM_MODIFY,&wgaim_nid); | |
| 332 | } | |
| 333 | ||
| 334 | static void systray_remove_nid(void) { | |
| 335 | Shell_NotifyIcon(NIM_DELETE,&wgaim_nid); | |
| 336 | } | |
| 337 | ||
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
338 | static void systray_update_icon() { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
339 | switch(st_state) { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
340 | case SYSTRAY_STATE_ONLINE: |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
341 | systray_change_icon(sysicon_conn, GAIM_SYSTRAY_HINT); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
342 | break; |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
343 | case SYSTRAY_STATE_ONLINE_CONNECTING: |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
344 | case SYSTRAY_STATE_OFFLINE_CONNECTING: |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
345 | break; |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
346 | case SYSTRAY_STATE_OFFLINE: |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
347 | systray_change_icon(sysicon_disconn, GAIM_SYSTRAY_DISCONN_HINT); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
348 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
349 | case SYSTRAY_STATE_AWAY: |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
350 | systray_change_icon(sysicon_away, GAIM_SYSTRAY_AWAY_HINT); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
351 | break; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
352 | } |
| 3946 | 353 | } |
| 354 | ||
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
355 | static void systray_update_status() { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
356 | SYSTRAY_STATE old_state = st_state; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
357 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
358 | if(connections) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
359 | if(awaymessage) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
360 | st_state = SYSTRAY_STATE_AWAY; |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
361 | } else if(connecting_count) { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
362 | st_state = SYSTRAY_STATE_ONLINE_CONNECTING; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
363 | } else { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
364 | st_state = SYSTRAY_STATE_ONLINE; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
365 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
366 | } else { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
367 | if(connecting_count) { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
368 | /* Don't rely on this state.. signoff in multi.c sends |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
369 | event_signoff before decrementing connecting_count |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
370 | for a reason unknown to me.. |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
371 | */ |
|
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
372 | st_state = SYSTRAY_STATE_OFFLINE_CONNECTING; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
373 | } else { |
|
4500
99f0188eb8cf
[gaim-migrate @ 4775]
Herman Bloggs <herman@bluedigits.com>
parents:
4106
diff
changeset
|
374 | st_state = SYSTRAY_STATE_OFFLINE; |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
375 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
376 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
377 | if(st_state != old_state) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
378 | systray_update_icon(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
379 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
380 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
381 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
382 | /* |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
383 | * GAIM EVENT CALLBACKS |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
384 | ***********************/ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
385 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
386 | static void st_signon(struct gaim_connection *gc, void *data) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
387 | systray_update_status(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
388 | } |
| 3946 | 389 | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
390 | static void st_signoff(struct gaim_connection *gc, void *data) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
391 | systray_update_status(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
392 | } |
| 3946 | 393 | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
394 | static void st_away(struct gaim_connection *gc, void *data) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
395 | systray_update_status(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
396 | } |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
397 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
398 | static void st_back(struct gaim_connection *gc, void *data) { |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
399 | systray_update_status(); |
| 3946 | 400 | } |
| 401 | ||
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
402 | static void st_im_recieve(struct gaim_connection *gc, void *data) { |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
403 | |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
404 | } |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
405 | |
| 3946 | 406 | /* |
| 407 | * PUBLIC CODE | |
| 408 | */ | |
| 409 | ||
|
4106
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
410 | /* |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
411 | * GAIM WINDOW FILTERS |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
412 | **********************/ |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
413 | |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
414 | GdkFilterReturn st_buddywin_filter( GdkXEvent *xevent, GdkEvent *event, gpointer data) { |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
415 | |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
416 | MSG *msg = (MSG*)xevent; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
417 | |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
418 | switch( msg->message ) { |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
419 | case WM_SYSCOMMAND: |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
420 | if( msg->wParam == SC_MINIMIZE ) { |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
421 | hide_buddy_list(); |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
422 | return GDK_FILTER_REMOVE; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
423 | } |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
424 | break; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
425 | case WM_CLOSE: |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
426 | hide_buddy_list(); |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
427 | return GDK_FILTER_REMOVE; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
428 | } |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
429 | |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
430 | return GDK_FILTER_CONTINUE; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
431 | } |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
432 | |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
433 | GdkFilterReturn st_loginwin_filter( GdkXEvent *xevent, GdkEvent *event, gpointer data) { |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
434 | MSG *msg = (MSG*)xevent; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
435 | |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
436 | switch( msg->message ) { |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
437 | case WM_CLOSE: |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
438 | wgaim_systray_minimize(mainwindow); |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
439 | gtk_widget_hide(mainwindow); |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
440 | return GDK_FILTER_REMOVE; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
441 | } |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
442 | |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
443 | return GDK_FILTER_CONTINUE; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
444 | } |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
445 | |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
446 | GdkFilterReturn st_backwin_filter( GdkXEvent *xevent, GdkEvent *event, gpointer data) { |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
447 | MSG *msg = (MSG*)xevent; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
448 | |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
449 | switch( msg->message ) { |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
450 | case WM_SYSCOMMAND: |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
451 | if( msg->wParam == SC_MINIMIZE ) { |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
452 | if(imaway) { |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
453 | wgaim_systray_minimize(imaway); |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
454 | gtk_widget_hide(imaway); |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
455 | } |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
456 | return GDK_FILTER_REMOVE; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
457 | } |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
458 | break; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
459 | } |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
460 | return GDK_FILTER_CONTINUE; |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
461 | } |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
462 | |
|
e730b87aa901
[gaim-migrate @ 4321]
Herman Bloggs <herman@bluedigits.com>
parents:
4101
diff
changeset
|
463 | |
| 3946 | 464 | /* Create a hidden window and associate it with the systray icon. |
| 465 | We use this hidden window to proccess WM_TRAYMESSAGE msgs. */ | |
| 466 | void wgaim_systray_init(void) { | |
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
467 | docklet_add(); |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
468 | |
| 3946 | 469 | /* dummy window to process systray messages */ |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
470 | systray_hwnd = systray_create_hiddenwin(); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
471 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
472 | systray_create_menu(); |
| 3946 | 473 | |
| 474 | /* Load icons, and init systray notify icon */ | |
|
4101
a27b5966a1ac
[gaim-migrate @ 4316]
Herman Bloggs <herman@bluedigits.com>
parents:
4087
diff
changeset
|
475 | 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
|
476 | 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
|
477 | sysicon_away = (HICON)LoadImage(wgaim_hinstance(), MAKEINTRESOURCE(GAIM_AWAY_TRAY_ICON), IMAGE_ICON, 16, 16, 0); |
| 3946 | 478 | |
| 479 | /* Create icon in systray */ | |
| 480 | systray_init_icon(systray_hwnd, sysicon_disconn); | |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
481 | |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
482 | /* Register Gaim event callbacks */ |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
483 | gaim_signal_connect(NULL, event_signon, st_signon, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
484 | gaim_signal_connect(NULL, event_signoff, st_signoff, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
485 | gaim_signal_connect(NULL, event_away, st_away, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
486 | gaim_signal_connect(NULL, event_back, st_back, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
487 | /*gaim_signal_connect(NULL, event_connecting, wgaim_st_connecting, NULL); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
488 | gaim_signal_connect(NULL, event_im_displayed_rcvd, wgaim_st_im_displayed_recv, NULL);*/ |
| 3946 | 489 | } |
| 490 | ||
| 491 | void wgaim_systray_cleanup(void) { | |
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
492 | docklet_remove(); |
| 3946 | 493 | systray_remove_nid(); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
494 | DestroyMenu(systray_menu); |
|
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
495 | DestroyWindow(systray_hwnd); |
| 3946 | 496 | } |
| 497 | ||
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
498 | void wgaim_systray_minimize( GtkWidget *window ) { |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
499 | MinimizeWndToTray(GDK_WINDOW_HWND(window->window)); |
|
3959
3d86547a1d75
[gaim-migrate @ 4141]
Herman Bloggs <herman@bluedigits.com>
parents:
3946
diff
changeset
|
500 | } |
|
3972
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
501 | |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
502 | void wgaim_systray_maximize( GtkWidget *window ) { |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
503 | RestoreWndFromTray(GDK_WINDOW_HWND(window->window)); |
|
3ae6879c1bae
[gaim-migrate @ 4156]
Herman Bloggs <herman@bluedigits.com>
parents:
3959
diff
changeset
|
504 | } |