diff options
-rw-r--r-- | src/gui/login.cpp | 11 | ||||
-rw-r--r-- | src/gui/login.h | 8 | ||||
-rw-r--r-- | src/gui/serverdialog.cpp | 11 | ||||
-rw-r--r-- | src/gui/serverdialog.h | 2 | ||||
-rw-r--r-- | src/gui/setup_players.cpp | 9 | ||||
-rw-r--r-- | src/gui/widgets/dropdown.cpp | 25 | ||||
-rw-r--r-- | src/gui/widgets/dropdown.h | 35 |
7 files changed, 21 insertions, 80 deletions
diff --git a/src/gui/login.cpp b/src/gui/login.cpp index d9f31b95..92c6050c 100644 --- a/src/gui/login.cpp +++ b/src/gui/login.cpp @@ -28,9 +28,7 @@ #include "gui/widgets/dropdown.h" #include "gui/widgets/label.h" #include "gui/widgets/layout.h" -#include "gui/widgets/listbox.h" #include "gui/widgets/passwordfield.h" -#include "gui/widgets/scrollarea.h" #include "gui/widgets/textfield.h" #include "main.h" @@ -61,8 +59,6 @@ LoginDialog::LoginDialog(LoginData *loginData): dfltPort.push_back("6901"); mServerList = new DropDownList("MostRecent00", dfltServer, dfltPort, MAX_SERVER_LIST_SIZE); - mServerListBox = new ListBox(mServerList); - mServerScrollArea = new ScrollArea; #endif mUserField = new TextField(mLoginData->username); @@ -70,10 +66,7 @@ LoginDialog::LoginDialog(LoginData *loginData): #ifdef EATHENA_SUPPORT mServerField = new TextField(mServerList->getServerAt(0)); mPortField = new TextField(mServerList->getPortAt(0)); - mServerDropDown = new DropDown(mServerList, - mServerScrollArea, - mServerListBox); - mServerDropDown->setOpaque(false); + mServerDropDown = new DropDown(mServerList); #endif mKeepCheck = new CheckBox(_("Remember Username"), mLoginData->remember); @@ -161,7 +154,7 @@ void LoginDialog::action(const gcn::ActionEvent &event) #ifdef EATHENA_SUPPORT else if (event.getId() == "changeSelection") { - int selected = mServerListBox->getSelected(); + int selected = mServerDropDown->getSelected(); mServerField->setText(mServerList->getServerAt(selected)); mPortField->setText(mServerList->getPortAt(selected)); } diff --git a/src/gui/login.h b/src/gui/login.h index 398fe725..7224c64d 100644 --- a/src/gui/login.h +++ b/src/gui/login.h @@ -34,10 +34,6 @@ #include <vector> class LoginData; -#ifdef EATHENA_SUPPORT -class DropDown; -class ScrollArea; -#endif /** * The login dialog. @@ -97,7 +93,7 @@ class LoginDialog : public Window, public gcn::ActionListener, #ifdef EATHENA_SUPPORT gcn::TextField *mServerField; gcn::TextField *mPortField; - DropDown *mServerDropDown; + gcn::DropDown *mServerDropDown; #endif gcn::CheckBox *mKeepCheck; gcn::Button *mOkButton; @@ -132,8 +128,6 @@ class LoginDialog : public Window, public gcn::ActionListener, std::string getPortAt(int i); }; DropDownList *mServerList; - gcn::ListBox *mServerListBox; - gcn::ScrollArea *mServerScrollArea; #endif }; diff --git a/src/gui/serverdialog.cpp b/src/gui/serverdialog.cpp index 35bb2f50..9fb6b6a2 100644 --- a/src/gui/serverdialog.cpp +++ b/src/gui/serverdialog.cpp @@ -27,8 +27,6 @@ #include "gui/widgets/dropdown.h" #include "gui/widgets/label.h" #include "gui/widgets/layout.h" -#include "gui/widgets/listbox.h" -#include "gui/widgets/scrollarea.h" #include "gui/widgets/textfield.h" #include "configuration.h" @@ -99,11 +97,7 @@ ServerDialog::ServerDialog(LoginData *loginData): } } - mMostUsedServersListBox = new ListBox(NULL); - mMostUsedServersListBox->setListModel(mMostUsedServersListModel); - mMostUsedServersScrollArea = new ScrollArea; - mMostUsedServersDropDown = new DropDown(mMostUsedServersListModel, - mMostUsedServersScrollArea, mMostUsedServersListBox); + mMostUsedServersDropDown = new DropDown(mMostUsedServersListModel); mOkButton = new Button(_("Ok"), "connect", this); mCancelButton = new Button(_("Cancel"), "cancel", this); @@ -142,7 +136,6 @@ ServerDialog::ServerDialog(LoginData *loginData): ServerDialog::~ServerDialog() { delete mMostUsedServersListModel; - delete mMostUsedServersScrollArea; } void @@ -157,7 +150,7 @@ ServerDialog::action(const gcn::ActionEvent &event) { // Change the textField Values according to new selection Server myServer = mMostUsedServersListModel->getServer - (mMostUsedServersListBox->getSelected()); + (mMostUsedServersDropDown->getSelected()); mServerNameField->setText(myServer.serverName); mPortField->setText(toString(myServer.port)); } diff --git a/src/gui/serverdialog.h b/src/gui/serverdialog.h index 0c75cede..93903c08 100644 --- a/src/gui/serverdialog.h +++ b/src/gui/serverdialog.h @@ -118,8 +118,6 @@ class ServerDialog : public Window, public gcn::ActionListener gcn::Button *mCancelButton; DropDown *mMostUsedServersDropDown; - gcn::ListBox *mMostUsedServersListBox; - gcn::ScrollArea *mMostUsedServersScrollArea; ServersListModel *mMostUsedServersListModel; LoginData *mLoginData; diff --git a/src/gui/setup_players.cpp b/src/gui/setup_players.cpp index 9f084e60..e093a5b6 100644 --- a/src/gui/setup_players.cpp +++ b/src/gui/setup_players.cpp @@ -29,7 +29,6 @@ #include "gui/widgets/dropdown.h" #include "gui/widgets/label.h" #include "gui/widgets/layouthelper.h" -#include "gui/widgets/listbox.h" #include "gui/widgets/scrollarea.h" #include "configuration.h" @@ -141,10 +140,7 @@ public: mWidgets.push_back(widget); gcn::ListModel *playerRelation = new PlayerRelationListModel; - gcn::DropDown *choicebox = new DropDown(playerRelation, - new ScrollArea, - new ListBox(playerRelation), - false); + gcn::DropDown *choicebox = new DropDown(playerRelation); choicebox->setSelected(player_relations.getRelation(name)); mWidgets.push_back(choicebox); } @@ -245,8 +241,7 @@ Setup_Players::Setup_Players(): mPlayerTitleTable->setBackgroundColor(gcn::Color(0xbf, 0xbf, 0xbf)); gcn::ListModel *ignoreChoices = new IgnoreChoicesListModel; - mIgnoreActionChoicesBox = new DropDown(ignoreChoices, new ScrollArea, - new ListBox(ignoreChoices), false); + mIgnoreActionChoicesBox = new DropDown(ignoreChoices); for (int i = 0; i < COLUMNS_NR; i++) { diff --git a/src/gui/widgets/dropdown.cpp b/src/gui/widgets/dropdown.cpp index 8dabc3f9..b5a75093 100644 --- a/src/gui/widgets/dropdown.cpp +++ b/src/gui/widgets/dropdown.cpp @@ -41,10 +41,10 @@ Image *DropDown::buttons[2][2]; ImageRect DropDown::skin; float DropDown::mAlpha = 1.0; -DropDown::DropDown(gcn::ListModel *listModel, gcn::ScrollArea *scrollArea, - gcn::ListBox *listBox, bool opacity): - gcn::DropDown::DropDown(listModel, scrollArea, listBox), - mOpaque(opacity) +DropDown::DropDown(gcn::ListModel *listModel): + gcn::DropDown::DropDown(listModel, + new ScrollArea, + new ListBox(listModel)) { setFrameSize(2); @@ -108,6 +108,9 @@ DropDown::~DropDown() for_each(skin.grid, skin.grid + 9, dtor<Image*>()); } + + delete mScrollArea; + delete mListBox; } void DropDown::draw(gcn::Graphics* graphics) @@ -134,7 +137,7 @@ void DropDown::draw(gcn::Graphics* graphics) } } - const int alpha = (int)(mAlpha * 255.0f); + const int alpha = (int) (mAlpha * 255.0f); gcn::Color faceColor = getBaseColor(); faceColor.a = alpha; const gcn::Color* highlightColor = &guiPalette->getColor(Palette::HIGHLIGHT, @@ -142,18 +145,10 @@ void DropDown::draw(gcn::Graphics* graphics) gcn::Color shadowColor = faceColor - 0x303030; shadowColor.a = alpha; - if (mOpaque) - { - graphics->setColor(guiPalette->getColor(Palette::BACKGROUND, alpha)); - graphics->fillRectangle(gcn::Rectangle(0, 0, getWidth(), h)); - - graphics->setColor(guiPalette->getColor(Palette::TEXT, alpha)); - } - - graphics->setFont(getFont()); - if (mListBox->getListModel() && mListBox->getSelected() >= 0) { + graphics->setFont(getFont()); + graphics->setColor(guiPalette->getColor(Palette::TEXT, alpha)); graphics->drawText(mListBox->getListModel()->getElementAt(mListBox->getSelected()), 1, 0); } diff --git a/src/gui/widgets/dropdown.h b/src/gui/widgets/dropdown.h index 601d55c8..83d43f63 100644 --- a/src/gui/widgets/dropdown.h +++ b/src/gui/widgets/dropdown.h @@ -28,11 +28,9 @@ class Image; class ImageRect; /** - * A drop down box from which you can select different values. It is one of - * the most complicated Widgets you will find in Guichan. For drawing the - * DroppedDown box it uses one ScrollArea and one ListBox. It also uses an - * internal FocusHandler to handle the focus of the internal ScollArea and - * ListBox. DropDown uses a ListModel to handle the list. To be able to use + * A drop down box from which you can select different values. + * + * A ListModel provides the contents of the drop down. To be able to use * DropDown you must give DropDown an implemented ListModel which represents * your list. */ @@ -47,37 +45,14 @@ class DropDown : public gcn::DropDown * @param listBox the listBox to use. * @see ListModel, ScrollArea, ListBox. */ - DropDown(gcn::ListModel *listModel = NULL, - gcn::ScrollArea *scrollArea = NULL, - gcn::ListBox *listBox = NULL, - bool opacity = true); + DropDown(gcn::ListModel *listModel = NULL); - /** - * Destructor. - */ ~DropDown(); void draw(gcn::Graphics *graphics); void drawFrame(gcn::Graphics *graphics); - /** - * Sets the widget to be opaque, that is sets the widget to display its - * background. - * - * @param opaque True if the widget should be opaque, false otherwise. - */ - void setOpaque(bool opaque) { mOpaque = opaque; } - - /** - * Checks if the widget is opaque, that is if the widget area displays - * its background. - * - * @return True if the widget is opaque, false otherwise. - */ - bool isOpaque() const { return mOpaque; } - - protected: /** * Draws the button with the little down arrow. @@ -91,8 +66,6 @@ class DropDown : public gcn::DropDown static Image *buttons[2][2]; static ImageRect skin; static float mAlpha; - - bool mOpaque; }; #endif // end DROPDOWN_H |