about summary refs log tree commit diff stats
path: root/src/ui/core.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-10-05 01:39:48 +0100
committerJames Booth <boothj5@gmail.com>2014-10-05 01:39:48 +0100
commit2026ab4b6ee7dca156b6b72d9889f2039279af27 (patch)
tree1a283c50e24b394c9bd546f75d145900455f6a86 /src/ui/core.c
parentfd5326b40b0f4d7389d2d8d76106cbb52ac26d9d (diff)
downloadprofani-tty-2026ab4b6ee7dca156b6b72d9889f2039279af27.tar.gz
Implemented getting affiliation list, and setting affiliation
Diffstat (limited to 'src/ui/core.c')
-rw-r--r--src/ui/core.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/ui/core.c b/src/ui/core.c
index b6168c58..ae47d881 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -1750,6 +1750,55 @@ _ui_room_broadcast(const char * const room_jid, const char * const message)
 }
 
 static void
+_ui_handle_room_affiliation_list_error(const char * const room, const char * const affiliation,
+    const char * const error)
+{
+    ProfWin *window = wins_get_by_recipient(room);
+    if (window) {
+        win_save_vprint(window, '!', NULL, 0, COLOUR_ERROR, "", "Error retrieving %s list: %s", affiliation, error);
+    }
+}
+
+static void
+_ui_handle_room_affiliation_list(const char * const room, const char * const affiliation, GSList *jids)
+{
+    ProfWin *window = wins_get_by_recipient(room);
+    if (window) {
+        if (jids) {
+            win_save_vprint(window, '!', NULL, 0, 0, "", "Affiliation: %s", affiliation);
+            GSList *curr_jid = jids;
+            while (curr_jid) {
+                char *jid = curr_jid->data;
+                win_save_vprint(window, '!', NULL, 0, 0, "", "  %s", jid);
+                curr_jid = g_slist_next(curr_jid);
+            }
+            win_save_print(window, '!', NULL, 0, 0, "", "");
+        } else {
+            win_save_vprint(window, '!', NULL, 0, 0, "", "No users found with affiliation: %s", affiliation);
+        }
+    }
+}
+
+static void
+_ui_handle_room_affiliation_set_error(const char * const room, const char * const jid, const char * const affiliation,
+    const char * const error)
+{
+    ProfWin *window = wins_get_by_recipient(room);
+    if (window) {
+        win_save_vprint(window, '!', NULL, 0, COLOUR_ERROR, "", "Error setting %s affiliation for %s: %s", affiliation, jid, error);
+    }
+}
+
+static void
+_ui_handle_room_affiliation_set(const char * const room, const char * const jid, const char * const affiliation)
+{
+    ProfWin *window = wins_get_by_recipient(room);
+    if (window) {
+        win_save_vprint(window, '!', NULL, 0, 0, "", "Affiliation for %s set: %s", jid, affiliation);
+    }
+}
+
+static void
 _ui_status(void)
 {
     char *recipient = ui_current_recipient();
@@ -2698,4 +2747,9 @@ ui_init_module(void)
     ui_show_room_affiliation_list = _ui_show_room_affiliation_list;
     ui_handle_room_info_error = _ui_handle_room_info_error;
     ui_show_room_disco_info = _ui_show_room_disco_info;
+    ui_handle_room_affiliation_list_error = _ui_handle_room_affiliation_list_error;
+    ui_handle_room_affiliation_list =_ui_handle_room_affiliation_list;
+    ui_handle_room_affiliation_set_error =_ui_handle_room_affiliation_set_error;
+    ui_handle_room_affiliation_set = _ui_handle_room_affiliation_set;
+
 }