mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-06-30 23:46:35 +00:00
recent-servers: Expose functions for UI
For the purpose of these functions, there is no need to set up a file monitor, nor for the NautilusRecentServers object at all. But they are provided here to keep context and reuse server_list_load(). The network address bar is going to be adding servers to the list, while the upcoming network view is going to allow to remove them.
This commit is contained in:
parent
0a78f8cee2
commit
b72f62f65c
|
@ -10,6 +10,8 @@
|
|||
#include <glib/gi18n.h>
|
||||
#include <adwaita.h>
|
||||
|
||||
#include "nautilus-recent-servers.h"
|
||||
|
||||
struct _NautilusNetworkAddressBar
|
||||
{
|
||||
GtkBox parent_instance;
|
||||
|
@ -90,9 +92,7 @@ server_mount_ready_cb (GObject *source_file,
|
|||
|
||||
if (should_show)
|
||||
{
|
||||
#if 0
|
||||
server_list_add_server (self, location);
|
||||
#endif
|
||||
nautilus_add_recent_server (location);
|
||||
|
||||
/*
|
||||
* Only clear the entry if it successfully connects to the server.
|
||||
|
|
|
@ -18,14 +18,11 @@ struct _NautilusRecentServers
|
|||
|
||||
GHashTable *server_infos;
|
||||
|
||||
GFile *server_list_file;
|
||||
GFileMonitor *server_list_monitor;
|
||||
|
||||
guint loading : 1;
|
||||
};
|
||||
|
||||
static void populate_servers (NautilusRecentServers *self);
|
||||
|
||||
static void nautilus_recent_servers_set_loading (NautilusRecentServers *self,
|
||||
gboolean loading);
|
||||
|
||||
|
@ -50,13 +47,36 @@ static GParamSpec *properties[LAST_PROP];
|
|||
static guint signals[LAST_SIGNAL];
|
||||
|
||||
static void
|
||||
server_file_changed_cb (NautilusRecentServers *self)
|
||||
ensure_monitor (NautilusRecentServers *self)
|
||||
{
|
||||
populate_servers (self);
|
||||
if (self->server_list_monitor != NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
g_autofree char *filename = g_build_filename (g_get_user_config_dir (), "gtk-4.0", "servers", NULL);
|
||||
g_autoptr (GFile) server_list_file = g_file_new_for_path (filename);
|
||||
g_autoptr (GError) error = NULL;
|
||||
|
||||
self->server_list_monitor = g_file_monitor_file (server_list_file,
|
||||
G_FILE_MONITOR_NONE,
|
||||
NULL,
|
||||
&error);
|
||||
|
||||
if (error != NULL)
|
||||
{
|
||||
g_warning ("Cannot monitor server file: %s", error->message);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_signal_connect_object (self->server_list_monitor, "changed",
|
||||
G_CALLBACK (nautilus_recent_servers_force_reload), self,
|
||||
G_CONNECT_SWAPPED);
|
||||
}
|
||||
}
|
||||
|
||||
static GBookmarkFile *
|
||||
server_list_load (NautilusRecentServers *self)
|
||||
server_list_load (void)
|
||||
{
|
||||
GBookmarkFile *bookmarks;
|
||||
GError *error = NULL;
|
||||
|
@ -82,35 +102,6 @@ server_list_load (NautilusRecentServers *self)
|
|||
g_clear_error (&error);
|
||||
}
|
||||
|
||||
/* Monitor the file in case it's modified outside this code */
|
||||
if (!self->server_list_monitor)
|
||||
{
|
||||
self->server_list_file = g_file_new_for_path (filename);
|
||||
|
||||
if (self->server_list_file)
|
||||
{
|
||||
self->server_list_monitor = g_file_monitor_file (self->server_list_file,
|
||||
G_FILE_MONITOR_NONE,
|
||||
NULL,
|
||||
&error);
|
||||
|
||||
if (error)
|
||||
{
|
||||
g_warning ("Cannot monitor server file: %s", error->message);
|
||||
g_clear_error (&error);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_signal_connect_swapped (self->server_list_monitor,
|
||||
"changed",
|
||||
G_CALLBACK (server_file_changed_cb),
|
||||
self);
|
||||
}
|
||||
}
|
||||
|
||||
g_clear_object (&self->server_list_file);
|
||||
}
|
||||
|
||||
g_free (datadir);
|
||||
g_free (filename);
|
||||
|
||||
|
@ -127,9 +118,8 @@ server_list_save (GBookmarkFile *bookmarks)
|
|||
g_free (filename);
|
||||
}
|
||||
|
||||
G_GNUC_UNUSED static void
|
||||
server_list_add_server (NautilusRecentServers *self,
|
||||
GFile *file)
|
||||
void
|
||||
nautilus_add_recent_server (GFile *file)
|
||||
{
|
||||
GBookmarkFile *bookmarks;
|
||||
GFileInfo *info;
|
||||
|
@ -140,7 +130,7 @@ server_list_add_server (NautilusRecentServers *self,
|
|||
GDateTime *now;
|
||||
|
||||
error = NULL;
|
||||
bookmarks = server_list_load (self);
|
||||
bookmarks = server_list_load ();
|
||||
|
||||
if (!bookmarks)
|
||||
{
|
||||
|
@ -170,13 +160,12 @@ server_list_add_server (NautilusRecentServers *self,
|
|||
g_free (uri);
|
||||
}
|
||||
|
||||
G_GNUC_UNUSED static void
|
||||
server_list_remove_server (NautilusRecentServers *self,
|
||||
const char *uri)
|
||||
void
|
||||
nautilus_remove_recent_server (const char *uri)
|
||||
{
|
||||
GBookmarkFile *bookmarks;
|
||||
|
||||
bookmarks = server_list_load (self);
|
||||
bookmarks = server_list_load ();
|
||||
|
||||
if (!bookmarks)
|
||||
{
|
||||
|
@ -194,7 +183,6 @@ nautilus_recent_servers_finalize (GObject *object)
|
|||
{
|
||||
NautilusRecentServers *self = (NautilusRecentServers *) object;
|
||||
|
||||
g_clear_object (&self->server_list_file);
|
||||
g_clear_object (&self->server_list_monitor);
|
||||
g_clear_pointer (&self->server_infos, g_hash_table_destroy);
|
||||
|
||||
|
@ -204,12 +192,7 @@ nautilus_recent_servers_finalize (GObject *object)
|
|||
static void
|
||||
nautilus_recent_servers_dispose (GObject *object)
|
||||
{
|
||||
NautilusRecentServers *self = (NautilusRecentServers *) object;
|
||||
|
||||
if (self->server_list_monitor)
|
||||
{
|
||||
g_signal_handlers_disconnect_by_func (self->server_list_monitor, server_file_changed_cb, object);
|
||||
}
|
||||
/* Not removing this function because it's going to be used again next commit. */
|
||||
|
||||
G_OBJECT_CLASS (nautilus_recent_servers_parent_class)->dispose (object);
|
||||
}
|
||||
|
@ -278,13 +261,16 @@ populate_servers (NautilusRecentServers *self)
|
|||
char **uris;
|
||||
gsize num_uris;
|
||||
|
||||
server_list = server_list_load (self);
|
||||
server_list = server_list_load ();
|
||||
|
||||
if (!server_list)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* Monitor the file in case it's modified outside this code */
|
||||
ensure_monitor (self);
|
||||
|
||||
nautilus_recent_servers_set_loading (self, TRUE);
|
||||
|
||||
uris = g_bookmark_file_get_uris (server_list, &num_uris);
|
||||
|
|
|
@ -20,4 +20,8 @@ void nautilus_recent_servers_force_reload (NautilusRecentSe
|
|||
GList * nautilus_recent_servers_get_infos (NautilusRecentServers *self);
|
||||
gboolean nautilus_recent_servers_get_loading (NautilusRecentServers *self);
|
||||
|
||||
void nautilus_add_recent_server (GFile *file);
|
||||
|
||||
void nautilus_remove_recent_server (const char *uri);
|
||||
|
||||
G_END_DECLS
|
||||
|
|
Loading…
Reference in New Issue
Block a user