mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-24 10:56:22 +00:00
Added /room <affiliation> command
This commit is contained in:
@@ -1892,7 +1892,6 @@ _ui_show_room_info(ProfWin *window, const char * const room)
|
||||
char *role = muc_role_str(room);
|
||||
char *affiliation = muc_affiliation_str(room);
|
||||
|
||||
win_save_print(window, '-', NULL, 0, 0, "", "");
|
||||
win_save_vprint(window, '!', NULL, 0, 0, "", "Room: %s", room);
|
||||
win_save_vprint(window, '!', NULL, 0, 0, "", " Affiliation: %s", affiliation);
|
||||
win_save_vprint(window, '!', NULL, 0, 0, "", " Role: %s", role);
|
||||
@@ -1905,7 +1904,6 @@ _ui_show_room_role_list(ProfWin *window, const char * const room, muc_role_t rol
|
||||
GSList *occupants = muc_occupants_by_role(room, role);
|
||||
|
||||
if (!occupants) {
|
||||
win_save_print(window, '-', NULL, 0, 0, "", "");
|
||||
switch (role) {
|
||||
case MUC_ROLE_MODERATOR:
|
||||
win_save_print(window, '!', NULL, 0, 0, "", "No moderators found.");
|
||||
@@ -1921,7 +1919,6 @@ _ui_show_room_role_list(ProfWin *window, const char * const room, muc_role_t rol
|
||||
}
|
||||
win_save_print(window, '-', NULL, 0, 0, "", "");
|
||||
} else {
|
||||
win_save_print(window, '-', NULL, 0, 0, "", "");
|
||||
switch (role) {
|
||||
case MUC_ROLE_MODERATOR:
|
||||
win_save_print(window, '!', NULL, 0, 0, "", "Moderators:");
|
||||
@@ -1950,6 +1947,61 @@ _ui_show_room_role_list(ProfWin *window, const char * const room, muc_role_t rol
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_ui_show_room_affiliation_list(ProfWin *window, const char * const room, muc_affiliation_t affiliation)
|
||||
{
|
||||
GSList *occupants = muc_occupants_by_affiliation(room, affiliation);
|
||||
|
||||
if (!occupants) {
|
||||
switch (affiliation) {
|
||||
case MUC_AFFILIATION_OWNER:
|
||||
win_save_print(window, '!', NULL, 0, 0, "", "No owners found.");
|
||||
break;
|
||||
case MUC_AFFILIATION_ADMIN:
|
||||
win_save_print(window, '!', NULL, 0, 0, "", "No admins found.");
|
||||
break;
|
||||
case MUC_AFFILIATION_MEMBER:
|
||||
win_save_print(window, '!', NULL, 0, 0, "", "No members found.");
|
||||
break;
|
||||
case MUC_AFFILIATION_OUTCAST:
|
||||
win_save_print(window, '!', NULL, 0, 0, "", "No outcasts found.");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
win_save_print(window, '-', NULL, 0, 0, "", "");
|
||||
} else {
|
||||
switch (affiliation) {
|
||||
case MUC_AFFILIATION_OWNER:
|
||||
win_save_print(window, '!', NULL, 0, 0, "", "Owners:");
|
||||
break;
|
||||
case MUC_AFFILIATION_ADMIN:
|
||||
win_save_print(window, '!', NULL, 0, 0, "", "Admins:");
|
||||
break;
|
||||
case MUC_AFFILIATION_MEMBER:
|
||||
win_save_print(window, '!', NULL, 0, 0, "", "Members:");
|
||||
break;
|
||||
case MUC_AFFILIATION_OUTCAST:
|
||||
win_save_print(window, '!', NULL, 0, 0, "", "Outcasts:");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
GSList *curr_occupant = occupants;
|
||||
while(curr_occupant) {
|
||||
Occupant *occupant = curr_occupant->data;
|
||||
if (occupant->affiliation == affiliation) {
|
||||
win_save_vprint(window, '!', NULL, 0, 0, "", " %s", occupant->nick);
|
||||
}
|
||||
|
||||
curr_occupant = g_slist_next(curr_occupant);
|
||||
}
|
||||
|
||||
win_save_print(window, '-', NULL, 0, 0, "", "");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_ui_handle_form_field(ProfWin *window, char *tag, FormField *field)
|
||||
{
|
||||
@@ -2579,4 +2631,5 @@ ui_init_module(void)
|
||||
ui_handle_room_configuration_form_error = _ui_handle_room_configuration_form_error;
|
||||
ui_show_room_info = _ui_show_room_info;
|
||||
ui_show_room_role_list = _ui_show_room_role_list;
|
||||
ui_show_room_affiliation_list = _ui_show_room_affiliation_list;
|
||||
}
|
||||
|
||||
@@ -139,6 +139,7 @@ void (*ui_room_requires_config)(const char * const room_jid);
|
||||
void (*ui_room_destroyed)(const char * const room_jid);
|
||||
void (*ui_show_room_info)(ProfWin *window, const char * const room);
|
||||
void (*ui_show_room_role_list)(ProfWin *window, const char * const room, muc_role_t role);
|
||||
void (*ui_show_room_affiliation_list)(ProfWin *window, const char * const room, muc_affiliation_t affiliation);
|
||||
|
||||
void (*ui_room_broadcast)(const char * const room_jid,
|
||||
const char * const message);
|
||||
|
||||
@@ -195,7 +195,6 @@ win_show_occupant_info(ProfWin *window, const char * const room, Occupant *occup
|
||||
|
||||
int presence_colour = win_presence_colour(presence_str);
|
||||
|
||||
win_save_print(window, '-', NULL, 0, 0, "", "");
|
||||
win_save_print(window, '!', NULL, NO_EOL, presence_colour, "", occupant->nick);
|
||||
win_save_vprint(window, '!', NULL, NO_DATE | NO_EOL, presence_colour, "", " is %s", presence_str);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user