* check for a valid foldername
[modest] / src / maemo / modest-store-widget.c
index 85986c4..f77a087 100644 (file)
@@ -28,6 +28,8 @@
  */
 
 #include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <widgets/modest-combo-box.h>
 #include "modest-store-widget.h"
 #include <string.h>
 
@@ -46,13 +48,17 @@ struct _ModestStoreWidgetPrivate {
        
        GtkWidget *servername;
        GtkWidget *username;
+       
+       ModestPairList *security_protos;
        GtkWidget *security;
+       
+       ModestPairList *transport_store_protos;
+       
        GtkWidget *auth;
        GtkWidget *chooser;
        GtkWidget *remember_pwd;
 
-       ModestProtocol proto;
-       ModestWidgetFactory *factory;
+       ModestTransportStoreProtocol proto;
 };
 #define MODEST_STORE_WIDGET_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
                                                  MODEST_TYPE_STORE_WIDGET, \
@@ -115,7 +121,7 @@ modest_store_widget_init (ModestStoreWidget *obj)
        ModestStoreWidgetPrivate *priv;
        
        priv = MODEST_STORE_WIDGET_GET_PRIVATE(obj); 
-       priv->proto = MODEST_PROTOCOL_UNKNOWN;
+       priv->proto = MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN;
 }
 
 
@@ -197,7 +203,8 @@ imap_pop_configuration (ModestStoreWidget *self)
 {
        ModestStoreWidgetPrivate *priv;
        GtkWidget *label, *box, *hbox;
-
+       GtkWidget *combo;
+       
        priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
        box = gtk_vbox_new (FALSE, 6);
        
@@ -225,8 +232,12 @@ imap_pop_configuration (ModestStoreWidget *self)
        gtk_label_set_markup (GTK_LABEL(label),_("<b>Security</b>"));
        gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
 
-       priv->security = modest_widget_factory_get_combo_box (priv->factory, 
-                                                             MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS);
+       /* Note: This ModestPairList* must exist for as long as the combo
+        * that uses it, because the ModestComboBox uses the ID opaquely, 
+        * so it can't know how to manage its memory. */
+       priv->security_protos = modest_protocol_info_get_connection_protocol_pair_list ();
+       priv->security = modest_combo_box_new (priv->security_protos, g_str_equal);
+       
        hbox = gtk_hbox_new (FALSE, 6);
        label = gtk_label_new(NULL);
        gtk_label_set_text (GTK_LABEL(label),_("Connection type:"));
@@ -239,10 +250,14 @@ imap_pop_configuration (ModestStoreWidget *self)
 
        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);
+       
+       /* Note: This ModestPairList* must exist for as long as the combo
+        * that uses it, because the ModestComboBox uses the ID opaquely, 
+        * so it can't know how to manage its memory. */
+       priv->transport_store_protos = modest_protocol_info_get_transport_store_protocol_pair_list ();
+       combo =  modest_combo_box_new (priv->transport_store_protos, g_str_equal);
 
+       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,
@@ -261,21 +276,19 @@ imap_pop_configuration (ModestStoreWidget *self)
 static void
 modest_store_widget_finalize (GObject *obj)
 {
-       ModestStoreWidgetPrivate *priv;
-       priv = MODEST_STORE_WIDGET_GET_PRIVATE(obj);
+       ModestStoreWidgetPrivate *priv = MODEST_STORE_WIDGET_GET_PRIVATE(obj);
+       
+       /* These had to stay alive for as long as the comboboxes that used them: */
+       modest_pair_list_free (priv->security_protos);
+       modest_pair_list_free (priv->transport_store_protos);
        
-       if (priv->factory) {
-               g_object_unref (priv->factory);
-               priv->factory = NULL;
-       }
-
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
 
 
 
 GtkWidget*
-modest_store_widget_new (ModestWidgetFactory *factory, ModestProtocol proto)
+modest_store_widget_new (ModestTransportStoreProtocol proto)
 {
        GObject *obj;
        GtkWidget *w;
@@ -283,15 +296,11 @@ modest_store_widget_new (ModestWidgetFactory *factory, ModestProtocol proto)
        ModestStoreWidgetPrivate *priv;
        
        g_return_val_if_fail (proto, NULL);
-       g_return_val_if_fail (factory, NULL);
 
        obj = g_object_new(MODEST_TYPE_STORE_WIDGET, NULL);
        self = MODEST_STORE_WIDGET(obj);
        priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
 
-       g_object_ref (factory);
-       priv->factory = factory;
-
        priv->proto = proto;
        
        if (proto == MODEST_PROTOCOL_STORE_POP || proto == MODEST_PROTOCOL_STORE_IMAP)
@@ -317,10 +326,12 @@ modest_store_widget_get_remember_password (ModestStoreWidget *self)
        g_return_val_if_fail (self, FALSE);
        priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
 
-       return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(priv->remember_pwd));
+       if (GTK_IS_TOGGLE_BUTTON(priv->remember_pwd)) 
+               return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(priv->remember_pwd));
+       else
+               return FALSE;
 }
 
-
 const gchar*
 modest_store_widget_get_username (ModestStoreWidget *self)
 {
@@ -328,8 +339,11 @@ modest_store_widget_get_username (ModestStoreWidget *self)
 
        g_return_val_if_fail (self, NULL);
        priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
-       
-       return gtk_entry_get_text (GTK_ENTRY(priv->username));
+
+       if (GTK_IS_ENTRY(priv->username)) 
+               return gtk_entry_get_text (GTK_ENTRY(priv->username));
+       else
+               return NULL;
 }
 
 const gchar*
@@ -340,17 +354,35 @@ modest_store_widget_get_servername (ModestStoreWidget *self)
        g_return_val_if_fail (self, NULL);
        priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
        
-       return gtk_entry_get_text (GTK_ENTRY(priv->servername));
+       if (GTK_IS_ENTRY(priv->servername)) 
+               return gtk_entry_get_text (GTK_ENTRY(priv->servername));
+       else
+               return NULL;
 }
 
 
-ModestProtocol
+ModestTransportStoreProtocol
 modest_store_widget_get_proto (ModestStoreWidget *self)
 {
        ModestStoreWidgetPrivate *priv;
 
-       g_return_val_if_fail (self, MODEST_PROTOCOL_UNKNOWN);
+       g_return_val_if_fail (self, MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN);
        priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
 
        return priv->proto;
 }
+
+
+gchar *
+modest_store_widget_get_path (ModestStoreWidget *self)
+{
+       ModestStoreWidgetPrivate *priv;
+       
+       g_return_val_if_fail (self, NULL);
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+
+       if (GTK_IS_FILE_CHOOSER(priv->chooser))
+               return gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(priv->chooser));
+       else
+               return NULL;
+}