summaryrefslogtreecommitdiff
path: root/src/gui/widgets/tab.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-09-30 18:43:40 +0300
committerAndrei Karas <akaras@inbox.ru>2013-09-30 18:43:40 +0300
commit112058d7208f9a48a14d943e560b3b703647653a (patch)
tree8123b89ceee53577733f32fe15880fe7538ec473 /src/gui/widgets/tab.cpp
parent64781090e80fa93a43ce37f0705bbb1cf22ed8bf (diff)
downloadplus-112058d7208f9a48a14d943e560b3b703647653a.tar.gz
plus-112058d7208f9a48a14d943e560b3b703647653a.tar.bz2
plus-112058d7208f9a48a14d943e560b3b703647653a.tar.xz
plus-112058d7208f9a48a14d943e560b3b703647653a.zip
move tabs into tabs directory.
Diffstat (limited to 'src/gui/widgets/tab.cpp')
-rw-r--r--src/gui/widgets/tab.cpp346
1 files changed, 0 insertions, 346 deletions
diff --git a/src/gui/widgets/tab.cpp b/src/gui/widgets/tab.cpp
deleted file mode 100644
index 8c974cf97..000000000
--- a/src/gui/widgets/tab.cpp
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * The ManaPlus Client
- * Copyright (C) 2008-2009 The Mana World Development Team
- * Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011-2013 The ManaPlus Developers
- *
- * This file is part of The ManaPlus Client.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "gui/widgets/tab.h"
-
-#include "client.h"
-#include "graphicsvertexes.h"
-
-#include "gui/widgets/label.h"
-#include "gui/widgets/tabbedarea.h"
-
-#include "debug.h"
-
-int Tab::mInstances = 0;
-float Tab::mAlpha = 1.0;
-
-enum
-{
- TAB_STANDARD = 0, // 0
- TAB_HIGHLIGHTED, // 1
- TAB_SELECTED, // 2
- TAB_UNUSED, // 3
- TAB_COUNT // 4 - Must be last.
-};
-
-static std::string const data[TAB_COUNT] =
-{
- "tab.xml",
- "tab_highlighted.xml",
- "tab_selected.xml",
- "tab_unused.xml"
-};
-
-Skin *Tab::tabImg[TAB_COUNT];
-
-Tab::Tab(const Widget2 *const widget) :
- gcn::BasicContainer(),
- Widget2(widget),
- gcn::MouseListener(),
- gcn::WidgetListener(),
- mLabel(new Label(this)),
- mTabbedArea(nullptr),
- mTabColor(&getThemeColor(Theme::TAB)),
- mTabOutlineColor(&getThemeColor(Theme::TAB_OUTLINE)),
- mTabHighlightedColor(&getThemeColor(Theme::TAB_HIGHLIGHTED)),
- mTabHighlightedOutlineColor(&getThemeColor(
- Theme::TAB_HIGHLIGHTED_OUTLINE)),
- mTabSelectedColor(&getThemeColor(Theme::TAB_SELECTED)),
- mTabSelectedOutlineColor(&getThemeColor(Theme::TAB_SELECTED_OUTLINE)),
- mFlashColor(&getThemeColor(Theme::TAB_FLASH)),
- mFlashOutlineColor(&getThemeColor(Theme::TAB_FLASH_OUTLINE)),
- mPlayerFlashColor(&getThemeColor(Theme::TAB_PLAYER_FLASH)),
- mPlayerFlashOutlineColor(&getThemeColor(Theme::TAB_PLAYER_FLASH_OUTLINE)),
- mFlash(0),
- mVertexes(new ImageCollection),
- mImage(nullptr),
- mMode(0),
- mRedraw(true),
- mHasMouse(false)
-{
- init();
-}
-
-Tab::~Tab()
-{
- if (gui)
- gui->removeDragged(this);
-
- mInstances--;
- if (mInstances == 0 && Theme::instance())
- {
- Theme *const theme = Theme::instance();
- for (int mode = 0; mode < TAB_COUNT; mode ++)
- theme->unload(tabImg[mode]);
- }
-
- delete mLabel;
- mLabel = nullptr;
-
- if (mImage)
- {
- mImage->decRef();
- mImage = nullptr;
- }
- delete mVertexes;
- mVertexes = nullptr;
-}
-
-void Tab::init()
-{
- addMouseListener(this);
- setFocusable(false);
- setFrameSize(0);
- mFlash = 0;
-
- addWidgetListener(this);
-
- if (mInstances == 0)
- {
- // Load the skin
- Theme *const theme = Theme::instance();
- if (theme)
- {
- for (int mode = 0; mode < TAB_COUNT; mode ++)
- tabImg[mode] = theme->load(data[mode], "tab.xml");
- }
- updateAlpha();
- }
- mInstances++;
-
- add(mLabel);
-
- const Skin *const skin = tabImg[TAB_STANDARD];
- if (!skin)
- return;
- const int padding = skin->getPadding();
-
- mLabel->setPosition(padding, padding);
-}
-
-void Tab::updateAlpha()
-{
- const float alpha = std::max(client->getGuiAlpha(),
- Theme::instance()->getMinimumOpacity());
-
- if (alpha != mAlpha)
- {
- mAlpha = alpha;
- for (int a = 0; a < 9; a++)
- {
- for (int t = 0; t < TAB_COUNT; t++)
- {
- Skin *const skin = tabImg[t];
- if (skin)
- {
- const ImageRect &rect = skin->getBorder();
- Image *const image = rect.grid[a];
- if (image)
- image->setAlpha(mAlpha);
- }
- }
- }
- }
-}
-
-void Tab::draw(gcn::Graphics *graphics)
-{
- BLOCK_START("Tab::draw")
- int mode = TAB_STANDARD;
-
- // check which type of tab to draw
- if (mTabbedArea)
- {
- if (mTabbedArea->isTabSelected(this))
- {
- mLabel->setForegroundColorAll(*mTabSelectedColor,
- *mTabSelectedOutlineColor);
- mode = TAB_SELECTED;
- // if tab is selected, it doesnt need to highlight activity
- mFlash = 0;
- }
- else if (mHasMouse)
- {
- mLabel->setForegroundColorAll(*mTabHighlightedColor,
- *mTabHighlightedOutlineColor);
- mode = TAB_HIGHLIGHTED;
- }
- else
- {
- mLabel->setForegroundColorAll(*mTabColor, *mTabOutlineColor);
- }
-
- switch (mFlash)
- {
- case 1:
- mLabel->setForegroundColorAll(*mFlashColor,
- *mFlashOutlineColor);
- break;
- case 2:
- mLabel->setForegroundColorAll(*mPlayerFlashColor,
- *mPlayerFlashOutlineColor);
- break;
- default:
- break;
- }
- }
-
- const Skin *const skin = tabImg[mode];
- if (!skin)
- {
- BLOCK_END("Tab::draw")
- return;
- }
-
- updateAlpha();
-
- Graphics *const g = static_cast<Graphics*>(graphics);
-
- if (skin)
- {
- // draw tab
- if (openGLMode != RENDER_SAFE_OPENGL)
- {
- const ImageRect &rect = skin->getBorder();
- if (mRedraw || mode != mMode || g->getRedraw())
- {
- mMode = mode;
- mRedraw = false;
- mVertexes->clear();
- g->calcWindow(mVertexes, 0, 0,
- mDimension.width, mDimension.height, rect);
-
- if (mImage)
- {
- const Skin *const skin1 = tabImg[TAB_STANDARD];
- if (skin1)
- {
- const int padding = skin1->getPadding();
- g->calcTile(mVertexes, mImage, padding, padding);
- }
- }
- }
-
- g->drawTile(mVertexes);
- }
- else
- {
- g->drawImageRect(0, 0,
- mDimension.width, mDimension.height, skin->getBorder());
- if (mImage)
- {
- const Skin *const skin1 = tabImg[TAB_STANDARD];
- if (skin1)
- {
- const int padding = skin1->getPadding();
- g->drawImage(mImage, padding, padding);
- }
- }
- }
- }
-
- drawChildren(graphics);
- BLOCK_END("Tab::draw")
-}
-
-void Tab::widgetResized(const gcn::Event &event A_UNUSED)
-{
- mRedraw = true;
-}
-
-void Tab::widgetMoved(const gcn::Event &event A_UNUSED)
-{
- mRedraw = true;
-}
-
-void Tab::setLabelFont(gcn::Font *const font)
-{
- if (!mLabel)
- return;
-
- mLabel->setFont(font);
- mLabel->adjustSize();
- adjustSize();
-}
-
-
-void Tab::adjustSize()
-{
- const Skin *const skin = tabImg[TAB_STANDARD];
- if (!skin)
- return;
- const int pad2 = skin->getPadding() * 2;
-
- if (mImage)
- {
- const SDL_Rect &rect = mImage->mBounds;
- setSize(rect.w + pad2, rect.h + pad2);
- }
- else
- {
- setSize(mLabel->getWidth() + pad2,
- mLabel->getHeight() + pad2);
- }
-
- if (mTabbedArea)
- mTabbedArea->adjustTabPositions();
-}
-
-void Tab::setTabbedArea(TabbedArea* tabbedArea)
-{
- mTabbedArea = tabbedArea;
-}
-
-TabbedArea* Tab::getTabbedArea() const
-{
- return mTabbedArea;
-}
-
-void Tab::setCaption(const std::string &caption)
-{
- mLabel->setCaption(caption);
- mLabel->adjustSize();
- adjustSize();
-}
-
-void Tab::setImage(Image *const image)
-{
- if (mImage)
- mImage->decRef();
- mImage = image;
- adjustSize();
-}
-
-const std::string &Tab::getCaption() const
-{
- return mLabel->getCaption();
-}
-
-void Tab::mouseEntered(gcn::MouseEvent& mouseEvent A_UNUSED)
-{
- mHasMouse = true;
-}
-
-void Tab::mouseExited(gcn::MouseEvent& mouseEvent A_UNUSED)
-{
- mHasMouse = false;
-}