1
1
mirror of https://github.com/profanity-im/profanity.git synced 2025-02-02 15:08:15 -05:00

Add win_append

This commit is contained in:
James Booth 2016-10-15 19:53:49 +01:00
parent 711c5b8e45
commit ce5f07a012
6 changed files with 110 additions and 87 deletions

View File

@ -74,7 +74,7 @@ void
cons_show_word(const char *const word) cons_show_word(const char *const word)
{ {
ProfWin *console = wins_get_console(); ProfWin *console = wins_get_console();
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", word); win_append(console, THEME_DEFAULT, "%s", word);
} }
void void
@ -128,7 +128,7 @@ cons_show_help(const char *const cmd, CommandHelp *help)
win_print(console, THEME_WHITE_BOLD, '-', ""); win_print(console, THEME_WHITE_BOLD, '-', "");
int i; int i;
for (i = 0; i < strlen(cmd) - 1 ; i++) { for (i = 0; i < strlen(cmd) - 1 ; i++) {
win_printf(console, '-', 0, NULL, NO_EOL | NO_DATE, THEME_WHITE_BOLD, "", "-"); win_append(console, THEME_WHITE_BOLD, "-");
} }
win_appendln(console, THEME_WHITE_BOLD, ""); win_appendln(console, THEME_WHITE_BOLD, "");
cons_show(""); cons_show("");
@ -481,9 +481,8 @@ cons_show_login_success(ProfAccount *account, gboolean secured)
const char *presence_str = string_from_resource_presence(presence); const char *presence_str = string_from_resource_presence(presence);
theme_item_t presence_colour = theme_main_presence_attrs(presence_str); theme_item_t presence_colour = theme_main_presence_attrs(presence_str);
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", "%s", presence_str); win_append(console, presence_colour, "%s", presence_str);
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " (priority %d)", win_append(console, THEME_DEFAULT, " (priority %d)", accounts_get_priority_for_presence_type(account->name, presence));
accounts_get_priority_for_presence_type(account->name, presence));
win_appendln(console, THEME_DEFAULT, "."); win_appendln(console, THEME_DEFAULT, ".");
if (!secured) { if (!secured) {
cons_show_error("TLS connection not established"); cons_show_error("TLS connection not established");
@ -562,19 +561,19 @@ cons_show_caps(const char *const fulljid, resource_presence_t presence)
DiscoIdentity *identity = caps->identity; DiscoIdentity *identity = caps->identity;
win_print(console, THEME_DEFAULT, '-', "Identity: "); win_print(console, THEME_DEFAULT, '-', "Identity: ");
if (identity->name) { if (identity->name) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->name); win_append(console, THEME_DEFAULT, "%s", identity->name);
if (identity->category || identity->type) { if (identity->category || identity->type) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " "); win_append(console, THEME_DEFAULT, " ");
} }
} }
if (identity->type) { if (identity->type) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->type); win_append(console, THEME_DEFAULT, "%s", identity->type);
if (identity->category) { if (identity->category) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " "); win_append(console, THEME_DEFAULT, " ");
} }
} }
if (identity->category) { if (identity->category) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->category); win_append(console, THEME_DEFAULT, "%s", identity->category);
} }
win_newline(console); win_newline(console);
} }
@ -585,7 +584,7 @@ cons_show_caps(const char *const fulljid, resource_presence_t presence)
win_print(console, THEME_DEFAULT, '-', "Software: %s", software_version->software); win_print(console, THEME_DEFAULT, '-', "Software: %s", software_version->software);
} }
if (software_version->software_version) { if (software_version->software_version) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->software_version); win_append(console, THEME_DEFAULT, ", %s", software_version->software_version);
} }
if (software_version->software || software_version->software_version) { if (software_version->software || software_version->software_version) {
win_newline(console); win_newline(console);
@ -594,7 +593,7 @@ cons_show_caps(const char *const fulljid, resource_presence_t presence)
win_print(console, THEME_DEFAULT, '-', "OS: %s", software_version->os); win_print(console, THEME_DEFAULT, '-', "OS: %s", software_version->os);
} }
if (software_version->os_version) { if (software_version->os_version) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->os_version); win_append(console, THEME_DEFAULT, ", %s", software_version->os_version);
} }
if (software_version->os || software_version->os_version) { if (software_version->os || software_version->os_version) {
win_newline(console); win_newline(console);
@ -669,7 +668,7 @@ cons_show_room_list(GSList *rooms, const char *const conference_node)
DiscoItem *room = rooms->data; DiscoItem *room = rooms->data;
win_print(console, THEME_DEFAULT, '-', " %s", room->jid); win_print(console, THEME_DEFAULT, '-', " %s", room->jid);
if (room->name) { if (room->name) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", (%s)", room->name); win_append(console, THEME_DEFAULT, ", (%s)", room->name);
} }
win_newline(console); win_newline(console);
rooms = g_slist_next(rooms); rooms = g_slist_next(rooms);
@ -703,19 +702,19 @@ cons_show_bookmarks(const GList *list)
} }
win_print(console, presence_colour, '-', " %s", item->barejid); win_print(console, presence_colour, '-', " %s", item->barejid);
if (item->nick) { if (item->nick) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", "/%s", item->nick); win_append(console, presence_colour, "/%s", item->nick);
} }
if (item->autojoin) { if (item->autojoin) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " (autojoin)"); win_append(console, presence_colour, " (autojoin)");
} }
if (item->password) { if (item->password) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " (private)"); win_append(console, presence_colour, " (private)");
} }
if (muc_active(item->barejid)) { if (muc_active(item->barejid)) {
ProfWin *roomwin = (ProfWin*)wins_get_muc(item->barejid); ProfWin *roomwin = (ProfWin*)wins_get_muc(item->barejid);
if (roomwin) { if (roomwin) {
int num = wins_get_num(roomwin); int num = wins_get_num(roomwin);
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " (win %d)", num); win_append(console, presence_colour, " (win %d)", num);
} }
} }
win_newline(console); win_newline(console);
@ -786,7 +785,7 @@ cons_show_disco_items(GSList *items, const char *const jid)
DiscoItem *item = items->data; DiscoItem *item = items->data;
win_print(console, THEME_DEFAULT, '-', " %s", item->jid); win_print(console, THEME_DEFAULT, '-', " %s", item->jid);
if (item->name) { if (item->name) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", (%s)", item->name); win_append(console, THEME_DEFAULT, ", (%s)", item->name);
} }
win_appendln(console, THEME_DEFAULT, ""); win_appendln(console, THEME_DEFAULT, "");
items = g_slist_next(items); items = g_slist_next(items);
@ -1003,7 +1002,7 @@ cons_show_account(ProfAccount *account)
win_print(console, presence_colour, '-', " %s (%d), %s", resource->name, resource->priority, resource_presence); win_print(console, presence_colour, '-', " %s (%d), %s", resource->name, resource->priority, resource_presence);
if (resource->status) { if (resource->status) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", \"%s\"", resource->status); win_append(console, presence_colour, ", \"%s\"", resource->status);
} }
win_appendln(console, THEME_DEFAULT, ""); win_appendln(console, THEME_DEFAULT, "");
Jid *jidp = jid_create_from_bare_and_resource(account->jid, resource->name); Jid *jidp = jid_create_from_bare_and_resource(account->jid, resource->name);
@ -1016,19 +1015,19 @@ cons_show_account(ProfAccount *account)
DiscoIdentity *identity = caps->identity; DiscoIdentity *identity = caps->identity;
win_print(console, THEME_DEFAULT, '-', " Identity: "); win_print(console, THEME_DEFAULT, '-', " Identity: ");
if (identity->name) { if (identity->name) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->name); win_append(console, THEME_DEFAULT, "%s", identity->name);
if (identity->category || identity->type) { if (identity->category || identity->type) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " "); win_append(console, THEME_DEFAULT, " ");
} }
} }
if (identity->type) { if (identity->type) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->type); win_append(console, THEME_DEFAULT, "%s", identity->type);
if (identity->category) { if (identity->category) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " "); win_append(console, THEME_DEFAULT, " ");
} }
} }
if (identity->category) { if (identity->category) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->category); win_append(console, THEME_DEFAULT, "%s", identity->category);
} }
win_newline(console); win_newline(console);
} }
@ -1039,7 +1038,7 @@ cons_show_account(ProfAccount *account)
win_print(console, THEME_DEFAULT, '-', " Software: %s", software_version->software); win_print(console, THEME_DEFAULT, '-', " Software: %s", software_version->software);
} }
if (software_version->software_version) { if (software_version->software_version) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->software_version); win_append(console, THEME_DEFAULT, ", %s", software_version->software_version);
} }
if (software_version->software || software_version->software_version) { if (software_version->software || software_version->software_version) {
win_newline(console); win_newline(console);
@ -1048,7 +1047,7 @@ cons_show_account(ProfAccount *account)
win_print(console, THEME_DEFAULT, '-', " OS: %s", software_version->os); win_print(console, THEME_DEFAULT, '-', " OS: %s", software_version->os);
} }
if (software_version->os_version) { if (software_version->os_version) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->os_version); win_append(console, THEME_DEFAULT, ", %s", software_version->os_version);
} }
if (software_version->os || software_version->os_version) { if (software_version->os || software_version->os_version) {
win_newline(console); win_newline(console);
@ -2191,7 +2190,7 @@ _cons_theme_bar_prop(theme_item_t theme, char *prop)
char *setting = theme_get_string(prop); char *setting = theme_get_string(prop);
g_string_append_printf(valstr, "%s ", setting); g_string_append_printf(valstr, "%s ", setting);
theme_free_string(setting); theme_free_string(setting);
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, theme, "", "%s", valstr->str); win_append(console, theme, "%s", valstr->str);
win_appendln(console, THEME_TEXT, ""); win_appendln(console, THEME_TEXT, "");
g_string_free(valstr, TRUE); g_string_free(valstr, TRUE);
} }
@ -2406,7 +2405,7 @@ _show_roster_contacts(GSList *list, gboolean show_groups)
g_string_free(title, TRUE); g_string_free(title, TRUE);
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " - "); win_append(console, THEME_DEFAULT, " - ");
GString *sub = g_string_new(""); GString *sub = g_string_new("");
sub = g_string_append(sub, p_contact_subscription(contact)); sub = g_string_append(sub, p_contact_subscription(contact));
if (p_contact_pending_out(contact)) { if (p_contact_pending_out(contact)) {
@ -2422,7 +2421,7 @@ _show_roster_contacts(GSList *list, gboolean show_groups)
} }
if (show_groups) { if (show_groups) {
win_printf(console, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", "%s", sub->str); win_append(console, presence_colour, "%s", sub->str);
} else { } else {
win_appendln(console, presence_colour, "%s", sub->str); win_appendln(console, presence_colour, "%s", sub->str);
} }

View File

@ -794,10 +794,10 @@ ui_room_join(const char *const roomjid, gboolean focus)
char *role = muc_role_str(roomjid); char *role = muc_role_str(roomjid);
char *affiliation = muc_affiliation_str(roomjid); char *affiliation = muc_affiliation_str(roomjid);
if (role) { if (role) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", role: %s", role); win_append(window, THEME_ROOMINFO, ", role: %s", role);
} }
if (affiliation) { if (affiliation) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", affiliation: %s", affiliation); win_append(window, THEME_ROOMINFO, ", affiliation: %s", affiliation);
} }
} }
win_appendln(window, THEME_ROOMINFO, ""); win_appendln(window, THEME_ROOMINFO, "");

View File

@ -203,11 +203,11 @@ static void
_mucconfwin_form_field(ProfWin *window, char *tag, FormField *field) _mucconfwin_form_field(ProfWin *window, char *tag, FormField *field)
{ {
win_print(window, THEME_AWAY, '-', "[%s] ", tag); win_print(window, THEME_AWAY, '-', "[%s] ", tag);
win_printf(window, '-', 0, NULL, NO_EOL | NO_DATE, THEME_DEFAULT, "", "%s", field->label); win_append(window, THEME_DEFAULT, "%s", field->label);
if (field->required) { if (field->required) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " (required): "); win_append(window, THEME_DEFAULT, " (required): ");
} else { } else {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ": "); win_append(window, THEME_DEFAULT, ": ");
} }
GSList *values = field->values; GSList *values = field->values;
@ -221,9 +221,9 @@ _mucconfwin_form_field(ProfWin *window, char *tag, FormField *field)
char *value = curr_value->data; char *value = curr_value->data;
if (value) { if (value) {
if (g_strcmp0(field->var, "muc#roomconfig_roomsecret") == 0) { if (g_strcmp0(field->var, "muc#roomconfig_roomsecret") == 0) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", "[hidden]"); win_append(window, THEME_ONLINE, "[hidden]");
} else { } else {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", "%s", value); win_append(window, THEME_ONLINE, "%s", value);
} }
} }
} }
@ -233,7 +233,7 @@ _mucconfwin_form_field(ProfWin *window, char *tag, FormField *field)
if (curr_value) { if (curr_value) {
char *value = curr_value->data; char *value = curr_value->data;
if (value) { if (value) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", "[hidden]"); win_append(window, THEME_ONLINE, "[hidden]");
} }
} }
win_newline(window); win_newline(window);
@ -303,7 +303,7 @@ _mucconfwin_form_field(ProfWin *window, char *tag, FormField *field)
if (curr_value) { if (curr_value) {
char *value = curr_value->data; char *value = curr_value->data;
if (value) { if (value) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", "%s", value); win_append(window, THEME_ONLINE, "%s", value);
} }
} }
win_newline(window); win_newline(window);
@ -320,7 +320,7 @@ _mucconfwin_form_field(ProfWin *window, char *tag, FormField *field)
if (curr_value) { if (curr_value) {
char *value = curr_value->data; char *value = curr_value->data;
if (value) { if (value) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", value); win_append(window, THEME_DEFAULT, "%s", value);
} }
} }
win_newline(window); win_newline(window);

View File

@ -53,10 +53,10 @@ mucwin_role_change(ProfMucWin *mucwin, const char *const role, const char *const
ProfWin *window = (ProfWin*)mucwin; ProfWin *window = (ProfWin*)mucwin;
win_print(window, THEME_ROOMINFO, '!', "Your role has been changed to: %s", role); win_print(window, THEME_ROOMINFO, '!', "Your role has been changed to: %s", role);
if (actor) { if (actor) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); win_append(window, THEME_ROOMINFO, ", by: %s", actor);
} }
if (reason) { if (reason) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); win_append(window, THEME_ROOMINFO, ", reason: %s", reason);
} }
win_appendln(window, THEME_ROOMINFO, ""); win_appendln(window, THEME_ROOMINFO, "");
} }
@ -70,10 +70,10 @@ mucwin_affiliation_change(ProfMucWin *mucwin, const char *const affiliation, con
ProfWin *window = (ProfWin*)mucwin; ProfWin *window = (ProfWin*)mucwin;
win_print(window, THEME_ROOMINFO, '!', "Your affiliation has been changed to: %s", affiliation); win_print(window, THEME_ROOMINFO, '!', "Your affiliation has been changed to: %s", affiliation);
if (actor) { if (actor) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); win_append(window, THEME_ROOMINFO, ", by: %s", actor);
} }
if (reason) { if (reason) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); win_append(window, THEME_ROOMINFO, ", reason: %s", reason);
} }
win_appendln(window, THEME_ROOMINFO, ""); win_appendln(window, THEME_ROOMINFO, "");
} }
@ -87,10 +87,10 @@ mucwin_role_and_affiliation_change(ProfMucWin *mucwin, const char *const role, c
ProfWin *window = (ProfWin*)mucwin; ProfWin *window = (ProfWin*)mucwin;
win_print(window, THEME_ROOMINFO, '!', "Your role and affiliation have been changed, role: %s, affiliation: %s", role, affiliation); win_print(window, THEME_ROOMINFO, '!', "Your role and affiliation have been changed, role: %s, affiliation: %s", role, affiliation);
if (actor) { if (actor) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); win_append(window, THEME_ROOMINFO, ", by: %s", actor);
} }
if (reason) { if (reason) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); win_append(window, THEME_ROOMINFO, ", reason: %s", reason);
} }
win_appendln(window, THEME_ROOMINFO, ""); win_appendln(window, THEME_ROOMINFO, "");
} }
@ -105,10 +105,10 @@ mucwin_occupant_role_change(ProfMucWin *mucwin, const char *const nick, const ch
ProfWin *window = (ProfWin*)mucwin; ProfWin *window = (ProfWin*)mucwin;
win_print(window, THEME_ROOMINFO, '!', "%s's role has been changed to: %s", nick, role); win_print(window, THEME_ROOMINFO, '!', "%s's role has been changed to: %s", nick, role);
if (actor) { if (actor) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); win_append(window, THEME_ROOMINFO, ", by: %s", actor);
} }
if (reason) { if (reason) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); win_append(window, THEME_ROOMINFO, ", reason: %s", reason);
} }
win_appendln(window, THEME_ROOMINFO, ""); win_appendln(window, THEME_ROOMINFO, "");
} }
@ -122,10 +122,10 @@ mucwin_occupant_affiliation_change(ProfMucWin *mucwin, const char *const nick, c
ProfWin *window = (ProfWin*)mucwin; ProfWin *window = (ProfWin*)mucwin;
win_print(window, THEME_ROOMINFO, '!', "%s's affiliation has been changed to: %s", nick, affiliation); win_print(window, THEME_ROOMINFO, '!', "%s's affiliation has been changed to: %s", nick, affiliation);
if (actor) { if (actor) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); win_append(window, THEME_ROOMINFO, ", by: %s", actor);
} }
if (reason) { if (reason) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); win_append(window, THEME_ROOMINFO, ", reason: %s", reason);
} }
win_appendln(window, THEME_ROOMINFO, ""); win_appendln(window, THEME_ROOMINFO, "");
} }
@ -139,10 +139,10 @@ mucwin_occupant_role_and_affiliation_change(ProfMucWin *mucwin, const char *cons
ProfWin *window = (ProfWin*)mucwin; ProfWin *window = (ProfWin*)mucwin;
win_print(window, THEME_ROOMINFO, '!', "%s's role and affiliation have been changed, role: %s, affiliation: %s", nick, role, affiliation); win_print(window, THEME_ROOMINFO, '!', "%s's role and affiliation have been changed, role: %s, affiliation: %s", nick, role, affiliation);
if (actor) { if (actor) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", by: %s", actor); win_append(window, THEME_ROOMINFO, ", by: %s", actor);
} }
if (reason) { if (reason) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ROOMINFO, "", ", reason: %s", reason); win_append(window, THEME_ROOMINFO, ", reason: %s", reason);
} }
win_appendln(window, THEME_ROOMINFO, ""); win_appendln(window, THEME_ROOMINFO, "");
} }
@ -223,10 +223,10 @@ mucwin_roster(ProfMucWin *mucwin, GList *roster, const char *const presence)
const char *presence_str = string_from_resource_presence(occupant->presence); const char *presence_str = string_from_resource_presence(occupant->presence);
theme_item_t presence_colour = theme_main_presence_attrs(presence_str); theme_item_t presence_colour = theme_main_presence_attrs(presence_str);
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", "%s", occupant->nick); win_append(window, presence_colour, "%s", occupant->nick);
if (roster->next) { if (roster->next) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", "); win_append(window, THEME_DEFAULT, ", ");
} }
roster = g_list_next(roster); roster = g_list_next(roster);
@ -298,10 +298,10 @@ mucwin_occupant_online(ProfMucWin *mucwin, const char *const nick, const char *c
win_print(window, THEME_ONLINE, '!', "-> %s has joined the room", nick); win_print(window, THEME_ONLINE, '!', "-> %s has joined the room", nick);
if (prefs_get_boolean(PREF_MUC_PRIVILEGES)) { if (prefs_get_boolean(PREF_MUC_PRIVILEGES)) {
if (role) { if (role) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", ", role: %s", role); win_append(window, THEME_ONLINE, ", role: %s", role);
} }
if (affiliation) { if (affiliation) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_ONLINE, "", ", affiliation: %s", affiliation); win_append(window, THEME_ONLINE, ", affiliation: %s", affiliation);
} }
} }
win_appendln(window, THEME_ROOMINFO, ""); win_appendln(window, THEME_ROOMINFO, "");

View File

@ -355,12 +355,17 @@ void win_hide_subwin(ProfWin *window);
void win_show_subwin(ProfWin *window); void win_show_subwin(ProfWin *window);
void win_refresh_without_subwin(ProfWin *window); void win_refresh_without_subwin(ProfWin *window);
void win_refresh_with_subwin(ProfWin *window); void win_refresh_with_subwin(ProfWin *window);
void win_printf(ProfWin *window, const char show_char, int pad_indent, GDateTime *timestamp, int flags, void win_printf(ProfWin *window, const char show_char, int pad_indent, GDateTime *timestamp, int flags,
theme_item_t theme_item, const char *const from, const char *const message, ...); theme_item_t theme_item, const char *const from, const char *const message, ...);
void win_print(ProfWin *window, theme_item_t theme_item, const char ch, const char *const message, ...); void win_print(ProfWin *window, theme_item_t theme_item, const char ch, const char *const message, ...);
void win_println(ProfWin *window, theme_item_t theme_item, const char ch, const char *const message, ...); void win_println(ProfWin *window, theme_item_t theme_item, const char ch, const char *const message, ...);
void win_appendln(ProfWin *window, theme_item_t theme_item, const char *const message, ...);
void win_println_indent(ProfWin *window, int pad, const char *const message); void win_println_indent(ProfWin *window, int pad, const char *const message);
void win_append(ProfWin *window, theme_item_t theme_item, const char *const message, ...);
void win_appendln(ProfWin *window, theme_item_t theme_item, const char *const message, ...);
char* win_get_title(ProfWin *window); char* win_get_title(ProfWin *window);
void win_show_occupant(ProfWin *window, Occupant *occupant); void win_show_occupant(ProfWin *window, Occupant *occupant);
void win_show_occupant_info(ProfWin *window, const char *const room, Occupant *occupant); void win_show_occupant_info(ProfWin *window, const char *const room, Occupant *occupant);

View File

@ -683,10 +683,10 @@ win_show_occupant(ProfWin *window, Occupant *occupant)
theme_item_t presence_colour = theme_main_presence_attrs(presence_str); theme_item_t presence_colour = theme_main_presence_attrs(presence_str);
win_print(window, presence_colour, '-', "%s", occupant->nick); win_print(window, presence_colour, '-', "%s", occupant->nick);
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " is %s", presence_str); win_append(window, presence_colour, " is %s", presence_str);
if (occupant->status) { if (occupant->status) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", \"%s\"", occupant->status); win_append(window, presence_colour, ", \"%s\"", occupant->status);
} }
win_appendln(window, presence_colour, ""); win_appendln(window, presence_colour, "");
@ -709,7 +709,7 @@ win_show_contact(ProfWin *window, PContact contact)
win_print(window, presence_colour, '-', "%s", barejid); win_print(window, presence_colour, '-', "%s", barejid);
} }
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " is %s", presence); win_append(window, presence_colour, " is %s", presence);
if (last_activity) { if (last_activity) {
GDateTime *now = g_date_time_new_now_local(); GDateTime *now = g_date_time_new_now_local();
@ -723,15 +723,14 @@ win_show_contact(ProfWin *window, PContact contact)
int seconds = span / G_TIME_SPAN_SECOND; int seconds = span / G_TIME_SPAN_SECOND;
if (hours > 0) { if (hours > 0) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", idle %dh%dm%ds", hours, minutes, seconds); win_append(window, presence_colour, ", idle %dh%dm%ds", hours, minutes, seconds);
} } else {
else { win_append(window, presence_colour, ", idle %dm%ds", minutes, seconds);
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", idle %dm%ds", minutes, seconds);
} }
} }
if (status) { if (status) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", \"%s\"", p_contact_status(contact)); win_append(window, presence_colour, ", \"%s\"", p_contact_status(contact));
} }
win_appendln(window, presence_colour, ""); win_appendln(window, presence_colour, "");
@ -747,10 +746,10 @@ win_show_occupant_info(ProfWin *window, const char *const room, Occupant *occupa
theme_item_t presence_colour = theme_main_presence_attrs(presence_str); theme_item_t presence_colour = theme_main_presence_attrs(presence_str);
win_print(window, presence_colour, '!', "%s", occupant->nick); win_print(window, presence_colour, '!', "%s", occupant->nick);
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " is %s", presence_str); win_append(window, presence_colour, " is %s", presence_str);
if (occupant->status) { if (occupant->status) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", \"%s\"", occupant->status); win_append(window, presence_colour, ", \"%s\"", occupant->status);
} }
win_newline(window); win_newline(window);
@ -772,19 +771,19 @@ win_show_occupant_info(ProfWin *window, const char *const room, Occupant *occupa
DiscoIdentity *identity = caps->identity; DiscoIdentity *identity = caps->identity;
win_print(window, THEME_DEFAULT, '!', " Identity: "); win_print(window, THEME_DEFAULT, '!', " Identity: ");
if (identity->name) { if (identity->name) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->name); win_append(window, THEME_DEFAULT, "%s", identity->name);
if (identity->category || identity->type) { if (identity->category || identity->type) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " "); win_append(window, THEME_DEFAULT, " ");
} }
} }
if (identity->type) { if (identity->type) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->type); win_append(window, THEME_DEFAULT, "%s", identity->type);
if (identity->category) { if (identity->category) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " "); win_append(window, THEME_DEFAULT, " ");
} }
} }
if (identity->category) { if (identity->category) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->category); win_append(window, THEME_DEFAULT, "%s", identity->category);
} }
win_newline(window); win_newline(window);
} }
@ -795,7 +794,7 @@ win_show_occupant_info(ProfWin *window, const char *const room, Occupant *occupa
win_print(window, THEME_DEFAULT, '!', " Software: %s", software_version->software); win_print(window, THEME_DEFAULT, '!', " Software: %s", software_version->software);
} }
if (software_version->software_version) { if (software_version->software_version) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->software_version); win_append(window, THEME_DEFAULT, ", %s", software_version->software_version);
} }
if (software_version->software || software_version->software_version) { if (software_version->software || software_version->software_version) {
win_newline(window); win_newline(window);
@ -804,7 +803,7 @@ win_show_occupant_info(ProfWin *window, const char *const room, Occupant *occupa
win_print(window, THEME_DEFAULT, '!', " OS: %s", software_version->os); win_print(window, THEME_DEFAULT, '!', " OS: %s", software_version->os);
} }
if (software_version->os_version) { if (software_version->os_version) {
win_printf(window, '!', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->os_version); win_append(window, THEME_DEFAULT, ", %s", software_version->os_version);
} }
if (software_version->os || software_version->os_version) { if (software_version->os || software_version->os_version) {
win_newline(window); win_newline(window);
@ -831,7 +830,7 @@ win_show_info(ProfWin *window, PContact contact)
win_println(window, THEME_DEFAULT, '-', ""); win_println(window, THEME_DEFAULT, '-', "");
win_print(window, presence_colour, '-', "%s", barejid); win_print(window, presence_colour, '-', "%s", barejid);
if (name) { if (name) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " (%s)", name); win_append(window, presence_colour, " (%s)", name);
} }
win_appendln(window, THEME_DEFAULT, ":"); win_appendln(window, THEME_DEFAULT, ":");
@ -882,7 +881,7 @@ win_show_info(ProfWin *window, PContact contact)
theme_item_t presence_colour = theme_main_presence_attrs(resource_presence); theme_item_t presence_colour = theme_main_presence_attrs(resource_presence);
win_print(window, presence_colour, '-', " %s (%d), %s", resource->name, resource->priority, resource_presence); win_print(window, presence_colour, '-', " %s (%d), %s", resource->name, resource->priority, resource_presence);
if (resource->status) { if (resource->status) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", \"%s\"", resource->status); win_append(window, presence_colour, ", \"%s\"", resource->status);
} }
win_newline(window); win_newline(window);
@ -896,19 +895,19 @@ win_show_info(ProfWin *window, PContact contact)
DiscoIdentity *identity = caps->identity; DiscoIdentity *identity = caps->identity;
win_print(window, THEME_DEFAULT, '-', " Identity: "); win_print(window, THEME_DEFAULT, '-', " Identity: ");
if (identity->name) { if (identity->name) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->name); win_append(window, THEME_DEFAULT, "%s", identity->name);
if (identity->category || identity->type) { if (identity->category || identity->type) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " "); win_append(window, THEME_DEFAULT, " ");
} }
} }
if (identity->type) { if (identity->type) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->type); win_append(window, THEME_DEFAULT, "%s", identity->type);
if (identity->category) { if (identity->category) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", " "); win_append(window, THEME_DEFAULT, " ");
} }
} }
if (identity->category) { if (identity->category) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", "%s", identity->category); win_append(window, THEME_DEFAULT, "%s", identity->category);
} }
win_newline(window); win_newline(window);
} }
@ -919,7 +918,7 @@ win_show_info(ProfWin *window, PContact contact)
win_print(window, THEME_DEFAULT, '-', " Software: %s", software_version->software); win_print(window, THEME_DEFAULT, '-', " Software: %s", software_version->software);
} }
if (software_version->software_version) { if (software_version->software_version) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->software_version); win_append(window, THEME_DEFAULT, ", %s", software_version->software_version);
} }
if (software_version->software || software_version->software_version) { if (software_version->software || software_version->software_version) {
win_newline(window); win_newline(window);
@ -928,7 +927,7 @@ win_show_info(ProfWin *window, PContact contact)
win_print(window, THEME_DEFAULT, '-', " OS: %s", software_version->os); win_print(window, THEME_DEFAULT, '-', " OS: %s", software_version->os);
} }
if (software_version->os_version) { if (software_version->os_version) {
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, THEME_DEFAULT, "", ", %s", software_version->os_version); win_append(window, THEME_DEFAULT, ", %s", software_version->os_version);
} }
if (software_version->os || software_version->os_version) { if (software_version->os || software_version->os_version) {
win_newline(window); win_newline(window);
@ -962,9 +961,9 @@ win_show_status_string(ProfWin *window, const char *const from,
win_print(window, presence_colour, '-', "%s %s", pre, from); win_print(window, presence_colour, '-', "%s %s", pre, from);
if (show) if (show)
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " is %s", show); win_append(window, presence_colour, " is %s", show);
else else
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " is %s", default_show); win_append(window, presence_colour, " is %s", default_show);
if (last_activity) { if (last_activity) {
gchar *date_fmt = NULL; gchar *date_fmt = NULL;
@ -973,13 +972,13 @@ win_show_status_string(ProfWin *window, const char *const from,
prefs_free_string(time_pref); prefs_free_string(time_pref);
assert(date_fmt != NULL); assert(date_fmt != NULL);
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", last activity: %s", date_fmt); win_append(window, presence_colour, ", last activity: %s", date_fmt);
g_free(date_fmt); g_free(date_fmt);
} }
if (status) if (status)
win_printf(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", \"%s\"", status); win_append(window, presence_colour, ", \"%s\"", status);
win_appendln(window, presence_colour, ""); win_appendln(window, presence_colour, "");
} }
@ -1074,6 +1073,26 @@ win_println(ProfWin *window, theme_item_t theme_item, const char ch, const char
va_end(arg); va_end(arg);
} }
void
win_append(ProfWin *window, theme_item_t theme_item, const char *const message, ...)
{
GDateTime *timestamp = g_date_time_new_now_local();
va_list arg;
va_start(arg, message);
GString *fmt_msg = g_string_new(NULL);
g_string_vprintf(fmt_msg, message, arg);
buffer_push(window->layout->buffer, '-', 0, timestamp, NO_EOL, theme_item, "", fmt_msg->str, NULL);
_win_print(window, '-', 0, timestamp, NO_DATE | NO_EOL, theme_item, "", fmt_msg->str, NULL);
inp_nonblocking(TRUE);
g_date_time_unref(timestamp);
g_string_free(fmt_msg, TRUE);
va_end(arg);
}
void void
win_appendln(ProfWin *window, theme_item_t theme_item, const char *const message, ...) win_appendln(ProfWin *window, theme_item_t theme_item, const char *const message, ...)
{ {
@ -1092,8 +1111,8 @@ win_appendln(ProfWin *window, theme_item_t theme_item, const char *const message
g_string_free(fmt_msg, TRUE); g_string_free(fmt_msg, TRUE);
va_end(arg); va_end(arg);
} }
void void
win_print_http_upload(ProfWin *window, const char *const message, char *url) win_print_http_upload(ProfWin *window, const char *const message, char *url)
{ {