]> git.0d.be Git - empathy.git/commitdiff
Connect new dialog into presence chooser, remove old dialog
authorDavyd Madeley <davyd@madeley.id.au>
Wed, 22 Apr 2009 02:05:10 +0000 (10:05 +0800)
committerDavyd Madeley <davyd@madeley.id.au>
Wed, 22 Apr 2009 02:05:10 +0000 (10:05 +0800)
libempathy-gtk/Makefile.am
libempathy-gtk/empathy-presence-chooser.c
libempathy-gtk/empathy-presence-chooser.ui [deleted file]
libempathy-gtk/empathy-status-preset-dialog.c
po/POTFILES.in

index 7fb4579cf67c360de3f6cefe660e2cbb108492ab..63bcf5ae35a91655e26d83d20e0b70dd15097fe2 100644 (file)
@@ -119,7 +119,6 @@ uidir = $(datadir)/empathy
 ui_DATA =                                      \
        empathy-contact-widget.ui               \
        empathy-contact-dialogs.ui              \
-       empathy-presence-chooser.ui             \
        empathy-account-widget-generic.ui       \
        empathy-account-widget-jabber.ui        \
        empathy-account-widget-msn.ui           \
index 8e9574bc533c10798a195510079395458831785e..d565cf387f69121279ef725e16b5f6934ec057be 100644 (file)
@@ -46,6 +46,7 @@
 #include "empathy-ui-utils.h"
 #include "empathy-images.h"
 #include "empathy-presence-chooser.h"
+#include "empathy-status-preset-dialog.h"
 
 /* Flashing delay for icons (milliseconds). */
 #define FLASH_TIMEOUT 500
@@ -95,16 +96,6 @@ typedef struct {
        guint        flash_timeout_id;
 } EmpathyPresenceChooserPriv;
 
-typedef struct {
-       GtkWidget    *dialog;
-       GtkWidget    *checkbutton_save;
-       GtkWidget    *comboboxentry_message;
-       GtkWidget    *entry_message;
-       GtkWidget    *combobox_status;
-       GtkTreeModel *model_status;
-} CustomMessageDialog;
-
-static CustomMessageDialog *message_dialog = NULL;
 /* States to be listed in the menu.
  * Each state has a boolean telling if it can have custom message */
 static guint states[] = {MC_PRESENCE_AVAILABLE, TRUE,
@@ -130,7 +121,6 @@ static void            presence_chooser_set_state              (McPresence
                                                                const gchar                *status);
 static void            presence_chooser_custom_activate_cb     (GtkWidget                  *item,
                                                                gpointer                    user_data);
-static void            presence_chooser_dialog_show            (GtkWindow                  *parent);
 
 G_DEFINE_TYPE (EmpathyPresenceChooser, empathy_presence_chooser, GTK_TYPE_COMBO_BOX_ENTRY);
 
@@ -576,7 +566,7 @@ presence_chooser_changed_cb (GtkComboBox *self, gpointer user_data)
        }
 
        if (type == ENTRY_TYPE_EDIT_CUSTOM) {
-               GtkWidget *window;
+               GtkWidget *window, *dialog;
 
                presence_chooser_reset_status (EMPATHY_PRESENCE_CHOOSER (self));
 
@@ -586,7 +576,9 @@ presence_chooser_changed_cb (GtkComboBox *self, gpointer user_data)
                        window = NULL;
                }
 
-               presence_chooser_dialog_show (GTK_WINDOW (window));
+               dialog = empathy_status_preset_dialog_new (GTK_WINDOW (window));
+               gtk_dialog_run (GTK_DIALOG (dialog));
+               gtk_widget_destroy (dialog);
        }
        else if (type == ENTRY_TYPE_CUSTOM) {
                gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry),
@@ -1058,220 +1050,9 @@ static void
 presence_chooser_custom_activate_cb (GtkWidget *item,
                                     gpointer   user_data)
 {
-       presence_chooser_dialog_show (NULL);
-}
-
-static McPresence
-presence_chooser_dialog_get_selected (CustomMessageDialog *dialog)
-{
-       GtkTreeModel *model;
-       GtkTreeIter   iter;
-       McPresence    presence = LAST_MC_PRESENCE;
-
-       model = gtk_combo_box_get_model (GTK_COMBO_BOX (dialog->combobox_status));
-       if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (dialog->combobox_status), &iter)) {
-               gtk_tree_model_get (model, &iter,
-                                   COL_PRESENCE, &presence,
-                                   -1);
-       }
-
-       return presence;
-}
-
-static void
-presence_chooser_dialog_status_changed_cb (GtkWidget           *widget,
-                                          CustomMessageDialog *dialog)
-{
-       GtkListStore *store;
-       GtkTreeIter   iter;
-       McPresence    presence = LAST_MC_PRESENCE;
-       GList        *messages, *l;
-
-       presence = presence_chooser_dialog_get_selected (dialog);
-
-       store = gtk_list_store_new (1, G_TYPE_STRING);
-       messages = empathy_status_presets_get (presence, -1);
-       for (l = messages; l; l = l->next) {
-               gtk_list_store_append (store, &iter);
-               gtk_list_store_set (store, &iter, 0, l->data, -1);
-       }
-
-       gtk_entry_set_text (GTK_ENTRY (dialog->entry_message),
-                           messages ? messages->data : "");
-
-       g_list_free (messages);
-
-       gtk_combo_box_set_model (GTK_COMBO_BOX (dialog->comboboxentry_message),
-                                GTK_TREE_MODEL (store));
-
-       g_object_unref (store);
-}
-
-static void
-presence_chooser_dialog_message_changed_cb (GtkWidget           *widget,
-                                           CustomMessageDialog *dialog)
-{
-       McPresence   presence;
-       GList       *messages, *l;
-       const gchar *text;
-       gboolean     found = FALSE;
-
-       presence = presence_chooser_dialog_get_selected (dialog);
-       text = gtk_entry_get_text (GTK_ENTRY (dialog->entry_message));
-
-       messages = empathy_status_presets_get (presence, -1);
-       for (l = messages; l; l = l->next) {
-               if (!tp_strdiff (text, l->data)) {
-                       found = TRUE;
-                       break;
-               }
-       }
-       g_list_free (messages);
-
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->checkbutton_save),
-                                     found);
-}
-
-static void
-presence_chooser_dialog_save_toggled_cb (GtkWidget           *widget,
-                                        CustomMessageDialog *dialog)
-{
-       gboolean     active;
-       McPresence   state;
-       const gchar *text;
-
-       active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->checkbutton_save));
-       state = presence_chooser_dialog_get_selected (dialog);
-       text = gtk_entry_get_text (GTK_ENTRY (dialog->entry_message));
-
-       if (active) {
-               empathy_status_presets_set_last (state, text);
-       } else {
-               empathy_status_presets_remove (state, text);
-       }
-}
-
-static void
-presence_chooser_dialog_setup (CustomMessageDialog *dialog)
-{
-       GtkListStore    *store;
-       GtkCellRenderer *renderer;
-       GtkTreeIter      iter;
-       guint            i;
-
-       store = gtk_list_store_new (COL_COUNT,
-                                   G_TYPE_STRING,     /* Icon name */
-                                   G_TYPE_STRING,     /* Label     */
-                                   MC_TYPE_PRESENCE); /* Presence   */
-       gtk_combo_box_set_model (GTK_COMBO_BOX (dialog->combobox_status),
-                                GTK_TREE_MODEL (store));
-
-       renderer = gtk_cell_renderer_pixbuf_new ();
-       gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (dialog->combobox_status), renderer, FALSE);
-       gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (dialog->combobox_status), renderer,
-                                       "icon-name", COL_ICON,
-                                       NULL);
-       g_object_set (renderer, "stock-size", GTK_ICON_SIZE_BUTTON, NULL);
-
-       renderer = gtk_cell_renderer_text_new ();
-       gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (dialog->combobox_status), renderer, TRUE);
-       gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (dialog->combobox_status), renderer,
-                                       "text", COL_LABEL,
-                                       NULL);
-
-       for (i = 0; i < G_N_ELEMENTS (states); i += 2) {
-               if (!states[i+1]) {
-                       continue;
-               }
-
-               gtk_list_store_append (store, &iter);
-               gtk_list_store_set (store, &iter,
-                                   COL_ICON, empathy_icon_name_for_presence (states[i]),
-                                   COL_LABEL, empathy_presence_get_default_message (states[i]),
-                                   COL_PRESENCE, states[i],
-                                   -1);
-       }
-
-       gtk_combo_box_set_active (GTK_COMBO_BOX (dialog->combobox_status), 0);
-}
-
-static void
-presence_chooser_dialog_response_cb (GtkWidget           *widget,
-                                    gint                 response,
-                                    CustomMessageDialog *dialog)
-{
-       if (response == GTK_RESPONSE_APPLY) {
-               McPresence   state;
-               const gchar *text;
-
-               state = presence_chooser_dialog_get_selected (dialog);
-               text = gtk_entry_get_text (GTK_ENTRY (dialog->entry_message));
+       GtkWidget *dialog;
 
-               presence_chooser_set_state (state, text);
-       }
-
-       gtk_widget_destroy (widget);
+       dialog = empathy_status_preset_dialog_new (NULL);
+       gtk_dialog_run (GTK_DIALOG (dialog));
+       gtk_widget_destroy (dialog);
 }
-
-static void
-presence_chooser_dialog_destroy_cb (GtkWidget           *widget,
-                                   CustomMessageDialog *dialog)
-{
-
-       g_free (dialog);
-       message_dialog = NULL;
-}
-
-static void
-presence_chooser_dialog_show (GtkWindow *parent)
-{
-       GtkBuilder *gui;
-       gchar      *filename;
-
-       if (message_dialog) {
-               gtk_window_present (GTK_WINDOW (message_dialog->dialog));
-               return;
-       }
-
-       message_dialog = g_new0 (CustomMessageDialog, 1);
-
-       filename = empathy_file_lookup ("empathy-presence-chooser.ui",
-                                       "libempathy-gtk");
-       gui = empathy_builder_get_file (filename,
-                                      "custom_message_dialog", &message_dialog->dialog,
-                                      "checkbutton_save", &message_dialog->checkbutton_save,
-                                      "comboboxentry_message", &message_dialog->comboboxentry_message,
-                                      "combobox_status", &message_dialog->combobox_status,
-                                      NULL);
-       g_free (filename);
-
-       empathy_builder_connect (gui, message_dialog,
-                              "custom_message_dialog", "destroy", presence_chooser_dialog_destroy_cb,
-                              "custom_message_dialog", "response", presence_chooser_dialog_response_cb,
-                              "combobox_status", "changed", presence_chooser_dialog_status_changed_cb,
-                              "checkbutton_save", "toggled", presence_chooser_dialog_save_toggled_cb,
-                              NULL);
-
-       g_object_unref (gui);
-
-       /* Setup the message combobox */
-       message_dialog->entry_message = GTK_BIN (message_dialog->comboboxentry_message)->child;
-       gtk_entry_set_activates_default (GTK_ENTRY (message_dialog->entry_message), TRUE);
-       gtk_entry_set_width_chars (GTK_ENTRY (message_dialog->entry_message), 25);
-       g_signal_connect (message_dialog->entry_message, "changed",
-                         G_CALLBACK (presence_chooser_dialog_message_changed_cb),
-                         message_dialog);
-
-       presence_chooser_dialog_setup (message_dialog);
-
-       gtk_combo_box_entry_set_text_column (GTK_COMBO_BOX_ENTRY (message_dialog->comboboxentry_message), 0);
-
-       if (parent) {
-               gtk_window_set_transient_for (
-                       GTK_WINDOW (message_dialog->dialog),
-                       parent);
-       }
-
-       gtk_widget_show_all (message_dialog->dialog);
-}
-
diff --git a/libempathy-gtk/empathy-presence-chooser.ui b/libempathy-gtk/empathy-presence-chooser.ui
deleted file mode 100644 (file)
index 6e0a155..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-<?xml version="1.0"?>
-<interface>
-  <requires lib="gtk+" version="2.16"/>
-  <!-- interface-naming-policy toplevel-contextual -->
-  <object class="GtkDialog" id="custom_message_dialog">
-    <property name="visible">True</property>
-    <property name="border_width">5</property>
-    <property name="title" translatable="yes">Custom message</property>
-    <property name="resizable">False</property>
-    <property name="type_hint">dialog</property>
-    <property name="has_separator">False</property>
-    <child internal-child="vbox">
-      <object class="GtkVBox" id="dialog-vbox6">
-        <property name="visible">True</property>
-        <child>
-          <object class="GtkTable" id="table1">
-            <property name="visible">True</property>
-            <property name="border_width">5</property>
-            <property name="n_rows">3</property>
-            <property name="n_columns">2</property>
-            <property name="column_spacing">6</property>
-            <property name="row_spacing">6</property>
-            <child>
-              <object class="GtkComboBox" id="combobox_status">
-                <property name="visible">True</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options">GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkComboBoxEntry" id="comboboxentry_message">
-                <property name="visible">True</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options">GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkCheckButton" id="checkbutton_save">
-                <property name="label" translatable="yes">Save message</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_underline">True</property>
-                <property name="draw_indicator">True</property>
-              </object>
-              <packing>
-                <property name="right_attach">2</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="label472">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Message:</property>
-              </object>
-              <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="label471">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Status:</property>
-              </object>
-              <packing>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area6">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="closebutton1">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="button1">
-                <property name="label">gtk-apply</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </object>
-    </child>
-    <action-widgets>
-      <action-widget response="-6">closebutton1</action-widget>
-      <action-widget response="-10">button1</action-widget>
-    </action-widgets>
-  </object>
-</interface>
index ecb794b44977e82eb46dd84040048e6436f99acc..a428667e914ecf11811f61e6a70003da28f12348 100644 (file)
@@ -328,6 +328,8 @@ empathy_status_preset_dialog_init (EmpathyStatusPresetDialog *self)
        GtkWidget *toplevel_vbox, *remove_button;
        char *filename;
 
+       gtk_window_set_title (GTK_WINDOW (self),
+                       _("Edit Custom Messages"));
        gtk_dialog_set_has_separator (GTK_DIALOG (self), FALSE);
        gtk_dialog_add_button (GTK_DIALOG (self),
                        GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
index 4a6722c8244d5f0f08e4d6b8d12400351a856aca..623a23e6534e9bdb1cb4a179a80f8723016d1bc2 100644 (file)
@@ -37,7 +37,6 @@ libempathy-gtk/empathy-log-window.c
 [type: gettext/glade]libempathy-gtk/empathy-log-window.ui
 [type: gettext/glade]libempathy-gtk/empathy-new-message-dialog.ui
 libempathy-gtk/empathy-presence-chooser.c
-[type: gettext/glade]libempathy-gtk/empathy-presence-chooser.ui
 libempathy-gtk/empathy-spell-dialog.c
 [type: gettext/glade]libempathy-gtk/empathy-spell-dialog.ui
 libempathy-gtk/empathy-status-preset-dialog.c