Modified webpage: now tinymail repository is in gitorious.
[modest] / src / widgets / modest-combo-box.c
index 3e0fc0e..810e02f 100644 (file)
@@ -27,9 +27,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <gtk/gtkcelllayout.h>
-#include <gtk/gtkcellrenderertext.h>
-#include <gtk/gtkliststore.h>
+#include <gtk/gtk.h>
 #include "modest-combo-box.h"
 
 /* 'private'/'protected' functions */
 #include "modest-combo-box.h"
 
 /* 'private'/'protected' functions */
@@ -125,11 +123,11 @@ modest_combo_box_finalize (GObject *obj)
 }
 
 static GtkTreeModel*
 }
 
 static GtkTreeModel*
-get_model (const ModestPairList *pairs)
+get_model (ModestPairList *pairs)
 {
        GtkTreeIter iter;
        GtkListStore *store;
 {
        GtkTreeIter iter;
        GtkListStore *store;
-       const GSList *cursor;
+       GSList *cursor;
        
        store = gtk_list_store_new (2,
                                    G_TYPE_POINTER, /* the id */
        
        store = gtk_list_store_new (2,
                                    G_TYPE_POINTER, /* the id */
@@ -147,17 +145,29 @@ get_model (const ModestPairList *pairs)
        return GTK_TREE_MODEL (store);
 }
 
        return GTK_TREE_MODEL (store);
 }
 
+void
+modest_combo_box_set_pair_list (ModestComboBox *combo, ModestPairList *pairs)
+{
+       GtkTreeModel *model;
+
+       model = get_model (pairs);
+
+       gtk_combo_box_set_model (GTK_COMBO_BOX(combo), model);
+       g_object_unref (model);
+       
+       gtk_combo_box_set_active (GTK_COMBO_BOX(combo), 0);
+}
+
+
 
 GtkWidget*
 
 GtkWidget*
-modest_combo_box_new (const ModestPairList *pairs, GEqualFunc id_equal_func)
+modest_combo_box_new (ModestPairList *pairs, GEqualFunc id_equal_func)
 {
        GtkTreeModel *model;
        GtkCellRenderer *renderer;
        GObject *obj;
        ModestComboBoxPrivate *priv;
 
 {
        GtkTreeModel *model;
        GtkCellRenderer *renderer;
        GObject *obj;
        ModestComboBoxPrivate *priv;
 
-       g_return_val_if_fail (pairs,         NULL);
-       
        obj  = G_OBJECT(g_object_new(MODEST_TYPE_COMBO_BOX, NULL));
        priv = MODEST_COMBO_BOX_GET_PRIVATE(obj);
        
        obj  = G_OBJECT(g_object_new(MODEST_TYPE_COMBO_BOX, NULL));
        priv = MODEST_COMBO_BOX_GET_PRIVATE(obj);
        
@@ -168,8 +178,9 @@ modest_combo_box_new (const ModestPairList *pairs, GEqualFunc id_equal_func)
                gtk_cell_layout_clear (GTK_CELL_LAYOUT(obj));
                
                renderer = gtk_cell_renderer_text_new ();
                gtk_cell_layout_clear (GTK_CELL_LAYOUT(obj));
                
                renderer = gtk_cell_renderer_text_new ();
+               g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
                gtk_cell_layout_pack_start (GTK_CELL_LAYOUT(obj),
                gtk_cell_layout_pack_start (GTK_CELL_LAYOUT(obj),
-                                           renderer, FALSE);  
+                                           renderer, TRUE);  
                gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT(obj),
                                                renderer, "text",
                                                COLUMN_DISPLAY_NAME, NULL); 
                gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT(obj),
                                                renderer, "text",
                                                COLUMN_DISPLAY_NAME, NULL); 
@@ -205,15 +216,13 @@ gpointer
 modest_combo_box_get_active_id (ModestComboBox *self)
 {
        GValue val = {0,};
 modest_combo_box_get_active_id (ModestComboBox *self)
 {
        GValue val = {0,};
-       gpointer retval;
 
        g_return_val_if_fail (self, NULL);
        
        /* Do not unset the GValue */
        get_active (self, &val, COLUMN_ID);
 
        g_return_val_if_fail (self, NULL);
        
        /* Do not unset the GValue */
        get_active (self, &val, COLUMN_ID);
-       retval = g_value_peek_pointer (&val);
 
 
-       return retval;
+       return g_value_get_pointer (&val);
 }
 
 
 }
 
 
@@ -236,7 +245,7 @@ modest_combo_box_set_active_id (ModestComboBox *self, gpointer id)
        do {
                gpointer row_id;
                gtk_tree_model_get (model, &iter, COLUMN_ID, &row_id, -1);
        do {
                gpointer row_id;
                gtk_tree_model_get (model, &iter, COLUMN_ID, &row_id, -1);
-               if ((priv->id_equal_func)(id, row_id) == 0) {
+               if ((priv->id_equal_func)(id, row_id)) {
                        gtk_combo_box_set_active_iter (GTK_COMBO_BOX(self), &iter);
                        found = TRUE;
                }
                        gtk_combo_box_set_active_iter (GTK_COMBO_BOX(self), &iter);
                        found = TRUE;
                }
@@ -251,14 +260,14 @@ modest_combo_box_set_active_id (ModestComboBox *self, gpointer id)
 const gchar*
 modest_combo_box_get_active_display_name (ModestComboBox *self)
 {
 const gchar*
 modest_combo_box_get_active_display_name (ModestComboBox *self)
 {
-       GValue val = {0,};
-       gpointer retval;
+       const GValue val = {0,};
+       const gchar *retval;
 
        g_return_val_if_fail (self, NULL);
 
        /* Do not unset the GValue */
 
        g_return_val_if_fail (self, NULL);
 
        /* Do not unset the GValue */
-       get_active (self, &val, COLUMN_DISPLAY_NAME);
-       retval = g_value_peek_pointer (&val);
+       get_active (self, (GValue *)&val, COLUMN_DISPLAY_NAME);
+       retval = g_value_get_string (&val);
 
 
-       return (gchar*) retval;
+       return retval;
 }
 }