#include <telepathy-glib/util.h>
+#include <libempathy/empathy-connectivity.h>
#include <libempathy/empathy-idle.h>
#include <libempathy/empathy-utils.h>
#include <libempathy/empathy-status-presets.h>
/* For combobox's model */
enum {
+ COL_STATUS_TEXT,
COL_STATE_ICON_NAME,
COL_STATE,
- COL_STATUS_TEXT,
COL_DISPLAY_MARKUP,
COL_STATUS_CUSTOMISABLE,
COL_TYPE,
typedef struct {
EmpathyIdle *idle;
+ EmpathyConnectivity *connectivity;
+
+ gulong state_change_signal_id;
gboolean editing_status;
int block_set_editing;
int i;
store = gtk_list_store_new (N_COLUMNS,
+ G_TYPE_STRING, /* COL_STATUS_TEXT */
G_TYPE_STRING, /* COL_STATE_ICON_NAME */
G_TYPE_UINT, /* COL_STATE */
- G_TYPE_STRING, /* COL_STATUS_TEXT */
G_TYPE_STRING, /* COL_DISPLAY_MARKUP */
G_TYPE_BOOLEAN, /* COL_STATUS_CUSTOMISABLE */
G_TYPE_INT); /* COL_TYPE */
icon_name = empathy_icon_name_for_presence (states[i].state);
gtk_list_store_insert_with_values (store, NULL, -1,
+ COL_STATUS_TEXT, status,
COL_STATE_ICON_NAME, icon_name,
COL_STATE, states[i].state,
- COL_STATUS_TEXT, status,
COL_DISPLAY_MARKUP, status,
COL_STATUS_CUSTOMISABLE, states[i].customisable,
COL_TYPE, ENTRY_TYPE_BUILTIN,
for (l = list; l; l = l->next) {
gtk_list_store_insert_with_values (store,
NULL, -1,
+ COL_STATUS_TEXT, l->data,
COL_STATE_ICON_NAME, icon_name,
COL_STATE, states[i].state,
- COL_STATUS_TEXT, l->data,
COL_DISPLAY_MARKUP, l->data,
COL_STATUS_CUSTOMISABLE, TRUE,
COL_TYPE, ENTRY_TYPE_SAVED,
g_list_free (list);
gtk_list_store_insert_with_values (store, NULL, -1,
+ COL_STATUS_TEXT, _("Custom Message..."),
COL_STATE_ICON_NAME, icon_name,
COL_STATE, states[i].state,
- COL_STATUS_TEXT, "",
COL_DISPLAY_MARKUP, custom_message,
COL_STATUS_CUSTOMISABLE, TRUE,
COL_TYPE, ENTRY_TYPE_CUSTOM,
-1);
gtk_list_store_insert_with_values (store, NULL, -1,
+ COL_STATUS_TEXT, _("Edit Custom Messages..."),
COL_STATE_ICON_NAME, GTK_STOCK_EDIT,
- COL_STATUS_TEXT, "",
COL_DISPLAY_MARKUP, _("Edit Custom Messages..."),
COL_TYPE, ENTRY_TYPE_EDIT_CUSTOM,
-1);
return FALSE;
}
+static void
+presence_chooser_connectivity_state_change (EmpathyConnectivity *connectivity,
+ gboolean new_online,
+ EmpathyPresenceChooser *chooser)
+{
+ gtk_widget_set_sensitive (GTK_WIDGET (chooser), new_online);
+}
+
static void
empathy_presence_chooser_init (EmpathyPresenceChooser *chooser)
{
/* FIXME: this string sucks */
gtk_widget_set_tooltip_text (GTK_WIDGET (chooser),
_("Set your presence and current status"));
+
+ priv->connectivity = empathy_connectivity_dup_singleton ();
+ priv->state_change_signal_id = g_signal_connect (priv->connectivity,
+ "state-change",
+ G_CALLBACK (presence_chooser_connectivity_state_change),
+ chooser);
+ presence_chooser_connectivity_state_change (priv->connectivity,
+ empathy_connectivity_is_online (priv->connectivity), chooser);
}
static void
object);
g_object_unref (priv->idle);
+ g_signal_handler_disconnect (priv->connectivity,
+ priv->state_change_signal_id);
+ priv->state_change_signal_id = 0;
+
+ g_object_unref (priv->connectivity);
+
G_OBJECT_CLASS (empathy_presence_chooser_parent_class)->finalize (object);
}
gtk_widget_show (image);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+ gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE);
gtk_widget_show (item);
g_object_set_data_full (G_OBJECT (item),