annotate pidgin-audacious.c @ 23:dffc9604a9fb

- moved prototypes to pidgin-audacious.h
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Mon, 06 Oct 2008 18:19:42 +0900
parents fbad40babe88
children 8ac1ebc63fab
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
1 /* Pidgin-Audacious plugin.
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
2 *
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
3 * This program is free software; you can redistribute it and/or
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
4 * modify it under the terms of the GNU General Public License as
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
5 * published by the Free Software Foundation; either version 2 of the
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
6 * License, or (at your option) any later version.
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
7 *
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
8 * This program is distributed in the hope that it will be useful, but
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
11 * General Public License for more details.
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
12 *
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
13 * You should have received a copy of the GNU General Public License
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
14 * along with this program; if not, write to the Free Software
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
15 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
16 * 02111-1307, USA.
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
17 */
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
18 #define PURPLE_PLUGINS 1
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
19
22
fbad40babe88 build system update:
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 21
diff changeset
20 #include "pidgin-audacious.h"
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
21
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
22 /* globals */
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
23 static GHashTable *seed_status;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
24 static GHashTable *seed_userinfo;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
25 static GHashTable *pushed_status;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
26 static GHashTable *pushed_userinfo;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
27 static DBusGConnection *connection = NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
28 static DBusGProxy *session = NULL;
10
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
29 static PurpleCmdId cmdid_paste_current_song;
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
30
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
31
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
32 /* implementation */
12
79f081cdfb19 - fixed potential memory leaks.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 11
diff changeset
33 static DBusGProxy *
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
34 get_dbus_session(void)
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
35 {
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
36 GError *error = NULL;
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
37 DBusGProxy *proxy;
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
38 gchar *player = g_strconcat("org.mpris.",
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
39 purple_prefs_get_string(OPT_PLAYER),
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
40 NULL);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
41
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
42 connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
43 g_clear_error(&error);
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
44
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
45
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
46 proxy = dbus_g_proxy_new_for_name(connection,
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
47 player,
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
48 "/Player",
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
49 "org.freedesktop.MediaPlayer");
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
50
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
51 g_clear_error(&error);
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
52 g_free(player);
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
53 return proxy;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
54 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
55
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
56
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
57 static void
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
58 connect_dbus_signals()
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
59 {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
60 dbus_g_proxy_add_signal(session,
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
61 "TrackChange",
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
62 DBUS_TYPE_G_STRING_VALUE_HASHTABLE,
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
63 G_TYPE_INVALID);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
64
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
65 dbus_g_proxy_connect_signal(session,
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
66 "TrackChange",
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
67 G_CALLBACK(track_signal_cb),
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
68 NULL, NULL);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
69
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
70 dbus_g_proxy_add_signal(session,
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
71 "StatusChange",
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
72 G_TYPE_INT, G_TYPE_INVALID);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
73
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
74 dbus_g_proxy_connect_signal(session,
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
75 "StatusChange",
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
76 G_CALLBACK(status_signal_cb),
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
77 NULL, NULL);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
78 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
79
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
80 static void
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
81 connect_purple_signals(PurplePlugin *plugin)
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
82 {
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
83 purple_signal_connect(purple_connections_get_handle(),
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
84 "signed-on",
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
85 plugin,
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
86 PURPLE_CALLBACK(signed_on_cb),
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
87 NULL);
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
88
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
89 purple_signal_connect(purple_savedstatuses_get_handle(),
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
90 "savedstatus-changed",
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
91 plugin,
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
92 PURPLE_CALLBACK(signed_on_cb),
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
93 NULL);
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
94
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
95 purple_prefs_connect_callback(purple_prefs_get_handle(),
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
96 OPT_PIDGINAUD,
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
97 prefs_cb,
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
98 NULL);
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
99 }
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
100
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
101 static GHashTable *
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
102 get_song_table(void)
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
103 {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
104 GHashTable *table = NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
105
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
106 if(is_app_playing()) {
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
107 dbus_g_proxy_call(session,
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
108 "GetMetadata",
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
109 NULL,
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
110 G_TYPE_INVALID,
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
111 DBUS_TYPE_G_STRING_VALUE_HASHTABLE,
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
112 &table,
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
113 G_TYPE_INVALID);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
114 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
115
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
116 return table;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
117 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
118
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
119 static song_tuple *
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
120 get_song_tuple(GHashTable *table)
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
121 {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
122 song_tuple *t = NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
123 GValue *value;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
124
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
125 if(!table)
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
126 return NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
127
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
128 t = g_new0(song_tuple, 1);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
129
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
130 value = (GValue *) g_hash_table_lookup(table, "title");
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
131 if (value && G_VALUE_HOLDS_STRING(value)) {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
132 t->title = g_value_dup_string(value);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
133 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
134 value = (GValue *) g_hash_table_lookup(table, "artist");
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
135 if (value != NULL && G_VALUE_HOLDS_STRING(value)) {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
136 t->artist = g_value_dup_string(value);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
137 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
138 value = (GValue *) g_hash_table_lookup(table, "album");
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
139 if (value != NULL && G_VALUE_HOLDS_STRING(value)) {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
140 t->album = g_value_dup_string(value);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
141 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
142 value = (GValue *) g_hash_table_lookup(table, "genre");
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
143 if (value != NULL && G_VALUE_HOLDS_STRING(value)) {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
144 t->genre = g_value_dup_string(value);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
145 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
146
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
147 return t;
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
148 }
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
149
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
150 void
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
151 free_song_tuple(song_tuple *t)
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
152 {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
153 g_free(t->title);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
154 g_free(t->artist);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
155 g_free(t->album);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
156 g_free(t->genre);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
157
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
158 g_free(t);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
159 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
160
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
161
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
162 static gchar *
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
163 format_song_info(song_tuple *tuple)
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
164 {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
165 gchar *song_info = NULL, *tmp = NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
166
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
167 if(!tuple)
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
168 return NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
169
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
170 song_info = g_strdup(purple_prefs_get_string(OPT_SONG_TEMPLATE));
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
171 if(!song_info)
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
172 return NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
173
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
174 if(tuple->title && strstr(song_info, TITLE)) {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
175 tmp = purple_strreplace(song_info, TITLE, tuple->title);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
176 g_free(song_info);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
177 song_info = tmp;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
178 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
179 if(tuple->artist && strstr(song_info, ARTIST)) {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
180 tmp = purple_strreplace(song_info, ARTIST, tuple->artist);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
181 g_free(song_info);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
182 song_info = tmp;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
183 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
184 if(tuple->album && strstr(song_info, ALBUM)) {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
185 tmp = purple_strreplace(song_info, ALBUM, tuple->album);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
186 g_free(song_info);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
187 song_info = tmp;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
188 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
189 if(tuple->genre && strstr(song_info, GENRE)) {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
190 tmp = purple_strreplace(song_info, GENRE, tuple->genre);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
191 g_free(song_info);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
192 song_info = tmp;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
193 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
194
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
195 if(song_info && !strcmp(song_info, "")) {
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
196 g_free(song_info);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
197 song_info = NULL;
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
198 }
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
199
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
200 return song_info;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
201 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
202
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
203
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
204
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
205 static void
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
206 track_signal_cb(DBusGProxy *player_proxy, GHashTable *table, gpointer data)
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
207 {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
208 gchar *song_info = NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
209 song_tuple *tuple = get_song_tuple(table);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
210
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
211 /* set current song */
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
212 purple_util_set_current_song(tuple->title ? tuple->title : "",
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
213 tuple->artist ? tuple->artist : "",
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
214 tuple->album ? tuple->album : "");
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
215
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
216 song_info = format_song_info(tuple);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
217
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
218 aud_process(song_info);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
219 free_song_tuple(tuple);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
220 g_free(song_info);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
221 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
222
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
223
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
224 static void
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
225 status_signal_cb(DBusGProxy *player_proxy, gint status, gpointer data)
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
226 {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
227 aud_debug("StatusChange %d\n", status);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
228
21
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
229 switch(status) {
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
230 case STOPPED:
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
231 /* clear status/user info */
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
232 aud_process(NULL);
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
233 /* clear current song */
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
234 purple_util_set_current_song(NULL, NULL, NULL);
21
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
235 break;
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
236 case PLAYING:
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
237 case PAUSED:
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
238 default:
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
239 break;
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
240 }
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
241 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
242
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
243
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
244 static void
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
245 aud_process_status(PurpleConnection *gc, gchar *aud_info)
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
246 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
247 gchar *new = NULL, *key = NULL;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
248 const gchar *current, *seed, *pushed, *proto;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
249 PurpleAccount *account;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
250 PurplePresence *presence;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
251 PurplePlugin *prpl;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
252 PurplePluginProtocolInfo *prpl_info;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
253 PurpleStatus *status;
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
254
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
255 account = purple_connection_get_account(gc);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
256 presence = purple_account_get_presence(account);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
257
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
258 proto = purple_account_get_protocol_id(account);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
259 prpl = purple_find_prpl(proto);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
260 g_return_if_fail(prpl != NULL);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
261
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
262 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
263 g_return_if_fail(prpl_info != NULL && prpl_info->set_status != NULL);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
264
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
265 status = purple_presence_get_active_status(presence);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
266 g_return_if_fail(status != NULL);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
267
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
268 /* generate key for hash table */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
269 key = g_strdup_printf("%s %s", account->username, account->protocol_id);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
270
1
46071692f191 implement new replace logic to status and userinfo.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 0
diff changeset
271 /* retrieve current user status */
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
272 current = purple_status_get_attr_string(status, "message");
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
273 aud_debug("status current = %s\n", current);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
274
1
46071692f191 implement new replace logic to status and userinfo.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 0
diff changeset
275 /* invalidate pushded status on auto away etc. */
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
276 if(current == NULL || strlen(current) == 0) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
277 g_hash_table_replace(pushed_status, g_strdup(key), g_strdup(""));
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
278 g_free(key);
1
46071692f191 implement new replace logic to status and userinfo.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 0
diff changeset
279 return;
46071692f191 implement new replace logic to status and userinfo.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 0
diff changeset
280 }
46071692f191 implement new replace logic to status and userinfo.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 0
diff changeset
281
46071692f191 implement new replace logic to status and userinfo.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 0
diff changeset
282 /* pop pushed_status */
46071692f191 implement new replace logic to status and userinfo.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 0
diff changeset
283 pushed = (gchar *)g_hash_table_lookup(pushed_status, key);
46071692f191 implement new replace logic to status and userinfo.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 0
diff changeset
284
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
285 /* if current status differs from pushed_status or
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
286 contains token, replace hashes with current. */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
287 if((pushed && g_ascii_strcasecmp(current, pushed)) ||
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
288 strstr(current, SONG_TOKEN)) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
289 g_hash_table_replace(seed_status, g_strdup(key), g_strdup(current));
1
46071692f191 implement new replace logic to status and userinfo.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 0
diff changeset
290 g_hash_table_replace(pushed_status, g_strdup(key), g_strdup(current));
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
291 }
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
292
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
293 /* construct new status message */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
294 seed = (gchar *)g_hash_table_lookup(seed_status, key);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
295 if(!seed) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
296 g_free(key);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
297 return;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
298 }
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
299 aud_debug("status seed = %s\n", seed);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
300
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
301 if(strstr(seed, SONG_TOKEN)) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
302 if(aud_info){
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
303 new = purple_strreplace(seed, SONG_TOKEN, aud_info);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
304 }
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
305 else {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
306 new = g_strdup(NO_SONG_MESSAGE);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
307 }
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
308 }
12
79f081cdfb19 - fixed potential memory leaks.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 11
diff changeset
309
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
310 if(!new) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
311 g_free(key);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
312 return;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
313 }
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
314
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
315 /* set status message only if text has been changed */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
316 pushed = (gchar *)g_hash_table_lookup(pushed_status, key);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
317 aud_debug("status pushed = %s\n", pushed);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
318
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
319 if (!pushed || g_ascii_strcasecmp(pushed, new)) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
320 g_hash_table_replace(pushed_status, g_strdup(key), g_strdup(new));
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
321 purple_status_set_attr_string(status, "message", new);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
322 prpl_info->set_status(account, status);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
323 }
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
324 g_free(key);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
325 g_free(new);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
326 }
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
327
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
328
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
329 static void
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
330 aud_process_userinfo(PurpleConnection *gc, gchar *aud_info)
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
331 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
332 gchar *new = NULL, *key = NULL;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
333 const gchar *current, *seed, *pushed, *proto;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
334 PurpleAccount *account;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
335 PurplePlugin *prpl;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
336 PurplePluginProtocolInfo *prpl_info;
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
337
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
338 account = purple_connection_get_account(gc);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
339
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
340 proto = purple_account_get_protocol_id(account);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
341 prpl = purple_find_prpl(proto);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
342 g_return_if_fail(prpl != NULL);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
343
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
344 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
345 g_return_if_fail(prpl_info != NULL && prpl_info->set_info != NULL);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
346
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
347 /* generate key for hash table*/
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
348 key = g_strdup_printf("%s %s", account->username, account->protocol_id);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
349
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
350 /* retrieve current user info */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
351 current = purple_account_get_user_info(account); /* from account.xml */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
352 aud_debug("userinfo current = %s\n", current);
1
46071692f191 implement new replace logic to status and userinfo.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 0
diff changeset
353
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
354 /* invalidate pushded status on auto away etc. */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
355 if(current == NULL || strlen(current) == 0) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
356 g_hash_table_replace(pushed_userinfo, g_strdup(key), g_strdup(""));
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
357 g_free(key);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
358 return;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
359 }
1
46071692f191 implement new replace logic to status and userinfo.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 0
diff changeset
360
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
361 /* pop pushed_userinfo */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
362 pushed = g_hash_table_lookup(pushed_userinfo, key);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
363
17
14de631fa929 drop outdated alias support
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 16
diff changeset
364 /* if current userinfo differs from pushed_userinfo or contains
14de631fa929 drop outdated alias support
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 16
diff changeset
365 token, replace seed with this. */
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
366 if((pushed && g_ascii_strcasecmp(current, pushed)) ||
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
367 strstr(current, SONG_TOKEN)) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
368 g_hash_table_replace(seed_userinfo, g_strdup(key),
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
369 g_strdup(current));
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
370 g_hash_table_replace(pushed_userinfo, g_strdup(key),
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
371 g_strdup(current));
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
372 }
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
373
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
374 /* construct new status message */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
375 seed = (gchar *)g_hash_table_lookup(seed_userinfo, key);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
376 if(!seed) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
377 g_free(key);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
378 return;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
379 }
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
380 aud_debug("userinfo seed = %s\n", seed);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
381
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
382 if(strstr(seed, SONG_TOKEN)) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
383 if(aud_info){
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
384 new = purple_strreplace(seed, SONG_TOKEN, aud_info);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
385 }
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
386 else {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
387 new = g_strdup(NO_SONG_MESSAGE);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
388 }
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
389 }
12
79f081cdfb19 - fixed potential memory leaks.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 11
diff changeset
390
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
391 if(!new) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
392 g_free(key);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
393 return;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
394 }
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
395
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
396 /* set user info only if text has been changed */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
397 pushed = (gchar *)g_hash_table_lookup(pushed_userinfo, key);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
398 aud_debug("userinfo pushed = %s\n", pushed);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
399
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
400 if (!pushed || g_ascii_strcasecmp(pushed, new) != 0) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
401 g_hash_table_replace(pushed_userinfo, g_strdup(key),
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
402 g_strdup(new));
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
403 prpl_info->set_info(gc, new);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
404 }
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
405 g_free(key);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
406 g_free(new);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
407 }
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
408
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
409
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
410 static void
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
411 aud_process(gchar *aud_info)
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
412 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
413 GList *l;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
414 PurpleConnection *gc;
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
415
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
416 for (l = purple_connections_get_all(); l != NULL; l = l->next) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
417 gc = (PurpleConnection *) l->data;
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
418
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
419 /* make sure we're connected */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
420 if (purple_connection_get_state(gc) != PURPLE_CONNECTED) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
421 continue;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
422 }
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
423
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
424 if (purple_prefs_get_bool(OPT_PROCESS_USERINFO)) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
425 aud_process_userinfo(gc, aud_info);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
426 }
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
427
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
428 if (purple_prefs_get_bool(OPT_PROCESS_STATUS)) {
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
429 aud_process_status(gc, aud_info);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
430 }
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
431 }
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
432
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
433 }
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
434
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
435 static void
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
436 removekey(gpointer data)
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
437 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
438 g_free(data);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
439 }
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
440
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
441 static void
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
442 removeval(gpointer data)
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
443 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
444 g_free(data);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
445 }
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
446
10
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
447 static PurpleCmdRet
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
448 paste_current_song(PurpleConversation *conv, const gchar *cmd,
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
449 gchar **args, gchar **error, void *data)
10
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
450 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
451 gchar *song = NULL, *tmp = NULL, *tmp2 = NULL;
10
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
452 PurpleConversationType type = purple_conversation_get_type(conv);
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
453 size_t dummy;
11
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
454 const gchar *template = NULL;
10
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
455
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
456 /* audacious isn't playing */
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
457 if(!is_app_playing()) {
10
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
458 return PURPLE_CMD_RET_OK;
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
459 }
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
460
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
461 /* dbus lookup */
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
462 GHashTable *table = get_song_table();
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
463 song_tuple *tuple = get_song_tuple(table);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
464 tmp = format_song_info(tuple);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
465 free_song_tuple(tuple);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
466 g_hash_table_destroy(table);
10
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
467
11
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
468 template = purple_prefs_get_string(OPT_PASTE_TEMPLATE);
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
469
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
470 if(template && strstr(template, SONG_TOKEN)) {
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
471 tmp2 = purple_strreplace(template, SONG_TOKEN, tmp);
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
472 g_free(tmp);
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
473 tmp = NULL;
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
474 }
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
475 else {
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
476 tmp2 = tmp;
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
477 }
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
478
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
479 if(tmp2) {
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
480 if(botch_utf) {
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
481 song = (gchar *) botch_utf(tmp2, strlen(tmp2), &dummy);
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
482 g_free(tmp2);
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
483 tmp2 = NULL;
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
484 }
10
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
485 else
11
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
486 song = tmp2;
10
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
487 }
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
488
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
489 if(type == PURPLE_CONV_TYPE_CHAT) {
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
490 PurpleConvChat *chat = purple_conversation_get_chat_data(conv);
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
491 if (chat && song)
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
492 purple_conv_chat_send(chat, song);
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
493 }
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
494 else if(type == PURPLE_CONV_TYPE_IM) {
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
495 PurpleConvIm *im = purple_conversation_get_im_data(conv);
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
496 if(im && song)
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
497 purple_conv_im_send(im, song);
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
498 }
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
499
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
500 g_free(song);
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
501 return PURPLE_CMD_RET_OK;
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
502 }
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
503
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
504 static gboolean
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
505 is_app_playing(void)
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
506 {
21
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
507 GError *error = NULL;
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
508 int status = STOPPED;
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
509
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
510 gchar *player_name = g_strconcat("org.mpris.",
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
511 purple_prefs_get_string(OPT_PLAYER),
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
512 NULL);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
513
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
514 aud_debug("player_name = %s\n", player_name);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
515
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
516 if(!session) {
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
517 session = get_dbus_session();
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
518 connect_dbus_signals();
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
519 aud_debug("session == NULL. new session = %p\n", session);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
520 }
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
521
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
522 /* audacious only supports this form */
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
523 gboolean result =
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
524 dbus_g_proxy_call_with_timeout(
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
525 session,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
526 "GetStatus",
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
527 DBUS_TIMEOUT,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
528 &error,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
529 G_TYPE_INVALID,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
530 G_TYPE_INT,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
531 &status,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
532 G_TYPE_INVALID);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
533
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
534 aud_debug("GetStatus result = %d\n", result);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
535 aud_debug("GetStatus status = %d\n", status);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
536
21
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
537 switch(status) {
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
538 case PLAYING:
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
539 case PAUSED:
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
540 return TRUE;
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
541 break;
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
542 case STOPPED:
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
543 default:
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
544 return FALSE;
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
545 break;
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
546 }
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
547
21
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
548 #if 0
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
549 /* mpris specification 1.0 insists this is the way. no player
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
550 * supports this at this time. --yaz */
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
551 GError *error = NULL;
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
552 GValueArray *s;
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
553 gboolean result =
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
554 dbus_g_proxy_call_with_timeout(
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
555 session,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
556 "GetStatus",
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
557 DBUS_TIMEOUT, //msec
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
558 &error,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
559 G_TYPE_INVALID,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
560 DBUS_TYPE_MPRIS_STATUS,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
561 &s,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
562 G_TYPE_INVALID);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
563
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
564 aud_debug("GetStatus result = %d\n", result);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
565
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
566 if(result) {
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
567 /* parse GValueArray here */
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
568 GValue *val = g_value_array_get_nth(s, 0);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
569 int status = g_value_get_int(val);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
570 g_value_array_free(s);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
571
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
572 aud_debug("status = %d\n", status);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
573
21
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
574 switch(status) {
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
575 case PLAYING:
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
576 case PAUSED:
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
577 return TRUE;
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
578 break;
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
579 case STOPPED:
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
580 default:
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
581 return FALSE;
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
582 }
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
583
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
584 return FALSE;
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
585 #endif
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
586 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
587
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
588 static void
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
589 signed_on_cb(PurpleConnection *gc, void *data)
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
590 {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
591 gchar *song_info = NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
592 GHashTable *table = NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
593 song_tuple *tuple = NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
594
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
595 aud_debug("called\n");
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
596
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
597 if(!is_app_playing())
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
598 return;
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
599
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
600 table = get_song_table();
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
601 tuple = get_song_tuple(table);
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
602 g_hash_table_destroy(table);
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
603
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
604 if(!tuple) {
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
605 aud_debug("tuple == NULL\n");
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
606 return;
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
607 }
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
608
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
609 if(tuple->title)
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
610 aud_debug("title = %s\n", tuple->title);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
611
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
612 /* set current song */
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
613 purple_util_set_current_song(tuple->title ? tuple->title : "",
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
614 tuple->artist ? tuple->artist : "",
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
615 tuple->album ? tuple->album : "");
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
616
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
617 song_info = format_song_info(tuple);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
618 free_song_tuple(tuple);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
619
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
620 aud_process(song_info);
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
621 g_free(song_info);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
622 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
623
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
624
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
625 static void
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
626 prefs_cb(const char *name, PurplePrefType type,
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
627 gconstpointer value, gpointer data)
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
628 {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
629 aud_debug("settings change detected at %s\n", name);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
630 signed_on_cb(NULL, NULL);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
631 }
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
632
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
633 static gboolean
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
634 load_plugin(PurplePlugin *plugin)
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
635 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
636 seed_status = g_hash_table_new_full(g_str_hash, g_str_equal,
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
637 removekey, removeval);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
638 seed_userinfo = g_hash_table_new_full(g_str_hash, g_str_equal,
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
639 removekey, removeval);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
640
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
641 pushed_status = g_hash_table_new_full(g_str_hash, g_str_equal,
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
642 removekey, removeval);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
643 pushed_userinfo = g_hash_table_new_full(g_str_hash, g_str_equal,
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
644 removekey, removeval);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
645
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
646
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
647 session = get_dbus_session();
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
648
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
649 aud_debug("session = %p\n", session);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
650
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
651 /* connect to mpris signals */
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
652 if(session)
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
653 connect_dbus_signals();
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
654
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
655 /* connect to purple signals */
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
656 connect_purple_signals(plugin);
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
657
21
83002f858ee9 - do not retract current song if playing has been paused.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 20
diff changeset
658 /* clear status */
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
659 status_signal_cb(NULL, -1, NULL);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
660
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
661 /* register /song command */
10
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
662 cmdid_paste_current_song =
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
663 purple_cmd_register("song", "", PURPLE_CMD_P_DEFAULT,
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
664 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT,
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
665 NULL, paste_current_song,
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
666 "song: Paste currently plaing song", NULL);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
667
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
668 return TRUE;
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
669 }
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
670
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
671 static gboolean
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
672 unload_plugin(PurplePlugin *plugin)
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
673 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
674 aud_debug("pidgin-audacious unload called\n");
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
675
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
676 g_hash_table_destroy(seed_status);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
677 g_hash_table_destroy(seed_userinfo);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
678
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
679 g_hash_table_destroy(pushed_status);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
680 g_hash_table_destroy(pushed_userinfo);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
681
10
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
682 purple_cmd_unregister(cmdid_paste_current_song);
7c9624c8a109 added /song command which sends name of currently playing song.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 9
diff changeset
683
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
684 if(session) {
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
685 g_object_unref(session);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
686 session = NULL;
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
687 }
14
89bd98990fff now it tries to get dbus proxy if session is NULL.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 13
diff changeset
688
16
9e37b72309d4 - clear current song if audacious is not playing.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 15
diff changeset
689 if(connection) {
9e37b72309d4 - clear current song if audacious is not playing.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 15
diff changeset
690 dbus_g_connection_unref(connection);
9e37b72309d4 - clear current song if audacious is not playing.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 15
diff changeset
691 connection = NULL;
9e37b72309d4 - clear current song if audacious is not playing.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 15
diff changeset
692 }
9e37b72309d4 - clear current song if audacious is not playing.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 15
diff changeset
693
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
694 return TRUE;
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
695 }
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
696
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
697 static PurplePluginPrefFrame *
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
698 get_plugin_pref_frame(PurplePlugin *plugin)
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
699 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
700 PurplePluginPref *pref;
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
701 PurplePluginPrefFrame *frame = purple_plugin_pref_frame_new();
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
702
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
703 /* create gtk elements for the plugin preferences */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
704 pref = purple_plugin_pref_new_with_label(
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
705 "Pidgin-Audacious Configuration");
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
706 purple_plugin_pref_frame_add(frame, pref);
9
d5702f04b19c Fixed a bug that disabling this plugin while watch dog function has been hooked causes crash.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 8
diff changeset
707
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
708 /* player to connect */
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
709 pref = purple_plugin_pref_new_with_name_and_label(
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
710 OPT_PLAYER,
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
711 "Player to connect");
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
712 purple_plugin_pref_frame_add(frame, pref);
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
713
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
714 pref = purple_plugin_pref_new_with_name_and_label(
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
715 OPT_PROCESS_STATUS,
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
716 "Expand " SONG_TOKEN " to song info in the status message");
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
717 purple_plugin_pref_frame_add(frame, pref);
9
d5702f04b19c Fixed a bug that disabling this plugin while watch dog function has been hooked causes crash.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 8
diff changeset
718
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
719 pref = purple_plugin_pref_new_with_name_and_label(
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
720 OPT_PROCESS_USERINFO,
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
721 "Expand " SONG_TOKEN " to song info in the user info");
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
722 purple_plugin_pref_frame_add(frame, pref);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
723
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
724 /* song template */
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
725 pref = purple_plugin_pref_new_with_name_and_label(
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
726 OPT_SONG_TEMPLATE,
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
727 "%song compiled with");
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
728 purple_plugin_pref_frame_add(frame, pref);
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
729
11
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
730 /* paste template */
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
731 pref = purple_plugin_pref_new_with_name_and_label(
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
732 OPT_PASTE_TEMPLATE,
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
733 "/song command template");
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
734 purple_plugin_pref_frame_add(frame, pref);
11
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
735
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
736 return frame;
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
737 }
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
738
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
739 static PurplePluginUiInfo pref_info =
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
740 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
741 get_plugin_pref_frame
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
742 };
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
743
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
744 static PurplePluginInfo info =
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
745 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
746 PURPLE_PLUGIN_MAGIC,
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
747 PURPLE_MAJOR_VERSION,
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
748 PURPLE_MINOR_VERSION,
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
749 PURPLE_PLUGIN_STANDARD, /**< type */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
750 NULL, /**< ui_req */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
751 0, /**< flags */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
752 NULL, /**< deps */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
753 PURPLE_PRIORITY_DEFAULT, /**< priority */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
754 PIDGINAUD_PLUGIN_ID, /**< id */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
755 "Pidgin-Audacious", /**< name */
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
756 "3.0.0d1", /**< version */
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
757 "Automatically updates your Pidgin status info with the currently "
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
758 "playing music in Audacious.", /** summary */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
759 "Automatically updates your Pidgin status info with the currently "
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
760 "playing music in Audacious.", /** desc */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
761 "Yoshiki Yazawa (yaz@honeyplanet.jp)", /**< author */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
762 "http://www.honeyplanet.jp", /**< homepage */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
763 load_plugin, /**< load */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
764 unload_plugin, /**< unload */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
765 NULL, /**< destroy */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
766 NULL, /**< ui_info */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
767 NULL, /**< extra_info */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
768 &pref_info, /**< pref info */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
769 NULL
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
770 };
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
771
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
772 static void
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
773 init_plugin(PurplePlugin *plugin)
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
774 {
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
775 g_type_init();
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
776
13
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
777 /* add plugin preferences */
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
778 purple_prefs_add_none(OPT_PIDGINAUD);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
779 purple_prefs_add_bool(OPT_PROCESS_STATUS, TRUE);
44568f7ef51d fixed indentation
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 12
diff changeset
780 purple_prefs_add_bool(OPT_PROCESS_USERINFO, TRUE);
20
4aa711530489 - made player configurable.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 19
diff changeset
781 purple_prefs_add_string(OPT_PLAYER, DEFAULT_PLAYER);
18
dc3aa0bf24c0 moved to mpris access
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 17
diff changeset
782 purple_prefs_add_string(OPT_SONG_TEMPLATE, DEFAULT_SONG_TEMPLATE);
11
43cb653de212 paste template has been implemented.
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents: 10
diff changeset
783 purple_prefs_add_string(OPT_PASTE_TEMPLATE, SONG_TOKEN);
19
12d809123d69 - revised signed_on_cb() so that it calls purple_util_set_current_song().
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 18
diff changeset
784 purple_prefs_add_bool(OPT_LOG_OUTPUT, TRUE);
0
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
785
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
786 }
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
787
8d4d17a528ef initial import
Yoshiki Yazawa <yaz@cc.rim.or.jp>
parents:
diff changeset
788 PURPLE_INIT_PLUGIN(pidgin_audacious, init_plugin, info)