From 995a12fca267302d267ea59cf1c7c631b9e1075f Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Fri, 8 Nov 2013 17:53:54 +0000 Subject: Updated inventory, chat, map and reputation windows. --- src/client/chat.cc | 62 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 46 insertions(+), 16 deletions(-) (limited to 'src/client/chat.cc') diff --git a/src/client/chat.cc b/src/client/chat.cc index 25b437c..21fe698 100644 --- a/src/client/chat.cc +++ b/src/client/chat.cc @@ -25,7 +25,7 @@ Chat::Chat(ui::Widget *parent) : ui::Window(parent) history.push_back(""); history_pos = history.rbegin(); - // window title + // window title chat_titlelabel = new ui::Label(this); chat_titlelabel->set_label("title"); chat_titlelabel->set_background(false); @@ -37,14 +37,25 @@ Chat::Chat(ui::Widget *parent) : ui::Window(parent) // close button chat_closebutton = new ui::IconButton(chat_titlelabel, "bitmaps/icons/window_close"); - chat_scrollpane = new ui::ScrollPane(this, chat_log); + // player list + chat_playerlist = new ui::ListView(this); + chat_playerlist->set_label("playerlist"); + + // ---- right pane + chat_pane_right = new ui::Widget(this); + chat_pane_right->set_background(true); + chat_pane_right->set_border(true); + chat_pane_right->set_focus(); + + // chat text + chat_scrollpane = new ui::ScrollPane(chat_pane_right, chat_log); + chat_scrollpane->set_background(false); chat_scrollpane->set_border(false); chat_scrollpane->set_label("text"); - chat_playerlist = new ui::ListView(this); - chat_playerlist->set_label("playerlist"); - - chat_input = new ui::InputBox(this); + // chat input + chat_input = new ui::InputBox(chat_pane_right); + chat_input->set_background(false); chat_input->set_border(false); set_prompt(); chat_input->set_focus(); @@ -254,14 +265,22 @@ void Chat::resize() const float padding = ui::root()->font_large()->height(); if (chat_small) { + chat_titlelabel->hide(); chat_playerlist->hide(); chat_scrollpane->hide(); - chat_titlelabel->hide(); + + // resize right panbe to input bar size + chat_pane_right->set_size(size()); + chat_pane_right->set_location(0.0f, 0.0f); + + // input bar + chat_input->set_size(chat_pane_right->width() - 2.0f * padding, chat_input->font()->height()); + chat_input->set_location(padding, (chat_pane_right->height() - chat_input->height()) * 0.5f ); } else { + chat_titlelabel->show(); chat_playerlist->show(); chat_scrollpane->show(); - chat_titlelabel->show(); // resize title label chat_titlelabel->set_size(width() - padding * 2.0f, chat_titlelabel->font()->height()); @@ -270,19 +289,30 @@ void Chat::resize() // resize close button chat_closebutton->set_size(chat_titlelabel->font()->height(), chat_titlelabel->font()->height()); chat_closebutton->set_location(chat_titlelabel->width() - chat_closebutton->width(), 0); - + // resize player names listview chat_playerlist->set_location(padding, chat_titlelabel->bottom() + padding); - chat_playerlist->set_size(ui::UI::elementsize.width(), height() - chat_playerlist->top() - padding * 2.0f); + chat_playerlist->set_size(ui::UI::elementsize.width(), height() - chat_titlelabel->bottom() - padding * 2.0f); + + // resize right pane + chat_pane_right->set_size(width() - chat_playerlist->right() - padding * 2.0f, chat_playerlist->height()); + chat_pane_right->set_location(chat_playerlist->right() + padding, chat_titlelabel->bottom() + padding); + + { + const ui::Widget *pane = chat_pane_right; + const float margin_horizontal = pane->font()->width(); + const float margin_vertical = pane->font()->height() * 0.5f; - // resize chat text pane - chat_scrollpane->set_location(chat_playerlist->right() + padding, chat_titlelabel->bottom() + padding); - chat_scrollpane->set_size(width() - chat_scrollpane->left() - padding, chat_playerlist->height()); + // resize input bar + chat_input->set_size(pane->width() - 2.0f * margin_horizontal, chat_input->font()->height()); + chat_input->set_location(margin_horizontal, pane->height() - chat_input->height() - margin_vertical); + + // resize chat text pane + chat_scrollpane->set_size(pane->width() - 2.0f * margin_horizontal, chat_input->top() - 2.0f * margin_vertical); + chat_scrollpane->set_location(margin_horizontal, margin_vertical); + } } - // input bar - chat_input->set_location(padding, height() - padding); - chat_input->set_size(width() - 2.0f * padding , padding); } -- cgit v1.2.3