* Commented the popup-menu
[modest] / src / gtk / modest-transport-widget.c
index 9aeb080..69e900e 100644 (file)
@@ -2,9 +2,15 @@
 
 /* insert (c)/licensing information) */
 
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <widgets/modest-combo-box.h>
+#include <modest-protocol-info.h>
 #include "modest-transport-widget.h"
 #include <string.h>
 
+
+
 /* 'private'/'protected' functions */
 static void modest_transport_widget_class_init (ModestTransportWidgetClass *klass);
 static void modest_transport_widget_init       (ModestTransportWidget *obj);
@@ -18,15 +24,11 @@ enum {
 
 typedef struct _ModestTransportWidgetPrivate ModestTransportWidgetPrivate;
 struct _ModestTransportWidgetPrivate {
-
-       gchar *proto;
-       ModestWidgetFactory *factory;
-
+       ModestProtocol proto;
        GtkWidget *servername;
        GtkWidget *username;
        GtkWidget *auth;
        GtkWidget *remember_pwd;
-
 };
 #define MODEST_TRANSPORT_WIDGET_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
                                                      MODEST_TYPE_TRANSPORT_WIDGET, \
@@ -86,26 +88,26 @@ modest_transport_widget_init (ModestTransportWidget *obj)
        ModestTransportWidgetPrivate *priv;
        priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(obj); 
        
-       priv->proto = NULL;
+       priv->proto = MODEST_PROTOCOL_UNKNOWN;
 }
 
 static void
 modest_transport_widget_finalize (GObject *obj)
 {
+       G_OBJECT_CLASS(parent_class)->finalize (obj);
+}
+
+static void
+on_button_toggled (GtkToggleButton *button, gpointer user_data)
+{
        ModestTransportWidgetPrivate *priv;
-       priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(obj);
-       
-       if (priv->factory) {
-               g_object_unref (priv->factory);
-               priv->factory = NULL;
-       }
 
-       if (priv->proto) {
-               g_free (priv->proto);
-               priv->proto = NULL;
-       }
+       priv = (ModestTransportWidgetPrivate *) user_data;
 
-       G_OBJECT_CLASS(parent_class)->finalize (obj);
+       if (gtk_toggle_button_get_active (button))
+               gtk_widget_set_sensitive (gtk_widget_get_parent (priv->username), TRUE);
+       else
+               gtk_widget_set_sensitive (gtk_widget_get_parent (priv->username), FALSE);
 }
 
 
@@ -113,7 +115,8 @@ static GtkWidget*
 smtp_configuration (ModestTransportWidget *self)
 {
        ModestTransportWidgetPrivate *priv;
-       GtkWidget *label, *box, *hbox;
+       GtkWidget *label, *box, *hbox, *combo;
+       ModestPairList *protos;
        
        priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
        box = gtk_vbox_new (FALSE, 6);
@@ -124,17 +127,30 @@ smtp_configuration (ModestTransportWidget *self)
        gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
 
        priv->servername = gtk_entry_new_with_max_length (40);
-       
+       priv->username = gtk_entry_new_with_max_length (40);
+
+       /* Servername */        
        hbox = gtk_hbox_new (FALSE, 6);
        gtk_box_pack_start (GTK_BOX(hbox), gtk_label_new (_("Servername: ")),
                            FALSE, FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(hbox), priv->servername,
-                           TRUE, TRUE, 6);
+       gtk_box_pack_start (GTK_BOX(hbox), priv->servername, TRUE, TRUE, 6);
        gtk_box_pack_start (GTK_BOX(box), hbox, TRUE, TRUE, 6);
 
+       /* Auth */
        priv->auth = gtk_check_button_new_with_label (_("Requires authentication"));
        gtk_box_pack_start (GTK_BOX(box), priv->auth, TRUE, FALSE, 6);
+
+       g_signal_connect (priv->auth, "toggled", G_CALLBACK (on_button_toggled), priv);
        
+       /* Username */
+       hbox = gtk_hbox_new (FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(hbox), gtk_label_new (_("Username: ")),
+                           FALSE, FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(hbox), priv->username, TRUE, TRUE, 6);
+       gtk_widget_set_sensitive (hbox, FALSE);
+       gtk_box_pack_start (GTK_BOX(box), hbox, TRUE, TRUE, 6);
+
+       /* Security */
        label = gtk_label_new(NULL);
        gtk_label_set_markup (GTK_LABEL(label),_("<b>Security</b>"));
        gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
@@ -143,19 +159,25 @@ smtp_configuration (ModestTransportWidget *self)
        label = gtk_label_new(NULL);
        gtk_label_set_text (GTK_LABEL(label),_("Connection type:"));
        gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX(hbox),  modest_widget_factory_get_combo_box
-                           (priv->factory, MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS),
-                           FALSE, FALSE,0);
-       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
+
+       protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_AUTH);
+       combo  = modest_combo_box_new (protos, g_str_equal);
+       modest_pair_list_free (protos);
        
+       gtk_box_pack_start (GTK_BOX(hbox), combo, FALSE, FALSE,0);
+       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
+
        hbox = gtk_hbox_new (FALSE, 6);
        label = gtk_label_new(NULL);
 
        gtk_label_set_text (GTK_LABEL(label),_("Authentication:"));
        gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(hbox),   modest_widget_factory_get_combo_box
-                           (priv->factory, MODEST_COMBO_BOX_TYPE_AUTH_PROTOS),
-                           FALSE, FALSE, 0);
+
+       protos = modest_protocol_info_get_protocol_pair_list (MODEST_PROTOCOL_TYPE_AUTH);
+       combo  = modest_combo_box_new (protos, g_str_equal);
+       modest_pair_list_free (protos);
+       
+       gtk_box_pack_start (GTK_BOX(hbox), combo, FALSE, FALSE, 0);
        priv->remember_pwd =
                gtk_check_button_new_with_label (_("Remember password"));
        gtk_box_pack_start (GTK_BOX(hbox),priv->remember_pwd,
@@ -164,9 +186,8 @@ smtp_configuration (ModestTransportWidget *self)
 }
 
 
-
 GtkWidget*
-modest_transport_widget_new (ModestWidgetFactory *factory, const gchar* proto)
+modest_transport_widget_new (ModestProtocol proto)
 {
        GObject *obj;
        GtkWidget *w;
@@ -174,20 +195,16 @@ modest_transport_widget_new (ModestWidgetFactory *factory, const gchar* proto)
        ModestTransportWidgetPrivate *priv;
        
        g_return_val_if_fail (proto, NULL);
-       g_return_val_if_fail (factory, NULL);
 
        obj = g_object_new(MODEST_TYPE_TRANSPORT_WIDGET, NULL);
        self = MODEST_TRANSPORT_WIDGET(obj);
        priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
 
-       g_object_ref (factory);
-       priv->factory = factory;
-
-       priv->proto = g_strdup (proto);
+       priv->proto = proto;
        
-       if (strcmp (proto, MODEST_PROTO_SMTP) == 0) {
+       if (proto == MODEST_PROTOCOL_TRANSPORT_SMTP) 
                w = smtp_configuration (self);
-       } else
+       else
                w = gtk_label_new ("");
        
        gtk_widget_show_all (w);
@@ -208,6 +225,16 @@ modest_transport_widget_get_remember_password (ModestTransportWidget *self)
        return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(priv->remember_pwd));
 }
 
+gboolean
+modest_transport_widget_get_requires_auth (ModestTransportWidget *self)
+{
+       ModestTransportWidgetPrivate *priv;
+
+       g_return_val_if_fail (self, FALSE);
+       priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+
+       return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(priv->auth));
+}
 
 const gchar*
 modest_transport_widget_get_username (ModestTransportWidget *self)
@@ -232,12 +259,12 @@ modest_transport_widget_get_servername (ModestTransportWidget *self)
 }
 
 
-const gchar*
+ModestProtocol
 modest_transport_widget_get_proto (ModestTransportWidget *self)
 {
        ModestTransportWidgetPrivate *priv;
 
-       g_return_val_if_fail (self, FALSE);
+       g_return_val_if_fail (self, MODEST_PROTOCOL_UNKNOWN);
        priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
 
        return priv->proto;