void on_toggle_unread_status (GtkMenuItem *menuitem, gpointer user_data) { itemPtr item; item = itemlist_get_selected (); if (item) { itemlist_toggle_read_status (item); item_unload (item); } }
void on_toggle_item_flag (GtkMenuItem *menuitem, gpointer user_data) { itemPtr item; item = itemlist_get_selected (); if (item) { itemlist_toggle_flag (item); item_unload (item); } }
void on_remove_item_activate (GtkMenuItem *menuitem, gpointer user_data) { itemPtr item; item = itemlist_get_selected (); if (item) { itemlist_remove_item (item); } else { liferea_shell_set_important_status_bar (_("No item has been selected")); } }
void on_popup_social_bm_item_selected (void) { itemPtr item; item = itemlist_get_selected (); if (item) { social_add_bookmark (item); item_unload (item); } else liferea_shell_set_important_status_bar (_("No item has been selected")); }
void on_popup_launchitem_selected (void) { itemPtr item; item = itemlist_get_selected (); if (item) { gchar *link = item_make_link (item); itemview_launch_URL (link, FALSE); g_free (link); item_unload (item); } else { liferea_shell_set_important_status_bar (_("No item has been selected")); } }
void on_popup_copy_URL_clipboard (void) { itemPtr item; item = itemlist_get_selected (); if (item) { gchar *link = item_make_link (item); gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_PRIMARY), link, -1); gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_CLIPBOARD), link, -1); g_free (link); item_unload (item); } else { liferea_shell_set_important_status_bar (_("No item has been selected")); } }
void on_popup_launchitem_in_tab_selected (void) { itemPtr item; gchar *link; item = itemlist_get_selected (); if (item) { link = item_make_link (item); if (link) { browser_tabs_add_new (link, link, FALSE); g_free (link); } else ui_show_error_box (_("This item has no link specified!")); item_unload (item); } else { liferea_shell_set_important_status_bar (_("No item has been selected")); } }
void htmlview_update (LifereaHtmlView *htmlview, itemViewMode mode) { GSList *iter; GString *output; itemPtr item = NULL; gchar *baseURL = NULL; gboolean summaryMode; /* determine base URL */ switch (mode) { case ITEMVIEW_SINGLE_ITEM: item = itemlist_get_selected (); if(item) { baseURL = (gchar *)node_get_base_url (node_from_id (item->nodeId)); item_unload (item); } break; default: if (htmlView_priv.node) baseURL = (gchar *) node_get_base_url (htmlView_priv.node); break; } if (baseURL) baseURL = g_markup_escape_text (baseURL, -1); output = g_string_new (NULL); htmlview_start_output (output, baseURL, TRUE, TRUE); /* HTML view updating means checking which items need to be updated, render them and then concatenate everything from cache and output it */ switch (mode) { case ITEMVIEW_SINGLE_ITEM: item = itemlist_get_selected (); if (item) { gchar *html = htmlview_render_item (item, mode, FALSE); if (html) { g_string_append (output, html); g_free (html); } item_unload (item); } break; case ITEMVIEW_ALL_ITEMS: /* Output optimization for feeds without item content. This is not done for folders, because we only support all items in summary mode or all in detailed mode. With folder item sets displaying everything in summary because of only a single feed without item descriptions would make no sense. */ summaryMode = (NULL != htmlView_priv.node) && !IS_FOLDER (htmlView_priv.node) && !IS_VFOLDER (htmlView_priv.node) && (htmlView_priv.missingContent > 3); /* concatenate all items */ iter = htmlView_priv.orderedChunks; while (iter) { /* try to retrieve item HTML chunk from cache */ htmlChunkPtr chunk = (htmlChunkPtr)iter->data; /* if not found: render new item now and add to cache */ if (!chunk->html) { item = item_load (chunk->id); if (item) { debug1 (DEBUG_HTML, "rendering item to HTML view: >>>%s<<<", item_get_title (item)); chunk->html = htmlview_render_item (item, mode, summaryMode); item_unload (item); } } if (chunk->html) g_string_append (output, chunk->html); iter = g_slist_next (iter); } break; case ITEMVIEW_NODE_INFO: { gchar *html; if (htmlView_priv.node) { html = node_render (htmlView_priv.node); if (html) { g_string_append (output, html); g_free (html); } } } break; default: g_warning ("HTML view: invalid viewing mode!!!"); break; } htmlview_finish_output (output); debug1 (DEBUG_HTML, "writing %d bytes to HTML view", strlen (output->str)); liferea_htmlview_write (htmlview, output->str, baseURL); g_string_free (output, TRUE); g_free (baseURL); }