diff options
author | Stijn Buys <ingar@osirion.org> | 2013-11-08 17:53:54 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2013-11-08 17:53:54 +0000 |
commit | 995a12fca267302d267ea59cf1c7c631b9e1075f (patch) | |
tree | 41920a11a3963f0872eebb7b592259c8797c1bce /src/client/chat.cc | |
parent | beefcbd30e5cb1b700c977090021cd4784989c1e (diff) |
Updated inventory, chat, map and reputation windows.
Diffstat (limited to 'src/client/chat.cc')
-rw-r--r-- | src/client/chat.cc | 62 |
1 files changed, 46 insertions, 16 deletions
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); } |