mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
Added win create functions for chat and private chat
This commit is contained in:
parent
9ba5a576ba
commit
8e46b9e75b
@ -333,7 +333,7 @@ _ui_incoming_msg(const char * const barejid, const char * const message, GTimeVa
|
||||
|
||||
ProfWin *window = wins_get_by_recipient(barejid);
|
||||
if (window == NULL) {
|
||||
window = wins_new(barejid, WIN_CHAT);
|
||||
window = wins_new_chat(barejid);
|
||||
#ifdef HAVE_LIBOTR
|
||||
if (otr_is_secure(barejid)) {
|
||||
window->wins.chat.is_otr = TRUE;
|
||||
@ -406,7 +406,7 @@ _ui_incoming_private_msg(const char * const fulljid, const char * const message,
|
||||
|
||||
ProfWin *window = wins_get_by_recipient(fulljid);
|
||||
if (window == NULL) {
|
||||
window = wins_new(fulljid, WIN_PRIVATE);
|
||||
window = wins_new_private(fulljid);
|
||||
}
|
||||
|
||||
int num = wins_get_num(window);
|
||||
|
@ -73,6 +73,56 @@ win_occpuants_cols(void)
|
||||
return CEILING( (((double)cols) / 100) * occupants_win_percent);
|
||||
}
|
||||
|
||||
ProfWin*
|
||||
win_create_chat(const char * const barejid)
|
||||
{
|
||||
ProfWin *new_win = malloc(sizeof(ProfWin));
|
||||
int cols = getmaxx(stdscr);
|
||||
|
||||
new_win->type = WIN_CHAT;
|
||||
|
||||
new_win->win = newpad(PAD_SIZE, (cols));
|
||||
wbkgd(new_win->win, theme_attrs(THEME_TEXT));
|
||||
|
||||
new_win->from = strdup(barejid);
|
||||
new_win->buffer = buffer_create();
|
||||
new_win->y_pos = 0;
|
||||
new_win->paged = 0;
|
||||
new_win->unread = 0;
|
||||
|
||||
new_win->wins.chat.resource = NULL;
|
||||
new_win->wins.chat.is_otr = FALSE;
|
||||
new_win->wins.chat.is_trusted = FALSE;
|
||||
new_win->wins.chat.history_shown = FALSE;
|
||||
|
||||
scrollok(new_win->win, TRUE);
|
||||
|
||||
return new_win;
|
||||
}
|
||||
|
||||
ProfWin*
|
||||
win_create_private(const char * const fulljid)
|
||||
{
|
||||
ProfWin *new_win = malloc(sizeof(ProfWin));
|
||||
int cols = getmaxx(stdscr);
|
||||
|
||||
new_win->type = WIN_PRIVATE;
|
||||
|
||||
new_win->win = newpad(PAD_SIZE, (cols));
|
||||
wbkgd(new_win->win, theme_attrs(THEME_TEXT));
|
||||
|
||||
new_win->from = strdup(fulljid);
|
||||
new_win->buffer = buffer_create();
|
||||
new_win->y_pos = 0;
|
||||
new_win->paged = 0;
|
||||
new_win->unread = 0;
|
||||
|
||||
scrollok(new_win->win, TRUE);
|
||||
|
||||
return new_win;
|
||||
|
||||
}
|
||||
|
||||
ProfWin*
|
||||
win_create(const char * const title, win_type_t type)
|
||||
{
|
||||
|
@ -111,6 +111,9 @@ typedef struct prof_win_t {
|
||||
} ProfWin;
|
||||
|
||||
ProfWin* win_create(const char * const title, win_type_t type);
|
||||
ProfWin* win_create_chat(const char * const barejid);
|
||||
ProfWin* win_create_private(const char * const fulljid);
|
||||
|
||||
void win_free(ProfWin *window);
|
||||
void win_update_virtual(ProfWin *window);
|
||||
void win_move_to_end(ProfWin *window);
|
||||
|
@ -266,6 +266,28 @@ wins_new(const char * const from, win_type_t type)
|
||||
return new;
|
||||
}
|
||||
|
||||
ProfWin *
|
||||
wins_new_chat(const char * const barejid)
|
||||
{
|
||||
GList *keys = g_hash_table_get_keys(windows);
|
||||
int result = get_next_available_win_num(keys);
|
||||
ProfWin *new = win_create_chat(barejid);
|
||||
g_hash_table_insert(windows, GINT_TO_POINTER(result), new);
|
||||
g_list_free(keys);
|
||||
return new;
|
||||
}
|
||||
|
||||
ProfWin *
|
||||
wins_new_private(const char * const fulljid)
|
||||
{
|
||||
GList *keys = g_hash_table_get_keys(windows);
|
||||
int result = get_next_available_win_num(keys);
|
||||
ProfWin *new = win_create_private(fulljid);
|
||||
g_hash_table_insert(windows, GINT_TO_POINTER(result), new);
|
||||
g_list_free(keys);
|
||||
return new;
|
||||
}
|
||||
|
||||
int
|
||||
wins_get_total_unread(void)
|
||||
{
|
||||
|
@ -50,6 +50,8 @@ void wins_close_by_num(int i);
|
||||
void wins_clear_current(void);
|
||||
gboolean wins_is_current(ProfWin *window);
|
||||
ProfWin * wins_new(const char * const from, win_type_t type);
|
||||
ProfWin * wins_new_chat(const char * const barejid);
|
||||
ProfWin * wins_new_private(const char * const fulljid);
|
||||
int wins_get_total_unread(void);
|
||||
void wins_resize_all(void);
|
||||
GSList * wins_get_chat_recipients(void);
|
||||
|
Loading…
Reference in New Issue
Block a user