X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fgnome%2Fmodest-transport-widget.c;h=9ba6063f06bf779f7db47601016a5db819180a0b;hb=b03c2c2346cbde5ee8738436e910e23e0a2d5541;hp=69e900e32f4c830d6d86a79d5178702cfe6be1a0;hpb=3e7a3b4e5759d63285d8795435b2ceedaf63b216;p=modest diff --git a/src/gnome/modest-transport-widget.c b/src/gnome/modest-transport-widget.c index 69e900e..9ba6063 100644 --- a/src/gnome/modest-transport-widget.c +++ b/src/gnome/modest-transport-widget.c @@ -1,11 +1,35 @@ -/* modest-transport-widget.c */ - -/* insert (c)/licensing information) */ +/* Copyright (c) 2006, Nokia Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the Nokia Corporation nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ #include #include #include -#include #include "modest-transport-widget.h" #include @@ -24,11 +48,14 @@ enum { typedef struct _ModestTransportWidgetPrivate ModestTransportWidgetPrivate; struct _ModestTransportWidgetPrivate { - ModestProtocol proto; + ModestProtocolType proto; GtkWidget *servername; GtkWidget *username; GtkWidget *auth; GtkWidget *remember_pwd; + + ModestPairList *transport_store_protos; + ModestPairList *auth_protos; }; #define MODEST_TRANSPORT_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ MODEST_TYPE_TRANSPORT_WIDGET, \ @@ -88,12 +115,17 @@ modest_transport_widget_init (ModestTransportWidget *obj) ModestTransportWidgetPrivate *priv; priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(obj); - priv->proto = MODEST_PROTOCOL_UNKNOWN; + priv->proto = MODEST_PROTOCOL_REGISTRY_TYPE_INVALID; } static void modest_transport_widget_finalize (GObject *obj) { + ModestTransportWidgetPrivate *priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(obj); + + /* These had to stay alive for as long as the comboboxes that used them: */ + modest_pair_list_free (priv->transport_store_protos); + G_OBJECT_CLASS(parent_class)->finalize (obj); } @@ -116,7 +148,7 @@ smtp_configuration (ModestTransportWidget *self) { ModestTransportWidgetPrivate *priv; GtkWidget *label, *box, *hbox, *combo; - ModestPairList *protos; + const gchar *tag = MODEST_PROTOCOL_REGISTRY_TRANSPORT_PROTOCOLS; priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self); box = gtk_vbox_new (FALSE, 6); @@ -160,9 +192,11 @@ smtp_configuration (ModestTransportWidget *self) gtk_label_set_text (GTK_LABEL(label),_("Connection type:")); gtk_box_pack_start (GTK_BOX(hbox), label, 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); + /* 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_gnome_utils_get_protocols_pair_list (tag); + combo = modest_combo_box_new (priv->transport_store_protos, g_str_equal); gtk_box_pack_start (GTK_BOX(hbox), combo, FALSE, FALSE,0); gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0); @@ -173,9 +207,12 @@ smtp_configuration (ModestTransportWidget *self) gtk_label_set_text (GTK_LABEL(label),_("Authentication:")); gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6); - 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); + /* 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. */ + tag = MODEST_PROTOCOL_REGISTRY_AUTH_PROTOCOLS; + priv->auth_protos = modest_gnome_utils_get_protocols_pair_list (tag); + combo = modest_combo_box_new (priv->auth_protos, g_str_equal); gtk_box_pack_start (GTK_BOX(hbox), combo, FALSE, FALSE, 0); priv->remember_pwd = @@ -187,7 +224,7 @@ smtp_configuration (ModestTransportWidget *self) GtkWidget* -modest_transport_widget_new (ModestProtocol proto) +modest_transport_widget_new (ModestProtocolType proto) { GObject *obj; GtkWidget *w; @@ -202,7 +239,7 @@ modest_transport_widget_new (ModestProtocol proto) priv->proto = proto; - if (proto == MODEST_PROTOCOL_TRANSPORT_SMTP) + if (proto == MODEST_PROTOCOLS_TRANSPORT_SMTP) w = smtp_configuration (self); else w = gtk_label_new (""); @@ -259,12 +296,12 @@ modest_transport_widget_get_servername (ModestTransportWidget *self) } -ModestProtocol +ModestProtocolType modest_transport_widget_get_proto (ModestTransportWidget *self) { ModestTransportWidgetPrivate *priv; - g_return_val_if_fail (self, MODEST_PROTOCOL_UNKNOWN); + g_return_val_if_fail (self, MODEST_PROTOCOL_REGISTRY_TYPE_INVALID); priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self); return priv->proto;