summaryrefslogtreecommitdiff
path: root/src/caja-connect-server-operation.c
diff options
context:
space:
mode:
authorStefano Karapetsas <[email protected]>2012-11-16 05:08:48 -0800
committerStefano Karapetsas <[email protected]>2012-11-16 05:08:48 -0800
commitdc66bc40724191f0068869773576dc4edf042c6f (patch)
tree74b9684feea188736b21f2c829f29befaaf2e9da /src/caja-connect-server-operation.c
parent935e1fed604f48e68d125d205c890a59f46f8f21 (diff)
parent1466df20591105550738a1d0784a623af9909abf (diff)
downloadcaja-dc66bc40724191f0068869773576dc4edf042c6f.tar.bz2
caja-dc66bc40724191f0068869773576dc4edf042c6f.tar.xz
Merge pull request #42 from jasmineaura/develop
Bring Caja up to speed, stage1
Diffstat (limited to 'src/caja-connect-server-operation.c')
-rw-r--r--src/caja-connect-server-operation.c140
1 files changed, 140 insertions, 0 deletions
diff --git a/src/caja-connect-server-operation.c b/src/caja-connect-server-operation.c
new file mode 100644
index 00000000..51b69b84
--- /dev/null
+++ b/src/caja-connect-server-operation.c
@@ -0,0 +1,140 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/*
+ * Caja
+ *
+ * Copyright (C) 2010 Cosimo Cecchi <[email protected]>
+ *
+ * Caja 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.
+ *
+ * Caja 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 <[email protected]>
+ */
+
+#include <config.h>
+
+#include "caja-connect-server-operation.h"
+
+#include "caja-connect-server-dialog.h"
+
+G_DEFINE_TYPE (CajaConnectServerOperation,
+ caja_connect_server_operation, GTK_TYPE_MOUNT_OPERATION);
+
+enum {
+ PROP_DIALOG = 1,
+ NUM_PROPERTIES
+};
+
+struct _CajaConnectServerOperationDetails {
+ CajaConnectServerDialog *dialog;
+};
+
+static void
+fill_details_async_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ CajaConnectServerDialog *dialog;
+ CajaConnectServerOperation *self;
+ gboolean res;
+
+ self = user_data;
+ dialog = CAJA_CONNECT_SERVER_DIALOG (source);
+
+ res = caja_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
+caja_connect_server_operation_ask_password (GMountOperation *op,
+ const gchar *message,
+ const gchar *default_user,
+ const gchar *default_domain,
+ GAskPasswordFlags flags)
+{
+ CajaConnectServerOperation *self;
+
+ self = CAJA_CONNECT_SERVER_OPERATION (op);
+
+ caja_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
+caja_connect_server_operation_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ CajaConnectServerOperation *self;
+
+ self = CAJA_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
+caja_connect_server_operation_class_init (CajaConnectServerOperationClass *klass)
+{
+ GMountOperationClass *mount_op_class;
+ GObjectClass *object_class;
+ GParamSpec *pspec;
+
+ object_class = G_OBJECT_CLASS (klass);
+ object_class->set_property = caja_connect_server_operation_set_property;
+
+ mount_op_class = G_MOUNT_OPERATION_CLASS (klass);
+ mount_op_class->ask_password = caja_connect_server_operation_ask_password;
+
+ pspec = g_param_spec_object ("dialog", "The connect dialog",
+ "The connect to server dialog",
+ CAJA_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 (CajaConnectServerOperationDetails));
+}
+
+static void
+caja_connect_server_operation_init (CajaConnectServerOperation *self)
+{
+ self->details = G_TYPE_INSTANCE_GET_PRIVATE (self,
+ CAJA_TYPE_CONNECT_SERVER_OPERATION,
+ CajaConnectServerOperationDetails);
+}
+
+GMountOperation *
+caja_connect_server_operation_new (CajaConnectServerDialog *dialog)
+{
+ return g_object_new (CAJA_TYPE_CONNECT_SERVER_OPERATION,
+ "dialog", dialog,
+ NULL);
+}