--- a/src/QuailStatusSelector.cpp Tue Aug 27 10:49:38 2013 +0100
+++ b/src/QuailStatusSelector.cpp Thu Aug 29 13:55:44 2013 +0100
@@ -69,9 +69,96 @@
qDebug() << "QuailStatusSelector::slotStatusChanged";
+ switch (statusSelector->itemData(index).toInt()) + case QUAIL_ACTION_STATUS_NEW: + qDebug() << "QuailStatusSelector::slotStatusChanged.NEW"; + case QUAIL_ACTION_STATUS_SAVED: + qDebug() << "QuailStatusSelector::slotStatusChanged.SAVED"; + case PURPLE_STATUS_OFFLINE: + qDebug() << "QuailStatusSelector::slotStatusChanged.OFFLINE"; + case PURPLE_STATUS_INVISIBLE: + qDebug() << "QuailStatusSelector::slotStatusChanged.INVISIBLE"; + case PURPLE_STATUS_UNAVAILABLE: + qDebug() << "QuailStatusSelector::slotStatusChanged.UNAVAILABLE"; + case PURPLE_STATUS_AWAY: + qDebug() << "QuailStatusSelector::slotStatusChanged.AWAY"; + case PURPLE_STATUS_AVAILABLE: + qDebug() << "QuailStatusSelector::slotStatusChanged.AVAILABLE"; + /* Must be a custom status */ +QuailStatusSelector::slotSetStatus(int statusId) + qDebug() << "QuailStatusSelector::slotSetStatus" << statusId; + GList *accounts = purple_accounts_get_all_active(); + PurpleAccount *account; + qDebug() << "QuailStatusSelector::slotSetStatus.1"; + for (node = accounts; node != NULL; node = node->next) + qDebug() << "QuailStatusSelector::slotSetStatus.2"; +// PurpleStatusType activeStatus; + PurpleStatusType *status_type; + //PurpleStatus *status; + account = (PurpleAccount*)node->data; + qDebug() << "QuailStatusSelector::slotSetStatus.3"; +// activeStatus = purple_account_get_active_status(account); + status_type = find_status_type_by_index(account, statusId); + id = purple_status_type_get_id(status_type); + qDebug() << "QuailStatusSelector::slotSetStatus.4"; + purple_account_set_status(account, id, TRUE, NULL); + qDebug() << "QuailStatusSelector::slotSetStatus.5"; + qDebug() << "QuailStatusSelector::slotSetStatus.end"; +/* COPIED from gtkstatusbox.c, this should be in purple */ +QuailStatusSelector::find_status_type_by_index(const PurpleAccount *account, + GList *l = purple_account_get_status_types(account); + for (i = 0; l; l = l->next) { + PurpleStatusType *status_type = (PurpleStatusType*)l->data; + if (!purple_status_type_is_user_settable(status_type) || + purple_status_type_is_independent(status_type)) QuailStatusSelector::slotPickBuddyIcon()
qDebug() << "QuailStatusSelector::slotPickBuddyIcon()";
--- a/src/QuailStatusSelector.h Tue Aug 27 10:49:38 2013 +0100
+++ b/src/QuailStatusSelector.h Thu Aug 29 13:55:44 2013 +0100
@@ -3,6 +3,11 @@
+#include <libpurple/account.h> +#include <libpurple/status.h> @@ -19,8 +24,12 @@
void updateStatusSelector();
void slotPickBuddyIcon();
void slotStatusChanged(int index);
+ void slotSetStatus(int statusId); + PurpleStatusType *find_status_type_by_index(const PurpleAccount *account, QComboBox *statusSelector;