[empathy: 8/19] Connect new dialog into presence chooser, remove old dialog



commit 155a17d3ddc4d173a57429faa2d59bba01d5ac5c
Author: Davyd Madeley <davyd madeley id au>
Date:   Wed Apr 22 10:05:10 2009 +0800

    Connect new dialog into presence chooser, remove old dialog
---
 libempathy-gtk/Makefile.am                    |    1 -
 libempathy-gtk/empathy-presence-chooser.c     |  237 +------------------------
 libempathy-gtk/empathy-presence-chooser.ui    |  140 ---------------
 libempathy-gtk/empathy-status-preset-dialog.c |    2 +
 po/POTFILES.in                                |    1 -
 5 files changed, 11 insertions(+), 370 deletions(-)

diff --git a/libempathy-gtk/Makefile.am b/libempathy-gtk/Makefile.am
index 7fb4579..63bcf5a 100644
--- a/libempathy-gtk/Makefile.am
+++ b/libempathy-gtk/Makefile.am
@@ -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		\
diff --git a/libempathy-gtk/empathy-presence-chooser.c b/libempathy-gtk/empathy-presence-chooser.c
index 8e9574b..d565cf3 100644
--- a/libempathy-gtk/empathy-presence-chooser.c
+++ b/libempathy-gtk/empathy-presence-chooser.c
@@ -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
index 6e0a155..0000000
--- a/libempathy-gtk/empathy-presence-chooser.ui
+++ /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>
diff --git a/libempathy-gtk/empathy-status-preset-dialog.c b/libempathy-gtk/empathy-status-preset-dialog.c
index ecb794b..a428667 100644
--- a/libempathy-gtk/empathy-status-preset-dialog.c
+++ b/libempathy-gtk/empathy-status-preset-dialog.c
@@ -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);
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 4a6722c..623a23e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]