/* client/chat.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_CLIENT_CHAT_H__ #define __INCLUDED_CLIENT_CHAT_H__ #include #include #include "ui/iconbutton.h" #include "ui/inputbox.h" #include "ui/scrollpane.h" #include "ui/window.h" #include "ui/listview.h" namespace client { class Chat : public ui::Window { public: Chat(ui::Widget *parent = 0); ~Chat(); virtual void show(); void event_text(const std::string & text); inline bool small_view() const { return chat_small; } void set_small_view(bool small_view = true); void clear(); protected: virtual void draw(); virtual void resize(); virtual bool on_keypress(const int key, const unsigned int modifier); virtual bool on_emit(ui::Widget *sender, const ui::Widget::Event event, void *data); /** * @brief set the chatbox prompt to 'say:' or 'command:' depending on the current input text. */ void set_prompt(); private: void refresh(); bool chat_small; ui::Text chat_log; ui::Label *chat_titlelabel; ui::IconButton *chat_closebutton; ui::Widget *chat_pane_right; ui::ScrollPane *chat_scrollpane; ui::InputBox *chat_input; ui::ListView *chat_playerlist; unsigned long chat_playerlist_timestamp; typedef std::deque History; History history; History::reverse_iterator history_pos; }; } // namespace client #endif // __INCLUDED_CLIENT_CHAT_H__