16 #define GETTEXT_DOMAIN "wesnoth-lib"
40 #define DBG_CHAT_LOG LOG_STREAM(debug, log_chat_log)
41 #define LOG_CHAT_LOG LOG_STREAM(info, log_chat_log)
42 #define WRN_CHAT_LOG LOG_STREAM(warn, log_chat_log)
43 #define ERR_CHAT_LOG LOG_STREAM(err, log_chat_log)
58 , chat_log_history(r.build_chat_log())
75 static const int COUNT_PER_PAGE = 100;
90 int size = chat_log_history.size();
91 return (
size % COUNT_PER_PAGE == 0) ? (
size / COUNT_PER_PAGE)
92 : (
size / COUNT_PER_PAGE) + 1;
107 for(
const auto &
t : make_pair(chat_log_history.begin() + first,
108 chat_log_history.begin() + last))
113 if(!lcfilter.empty()) {
118 if(lcsample.find(lcfilter) == std::string::npos) {
123 const std::string me_prefix =
"/me";
124 const bool is_me =
t.text().compare(0, me_prefix.size(),
127 std::string nick_prefix, nick_suffix;
130 nick_prefix =
"<span color=\"" +
t.color() +
"\">";
131 nick_suffix =
"</span> ";
136 const std::string lbracket = raw ?
"<" :
"<";
137 const std::string rbracket = raw ?
">" :
">";
146 s << nick_prefix << lbracket;
160 s <<
t.text().substr(3);
162 s << rbracket << nick_suffix;
165 s << rbracket << nick_suffix;
179 std::ostringstream
s;
180 stream_log(
s, first, last);
193 std::ostringstream
s;
194 stream_log(
s, first, last,
true);
213 LOG_CHAT_LOG <<
"Entering chat_log::controller::next_page";
220 LOG_CHAT_LOG <<
"Exiting chat_log::controller::next_page";
225 LOG_CHAT_LOG <<
"Entering chat_log::controller::previous_page";
232 LOG_CHAT_LOG <<
"Exiting chat_log::controller::previous_page";
237 LOG_CHAT_LOG <<
"Entering chat_log::controller::filter";
245 <<
"Entering chat_log::controller::handle_page_number_changed";
250 <<
"Exiting chat_log::controller::handle_page_number_changed";
261 LOG_CHAT_LOG <<
"Page: " << page + 1 <<
" of " << count_of_pages;
263 const int first = page * page_size;
264 const int last = page < (count_of_pages - 1)
270 return std::pair(first, last);
276 <<
"Entering chat_log::controller::update_view_from_model";
282 if(select_last_page) {
289 const int first = range.first;
290 const int last = range.second;
292 bool has_next = page + 1 < count_of_pages;
293 bool has_previous = page > 0;
300 <<
"Maximum value of page number slider: " << count_of_pages;
303 std::ostringstream cur_page_text;
304 cur_page_text << (page + 1) <<
'/' << std::max(1, count_of_pages);
308 <<
"Exiting chat_log::controller::update_view_from_model";
408 view_ = std::make_shared<view>(cfg, r);
void handle_page_number_changed()
void update_view_from_model(bool select_last_page=false)
void handle_copy_button_clicked()
std::pair< int, int > calculate_log_line_range()
static const int COUNT_PER_PAGE
styled_widget * page_label
void populate_chat_message_list(int first, int last)
void chat_message_list_to_clipboard(int first, int last)
void clear_chat_msg_list()
model(const vconfig &c, const replay &r)
const std::vector< chat_msg > & chat_log_history
int count_of_pages() const
void stream_log(std::ostringstream &s, int first, int last, bool raw=false)
styled_widget * msg_label
void handle_copy_button_clicked()
void handle_page_number_changed()
view(const vconfig &cfg, const replay &r)
void bind(window &window)
std::shared_ptr< view > get_view() const
virtual void pre_show() override
Actions to be taken before showing the window.
chat_log(const vconfig &cfg, const replay &replay)
std::shared_ptr< view > view_
Abstract base class for all modal dialogs.
virtual void set_active(const bool active) override
See styled_widget::set_active.
virtual void set_value(int value) override
Inherited from integer_selector.
void set_value_range(int min_value, int max_value)
virtual int get_value() const override
Inherited from integer_selector.
std::string get_value() const
void set_text_changed_callback(std::function< void(text_box_base *textbox, const std::string text)> cb)
Set the text_changed callback.
A widget that allows the user to input text in single line.
base class of top level items, the only item which needs to store the final canvases to draw on.
void keyboard_capture(widget *widget)
std::string get_chat_timestamp(const std::chrono::system_clock::time_point &t)
A variable-expanding proxy for the config class.
static lg::log_domain log_chat_log("chat_log")
Standard logging facilities (interface).
void copy_to_clipboard(const std::string &text)
Copies text to the clipboard.
std::string escape_text(std::string_view text)
Escapes the pango markup characters in a text.
REGISTER_DIALOG(editor_edit_unit)
void connect_signal_notify_modified(dispatcher &dispatcher, const signal_notification &signal)
Connects a signal handler for getting a notification upon modification.
void connect_signal_mouse_left_click(dispatcher &dispatcher, const signal &signal)
Connects a signal handler for a left mouse button click.
std::string lowercase(std::string_view s)
Returns a lowercased version of the string.
std::size_t size(std::string_view str)
Length in characters of a UTF-8 string.
static map_location::direction s