diff options
Diffstat (limited to 'src/gui/windows/serverdialog.cpp')
-rw-r--r-- | src/gui/windows/serverdialog.cpp | 97 |
1 files changed, 1 insertions, 96 deletions
diff --git a/src/gui/windows/serverdialog.cpp b/src/gui/windows/serverdialog.cpp index 547d3ba81..f63a3d5ba 100644 --- a/src/gui/windows/serverdialog.cpp +++ b/src/gui/windows/serverdialog.cpp @@ -44,6 +44,7 @@ #include "gui/widgets/label.h" #include "gui/widgets/layout.h" #include "gui/widgets/listbox.h" +#include "gui/widgets/serverslistbox.h" #include "gui/widgets/scrollarea.h" #include "utils/delete2.h" @@ -90,102 +91,6 @@ static uint16_t defaultPortForServerType(const ServerInfo::Type type) } } -class ServersListBox final : public ListBox -{ -public: - ServersListBox(const Widget2 *const widget, - ServersListModel *const model) : - ListBox(widget, model, "serverslistbox.xml"), - mNotSupportedColor(getThemeColor(Theme::SERVER_VERSION_NOT_SUPPORTED)), - mNotSupportedColor2(getThemeColor( - Theme::SERVER_VERSION_NOT_SUPPORTED_OUTLINE)) - { - mHighlightColor = getThemeColor(Theme::HIGHLIGHT); - } - - void draw(Graphics *graphics) override final - { - if (!mListModel) - return; - - ServersListModel *const model = static_cast<ServersListModel *const>( - mListModel); - - updateAlpha(); - - mHighlightColor.a = static_cast<int>(mAlpha * 255.0F); - graphics->setColor(mHighlightColor); - - const int height = getRowHeight(); - mNotSupportedColor.a = static_cast<int>(mAlpha * 255.0F); - - // Draw filled rectangle around the selected list element - if (mSelected >= 0) - { - graphics->fillRectangle(Rect(mPadding, - height * mSelected + mPadding, getWidth() - 2 * mPadding, - height)); - } - - Font *const font1 = boldFont; - Font *const font2 = getFont(); - const int fontHeight = font1->getHeight(); - const int pad1 = fontHeight + mPadding; - const int pad2 = height / 4 + mPadding; - const int width = getWidth(); - // Draw the list elements - for (int i = 0, y = 0; i < model->getNumberOfElements(); - ++i, y += height) - { - const ServerInfo &info = model->getServer(i); - - if (mSelected == i) - { - graphics->setColorAll(mForegroundSelectedColor, - mForegroundSelectedColor2); - } - else - { - graphics->setColorAll(mForegroundColor, mForegroundColor2); - } - - int top; - int x = mPadding; - - if (!info.name.empty()) - { - x += font1->getWidth(info.name) + 15; - font1->drawString(graphics, info.name, mPadding, y + mPadding); - top = y + pad1; - } - else - { - top = y + pad2; - } - - if (!info.description.empty()) - font2->drawString(graphics, info.description, x, y + mPadding); - font2->drawString(graphics, model->getElementAt(i), mPadding, top); - - if (info.version.first > 0) - { - graphics->setColorAll(mNotSupportedColor, mNotSupportedColor2); - font2->drawString(graphics, info.version.second, - width - info.version.first - mPadding, top); - } - } - } - - unsigned int getRowHeight() const override final - { - return 2 * getFont()->getHeight() + 5; - } -private: - Color mNotSupportedColor; - Color mNotSupportedColor2; -}; - - ServerDialog::ServerDialog(ServerInfo *const serverInfo, const std::string &dir) : // TRANSLATORS: servers dialog name |