diff options
Diffstat (limited to 'src/theme.cpp')
-rw-r--r-- | src/theme.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/theme.cpp b/src/theme.cpp new file mode 100644 index 0000000..d6e868c --- /dev/null +++ b/src/theme.cpp @@ -0,0 +1,59 @@ +/*************************************************************************** +* Copyright (C) 2005 by Alexander Nemish * +* atlanter@gmail.com * +* * +* 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 * +* (at your option) 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, write to the * +* Free Software Foundation, Inc., * +* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * +***************************************************************************/ +#include <qstring.h> +#include <qpixmap.h> +#include <qimage.h> +#include <kglobal.h> +#include <kstandarddirs.h> +#include "theme.h" + +Theme* Theme::theme = 0; + +Theme::Theme() +{} + + +Theme * Theme::self() +{ + if ( !theme ) + theme = new Theme(); + return theme; +} + +void Theme::loadTheme(const QString& name) +{ + const QString themePath = "themes/" + name; //FIXME: Add 'name' check. Could be a hole. + QString bgPath = KGlobal::dirs()->findResource("appdata", themePath + "/bg.png"); + QString bookmarkPath = KGlobal::dirs()->findResource("appdata", themePath + "/bookmark.png"); + m_bgPixmap = QPixmap(bgPath); + m_bgResizedPixmap = m_bgPixmap; + m_bookmarkPixmap = QPixmap(bookmarkPath); +} + +const QPixmap & Theme::bgPixmap(QSize size) const +{ + if (size == QSize(0, 0) || size == m_bgPixmap.size()) + return m_bgPixmap; + if (size == m_bgResizedPixmap.size()) + return m_bgResizedPixmap; + m_bgResizedPixmap = m_bgPixmap; + m_bgResizedPixmap.convertFromImage(m_bgResizedPixmap.convertToImage().scale(size)); + return m_bgResizedPixmap; +} |