Implemented /occupants show

This commit is contained in:
James Booth
2014-10-09 21:42:09 +01:00
parent 73262221f5
commit cbe14d6e4e
6 changed files with 43 additions and 4 deletions

View File

@@ -2788,7 +2788,8 @@ _ui_room_show_occupants(const char * const room)
{
ProfWin *window = wins_get_by_recipient(room);
if (window && !window->subwin) {
cons_debug("Showing occupants");
wins_show_subwin(window);
ui_muc_roster(room);
}
}

View File

@@ -102,6 +102,19 @@ win_hide_subwin(ProfWin *window)
win_redraw(window);
}
void
win_show_subwin(ProfWin *window)
{
if (!window->subwin) {
window->subwin = newpad(PAD_SIZE, OCCUPANT_WIN_WIDTH);
wbkgd(window->subwin, COLOUR_TEXT);
int cols = getmaxx(stdscr);
wresize(window->win, PAD_SIZE, (cols/OCCUPANT_WIN_RATIO) * (OCCUPANT_WIN_RATIO-1));
win_redraw(window);
}
}
void
win_free(ProfWin* window)
{

View File

@@ -103,5 +103,6 @@ void win_save_println(ProfWin *window, const char * const message);
void win_save_newline(ProfWin *window);
void win_redraw(ProfWin *window);
void win_hide_subwin(ProfWin *window);
void win_show_subwin(ProfWin *window);
#endif

View File

@@ -294,7 +294,7 @@ wins_resize_all(void)
GList *curr = values;
while (curr != NULL) {
ProfWin *window = curr->data;
if (window->type == WIN_MUC) {
if ((window->type == WIN_MUC) && (window->subwin)) {
wresize(window->win, PAD_SIZE, (cols/OCCUPANT_WIN_RATIO) * (OCCUPANT_WIN_RATIO-1));
} else {
wresize(window->win, PAD_SIZE, cols);
@@ -320,12 +320,28 @@ wins_hide_subwin(ProfWin *window)
getmaxyx(stdscr, rows, cols);
win_hide_subwin(window);
ProfWin *current_win = wins_get_current();
if (current_win->type == WIN_MUC) {
pnoutrefresh(current_win->win, current_win->y_pos, 0, 1, 0, rows-3, cols-1);
}
}
void
wins_show_subwin(ProfWin *window)
{
int rows, cols;
getmaxyx(stdscr, rows, cols);
win_show_subwin(window);
ProfWin *current_win = wins_get_current();
if (current_win->type == WIN_MUC) {
pnoutrefresh(current_win->win, current_win->y_pos, 0, 1, 0, rows-3, ((cols/OCCUPANT_WIN_RATIO) * (OCCUPANT_WIN_RATIO-1)) -1);
pnoutrefresh(current_win->subwin, current_win->sub_y_pos, 0, 1, (cols/OCCUPANT_WIN_RATIO) * (OCCUPANT_WIN_RATIO-1), rows-3, cols-1);
}
}
gboolean
wins_duck_exists(void)
{

View File

@@ -64,5 +64,6 @@ gboolean wins_xmlconsole_exists(void);
ProfWin * wins_get_xmlconsole(void);
gboolean wins_swap(int source_win, int target_win);
void wins_hide_subwin(ProfWin *window);
void wins_show_subwin(ProfWin *window);
#endif