summaryrefslogtreecommitdiff
path: root/libcaja-private/caja-recent.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcaja-private/caja-recent.c')
-rw-r--r--libcaja-private/caja-recent.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/libcaja-private/caja-recent.c b/libcaja-private/caja-recent.c
new file mode 100644
index 00000000..7d496678
--- /dev/null
+++ b/libcaja-private/caja-recent.c
@@ -0,0 +1,80 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2002 James Willcox
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "caja-recent.h"
+
+#include <eel/eel-vfs-extensions.h>
+
+#define DEFAULT_APP_EXEC "mate-open %u"
+
+static GtkRecentManager *
+caja_recent_get_manager (void)
+{
+ static GtkRecentManager *manager = NULL;
+
+ if (manager == NULL)
+ {
+ manager = gtk_recent_manager_get_default ();
+ }
+
+ return manager;
+}
+
+void
+caja_recent_add_file (CajaFile *file,
+ GAppInfo *application)
+{
+ GtkRecentData recent_data;
+ char *uri;
+
+ uri = caja_file_get_uri (file);
+
+ /* do not add trash:// etc */
+ if (eel_uri_is_trash (uri) ||
+ eel_uri_is_search (uri) ||
+ eel_uri_is_desktop (uri))
+ {
+ g_free (uri);
+ return;
+ }
+
+ recent_data.display_name = NULL;
+ recent_data.description = NULL;
+
+ recent_data.mime_type = caja_file_get_mime_type (file);
+ recent_data.app_name = g_strdup (g_get_application_name ());
+
+ if (application != NULL)
+ recent_data.app_exec = g_strdup (g_app_info_get_commandline (application));
+ else
+ recent_data.app_exec = g_strdup (DEFAULT_APP_EXEC);
+
+ recent_data.groups = NULL;
+ recent_data.is_private = FALSE;
+
+ gtk_recent_manager_add_full (caja_recent_get_manager (),
+ uri, &recent_data);
+
+ g_free (recent_data.mime_type);
+ g_free (recent_data.app_name);
+ g_free (recent_data.app_exec);
+
+ g_free (uri);
+}