diff options
Diffstat (limited to 'widgets/misc/e-auth-combo-box.c')
-rw-r--r-- | widgets/misc/e-auth-combo-box.c | 266 |
1 files changed, 0 insertions, 266 deletions
diff --git a/widgets/misc/e-auth-combo-box.c b/widgets/misc/e-auth-combo-box.c deleted file mode 100644 index bd3d8c78ea..0000000000 --- a/widgets/misc/e-auth-combo-box.c +++ /dev/null @@ -1,266 +0,0 @@ -/* - * e-auth-combo-box.c - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) version 3. - * - * This program 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the program; if not, see <http://www.gnu.org/licenses/> - * - */ - -#include "e-auth-combo-box.h" - -#define E_AUTH_COMBO_BOX_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), E_TYPE_AUTH_COMBO_BOX, EAuthComboBoxPrivate)) - -struct _EAuthComboBoxPrivate { - CamelProvider *provider; -}; - -enum { - PROP_0, - PROP_PROVIDER -}; - -enum { - COLUMN_MECHANISM, - COLUMN_DISPLAY_NAME, - COLUMN_STRIKETHROUGH, - COLUMN_AUTHTYPE, - NUM_COLUMNS -}; - -G_DEFINE_TYPE ( - EAuthComboBox, - e_auth_combo_box, - GTK_TYPE_COMBO_BOX) - -static void -auth_combo_box_rebuild_model (EAuthComboBox *combo_box) -{ - GtkComboBox *gtk_combo_box; - CamelProvider *provider; - GtkTreeModel *model; - GList *link; - const gchar *active_id; - - provider = e_auth_combo_box_get_provider (combo_box); - - gtk_combo_box = GTK_COMBO_BOX (combo_box); - model = gtk_combo_box_get_model (gtk_combo_box); - active_id = gtk_combo_box_get_active_id (gtk_combo_box); - - gtk_list_store_clear (GTK_LIST_STORE (model)); - - if (provider == NULL) - return; - - for (link = provider->authtypes; link != NULL; link = link->next) { - CamelServiceAuthType *authtype = link->data; - GtkTreeIter iter; - - gtk_list_store_append (GTK_LIST_STORE (model), &iter); - - gtk_list_store_set ( - GTK_LIST_STORE (model), &iter, - COLUMN_MECHANISM, authtype->authproto, - COLUMN_DISPLAY_NAME, authtype->name, - COLUMN_AUTHTYPE, authtype, - -1); - } - - /* Try selecting the previous mechanism. */ - if (active_id != NULL) - gtk_combo_box_set_active_id (gtk_combo_box, active_id); - - /* Or else fall back to the first mechanism. */ - if (gtk_combo_box_get_active (gtk_combo_box) == -1) - gtk_combo_box_set_active (gtk_combo_box, 0); -} - -static void -auth_combo_box_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - switch (property_id) { - case PROP_PROVIDER: - e_auth_combo_box_set_provider ( - E_AUTH_COMBO_BOX (object), - g_value_get_pointer (value)); - return; - } - - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -} - -static void -auth_combo_box_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - switch (property_id) { - case PROP_PROVIDER: - g_value_set_pointer ( - value, - e_auth_combo_box_get_provider ( - E_AUTH_COMBO_BOX (object))); - return; - } - - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -} - -static void -auth_combo_box_constructed (GObject *object) -{ - GtkComboBox *combo_box; - GtkListStore *list_store; - GtkCellLayout *cell_layout; - GtkCellRenderer *cell_renderer; - - /* Chain up to parent's constructed() method. */ - G_OBJECT_CLASS (e_auth_combo_box_parent_class)->constructed (object); - - list_store = gtk_list_store_new ( - NUM_COLUMNS, - G_TYPE_STRING, /* COLUMN_MECHANISM */ - G_TYPE_STRING, /* COLUMN_DISPLAY_NAME */ - G_TYPE_BOOLEAN, /* COLUMN_STRIKETHROUGH */ - G_TYPE_POINTER); /* COLUMN_AUTHTYPE */ - - combo_box = GTK_COMBO_BOX (object); - gtk_combo_box_set_model (combo_box, GTK_TREE_MODEL (list_store)); - gtk_combo_box_set_id_column (combo_box, COLUMN_MECHANISM); - g_object_unref (list_store); - - cell_layout = GTK_CELL_LAYOUT (object); - cell_renderer = gtk_cell_renderer_text_new (); - gtk_cell_layout_pack_start (cell_layout, cell_renderer, TRUE); - - gtk_cell_layout_set_attributes ( - cell_layout, cell_renderer, - "text", COLUMN_DISPLAY_NAME, - "strikethrough", COLUMN_STRIKETHROUGH, - NULL); -} - -static void -e_auth_combo_box_class_init (EAuthComboBoxClass *class) -{ - GObjectClass *object_class; - - g_type_class_add_private (class, sizeof (EAuthComboBoxPrivate)); - - object_class = G_OBJECT_CLASS (class); - object_class->set_property = auth_combo_box_set_property; - object_class->get_property = auth_combo_box_get_property; - object_class->constructed = auth_combo_box_constructed; - - g_object_class_install_property ( - object_class, - PROP_PROVIDER, - g_param_spec_pointer ( - "provider", - "Provider", - "The provider to query for auth mechanisms", - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS)); -} - -static void -e_auth_combo_box_init (EAuthComboBox *combo_box) -{ - combo_box->priv = E_AUTH_COMBO_BOX_GET_PRIVATE (combo_box); -} - -GtkWidget * -e_auth_combo_box_new (void) -{ - return g_object_new (E_TYPE_AUTH_COMBO_BOX, NULL); -} - -CamelProvider * -e_auth_combo_box_get_provider (EAuthComboBox *combo_box) -{ - g_return_val_if_fail (E_IS_AUTH_COMBO_BOX (combo_box), NULL); - - return combo_box->priv->provider; -} - -void -e_auth_combo_box_set_provider (EAuthComboBox *combo_box, - CamelProvider *provider) -{ - g_return_if_fail (E_IS_AUTH_COMBO_BOX (combo_box)); - - if (provider == combo_box->priv->provider) - return; - - combo_box->priv->provider = provider; - - g_object_notify (G_OBJECT (combo_box), "provider"); - - auth_combo_box_rebuild_model (combo_box); -} - -void -e_auth_combo_box_update_available (EAuthComboBox *combo_box, - GList *available_authtypes) -{ - GtkComboBox *gtk_combo_box; - GtkTreeModel *model; - GtkTreeIter iter; - gint active_index; - gint available_index = -1; - gint index = 0; - gboolean iter_set; - - g_return_if_fail (E_IS_AUTH_COMBO_BOX (combo_box)); - - gtk_combo_box = GTK_COMBO_BOX (combo_box); - model = gtk_combo_box_get_model (gtk_combo_box); - active_index = gtk_combo_box_get_active (gtk_combo_box); - - iter_set = gtk_tree_model_get_iter_first (model, &iter); - - while (iter_set) { - CamelServiceAuthType *authtype; - gboolean available; - - gtk_tree_model_get ( - model, &iter, COLUMN_AUTHTYPE, &authtype, -1); - - available = (g_list_find ( - available_authtypes, authtype) != NULL); - - gtk_list_store_set ( - GTK_LIST_STORE (model), &iter, - COLUMN_STRIKETHROUGH, !available, -1); - - if (index == active_index && !available) - active_index = -1; - - if (available && available_index == -1) - available_index = index; - - iter_set = gtk_tree_model_iter_next (model, &iter); - index++; - } - - /* If the active combo_box item turned out to be unavailable - * (or there was no active item), select the first available. */ - if (active_index == -1 && available_index != -1) - gtk_combo_box_set_active (gtk_combo_box, available_index); -} |