Code cleanup
This commit is contained in:
parent
cf5c211eba
commit
bd1858ff8e
@ -63,6 +63,17 @@
|
|||||||
/* Trash */
|
/* Trash */
|
||||||
/* private */
|
/* private */
|
||||||
/* types */
|
/* types */
|
||||||
|
typedef enum _TrashColumn
|
||||||
|
{
|
||||||
|
TC_PIXBUF = 0,
|
||||||
|
TC_PATH,
|
||||||
|
TC_PATH_ORIGINAL,
|
||||||
|
TC_DELETED,
|
||||||
|
TC_DELETED_DISPLAY
|
||||||
|
} TrashColumn;
|
||||||
|
#define TC_LAST TC_DELETED_DISPLAY
|
||||||
|
#define TC_COUNT (TC_LAST + 1)
|
||||||
|
|
||||||
typedef struct _BrowserPlugin
|
typedef struct _BrowserPlugin
|
||||||
{
|
{
|
||||||
BrowserPluginHelper * helper;
|
BrowserPluginHelper * helper;
|
||||||
@ -82,7 +93,7 @@ static void _trash_destroy(Trash * trash);
|
|||||||
static GtkWidget * _trash_get_widget(Trash * trash);
|
static GtkWidget * _trash_get_widget(Trash * trash);
|
||||||
static void _trash_refresh(Trash * trash, GList * selection);
|
static void _trash_refresh(Trash * trash, GList * selection);
|
||||||
|
|
||||||
static void _trash_refresh_trash(Trash * trash);
|
static void _trash_list(Trash * trash);
|
||||||
|
|
||||||
/* callbacks */
|
/* callbacks */
|
||||||
static void _trash_on_select_all(gpointer data);
|
static void _trash_on_select_all(gpointer data);
|
||||||
@ -125,7 +136,8 @@ static Trash * _trash_init(BrowserPluginHelper * helper)
|
|||||||
trash->widget = gtk_vbox_new(FALSE, 0);
|
trash->widget = gtk_vbox_new(FALSE, 0);
|
||||||
#endif
|
#endif
|
||||||
widget = gtk_toolbar_new();
|
widget = gtk_toolbar_new();
|
||||||
/* FIXME handle sensitiveness */
|
/* FIXME handle sensitiveness of toolbar buttons */
|
||||||
|
/* move to trash */
|
||||||
toolitem = gtk_tool_button_new(NULL, _(TEXT_MOVETOTRASH));
|
toolitem = gtk_tool_button_new(NULL, _(TEXT_MOVETOTRASH));
|
||||||
#if GTK_CHECK_VERSION(2, 8, 0)
|
#if GTK_CHECK_VERSION(2, 8, 0)
|
||||||
gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), PLUGIN_ICON);
|
gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(toolitem), PLUGIN_ICON);
|
||||||
@ -140,6 +152,11 @@ static Trash * _trash_init(BrowserPluginHelper * helper)
|
|||||||
g_signal_connect_swapped(toolitem, "clicked", G_CALLBACK(
|
g_signal_connect_swapped(toolitem, "clicked", G_CALLBACK(
|
||||||
_trash_on_select_all), trash);
|
_trash_on_select_all), trash);
|
||||||
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
||||||
|
/* restore */
|
||||||
|
toolitem = gtk_tool_button_new_from_stock(GTK_STOCK_UNDO);
|
||||||
|
/* FIXME handle the signal */
|
||||||
|
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
||||||
|
/* delete */
|
||||||
toolitem = gtk_tool_button_new_from_stock(GTK_STOCK_DELETE);
|
toolitem = gtk_tool_button_new_from_stock(GTK_STOCK_DELETE);
|
||||||
/* FIXME handle the signal */
|
/* FIXME handle the signal */
|
||||||
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
gtk_toolbar_insert(GTK_TOOLBAR(widget), toolitem, -1);
|
||||||
@ -147,8 +164,9 @@ static Trash * _trash_init(BrowserPluginHelper * helper)
|
|||||||
widget = gtk_scrolled_window_new(NULL, NULL);
|
widget = gtk_scrolled_window_new(NULL, NULL);
|
||||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget),
|
||||||
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||||
trash->store = gtk_list_store_new(5, GDK_TYPE_PIXBUF, G_TYPE_STRING,
|
trash->store = gtk_list_store_new(TC_COUNT, GDK_TYPE_PIXBUF,
|
||||||
G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING);
|
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT,
|
||||||
|
G_TYPE_STRING);
|
||||||
trash->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(
|
trash->view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(
|
||||||
trash->store));
|
trash->store));
|
||||||
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(trash->view), TRUE);
|
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(trash->view), TRUE);
|
||||||
@ -157,18 +175,18 @@ static Trash * _trash_init(BrowserPluginHelper * helper)
|
|||||||
/* icon */
|
/* icon */
|
||||||
renderer = gtk_cell_renderer_pixbuf_new();
|
renderer = gtk_cell_renderer_pixbuf_new();
|
||||||
column = gtk_tree_view_column_new_with_attributes("", renderer,
|
column = gtk_tree_view_column_new_with_attributes("", renderer,
|
||||||
"pixbuf", 0, NULL);
|
"pixbuf", TC_PIXBUF, NULL);
|
||||||
gtk_tree_view_append_column(GTK_TREE_VIEW(trash->view), column);
|
gtk_tree_view_append_column(GTK_TREE_VIEW(trash->view), column);
|
||||||
/* path to the original file */
|
/* path to the original file */
|
||||||
renderer = gtk_cell_renderer_text_new();
|
renderer = gtk_cell_renderer_text_new();
|
||||||
column = gtk_tree_view_column_new_with_attributes(_("Filename"),
|
column = gtk_tree_view_column_new_with_attributes(_("Filename"),
|
||||||
renderer, "text", 2, NULL);
|
renderer, "text", TC_PATH_ORIGINAL, NULL);
|
||||||
gtk_tree_view_column_set_resizable(column, TRUE);
|
gtk_tree_view_column_set_resizable(column, TRUE);
|
||||||
gtk_tree_view_append_column(GTK_TREE_VIEW(trash->view), column);
|
gtk_tree_view_append_column(GTK_TREE_VIEW(trash->view), column);
|
||||||
/* timestamp */
|
/* timestamp */
|
||||||
renderer = gtk_cell_renderer_text_new();
|
renderer = gtk_cell_renderer_text_new();
|
||||||
column = gtk_tree_view_column_new_with_attributes(_(TEXT_DELETED),
|
column = gtk_tree_view_column_new_with_attributes(_(TEXT_DELETED),
|
||||||
renderer, "text", 4, NULL);
|
renderer, "text", TC_DELETED_DISPLAY, NULL);
|
||||||
gtk_tree_view_append_column(GTK_TREE_VIEW(trash->view), column);
|
gtk_tree_view_append_column(GTK_TREE_VIEW(trash->view), column);
|
||||||
gtk_container_add(GTK_CONTAINER(widget), trash->view);
|
gtk_container_add(GTK_CONTAINER(widget), trash->view);
|
||||||
gtk_box_pack_start(GTK_BOX(trash->widget), widget, TRUE, TRUE, 0);
|
gtk_box_pack_start(GTK_BOX(trash->widget), widget, TRUE, TRUE, 0);
|
||||||
@ -212,10 +230,10 @@ static void _trash_refresh(Trash * trash, GList * selection)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* trash_refresh_trash */
|
/* trash_list */
|
||||||
static char * _refresh_path(void);
|
static char * _list_path(void);
|
||||||
|
|
||||||
static void _trash_refresh_trash(Trash * trash)
|
static void _trash_list(Trash * trash)
|
||||||
{
|
{
|
||||||
const char ext[] = DATA_EXTENSION;
|
const char ext[] = DATA_EXTENSION;
|
||||||
const char section[] = DATA_SECTION;
|
const char section[] = DATA_SECTION;
|
||||||
@ -232,9 +250,11 @@ static void _trash_refresh_trash(Trash * trash)
|
|||||||
struct tm tm;
|
struct tm tm;
|
||||||
time_t t;
|
time_t t;
|
||||||
char const * u;
|
char const * u;
|
||||||
|
time_t sixmonths;
|
||||||
|
char buf[16];
|
||||||
|
|
||||||
/* FIXME report errors */
|
/* FIXME report errors */
|
||||||
if((path = _refresh_path()) == NULL)
|
if((path = _list_path()) == NULL)
|
||||||
return;
|
return;
|
||||||
if((config = config_new()) == NULL)
|
if((config = config_new()) == NULL)
|
||||||
{
|
{
|
||||||
@ -248,6 +268,7 @@ static void _trash_refresh_trash(Trash * trash)
|
|||||||
free(path);
|
free(path);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
sixmonths = time(NULL) - 15552000;
|
||||||
gtk_list_store_clear(trash->store);
|
gtk_list_store_clear(trash->store);
|
||||||
while((de = readdir(dir)) != NULL)
|
while((de = readdir(dir)) != NULL)
|
||||||
{
|
{
|
||||||
@ -271,20 +292,26 @@ static void _trash_refresh_trash(Trash * trash)
|
|||||||
if((u = config_get(config, section, DATA_DELETIONDATE)) != NULL
|
if((u = config_get(config, section, DATA_DELETIONDATE)) != NULL
|
||||||
&& strptime(u, "%Y-%m-%dT%H:%M:%S", &tm)
|
&& strptime(u, "%Y-%m-%dT%H:%M:%S", &tm)
|
||||||
!= NULL)
|
!= NULL)
|
||||||
/* XXX also format u in a nicer way */
|
{
|
||||||
t = mktime(&tm);
|
t = mktime(&tm);
|
||||||
|
len = strftime(buf, sizeof(buf), (t < sixmonths)
|
||||||
|
? "%b %e %H:%M" : "%b %e %Y", &tm);
|
||||||
|
buf[len] = '\0';
|
||||||
|
u = buf;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
u = "";
|
u = "";
|
||||||
gtk_list_store_append(trash->store, &iter);
|
gtk_list_store_append(trash->store, &iter);
|
||||||
gtk_list_store_set(trash->store, &iter, 0, pixbuf, 1, p, 2, q,
|
gtk_list_store_set(trash->store, &iter, TC_PIXBUF, pixbuf,
|
||||||
3, t, 4, u, -1);
|
TC_PATH, p, TC_PATH_ORIGINAL, q,
|
||||||
|
TC_DELETED, t, TC_DELETED_DISPLAY, u, -1);
|
||||||
g_free(p);
|
g_free(p);
|
||||||
}
|
}
|
||||||
config_delete(config);
|
config_delete(config);
|
||||||
free(path);
|
free(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char * _refresh_path(void)
|
static char * _list_path(void)
|
||||||
{
|
{
|
||||||
const char fallback[] = ".local/share";
|
const char fallback[] = ".local/share";
|
||||||
const char trash[] = DATA_TRASHINFO;
|
const char trash[] = DATA_TRASHINFO;
|
||||||
@ -321,7 +348,7 @@ static gboolean _trash_on_timeout(gpointer data)
|
|||||||
Trash * trash = data;
|
Trash * trash = data;
|
||||||
|
|
||||||
trash->source = 0;
|
trash->source = 0;
|
||||||
_trash_refresh_trash(trash);
|
_trash_list(trash);
|
||||||
/* FIXME refresh only if necessary */
|
/* FIXME refresh only if necessary */
|
||||||
trash->source = g_timeout_add(5000, _trash_on_timeout, trash);
|
trash->source = g_timeout_add(5000, _trash_on_timeout, trash);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
Loading…
Reference in New Issue
Block a user