summaryrefslogtreecommitdiff
authorsimon <simon>2002-12-11 18:34:16 (UTC)
committer simon <simon>2002-12-11 18:34:16 (UTC)
commitb8db7cfea977d20f2d491b0a208a237efb15019a (patch) (side-by-side diff)
treefe9d4a5613af7fc3bb202b679af6021c3b95db08
parentf3d21af83a2846d1c20fc845cf88329ff1f2b1a9 (diff)
downloadopie-b8db7cfea977d20f2d491b0a208a237efb15019a.zip
opie-b8db7cfea977d20f2d491b0a208a237efb15019a.tar.gz
opie-b8db7cfea977d20f2d491b0a208a237efb15019a.tar.bz2
- moved the skin cache into the .cpp file
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/skin.cpp16
-rw-r--r--noncore/multimedia/opieplayer2/skin.h16
2 files changed, 16 insertions, 16 deletions
diff --git a/noncore/multimedia/opieplayer2/skin.cpp b/noncore/multimedia/opieplayer2/skin.cpp
index 9ad5f3f..06453f9 100644
--- a/noncore/multimedia/opieplayer2/skin.cpp
+++ b/noncore/multimedia/opieplayer2/skin.cpp
@@ -1,88 +1,104 @@
/*
Copyright (C) 2002 Simon Hausmann <simon@lst.de>
(C) 2002 Max Reiss <harlekin@handhelds.org>
(C) 2002 L. Potter <ljp@llornkcor.com>
(C) 2002 Holger Freyther <zecke@handhelds.org>
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; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "skin.h"
+#include "singleton.h"
#include <qpe/resource.h>
#include <qpe/config.h>
#include <assert.h>
struct SkinData
{
typedef QMap<QString, QImage> ButtonMaskImageMap;
QImage backgroundImage;
QImage buttonUpImage;
QImage buttonDownImage;
QImage buttonMask;
ButtonMaskImageMap buttonMasks;
};
+class SkinCache : public Singleton<SkinCache>
+{
+public:
+ SkinCache();
+
+ QImage loadImage( const QString &name );
+
+private:
+ typedef QDict<QImage> ImageCache;
+
+ ImageCache m_cache;
+
+ ThreadUtil::Mutex m_cacheGuard;
+};
+
Skin::Skin( const QString &name, const QString &fileNameInfix )
: m_fileNameInfix( fileNameInfix )
{
init( name );
}
Skin::Skin( const QString &fileNameInfix )
: m_fileNameInfix( fileNameInfix )
{
init( defaultSkinName() );
}
Skin::~Skin()
{
delete d;
}
void Skin::init( const QString &name )
{
m_skinPath = "opieplayer2/skins/" + name;
d = new SkinData;
}
void Skin::preload( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount )
{
backgroundImage();
buttonUpImage();
buttonDownImage();
( void )buttonMask( skinButtonInfo, buttonCount );
}
QImage Skin::backgroundImage() const
{
if ( d->backgroundImage.isNull() )
d->backgroundImage = SkinCache::self().loadImage( QString( "%1/background" ).arg( m_skinPath ) );
return d->backgroundImage;
}
QImage Skin::buttonUpImage() const
{
if ( d->buttonUpImage.isNull() )
d->buttonUpImage = SkinCache::self().loadImage( QString( "%1/skin%2_up" ).arg( m_skinPath ).arg( m_fileNameInfix ) );
return d->buttonUpImage;
}
QImage Skin::buttonDownImage() const
{
if ( d->buttonDownImage.isNull() )
diff --git a/noncore/multimedia/opieplayer2/skin.h b/noncore/multimedia/opieplayer2/skin.h
index 5ab6574..060ff73 100644
--- a/noncore/multimedia/opieplayer2/skin.h
+++ b/noncore/multimedia/opieplayer2/skin.h
@@ -1,121 +1,105 @@
/*
Copyright (C) 2002 Simon Hausmann <simon@lst.de>
(C) 2002 Max Reiss <harlekin@handhelds.org>
(C) 2002 L. Potter <ljp@llornkcor.com>
(C) 2002 Holger Freyther <zecke@handhelds.org>
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; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef SKIN_H
#define SKIN_H
#include <qstring.h>
#include <qimage.h>
#include <qmap.h>
#include <qdict.h>
#include "mediawidget.h"
#include "threadutil.h"
-#include "singleton.h"
struct SkinData;
class Skin
{
public:
Skin( const QString &name, const QString &fileNameInfix );
Skin( const QString &fileNameInfix );
~Skin();
void preload( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount );
QImage backgroundImage() const;
QImage buttonUpImage() const;
QImage buttonDownImage() const;
QImage buttonMask( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount ) const;
QImage buttonMaskImage( const QString &fileName ) const;
static QString defaultSkinName();
private:
void init( const QString &name );
void addButtonToMask( int tag, const QImage &maskImage ) const;
QString m_fileNameInfix;
QString m_skinPath;
SkinData *d;
Skin( const Skin & );
Skin &operator=( const Skin & );
};
-class SkinCache : public Singleton<SkinCache>
-{
-public:
- SkinCache();
-
- QImage loadImage( const QString &name );
-
-private:
- typedef QDict<QImage> ImageCache;
-
- ImageCache m_cache;
-
- ThreadUtil::Mutex m_cacheGuard;
-};
-
class SkinLoader : public ThreadUtil::Thread
{
public:
SkinLoader();
void schedule( const QString &skinName, const QString &fileNameInfix,
const MediaWidget::SkinButtonInfo *skinButtonInfo, const uint buttonCount );
protected:
virtual void run();
private:
struct Info
{
Info() : skinButtonInfo( 0 ), buttonCount( 0 ) {}
Info( const QString &_skinName, const QString &_fileNameInfix,
const MediaWidget::SkinButtonInfo *_skinButtonInfo, const uint _buttonCount )
: skinName( _skinName ), fileNameInfix( _fileNameInfix ),
skinButtonInfo( _skinButtonInfo ), buttonCount( _buttonCount )
{}
const QString skinName;
const QString fileNameInfix;
const MediaWidget::SkinButtonInfo *skinButtonInfo;
const uint buttonCount;
};
typedef QValueList<Info> InfoList;
void load( const Info &nfo );
InfoList pendingSkins;
ThreadUtil::Mutex guard;
};
#endif // SKIN_H
/* vim: et sw=4 ts=4
*/