[nautilus] connect-operation: add NautilusConnectServerOperation
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] connect-operation: add NautilusConnectServerOperation
- Date: Mon, 20 Sep 2010 15:42:19 +0000 (UTC)
commit c1bebe3a29bc2dc3b01ad2277a9802d9d0bc25cd
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Tue Aug 31 02:56:24 2010 +0200
connect-operation: add NautilusConnectServerOperation
This is a GtkMountOperation subclass to handle password/username/domain
requests directly from inside of the 'Connect to Server' dialog.
src/Makefile.am | 8 +-
src/nautilus-connect-server-operation.c | 140 +++++++++++++++++++++++++++++++
src/nautilus-connect-server-operation.h | 63 ++++++++++++++
3 files changed, 208 insertions(+), 3 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 6838bb0..9669bef 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -66,7 +66,9 @@ nautilus_SOURCES = \
nautilus-bookmarks-window.h \
nautilus-connect-server-dialog.c \
nautilus-connect-server-dialog.h \
- nautilus-connect-server-dialog-nonmain.c \
+ nautilus-connect-server-dialog-nonmain.c \
+ nautilus-connect-server-operation.c \
+ nautilus-connect-server-operation.h \
nautilus-desktop-window.c \
nautilus-desktop-window.h \
nautilus-file-management-properties.c \
@@ -175,8 +177,8 @@ nautilus_connect_server_SOURCES= \
nautilus-connect-server-dialog.c \
nautilus-connect-server-dialog.h \
nautilus-connect-server-dialog-main.c \
- nautilus-location-entry.c \
- nautilus-location-entry.h \
+ nautilus-connect-server-operation.c \
+ nautilus-connect-server-operation.h \
$(NULL)
nautilus_convert_metadata_SOURCES= \
diff --git a/src/nautilus-connect-server-operation.c b/src/nautilus-connect-server-operation.c
new file mode 100644
index 0000000..19e2ac7
--- /dev/null
+++ b/src/nautilus-connect-server-operation.c
@@ -0,0 +1,140 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/*
+ * Nautilus
+ *
+ * Copyright (C) 2010 Cosimo Cecchi <cosimoc gnome org>
+ *
+ * Nautilus 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.
+ *
+ * Nautilus 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; see the file COPYING. If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Cosimo Cecchi <cosimoc gnome org>
+ */
+
+#include <config.h>
+
+#include "nautilus-connect-server-operation.h"
+
+#include "nautilus-connect-server-dialog.h"
+
+G_DEFINE_TYPE (NautilusConnectServerOperation,
+ nautilus_connect_server_operation, GTK_TYPE_MOUNT_OPERATION);
+
+enum {
+ PROP_DIALOG = 1,
+ NUM_PROPERTIES
+};
+
+struct _NautilusConnectServerOperationDetails {
+ NautilusConnectServerDialog *dialog;
+};
+
+static void
+fill_details_async_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ NautilusConnectServerDialog *dialog;
+ NautilusConnectServerOperation *self;
+ gboolean res;
+
+ self = user_data;
+ dialog = NAUTILUS_CONNECT_SERVER_DIALOG (source);
+
+ res = nautilus_connect_server_dialog_fill_details_finish (dialog, result);
+
+ if (!res) {
+ g_mount_operation_reply (G_MOUNT_OPERATION (self), G_MOUNT_OPERATION_ABORTED);
+ } else {
+ g_mount_operation_reply (G_MOUNT_OPERATION (self), G_MOUNT_OPERATION_HANDLED);
+ }
+}
+
+static void
+nautilus_connect_server_operation_ask_password (GMountOperation *op,
+ const gchar *message,
+ const gchar *default_user,
+ const gchar *default_domain,
+ GAskPasswordFlags flags)
+{
+ NautilusConnectServerOperation *self;
+
+ self = NAUTILUS_CONNECT_SERVER_OPERATION (op);
+
+ nautilus_connect_server_dialog_fill_details_async (self->details->dialog,
+ G_MOUNT_OPERATION (self),
+ default_user,
+ default_domain,
+ flags,
+ fill_details_async_cb,
+ self);
+}
+
+static void
+nautilus_connect_server_operation_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ NautilusConnectServerOperation *self;
+
+ self = NAUTILUS_CONNECT_SERVER_OPERATION (object);
+
+ switch (property_id) {
+ case PROP_DIALOG:
+ self->details->dialog = g_value_get_object (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+
+static void
+nautilus_connect_server_operation_class_init (NautilusConnectServerOperationClass *klass)
+{
+ GMountOperationClass *mount_op_class;
+ GObjectClass *object_class;
+ GParamSpec *pspec;
+
+ object_class = G_OBJECT_CLASS (klass);
+ object_class->set_property = nautilus_connect_server_operation_set_property;
+
+ mount_op_class = G_MOUNT_OPERATION_CLASS (klass);
+ mount_op_class->ask_password = nautilus_connect_server_operation_ask_password;
+
+ pspec = g_param_spec_object ("dialog", "The connect dialog",
+ "The connect to server dialog",
+ NAUTILUS_TYPE_CONNECT_SERVER_DIALOG,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (object_class, PROP_DIALOG, pspec);
+
+ g_type_class_add_private (klass, sizeof (NautilusConnectServerOperationDetails));
+}
+
+static void
+nautilus_connect_server_operation_init (NautilusConnectServerOperation *self)
+{
+ self->details = G_TYPE_INSTANCE_GET_PRIVATE (self,
+ NAUTILUS_TYPE_CONNECT_SERVER_OPERATION,
+ NautilusConnectServerOperationDetails);
+}
+
+GMountOperation *
+nautilus_connect_server_operation_new (NautilusConnectServerDialog *dialog)
+{
+ return g_object_new (NAUTILUS_TYPE_CONNECT_SERVER_OPERATION,
+ "dialog", dialog,
+ NULL);
+}
diff --git a/src/nautilus-connect-server-operation.h b/src/nautilus-connect-server-operation.h
new file mode 100644
index 0000000..a0d07b0
--- /dev/null
+++ b/src/nautilus-connect-server-operation.h
@@ -0,0 +1,63 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/*
+ * Nautilus
+ *
+ * Copyright (C) 2010 Cosimo Cecchi <cosimoc gnome org>
+ *
+ * Nautilus 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.
+ *
+ * Nautilus 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; see the file COPYING. If not,
+ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Author: Cosimo Cecchi <cosimoc gnome org>
+ */
+
+#ifndef __NAUTILUS_CONNECT_SERVER_OPERATION_H__
+#define __NAUTILUS_CONNECT_SERVER_OPERATION_H__
+
+#include <gio/gio.h>
+#include <gtk/gtk.h>
+
+#include "nautilus-connect-server-dialog.h"
+
+#define NAUTILUS_TYPE_CONNECT_SERVER_OPERATION\
+ (nautilus_connect_server_operation_get_type ())
+#define NAUTILUS_CONNECT_SERVER_OPERATION(obj)\
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj),\
+ NAUTILUS_TYPE_CONNECT_SERVER_OPERATION,\
+ NautilusConnectServerOperation))
+#define NAUTILUS_CONNECT_SERVER_OPERATION_CLASS(klass)\
+ (G_TYPE_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_CONNECT_SERVER_OPERATION,\
+ NautilusConnectServerOperationClass))
+#define NAUTILUS_IS_CONNECT_SERVER_OPERATION(obj)\
+ (G_TYPE_INSTANCE_CHECK_TYPE ((obj), NAUTILUS_TYPE_CONNECT_SERVER_OPERATION)
+
+typedef struct _NautilusConnectServerOperationDetails
+ NautilusConnectServerOperationDetails;
+
+typedef struct {
+ GtkMountOperation parent;
+ NautilusConnectServerOperationDetails *details;
+} NautilusConnectServerOperation;
+
+typedef struct {
+ GtkMountOperationClass parent_class;
+} NautilusConnectServerOperationClass;
+
+GType nautilus_connect_server_operation_get_type (void);
+
+GMountOperation *
+nautilus_connect_server_operation_new (NautilusConnectServerDialog *dialog);
+
+
+#endif /* __NAUTILUS_CONNECT_SERVER_OPERATION_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]