diff --git a/src/screen_chat.c b/src/screen_chat.c
index b4d3aaca89844e97aa36d6dd4513577657a8e313..f79e73fcf7b0195b2a97885a6b0ab0e6ee640e36 100644 (file)
--- a/src/screen_chat.c
+++ b/src/screen_chat.c
/* ncmpc (Ncurses MPD Client)
- * (c) 2004-2012 The Music Player Daemon Project
+ * (c) 2004-2017 The Music Player Daemon Project
* Project homepage: http://musicpd.org
*
* This program is free software; you can redistribute it and/or modify
#include "mpdclient.h"
#include "i18n.h"
#include "charset.h"
+#include "options.h"
#include <glib.h>
#include <mpd/idle.h>
}
static void
-screen_chat_init(WINDOW *w, int cols, int rows)
+screen_chat_init(WINDOW *w, unsigned cols, unsigned rows)
{
screen_text_init(&text, w, cols, rows);
}
}
static void
-screen_chat_resize(int cols, int rows)
+screen_chat_resize(unsigned cols, unsigned rows)
{
screen_text_resize(&text, cols, rows);
}
static void
process_message(struct mpd_message *message)
{
- char *message_text;
-
assert(message != NULL);
/* You'll have to move this out of screen_chat, if you want to use
client-to-client messages anywhere else */
assert(g_strcmp0(mpd_message_get_channel(message), chat_channel) == 0);
- message_text = utf8_to_locale(mpd_message_get_text(message));
+ char *message_text = utf8_to_locale(mpd_message_get_text(message));
screen_text_append(&text, message_text);
g_free(message_text);
}
}
+static char *
+screen_chat_get_prefix(void)
+{
+ static char *prefix = NULL;
+
+ if (prefix)
+ return prefix;
+
+ if (options.chat_prefix) {
+ /* Options are encoded in the "locale" charset */
+ prefix = locale_to_utf8(options.chat_prefix);
+ return prefix;
+ }
+
+ prefix = g_strconcat("<", g_get_user_name(), "> ", NULL);
+ return prefix;
+}
+
static void
screen_chat_send_message(struct mpdclient *c, char *msg)
{
char *utf8 = locale_to_utf8(msg);
-
- (void) mpdclient_cmd_send_message(c, chat_channel, utf8);
+ char *prefix = screen_chat_get_prefix();
+ char *full_msg = g_strconcat(prefix, utf8, NULL);
g_free(utf8);
+
+ (void) mpdclient_cmd_send_message(c, chat_channel, full_msg);
+ g_free(full_msg);
}
static bool
}
static const char *
-screen_chat_title(G_GNUC_UNUSED char *s, G_GNUC_UNUSED size_t size)
+screen_chat_title(gcc_unused char *s, gcc_unused size_t size)
{
return _("Chat");
}