static void cancelDownloadCallback(GtkWidget *button, BrowserDownloadDialog *dialog) { GtkTreeModel * model; GtkTreeIter iter; WebKitDownload *wkDownload; if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(dialog->select), &model, &iter)) { gtk_tree_model_get (GTK_TREE_MODEL(dialog->model), &iter, 7, &wkDownload, -1); if(wkDownload) { webkit_download_cancel(WEBKIT_DOWNLOAD(wkDownload)); gtk_list_store_remove(dialog->model, &iter); return; } char *treeviewIndex = g_strdup_printf("%s", gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(dialog->model), &iter)); if(treeviewIndex) { size_t listIndex = atoi(treeviewIndex); DeleteList(dialog->download,listIndex); } g_printerr("store_remove\n"); gtk_list_store_remove(dialog->model, &iter); } }
void changed_download_progress(GObject *obj, GParamSpec *pspec, gpointer data) { WebKitDownload *download = WEBKIT_DOWNLOAD(obj); WebKitURIResponse *resp; GtkToolItem *tb = GTK_TOOL_ITEM(data); gdouble p, size_mb; const gchar *uri; gchar *t, *filename, *base; p = webkit_download_get_estimated_progress(download) * 100; resp = webkit_download_get_response(download); size_mb = webkit_uri_response_get_content_length(resp) / 1e6; uri = webkit_download_get_destination(download); filename = g_filename_from_uri(uri, NULL, NULL); if (filename == NULL) { /* This really should not happen because WebKit uses that URI to * write to a file... */ fprintf(stderr, __NAME__": Could not construct file name from URI!\n"); t = g_strdup_printf("%s (%.0f%% of %.1f MB)", webkit_uri_response_get_uri(resp), p, size_mb); } else { base = g_path_get_basename(filename); t = g_strdup_printf("%s (%.0f%% of %.1f MB)", base, p, size_mb); g_free(filename); g_free(base); } gtk_tool_button_set_label(GTK_TOOL_BUTTON(tb), t); g_free(t); }
void downloadmanager_cancel(GtkToolButton *tb, gpointer data) { WebKitDownload *download = WEBKIT_DOWNLOAD(data); webkit_download_cancel(download); g_object_unref(download); gtk_widget_destroy(GTK_WIDGET(tb)); }
static void notify_status_cb(GObject* object, GParamSpec* pspec, gpointer data) { WebKitDownload* download = WEBKIT_DOWNLOAD(object); switch (webkit_download_get_status(download)) { case WEBKIT_DOWNLOAD_STATUS_FINISHED: case WEBKIT_DOWNLOAD_STATUS_ERROR: g_main_loop_quit(loop); break; case WEBKIT_DOWNLOAD_STATUS_CANCELLED: g_assert_not_reached(); break; default: break; } }