0
1
mirror of https://github.com/profanity-im/profanity.git synced 2025-07-26 12:14:28 -04:00

Added win_get_title

This commit is contained in:
James Booth 2014-12-21 22:01:56 +00:00
parent d41ac71d27
commit 0c1bbb63c0
9 changed files with 87 additions and 142 deletions

View File

@ -2289,16 +2289,13 @@ cmd_form(gchar **args, struct cmd_help_t help)
return TRUE; return TRUE;
} }
gchar **split_recipient = g_strsplit(confwin->from, " ", 2);
char *roomjid = split_recipient[0];
if (g_strcmp0(args[0], "submit") == 0) { if (g_strcmp0(args[0], "submit") == 0) {
iq_submit_room_config(roomjid, confwin->form); iq_submit_room_config(confwin->roomjid, confwin->form);
} }
if (g_strcmp0(args[0], "cancel") == 0) { if (g_strcmp0(args[0], "cancel") == 0) {
iq_room_config_cancel(roomjid); iq_room_config_cancel(confwin->roomjid);
} }
if ((g_strcmp0(args[0], "submit") == 0) || (g_strcmp0(args[0], "cancel") == 0)) { if ((g_strcmp0(args[0], "submit") == 0) || (g_strcmp0(args[0], "cancel") == 0)) {
@ -2306,7 +2303,7 @@ cmd_form(gchar **args, struct cmd_help_t help)
cmd_autocomplete_remove_form_fields(confwin->form); cmd_autocomplete_remove_form_fields(confwin->form);
} }
wins_close_current(); wins_close_current();
ProfWin *current = (ProfWin*)wins_get_muc(roomjid); ProfWin *current = (ProfWin*)wins_get_muc(confwin->roomjid);
if (current == NULL) { if (current == NULL) {
current = wins_get_console(); current = wins_get_console();
} }
@ -2314,8 +2311,6 @@ cmd_form(gchar **args, struct cmd_help_t help)
ui_switch_win(num); ui_switch_win(num);
} }
g_strfreev(split_recipient);
return TRUE; return TRUE;
} }
@ -2617,10 +2612,7 @@ cmd_room(gchar **args, struct cmd_help_t help)
} }
if (g_strcmp0(args[0], "config") == 0) { if (g_strcmp0(args[0], "config") == 0) {
GString *win_title = g_string_new(mucwin->roomjid); ProfMucConfWin *confwin = wins_get_muc_conf(mucwin->roomjid);
g_string_append(win_title, " config");
ProfMucConfWin *confwin = wins_get_muc_conf(win_title->str);
g_string_free(win_title, TRUE);
if (confwin != NULL) { if (confwin != NULL) {
num = wins_get_num(window); num = wins_get_num(window);

View File

@ -861,9 +861,7 @@ _ui_switch_win(const int i)
status_bar_current(1); status_bar_current(1);
status_bar_active(1); status_bar_active(1);
} else { } else {
GString *recipient_str = win_get_recipient_string(new_current); title_bar_switch();
title_bar_set_recipient(recipient_str->str);
g_string_free(recipient_str, TRUE);
status_bar_current(i); status_bar_current(i);
status_bar_active(i); status_bar_active(i);
} }
@ -898,9 +896,7 @@ _ui_previous_win(void)
status_bar_current(1); status_bar_current(1);
status_bar_active(1); status_bar_active(1);
} else { } else {
GString *recipient_str = win_get_recipient_string(new_current); title_bar_switch();
title_bar_set_recipient(recipient_str->str);
g_string_free(recipient_str, TRUE);
status_bar_current(i); status_bar_current(i);
status_bar_active(i); status_bar_active(i);
} }
@ -931,9 +927,7 @@ _ui_next_win(void)
status_bar_current(1); status_bar_current(1);
status_bar_active(1); status_bar_active(1);
} else { } else {
GString *recipient_str = win_get_recipient_string(new_current); title_bar_switch();
title_bar_set_recipient(recipient_str->str);
g_string_free(recipient_str, TRUE);
status_bar_current(i); status_bar_current(i);
status_bar_active(i); status_bar_active(i);
} }
@ -963,9 +957,7 @@ _ui_gone_secure(const char * const barejid, gboolean trusted)
} }
if (wins_is_current(window)) { if (wins_is_current(window)) {
GString *recipient_str = win_get_recipient_string(window); title_bar_switch();
title_bar_set_recipient(recipient_str->str);
g_string_free(recipient_str, TRUE);
} else { } else {
int num = wins_get_num(window); int num = wins_get_num(window);
status_bar_new(num); status_bar_new(num);
@ -990,9 +982,7 @@ _ui_gone_insecure(const char * const barejid)
ProfWin *window = (ProfWin*)chatwin; ProfWin *window = (ProfWin*)chatwin;
win_save_print(window, '!', NULL, 0, THEME_OTR_ENDED, "", "OTR session ended."); win_save_print(window, '!', NULL, 0, THEME_OTR_ENDED, "", "OTR session ended.");
if (wins_is_current(window)) { if (wins_is_current(window)) {
GString *recipient_str = win_get_recipient_string(window); title_bar_switch();
title_bar_set_recipient(recipient_str->str);
g_string_free(recipient_str, TRUE);
} }
} }
} }
@ -1100,9 +1090,7 @@ _ui_trust(const char * const barejid)
ProfWin *window = (ProfWin*)chatwin; ProfWin *window = (ProfWin*)chatwin;
win_save_print(window, '!', NULL, 0, THEME_OTR_TRUSTED, "", "OTR session trusted."); win_save_print(window, '!', NULL, 0, THEME_OTR_TRUSTED, "", "OTR session trusted.");
if (wins_is_current(window)) { if (wins_is_current(window)) {
GString *recipient_str = win_get_recipient_string(window); title_bar_switch();
title_bar_set_recipient(recipient_str->str);
g_string_free(recipient_str, TRUE);
} }
} }
} }
@ -1118,9 +1106,7 @@ _ui_untrust(const char * const barejid)
ProfWin *window = (ProfWin*)chatwin; ProfWin *window = (ProfWin*)chatwin;
win_save_print(window, '!', NULL, 0, THEME_OTR_UNTRUSTED, "", "OTR session untrusted."); win_save_print(window, '!', NULL, 0, THEME_OTR_UNTRUSTED, "", "OTR session untrusted.");
if (wins_is_current(window)) { if (wins_is_current(window)) {
GString *recipient_str = win_get_recipient_string(window); title_bar_switch();
title_bar_set_recipient(recipient_str->str);
g_string_free(recipient_str, TRUE);
} }
} }
} }
@ -2605,10 +2591,7 @@ _ui_show_form(ProfMucConfWin *confwin)
win_save_print(window, '-', NULL, NO_EOL, 0, "", "Form title: "); win_save_print(window, '-', NULL, NO_EOL, 0, "", "Form title: ");
win_save_print(window, '-', NULL, NO_DATE, 0, "", confwin->form->title); win_save_print(window, '-', NULL, NO_DATE, 0, "", confwin->form->title);
} else { } else {
gchar **split_recipient = g_strsplit(confwin->from, " ", 2); win_save_vprint(window, '-', NULL, 0, 0, "", "Configuration for room %s.", confwin->roomjid);
char *roomjid = split_recipient[0];
win_save_vprint(window, '-', NULL, 0, 0, "", "Configuration for room %s.", roomjid);
g_strfreev(split_recipient);
} }
win_save_print(window, '-', NULL, 0, 0, "", ""); win_save_print(window, '-', NULL, 0, 0, "", "");
@ -2642,14 +2625,11 @@ _ui_show_form_field(ProfWin *window, DataForm *form, char *tag)
} }
static void static void
_ui_handle_room_configuration(const char * const room, DataForm *form) _ui_handle_room_configuration(const char * const roomjid, DataForm *form)
{ {
GString *title = g_string_new(room); ProfWin *window = wins_new_muc_config(roomjid, form);
g_string_append(title, " config");
ProfWin *window = wins_new_muc_config(title->str, form);
ProfMucConfWin *confwin = (ProfMucConfWin*)window; ProfMucConfWin *confwin = (ProfMucConfWin*)window;
assert(confwin->memcheck = PROFCONFWIN_MEMCHECK); assert(confwin->memcheck = PROFCONFWIN_MEMCHECK);
g_string_free(title, TRUE);
int num = wins_get_num(window); int num = wins_get_num(window);
ui_switch_win(num); ui_switch_win(num);

View File

@ -48,11 +48,7 @@
#include "ui/window.h" #include "ui/window.h"
#include "roster_list.h" #include "roster_list.h"
#define CONSOLE_TITLE "Profanity. Type /help for help information."
static WINDOW *win; static WINDOW *win;
static char *current_title = NULL;
static char *current_recipient = NULL;
static contact_presence_t current_presence; static contact_presence_t current_presence;
static gboolean typing; static gboolean typing;
@ -81,8 +77,8 @@ create_title_bar(void)
void void
title_bar_update_virtual(void) title_bar_update_virtual(void)
{ {
if (current_recipient != NULL) { ProfWin *window = wins_get_current();
if (window->type != WIN_CONSOLE) {
if (typing_elapsed != NULL) { if (typing_elapsed != NULL) {
gdouble seconds = g_timer_elapsed(typing_elapsed, NULL); gdouble seconds = g_timer_elapsed(typing_elapsed, NULL);
@ -112,16 +108,9 @@ void
title_bar_console(void) title_bar_console(void)
{ {
werase(win); werase(win);
if (current_recipient != NULL) {
free(current_recipient);
}
current_recipient = NULL;
typing = FALSE; typing = FALSE;
typing_elapsed = NULL; typing_elapsed = NULL;
free(current_title);
current_title = strdup(CONSOLE_TITLE);
_title_bar_draw(); _title_bar_draw();
} }
@ -132,8 +121,9 @@ title_bar_set_presence(contact_presence_t presence)
_title_bar_draw(); _title_bar_draw();
} }
// TODO remove
void void
title_bar_set_recipient(const char * const recipient) title_bar_switch(void)
{ {
if (typing_elapsed != NULL) { if (typing_elapsed != NULL) {
g_timer_destroy(typing_elapsed); g_timer_destroy(typing_elapsed);
@ -141,12 +131,6 @@ title_bar_set_recipient(const char * const recipient)
typing = FALSE; typing = FALSE;
} }
free(current_recipient);
current_recipient = strdup(recipient);
free(current_title);
current_title = strdup(recipient);
_title_bar_draw(); _title_bar_draw();
} }
@ -179,7 +163,9 @@ _title_bar_draw(void)
waddch(win, ' '); waddch(win, ' ');
} }
mvwprintw(win, 0, 0, " %s", current_title); char *title = win_get_title(current);
mvwprintw(win, 0, 0, " %s", title);
free(title);
if (current && current->type == WIN_CHAT) { if (current && current->type == WIN_CHAT) {
ProfChatWin *chatwin = (ProfChatWin*) current; ProfChatWin *chatwin = (ProfChatWin*) current;
@ -193,12 +179,6 @@ _title_bar_draw(void)
if (typing) { if (typing) {
wprintw(win, " (typing...)"); wprintw(win, " (typing...)");
} }
} else if (current && current->type == WIN_MUC_CONFIG) {
ProfMucConfWin *confwin = (ProfMucConfWin*) current;
assert(confwin->memcheck == PROFCONFWIN_MEMCHECK);
if (confwin->form->modified) {
wprintw(win, " *");
}
} }
_show_self_presence(); _show_self_presence();
@ -269,7 +249,7 @@ _show_privacy(ProfChatWin *chatwin)
{ {
int bracket_attrs = theme_attrs(THEME_TITLE_BRACKET); int bracket_attrs = theme_attrs(THEME_TITLE_BRACKET);
if (chatwin->is_otr) { if (!chatwin->is_otr) {
if (prefs_get_boolean(PREF_OTR_WARN)) { if (prefs_get_boolean(PREF_OTR_WARN)) {
int unencrypted_attrs = theme_attrs(THEME_TITLE_UNENCRYPTED); int unencrypted_attrs = theme_attrs(THEME_TITLE_UNENCRYPTED);
wprintw(win, " "); wprintw(win, " ");

View File

@ -40,7 +40,7 @@ void title_bar_update_virtual(void);
void title_bar_resize(void); void title_bar_resize(void);
void title_bar_console(void); void title_bar_console(void);
void title_bar_set_presence(contact_presence_t presence); void title_bar_set_presence(contact_presence_t presence);
void title_bar_set_recipient(const char * const from); void title_bar_switch(void);
void title_bar_set_typing(gboolean is_typing); void title_bar_set_typing(gboolean is_typing);
#endif #endif

View File

@ -199,7 +199,7 @@ void (*ui_handle_recipient_error)(const char * const recipient, const char * con
void (*ui_handle_error)(const char * const err_msg); void (*ui_handle_error)(const char * const err_msg);
void (*ui_clear_win_title)(void); void (*ui_clear_win_title)(void);
void (*ui_handle_room_join_error)(const char * const roomjid, const char * const err); void (*ui_handle_room_join_error)(const char * const roomjid, const char * const err);
void (*ui_handle_room_configuration)(const char * const room, DataForm *form); void (*ui_handle_room_configuration)(const char * const roomjid, DataForm *form);
void (*ui_handle_room_configuration_form_error)(const char * const roomjid, const char * const message); void (*ui_handle_room_configuration_form_error)(const char * const roomjid, const char * const message);
void (*ui_handle_room_config_submit_result)(const char * const roomjid); void (*ui_handle_room_config_submit_result)(const char * const roomjid);
void (*ui_handle_room_config_submit_result_error)(const char * const roomjid, const char * const message); void (*ui_handle_room_config_submit_result_error)(const char * const roomjid, const char * const message);

View File

@ -52,7 +52,7 @@
#include "ui/window.h" #include "ui/window.h"
#include "xmpp/xmpp.h" #include "xmpp/xmpp.h"
#define CONS_WIN_TITLE "_cons" #define CONS_WIN_TITLE "Profanity. Type /help for help information."
#define XML_WIN_TITLE "XML Console" #define XML_WIN_TITLE "XML Console"
#define CEILING(X) (X-(int)(X) > 0 ? (int)(X+1) : (int)(X)) #define CEILING(X) (X-(int)(X) > 0 ? (int)(X+1) : (int)(X))
@ -122,8 +122,6 @@ win_create_console(void)
new_win->window.layout = _win_create_split_layout(); new_win->window.layout = _win_create_split_layout();
new_win->window.unread = 0; new_win->window.unread = 0;
new_win->from = strdup(CONS_WIN_TITLE);
return &new_win->window; return &new_win->window;
} }
@ -185,14 +183,14 @@ win_create_muc(const char * const roomjid)
} }
ProfWin* ProfWin*
win_create_muc_config(const char * const title, DataForm *form) win_create_muc_config(const char * const roomjid, DataForm *form)
{ {
ProfMucConfWin *new_win = malloc(sizeof(ProfMucConfWin)); ProfMucConfWin *new_win = malloc(sizeof(ProfMucConfWin));
new_win->window.type = WIN_MUC_CONFIG; new_win->window.type = WIN_MUC_CONFIG;
new_win->window.layout = _win_create_simple_layout(); new_win->window.layout = _win_create_simple_layout();
new_win->window.unread = 0; new_win->window.unread = 0;
new_win->from = strdup(title); new_win->roomjid = strdup(roomjid);
new_win->form = form; new_win->form = form;
new_win->memcheck = PROFCONFWIN_MEMCHECK; new_win->memcheck = PROFCONFWIN_MEMCHECK;
@ -223,11 +221,54 @@ win_create_xmlconsole(void)
new_win->window.layout = _win_create_simple_layout(); new_win->window.layout = _win_create_simple_layout();
new_win->window.unread = 0; new_win->window.unread = 0;
new_win->from = strdup(XML_WIN_TITLE); new_win->memcheck = PROFXMLWIN_MEMCHECK;
return &new_win->window; return &new_win->window;
} }
char *
win_get_title(ProfWin *window)
{
if (window == NULL) {
return strdup(CONS_WIN_TITLE);
}
if (window->type == WIN_CONSOLE) {
return strdup(CONS_WIN_TITLE);
}
if (window->type == WIN_CHAT) {
ProfChatWin *chatwin = (ProfChatWin*) window;
assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK);
return strdup(chatwin->barejid);
}
if (window->type == WIN_MUC) {
ProfMucWin *mucwin = (ProfMucWin*) window;
assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
return strdup(mucwin->roomjid);
}
if (window->type == WIN_MUC_CONFIG) {
ProfMucConfWin *confwin = (ProfMucConfWin*) window;
assert(confwin->memcheck == PROFCONFWIN_MEMCHECK);
GString *title = g_string_new(confwin->roomjid);
g_string_append(title, " config");
if (confwin->form->modified) {
g_string_append(title, " *");
}
char *title_str = title->str;
g_string_free(title, FALSE);
return title_str;
}
if (window->type == WIN_PRIVATE) {
ProfPrivateWin *privatewin = (ProfPrivateWin*) window;
assert(privatewin->memcheck == PROFPRIVATEWIN_MEMCHECK);
return strdup(privatewin->fulljid);
}
if (window->type == WIN_XML) {
return strdup(XML_WIN_TITLE);
}
return NULL;
}
void void
win_hide_subwin(ProfWin *window) win_hide_subwin(ProfWin *window)
{ {
@ -292,11 +333,6 @@ win_free(ProfWin* window)
free(chatwin->resource); free(chatwin->resource);
} }
if (window->type == WIN_CONSOLE) {
ProfConsoleWin *consolewin = (ProfConsoleWin*)window;
free(consolewin->from);
}
if (window->type == WIN_MUC) { if (window->type == WIN_MUC) {
ProfMucWin *mucwin = (ProfMucWin*)window; ProfMucWin *mucwin = (ProfMucWin*)window;
free(mucwin->roomjid); free(mucwin->roomjid);
@ -304,7 +340,7 @@ win_free(ProfWin* window)
if (window->type == WIN_MUC_CONFIG) { if (window->type == WIN_MUC_CONFIG) {
ProfMucConfWin *mucconf = (ProfMucConfWin*)window; ProfMucConfWin *mucconf = (ProfMucConfWin*)window;
free(mucconf->from); free(mucconf->roomjid);
form_destroy(mucconf->form); form_destroy(mucconf->form);
} }
@ -313,52 +349,9 @@ win_free(ProfWin* window)
free(privatewin->fulljid); free(privatewin->fulljid);
} }
if (window->type == WIN_XML) {
ProfXMLWin *xmlwin = (ProfXMLWin*)window;
free(xmlwin->from);
}
free(window); free(window);
} }
GString *
win_get_recipient_string(ProfWin *window)
{
GString *result = g_string_new("");
if (window->type == WIN_CONSOLE) {
ProfConsoleWin *conswin = (ProfConsoleWin*)window;
g_string_append(result, conswin->from);
}
if (window->type == WIN_CHAT) {
ProfChatWin *chatwin = (ProfChatWin*)window;
PContact contact = roster_get_contact(chatwin->barejid);
if (p_contact_name(contact) != NULL) {
g_string_append(result, p_contact_name(contact));
} else {
g_string_append(result, chatwin->barejid);
}
}
if (window->type == WIN_MUC) {
ProfMucWin *mucwin = (ProfMucWin*)window;
g_string_append(result, mucwin->roomjid);
}
if (window->type == WIN_MUC_CONFIG) {
ProfMucConfWin *confwin = (ProfMucConfWin*)window;
g_string_append(result, confwin->from);
}
if (window->type == WIN_PRIVATE) {
ProfPrivateWin *privatewin = (ProfPrivateWin*)window;
g_string_append(result, privatewin->fulljid);
}
if (window->type == WIN_XML) {
ProfXMLWin *xmlwin = (ProfXMLWin*)window;
g_string_append(result, xmlwin->from);
}
return result;
}
void void
win_update_virtual(ProfWin *window) win_update_virtual(ProfWin *window)
{ {

View File

@ -61,6 +61,7 @@
#define PROFMUCWIN_MEMCHECK 52345276 #define PROFMUCWIN_MEMCHECK 52345276
#define PROFPRIVATEWIN_MEMCHECK 77437483 #define PROFPRIVATEWIN_MEMCHECK 77437483
#define PROFCONFWIN_MEMCHECK 64334685 #define PROFCONFWIN_MEMCHECK 64334685
#define PROFXMLWIN_MEMCHECK 87333463
typedef enum { typedef enum {
LAYOUT_SIMPLE, LAYOUT_SIMPLE,
@ -103,7 +104,6 @@ typedef struct prof_win_t {
typedef struct prof_console_win_t { typedef struct prof_console_win_t {
ProfWin window; ProfWin window;
char *from;
} ProfConsoleWin; } ProfConsoleWin;
typedef struct prof_chat_win_t { typedef struct prof_chat_win_t {
@ -124,7 +124,7 @@ typedef struct prof_muc_win_t {
typedef struct prof_mucconf_win_t { typedef struct prof_mucconf_win_t {
ProfWin window; ProfWin window;
char *from; char *roomjid;
DataForm *form; DataForm *form;
unsigned long memcheck; unsigned long memcheck;
} ProfMucConfWin; } ProfMucConfWin;
@ -137,7 +137,7 @@ typedef struct prof_private_win_t {
typedef struct prof_xml_win_t { typedef struct prof_xml_win_t {
ProfWin window; ProfWin window;
char *from; unsigned long memcheck;
} ProfXMLWin; } ProfXMLWin;
ProfWin* win_create_console(void); ProfWin* win_create_console(void);
@ -147,6 +147,8 @@ ProfWin* win_create_muc_config(const char * const title, DataForm *form);
ProfWin* win_create_private(const char * const fulljid); ProfWin* win_create_private(const char * const fulljid);
ProfWin* win_create_xmlconsole(void); ProfWin* win_create_xmlconsole(void);
char *win_get_title(ProfWin *window);
void win_free(ProfWin *window); void win_free(ProfWin *window);
void win_update_virtual(ProfWin *window); void win_update_virtual(ProfWin *window);
void win_move_to_end(ProfWin *window); void win_move_to_end(ProfWin *window);
@ -170,7 +172,6 @@ void win_show_subwin(ProfWin *window);
int win_roster_cols(void); int win_roster_cols(void);
int win_occpuants_cols(void); int win_occpuants_cols(void);
void win_printline_nowrap(WINDOW *win, char *msg); void win_printline_nowrap(WINDOW *win, char *msg);
GString* win_get_recipient_string(ProfWin *window);
gboolean win_has_active_subwin(ProfWin *window); gboolean win_has_active_subwin(ProfWin *window);
gboolean win_has_modified_form(ProfWin *window); gboolean win_has_modified_form(ProfWin *window);

View File

@ -36,6 +36,7 @@
#include <string.h> #include <string.h>
#include <assert.h> #include <assert.h>
#include <stdlib.h>
#include <glib.h> #include <glib.h>
@ -99,7 +100,7 @@ wins_get_chat(const char * const barejid)
} }
ProfMucConfWin * ProfMucConfWin *
wins_get_muc_conf(const char * const title) wins_get_muc_conf(const char * const roomjid)
{ {
GList *values = g_hash_table_get_values(windows); GList *values = g_hash_table_get_values(windows);
GList *curr = values; GList *curr = values;
@ -108,7 +109,7 @@ wins_get_muc_conf(const char * const title)
ProfWin *window = curr->data; ProfWin *window = curr->data;
if (window->type == WIN_MUC_CONFIG) { if (window->type == WIN_MUC_CONFIG) {
ProfMucConfWin *confwin = (ProfMucConfWin*)window; ProfMucConfWin *confwin = (ProfMucConfWin*)window;
if (g_strcmp0(confwin->from, title) == 0) { if (g_strcmp0(confwin->roomjid, roomjid) == 0) {
g_list_free(values); g_list_free(values);
return confwin; return confwin;
} }
@ -449,11 +450,11 @@ wins_new_muc(const char * const roomjid)
} }
ProfWin * ProfWin *
wins_new_muc_config(const char * const title, DataForm *form) wins_new_muc_config(const char * const roomjid, DataForm *form)
{ {
GList *keys = g_hash_table_get_keys(windows); GList *keys = g_hash_table_get_keys(windows);
int result = get_next_available_win_num(keys); int result = get_next_available_win_num(keys);
ProfWin *newwin = win_create_muc_config(title, form); ProfWin *newwin = win_create_muc_config(roomjid, form);
g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin); g_hash_table_insert(windows, GINT_TO_POINTER(result), newwin);
g_list_free(keys); g_list_free(keys);
return newwin; return newwin;
@ -857,13 +858,11 @@ wins_create_summary(void)
case WIN_MUC_CONFIG: case WIN_MUC_CONFIG:
muc_config_string = g_string_new(""); muc_config_string = g_string_new("");
ProfMucConfWin *confwin = (ProfMucConfWin*)window; char *title = win_get_title(window);
g_string_printf(muc_config_string, "%d: %s", ui_index, confwin->from); g_string_printf(muc_config_string, "%d: %s", ui_index, title);
if (win_has_modified_form(window)) {
g_string_append(muc_config_string, " *");
}
result = g_slist_append(result, strdup(muc_config_string->str)); result = g_slist_append(result, strdup(muc_config_string->str));
g_string_free(muc_config_string, TRUE); g_string_free(muc_config_string, TRUE);
free(title);
break; break;

View File

@ -40,13 +40,13 @@ void wins_init(void);
ProfWin * wins_new_xmlconsole(void); ProfWin * wins_new_xmlconsole(void);
ProfWin * wins_new_chat(const char * const barejid); ProfWin * wins_new_chat(const char * const barejid);
ProfWin * wins_new_muc(const char * const roomjid); ProfWin * wins_new_muc(const char * const roomjid);
ProfWin * wins_new_muc_config(const char * const title, DataForm *form); ProfWin * wins_new_muc_config(const char * const roomjid, DataForm *form);
ProfWin * wins_new_private(const char * const fulljid); ProfWin * wins_new_private(const char * const fulljid);
ProfWin * wins_get_console(void); ProfWin * wins_get_console(void);
ProfChatWin *wins_get_chat(const char * const barejid); ProfChatWin *wins_get_chat(const char * const barejid);
ProfMucWin * wins_get_muc(const char * const roomjid); ProfMucWin * wins_get_muc(const char * const roomjid);
ProfMucConfWin * wins_get_muc_conf(const char * const title); ProfMucConfWin * wins_get_muc_conf(const char * const roomjid);
ProfPrivateWin *wins_get_private(const char * const fulljid); ProfPrivateWin *wins_get_private(const char * const fulljid);
ProfWin * wins_get_current(void); ProfWin * wins_get_current(void);