static void _list_add(Trash * trash, Config * config, char const * path, char const * filename, const time_t sixmonths) { const char ext[] = DATA_EXTENSION; const char section[] = DATA_SECTION; BrowserPluginHelper * helper = trash->helper; size_t len; GtkTreeIter iter; GdkPixbuf * pixbuf; char * p; char const * q; struct tm tm; time_t t = -1; char const * u; char buf[16]; if((len = strlen(filename)) <= sizeof(ext)) return; if(strncmp(&filename[len - sizeof(ext) + 1], ext, sizeof(ext)) != 0) return; config_reset(config); p = g_strdup_printf("%s/%s", path, filename); if(config_load(config, p) != 0 || (q = config_get(config, section, DATA_PATH)) == NULL) { g_free(p); return; } pixbuf = helper->get_icon(helper->browser, q, NULL, NULL, NULL, 24); if((u = config_get(config, section, DATA_DELETIONDATE)) != NULL && strptime(u, "%Y-%m-%dT%H:%M:%S", &tm) != NULL) { t = mktime(&tm); len = strftime(buf, sizeof(buf), (t >= sixmonths) ? "%b %e %H:%M" : "%b %e %Y", &tm); buf[len] = '\0'; u = buf; } else u = ""; _list_get_iter(trash, &iter, p); gtk_list_store_set(trash->store, &iter, TC_PIXBUF, pixbuf, TC_FILENAME, filename, TC_PATH, p, TC_PATH_ORIGINAL, q, TC_DELETED, t, TC_DELETED_DISPLAY, u, TC_UPDATED, TRUE, -1); g_free(p); }
static void _refresh_type(Properties * properties, struct stat * lst) { BrowserPluginHelper * helper = properties->helper; char const * type = NULL; GdkPixbuf * pixbuf; const int iconsize = 48; type = helper->get_type(helper->browser, properties->filename, lst->st_mode); pixbuf = helper->get_icon(helper->browser, properties->filename, type, lst, NULL, iconsize); gtk_image_set_from_pixbuf(GTK_IMAGE(properties->image), pixbuf); g_object_unref(pixbuf); if(type == NULL) type = _("Unknown type"); gtk_label_set_text(GTK_LABEL(properties->type), type); }
/* selection_refresh */ static void _selection_refresh(Selection * selection, GList * selected) { BrowserPluginHelper * helper = selection->helper; GList * l; gchar * basename; GtkTreeIter iter; GdkPixbuf * pixbuf; struct stat lst; struct stat st; struct stat * plst; struct stat * pst; size_t cnt; size_t size; char buf[64]; gtk_list_store_clear(selection->store); for(l = selected, cnt = 0, size = 0; l != NULL; l = l->next, cnt++) { plst = (lstat(l->data, &lst) == 0) ? &lst : NULL; pst = (stat(l->data, &st) == 0) ? &st : NULL; pixbuf = helper->get_icon(helper->browser, l->data, NULL, plst, pst, 16); basename = g_path_get_basename(l->data); gtk_list_store_append(selection->store, &iter); gtk_list_store_set(selection->store, &iter, SC_ICON, pixbuf, SC_FILENAME, l->data, SC_FILENAME_DISPLAY, basename, SC_SIZE, lst.st_size, SC_SIZE_DISPLAY, _common_size(lst.st_size), SC_ELLIPSIZE, PANGO_ELLIPSIZE_END, -1); g_free(basename); if(plst != NULL) size += lst.st_size; } snprintf(buf, sizeof(buf), "%lu selected (%s)", cnt, _common_size(size)); gtk_label_set_text(GTK_LABEL(selection->status), buf); }