annotate src/win32/systray.c @ 5230:779ffffb584a

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