diff options
author | Torbjörn Andersson | 2005-05-17 06:19:42 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2005-05-17 06:19:42 +0000 |
commit | 4ecb6d650f54bc0f7f46d32b685f6abe599f3fbd (patch) | |
tree | 3d832ee52c185ba2849f4f01a5fabba7c9ecd117 | |
parent | 99ef35bdd4a0a18b96e2fde71dbf546a4cf40e73 (diff) | |
download | scummvm-rg350-4ecb6d650f54bc0f7f46d32b685f6abe599f3fbd.tar.gz scummvm-rg350-4ecb6d650f54bc0f7f46d32b685f6abe599f3fbd.tar.bz2 scummvm-rg350-4ecb6d650f54bc0f7f46d32b685f6abe599f3fbd.zip |
Added "big" version of the Tab widget, and made use of it.
svn-id: r18134
-rw-r--r-- | gui/TabWidget.cpp | 46 | ||||
-rw-r--r-- | gui/TabWidget.h | 5 | ||||
-rw-r--r-- | gui/launcher.cpp | 10 | ||||
-rw-r--r-- | gui/options.cpp | 23 |
4 files changed, 62 insertions, 22 deletions
diff --git a/gui/TabWidget.cpp b/gui/TabWidget.cpp index a082ef7295..5d821e9d48 100644 --- a/gui/TabWidget.cpp +++ b/gui/TabWidget.cpp @@ -28,20 +28,36 @@ namespace GUI { enum { kTabHeight = 16, + kBigTabHeight = 21, kTabLeftOffset = 4, kTabSpacing = 2, kTabPadding = 3 }; -TabWidget::TabWidget(GuiObject *boss, int x, int y, int w, int h) - : Widget(boss, x, y, w, h) { +TabWidget::TabWidget(GuiObject *boss, int x, int y, int w, int h, WidgetSize ws) + : Widget(boss, x, y, w, h), _ws(ws) { _flags = WIDGET_ENABLED; _type = kTabWidget; _activeTab = -1; _tabWidth = 40; + + switch (_ws) { + case kNormalWidgetSize: + _font = FontMan.getFontByUsage(Graphics::FontManager::kGUIFont); + _tabHeight = kTabHeight; + break; + case kBigWidgetSize: + _font = FontMan.getFontByUsage(Graphics::FontManager::kBigGUIFont); + _tabHeight = kBigTabHeight; + break; + case kDefaultWidgetSize: + _font = &g_gui.getFont(); + _tabHeight = kTabHeight; + break; + } } TabWidget::~TabWidget() { @@ -53,21 +69,21 @@ TabWidget::~TabWidget() { } int16 TabWidget::getChildY() const { - return getAbsY() + kTabHeight; + return getAbsY() + _tabHeight; } int TabWidget::addTab(const String &title) { // Add a new tab page Tab newTab; - newTab.title = title; - newTab.firstWidget = 0; + newTab.title = title; + newTab.firstWidget = 0; _tabs.push_back(newTab); int numTabs = _tabs.size(); // Determine the new tab width - int newWidth = g_gui.getStringWidth(title) + 2 * kTabPadding; + int newWidth = _font->getStringWidth(title) + 2 * kTabPadding; if (_tabWidth < newWidth) _tabWidth = newWidth; int maxWidth = (_w - kTabLeftOffset) / numTabs - kTabLeftOffset; @@ -96,7 +112,7 @@ void TabWidget::setActiveTab(int tabID) { void TabWidget::handleMouseDown(int x, int y, int button, int clickCount) { - assert(y < kTabHeight); + assert(y < _tabHeight); // Determine which tab was clicked int tabID = -1; @@ -146,33 +162,33 @@ void TabWidget::drawWidget(bool hilite) { const int right2 = _x + _w - 2; // Draw horizontal line - gui->hLine(left1, _y + kTabHeight - 2, right1, gui->_shadowcolor); - gui->hLine(left2, _y + kTabHeight - 2, right2, gui->_shadowcolor); + gui->hLine(left1, _y + _tabHeight - 2, right1, gui->_shadowcolor); + gui->hLine(left2, _y + _tabHeight - 2, right2, gui->_shadowcolor); // Iterate over all tabs and draw them int i, x = _x + kTabLeftOffset; for (i = 0; i < (int)_tabs.size(); ++i) { OverlayColor color = (i == _activeTab) ? gui->_color : gui->_shadowcolor; int yOffset = (i == _activeTab) ? 0 : 2; - box(x, _y + yOffset, _tabWidth, kTabHeight - yOffset, color, color, (i == _activeTab)); - gui->drawString(_tabs[i].title, x + kTabPadding, _y + yOffset / 2 + (kTabHeight - kLineHeight - 1), _tabWidth - 2 * kTabPadding, gui->_textcolor, kTextAlignCenter); + box(x, _y + yOffset, _tabWidth, _tabHeight - yOffset, color, color, (i == _activeTab)); + gui->drawString(_font, _tabs[i].title, x + kTabPadding, _y + yOffset / 2 + (_tabHeight - _font->getFontHeight() - 3), _tabWidth - 2 * kTabPadding, gui->_textcolor, kTextAlignCenter); x += _tabWidth + kTabSpacing; } // Draw more horizontal lines - gui->hLine(left1, _y + kTabHeight - 1, right1, gui->_color); - gui->hLine(left2, _y + kTabHeight - 1, right2, gui->_color); + gui->hLine(left1, _y + _tabHeight - 1, right1, gui->_color); + gui->hLine(left2, _y + _tabHeight - 1, right2, gui->_color); gui->hLine(_x+1, _y + _h - 2, _x + _w - 2, gui->_shadowcolor); gui->hLine(_x+1, _y + _h - 1, _x + _w - 2, gui->_color); } Widget *TabWidget::findWidget(int x, int y) { - if (y < kTabHeight) { + if (y < _tabHeight) { // Click was in the tab area return this; } else { // Iterate over all child widgets and find the one which was clicked - return Widget::findWidgetInChain(_firstWidget, x, y - kTabHeight); + return Widget::findWidgetInChain(_firstWidget, x, y - _tabHeight); } } diff --git a/gui/TabWidget.h b/gui/TabWidget.h index ec8ebf1aaf..347dcc0290 100644 --- a/gui/TabWidget.h +++ b/gui/TabWidget.h @@ -38,9 +38,12 @@ protected: int _activeTab; TabList _tabs; int _tabWidth; + int _tabHeight; + const WidgetSize _ws; + const Graphics::Font *_font; public: - TabWidget(GuiObject *boss, int x, int y, int w, int h); + TabWidget(GuiObject *boss, int x, int y, int w, int h, WidgetSize ws = kDefaultWidgetSize); ~TabWidget(); virtual int16 getChildY() const; diff --git a/gui/launcher.cpp b/gui/launcher.cpp index ba03f00b1e..244a787fc7 100644 --- a/gui/launcher.cpp +++ b/gui/launcher.cpp @@ -144,6 +144,14 @@ EditGameDialog::EditGameDialog(const String &domain, GameSettings target) _w = screenW - 2 * 10; _h = screenH - 2 * 40; // TODO/FIXME + + GUI::WidgetSize ws; + + if (screenW >= 400 && screenH >= 300) { + ws = GUI::kBigWidgetSize; + } else { + ws = GUI::kNormalWidgetSize; + } const int x = 5; const int w = _w - 15; @@ -163,7 +171,7 @@ EditGameDialog::EditGameDialog(const String &domain, GameSettings target) } // GUI: Add tab widget - TabWidget *tab = new TabWidget(this, 0, vBorder, _w, _h - 24 - 2*vBorder); + TabWidget *tab = new TabWidget(this, 0, vBorder, _w, _h - 24 - 2 * vBorder, ws); // // 1) The game tab diff --git a/gui/options.cpp b/gui/options.cpp index 5116d67178..b9e6ccb2b8 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -435,19 +435,32 @@ int OptionsDialog::addVolumeControls(GuiObject *boss, int yoffset) { GlobalOptionsDialog::GlobalOptionsDialog() - : OptionsDialog(Common::ConfigManager::kApplicationDomain, 10, 20, 320 - 2 * 10, 200 - 1 * 20) { + : OptionsDialog(Common::ConfigManager::kApplicationDomain, 10, 40, 320 - 2 * 10, 140) { const int screenW = g_system->getOverlayWidth(); const int screenH = g_system->getOverlayHeight(); + + GUI::WidgetSize ws; - _w = screenW - 2 * 10; - _h = screenH - 1 * 20; + if (screenW >= 400 && screenH >= 300) { + ws = GUI::kBigWidgetSize; + _w = screenW - 2 * 10; + _h = screenH - 2 * 40; + _x = 10; + _y = 40; + } else { + ws = GUI::kNormalWidgetSize; + _w = screenW - 2 * 10; + _h = screenH - 1 * 20; + _x = 10; + _y = 20; + } - const int vBorder = 4; + const int vBorder = 5; // Tab border int yoffset; // The tab widget - TabWidget *tab = new TabWidget(this, 0, vBorder, _w, _h - 24 - 2 * vBorder); + TabWidget *tab = new TabWidget(this, 0, vBorder, _w, _h - 24 - 2 * vBorder, ws); // // 1) The graphics tab |