diff options
Diffstat (limited to 'src/nautilus-recent.c')
-rw-r--r-- | src/nautilus-recent.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/nautilus-recent.c b/src/nautilus-recent.c new file mode 100644 index 000000000..1e23a58dc --- /dev/null +++ b/src/nautilus-recent.c @@ -0,0 +1,80 @@ +/* + * 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, see <http://www.gnu.org/licenses/>. + */ + +#include "config.h" +#include "nautilus-recent.h" + +#include <eel/eel-vfs-extensions.h> + +#define DEFAULT_APP_EXEC "gnome-open %u" + +static GtkRecentManager * +nautilus_recent_get_manager (void) +{ + static GtkRecentManager *manager = NULL; + + if (manager == NULL) { + manager = gtk_recent_manager_get_default (); + } + + return manager; +} + +void +nautilus_recent_add_file (NautilusFile *file, + GAppInfo *application) +{ + GtkRecentData recent_data; + char *uri; + + uri = nautilus_file_get_activation_uri (file); + if (uri == NULL) { + uri = nautilus_file_get_uri (file); + } + + /* do not add trash:// etc */ + if (eel_uri_is_trash (uri) || + eel_uri_is_search (uri) || + eel_uri_is_recent (uri) || + eel_uri_is_desktop (uri)) { + g_free (uri); + return; + } + + recent_data.display_name = NULL; + recent_data.description = NULL; + + recent_data.mime_type = nautilus_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 (nautilus_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); +} |