Link Here
|
92 |
|
92 |
|
93 |
/* We got an rss feed from a tab */ |
93 |
/* We got an rss feed from a tab */ |
94 |
static void |
94 |
static void |
95 |
ephy_rss_ge_feed_cb (EphyEmbed *embed, |
95 |
ephy_rss_ge_feed_cb (EphyWebView *view, |
96 |
const char *type, |
96 |
const char *type, |
97 |
const char *title, |
97 |
const char *title, |
98 |
const char *address, |
98 |
const char *address, |
Link Here
|
100 |
{ |
100 |
{ |
101 |
FeedList *list; |
101 |
FeedList *list; |
102 |
|
102 |
|
103 |
list = (FeedList *) g_object_steal_data (G_OBJECT (embed), FEEDLIST_DATA_KEY); |
103 |
list = (FeedList *) g_object_steal_data (G_OBJECT (view), FEEDLIST_DATA_KEY); |
104 |
list = rss_feedlist_add (list, type, title, address); |
104 |
list = rss_feedlist_add (list, type, title, address); |
105 |
g_object_set_data_full (G_OBJECT (embed), FEEDLIST_DATA_KEY, list, |
105 |
g_object_set_data_full (G_OBJECT (view), FEEDLIST_DATA_KEY, list, |
106 |
(GDestroyNotify) rss_feedlist_free); |
106 |
(GDestroyNotify) rss_feedlist_free); |
107 |
|
107 |
|
108 |
LOG ("Got a new feed for the site: type=%s, title=%s, address=%s\nWe now have %d feeds", type, title, address, rss_feedlist_length (list)); |
108 |
LOG ("Got a new feed for the site: type=%s, title=%s, address=%s\nWe now have %d feeds", type, title, address, rss_feedlist_length (list)); |
Link Here
|
114 |
ephy_rss_feed_subscribe_cb (GtkAction *action, |
114 |
ephy_rss_feed_subscribe_cb (GtkAction *action, |
115 |
EphyWindow *window) |
115 |
EphyWindow *window) |
116 |
{ |
116 |
{ |
117 |
const GValue *value; |
117 |
GValue value = { 0, }; |
118 |
GError *error = NULL; |
118 |
GError *error = NULL; |
119 |
EphyEmbedEvent *event; |
119 |
EphyEmbedEvent *event; |
120 |
gboolean success; |
120 |
gboolean success; |
Link Here
|
127 |
event = ephy_window_get_context_event (window); |
127 |
event = ephy_window_get_context_event (window); |
128 |
if (event == NULL) return; |
128 |
if (event == NULL) return; |
129 |
|
129 |
|
130 |
value = ephy_embed_event_get_property (event, "link"); |
130 |
ephy_embed_event_get_property (event, "link", &value); |
131 |
|
131 |
|
132 |
if (!dbus_g_proxy_call (extension->priv->proxy, RSS_DBUS_SUBSCRIBE, &error, |
132 |
if (!dbus_g_proxy_call (extension->priv->proxy, RSS_DBUS_SUBSCRIBE, &error, |
133 |
G_TYPE_STRING, g_value_get_string (value), |
133 |
G_TYPE_STRING, g_value_get_string (&value), |
134 |
G_TYPE_INVALID, |
134 |
G_TYPE_INVALID, |
135 |
G_TYPE_BOOLEAN, &success, |
135 |
G_TYPE_BOOLEAN, &success, |
136 |
G_TYPE_INVALID)) |
136 |
G_TYPE_INVALID)) |
Link Here
|
140 |
} |
140 |
} |
141 |
|
141 |
|
142 |
g_object_set(action, "sensitive", FALSE, "visible", FALSE, NULL); |
142 |
g_object_set(action, "sensitive", FALSE, "visible", FALSE, NULL); |
|
|
143 |
g_value_unset (&value); |
143 |
} |
144 |
} |
144 |
|
145 |
|
145 |
static gboolean |
146 |
static gboolean |
146 |
ephy_rss_ge_context_cb (EphyEmbed *embed, |
147 |
ephy_rss_ge_context_cb (EphyWebView *view, |
147 |
EphyEmbedEvent *event, |
148 |
EphyEmbedEvent *event, |
148 |
EphyWindow *window) |
149 |
EphyWindow *window) |
149 |
{ |
150 |
{ |
150 |
WindowData *data; |
151 |
WindowData *data; |
151 |
const GValue *value; |
152 |
GValue *value = NULL; |
152 |
const char *address; |
153 |
const char *address; |
153 |
FeedList *list; |
154 |
FeedList *list; |
154 |
gboolean active = FALSE; |
155 |
gboolean active = FALSE; |
155 |
|
156 |
|
156 |
list = (FeedList *) g_object_get_data (G_OBJECT (embed), FEEDLIST_DATA_KEY); |
157 |
list = (FeedList *) g_object_get_data (G_OBJECT (view), FEEDLIST_DATA_KEY); |
157 |
if ((ephy_embed_event_get_context (event) & EPHY_EMBED_CONTEXT_LINK) && (list != NULL)) |
158 |
if ((ephy_embed_event_get_context (event) & WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK) && (list != NULL)) |
158 |
{ |
159 |
{ |
159 |
LOG ("Context menu on a link"); |
160 |
LOG ("Context menu on a link"); |
160 |
data = (WindowData *) g_object_get_data (G_OBJECT (window), WINDOW_DATA_KEY); |
161 |
data = (WindowData *) g_object_get_data (G_OBJECT (window), WINDOW_DATA_KEY); |
161 |
g_return_val_if_fail (data != NULL, FALSE); |
162 |
g_return_val_if_fail (data != NULL, FALSE); |
162 |
|
163 |
|
163 |
value = ephy_embed_event_get_property (event, "link"); |
164 |
ephy_embed_event_get_property (event, "link", value); |
164 |
address = g_value_get_string (value); |
165 |
address = g_value_get_string (value); |
165 |
|
166 |
|
166 |
active = rss_feedlist_contains (list, address); |
167 |
active = rss_feedlist_contains (list, address); |
Link Here
|
177 |
{ |
178 |
{ |
178 |
EphyRssExtensionPrivate *priv; |
179 |
EphyRssExtensionPrivate *priv; |
179 |
EphyEmbed *embed; |
180 |
EphyEmbed *embed; |
|
|
181 |
EphyWebView *view; |
180 |
FeedList *list; |
182 |
FeedList *list; |
181 |
WindowData *data; |
183 |
WindowData *data; |
182 |
|
184 |
|
Link Here
|
187 |
|
189 |
|
188 |
embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window)); |
190 |
embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window)); |
189 |
g_return_if_fail (embed != NULL); |
191 |
g_return_if_fail (embed != NULL); |
|
|
192 |
view = ephy_embed_get_web_view (embed); |
193 |
g_return_if_fail (view != NULL); |
190 |
|
194 |
|
191 |
list = (FeedList *) g_object_get_data (G_OBJECT (embed), FEEDLIST_DATA_KEY); |
195 |
list = (FeedList *) g_object_get_data (G_OBJECT (view), FEEDLIST_DATA_KEY); |
192 |
if (list == NULL) |
196 |
if (list == NULL) |
193 |
return; |
197 |
return; |
194 |
|
198 |
|
Link Here
|
253 |
FeedList *list; |
257 |
FeedList *list; |
254 |
gboolean show = TRUE; |
258 |
gboolean show = TRUE; |
255 |
EphyEmbed *embed; |
259 |
EphyEmbed *embed; |
|
|
260 |
EphyWebView *view; |
256 |
|
261 |
|
257 |
embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window)); |
262 |
embed = ephy_embed_container_get_active_child (EPHY_EMBED_CONTAINER (window)); |
|
|
263 |
g_return_if_fail (embed != NULL); |
264 |
view = ephy_embed_get_web_view (embed); |
265 |
g_return_if_fail (view != NULL); |
258 |
|
266 |
|
259 |
/* The page is loaded, do we have a feed ? */ |
267 |
/* The page is loaded, do we have a feed ? */ |
260 |
list = (FeedList *) g_object_get_data (G_OBJECT (embed), FEEDLIST_DATA_KEY); |
268 |
list = (FeedList *) g_object_get_data (G_OBJECT (view), FEEDLIST_DATA_KEY); |
261 |
|
269 |
|
262 |
show = rss_feedlist_length (list) > 0; |
270 |
show = rss_feedlist_length (list) > 0; |
263 |
|
271 |
|
Link Here
|
295 |
|
303 |
|
296 |
g_return_if_fail (EPHY_IS_EMBED (embed)); |
304 |
g_return_if_fail (EPHY_IS_EMBED (embed)); |
297 |
|
305 |
|
298 |
view = EPHY_GET_EPHY_WEB_VIEW_FROM_EMBED (embed); |
306 |
view = ephy_embed_get_web_view (embed); |
299 |
|
307 |
|
300 |
/* Notify when a new rss feed is parsed */ |
308 |
/* Notify when a new rss feed is parsed */ |
301 |
g_signal_connect_after (view, "new-document-now", |
309 |
g_signal_connect_after (view, "new-document-now", |
302 |
G_CALLBACK (ephy_rss_ge_content_cb), window); |
310 |
G_CALLBACK (ephy_rss_ge_content_cb), window); |
303 |
g_signal_connect_after (view, "ge-feed-link", |
311 |
g_signal_connect_after (view, "ge-feed-link", |
304 |
G_CALLBACK (ephy_rss_ge_feed_cb), window); |
312 |
G_CALLBACK (ephy_rss_ge_feed_cb), window); |
|
|
313 |
/* |
305 |
g_signal_connect (view, "ge-context-menu", |
314 |
g_signal_connect (view, "ge-context-menu", |
306 |
G_CALLBACK (ephy_rss_ge_context_cb), window); |
315 |
G_CALLBACK (ephy_rss_ge_context_cb), window); |
|
|
316 |
*/ |
307 |
} |
317 |
} |
308 |
|
318 |
|
309 |
/* Stop listening for the detached tab rss feeds */ |
319 |
/* Stop listening for the detached tab rss feeds */ |
Link Here
|
323 |
g_signal_handlers_disconnect_by_func |
333 |
g_signal_handlers_disconnect_by_func |
324 |
(embed, G_CALLBACK (ephy_rss_ge_content_cb), window); |
334 |
(embed, G_CALLBACK (ephy_rss_ge_content_cb), window); |
325 |
|
335 |
|
|
|
336 |
/* |
326 |
g_signal_handlers_disconnect_by_func |
337 |
g_signal_handlers_disconnect_by_func |
327 |
(embed, G_CALLBACK (ephy_rss_ge_context_cb), window); |
338 |
(embed, G_CALLBACK (ephy_rss_ge_context_cb), window); |
|
|
339 |
*/ |
328 |
|
340 |
|
329 |
/* destroy data */ |
341 |
/* destroy data */ |
330 |
g_object_set_data (G_OBJECT (embed), FEEDLIST_DATA_KEY, NULL); |
342 |
g_object_set_data (G_OBJECT (embed), FEEDLIST_DATA_KEY, NULL); |