+/*
+ *-----------------------------------------------------------------------------
+ * Command line cache maintenance program functions *-----------------------------------------------------------------------------
+ */
+static gchar *cache_maintenance_path = NULL;
+static GtkStatusIcon *status_icon;
+
+static void cache_maintenance_sim_stop_cb(gpointer data)
+{
+ exit(EXIT_SUCCESS);
+}
+
+static void cache_maintenance_render_stop_cb(gpointer data)
+{
+ gtk_status_icon_set_tooltip_text(status_icon, _("Geeqie: Creating sim data..."));
+ cache_manager_sim_remote(cache_maintenance_path, TRUE, (GDestroyNotify *)cache_maintenance_sim_stop_cb);
+}
+
+static void cache_maintenance_clean_stop_cb(gpointer data)
+{
+ gtk_status_icon_set_tooltip_text(status_icon, _("Geeqie: Creating thumbs..."));
+ cache_manager_render_remote(cache_maintenance_path, TRUE, options->thumbnails.cache_into_dirs, (GDestroyNotify *)cache_maintenance_render_stop_cb);
+}
+
+static void cache_maintenance_user_cancel_cb()
+{
+ exit(EXIT_FAILURE);
+}
+
+static void cache_maintenance_status_icon_activate_cb(GtkStatusIcon *status, gpointer data)
+{
+ GtkWidget *menu;
+ GtkWidget *item;
+
+ menu = gtk_menu_new();
+
+ item = gtk_menu_item_new_with_label("Exit Geeqie Cache Maintenance");
+
+ g_signal_connect(G_OBJECT(item), "activate", cache_maintenance_user_cancel_cb, item);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+ gtk_widget_show(item);
+
+ /* take ownership of menu */
+ g_object_ref_sink(G_OBJECT(menu));
+
+ gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
+}
+
+void cache_maintenance(const gchar *path)
+{
+ cache_maintenance_path = g_strdup(path);
+
+ status_icon = gtk_status_icon_new_from_pixbuf(pixbuf_inline(PIXBUF_INLINE_ICON));
+ gtk_status_icon_set_tooltip_text(status_icon, _("Geeqie: Cleaning thumbs..."));
+ gtk_status_icon_set_visible(status_icon, TRUE);
+ g_signal_connect(G_OBJECT(status_icon), "activate", G_CALLBACK(cache_maintenance_status_icon_activate_cb), NULL);
+
+ cache_maintain_home_remote(FALSE, FALSE, (GDestroyNotify *)cache_maintenance_clean_stop_cb);
+}