summaryrefslogtreecommitdiff
authorsimon <simon>2002-12-11 12:53:29 (UTC)
committer simon <simon>2002-12-11 12:53:29 (UTC)
commit9b8e5d7c225ac2dd399e392d57e3d19348412e1a (patch) (unidiff)
tree463674357359136235c75703edafe109e6515d16
parentdd6a6d5345e191ffa6da3e015c4e024bd8ca67b7 (diff)
downloadopie-9b8e5d7c225ac2dd399e392d57e3d19348412e1a.zip
opie-9b8e5d7c225ac2dd399e392d57e3d19348412e1a.tar.gz
opie-9b8e5d7c225ac2dd399e392d57e3d19348412e1a.tar.bz2
- slight simplification in the API
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/mediawidget.cpp6
-rw-r--r--noncore/multimedia/opieplayer2/mediawidget.h2
-rw-r--r--noncore/multimedia/opieplayer2/skin.cpp11
-rw-r--r--noncore/multimedia/opieplayer2/skin.h4
4 files changed, 11 insertions, 12 deletions
diff --git a/noncore/multimedia/opieplayer2/mediawidget.cpp b/noncore/multimedia/opieplayer2/mediawidget.cpp
index da0706e..6b304ec 100644
--- a/noncore/multimedia/opieplayer2/mediawidget.cpp
+++ b/noncore/multimedia/opieplayer2/mediawidget.cpp
@@ -1,216 +1,216 @@
1/* 1/*
2 Copyright (C) 2002 Simon Hausmann <hausmann@kde.org> 2 Copyright (C) 2002 Simon Hausmann <hausmann@kde.org>
3 (C) 2002 Max Reiss <harlekin@handhelds.org> 3 (C) 2002 Max Reiss <harlekin@handhelds.org>
4 (C) 2002 L. Potter <ljp@llornkcor.com> 4 (C) 2002 L. Potter <ljp@llornkcor.com>
5 (C) 2002 Holger Freyther <zecke@handhelds.org> 5 (C) 2002 Holger Freyther <zecke@handhelds.org>
6 6
7 This library is free software; you can redistribute it and/or 7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public 8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either 9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version. 10 version 2 of the License, or (at your option) any later version.
11 11
12 This library is distributed in the hope that it will be useful, 12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details. 15 Library General Public License for more details.
16 16
17 You should have received a copy of the GNU Library General Public License 17 You should have received a copy of the GNU Library General Public License
18 along with this library; see the file COPYING.LIB. If not, write to 18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. 20 Boston, MA 02111-1307, USA.
21*/ 21*/
22 22
23 23
24#include "mediawidget.h" 24#include "mediawidget.h"
25#include "playlistwidget.h" 25#include "playlistwidget.h"
26#include "skin.h" 26#include "skin.h"
27 27
28#include <qpe/config.h> 28#include <qpe/config.h>
29#include <qpe/qpeapplication.h> 29#include <qpe/qpeapplication.h>
30 30
31MediaWidget::MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent, const char *name ) 31MediaWidget::MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent, const char *name )
32 : QWidget( parent, name ), mediaPlayerState( _mediaPlayerState ), playList( _playList ) 32 : QWidget( parent, name ), mediaPlayerState( _mediaPlayerState ), playList( _playList )
33{ 33{
34 connect( &mediaPlayerState, SIGNAL( displayTypeChanged( MediaPlayerState::DisplayType ) ), 34 connect( &mediaPlayerState, SIGNAL( displayTypeChanged( MediaPlayerState::DisplayType ) ),
35 this, SLOT( setDisplayType( MediaPlayerState::DisplayType ) ) ); 35 this, SLOT( setDisplayType( MediaPlayerState::DisplayType ) ) );
36 connect( &mediaPlayerState, SIGNAL( lengthChanged( long ) ), 36 connect( &mediaPlayerState, SIGNAL( lengthChanged( long ) ),
37 this, SLOT( setLength( long ) ) ); 37 this, SLOT( setLength( long ) ) );
38 connect( &mediaPlayerState, SIGNAL( playingToggled( bool ) ), 38 connect( &mediaPlayerState, SIGNAL( playingToggled( bool ) ),
39 this, SLOT( setPlaying( bool ) ) ); 39 this, SLOT( setPlaying( bool ) ) );
40} 40}
41 41
42MediaWidget::~MediaWidget() 42MediaWidget::~MediaWidget()
43{ 43{
44} 44}
45 45
46void MediaWidget::setupButtons( const SkinButtonInfo *skinInfo, uint buttonCount, 46void MediaWidget::setupButtons( const SkinButtonInfo *skinInfo, uint buttonCount,
47 const Skin &skin, const QSize &buttonAreaSize ) 47 const Skin &skin )
48{ 48{
49 buttonMask = skin.buttonMask( skinInfo, buttonCount, buttonAreaSize ); 49 buttonMask = skin.buttonMask( skinInfo, buttonCount );
50 50
51 buttons.clear(); 51 buttons.clear();
52 buttons.reserve( buttonCount ); 52 buttons.reserve( buttonCount );
53 53
54 for ( uint i = 0; i < buttonCount; ++i ) { 54 for ( uint i = 0; i < buttonCount; ++i ) {
55 Button button = setupButton( skinInfo[ i ], skin ); 55 Button button = setupButton( skinInfo[ i ], skin );
56 buttons.push_back( button ); 56 buttons.push_back( button );
57 } 57 }
58} 58}
59 59
60MediaWidget::Button MediaWidget::setupButton( const SkinButtonInfo &buttonInfo, const Skin &skin ) 60MediaWidget::Button MediaWidget::setupButton( const SkinButtonInfo &buttonInfo, const Skin &skin )
61{ 61{
62 Button button; 62 Button button;
63 button.command = buttonInfo.command; 63 button.command = buttonInfo.command;
64 button.type = buttonInfo.type; 64 button.type = buttonInfo.type;
65 button.mask = skin.buttonMaskImage( buttonInfo.fileName ); 65 button.mask = skin.buttonMaskImage( buttonInfo.fileName );
66 66
67 return button; 67 return button;
68} 68}
69 69
70void MediaWidget::loadDefaultSkin( const SkinButtonInfo *skinInfo, uint buttonCount, const QString &fileNameInfix ) 70void MediaWidget::loadDefaultSkin( const SkinButtonInfo *skinInfo, uint buttonCount, const QString &fileNameInfix )
71{ 71{
72 Config cfg( "OpiePlayer" ); 72 Config cfg( "OpiePlayer" );
73 cfg.setGroup( "Options" ); 73 cfg.setGroup( "Options" );
74 QString skin = cfg.readEntry( "Skin","default" ); 74 QString skin = cfg.readEntry( "Skin","default" );
75 75
76 loadSkin( skinInfo, buttonCount, skin, fileNameInfix ); 76 loadSkin( skinInfo, buttonCount, skin, fileNameInfix );
77} 77}
78 78
79void MediaWidget::loadSkin( const SkinButtonInfo *skinInfo, uint buttonCount, const QString &name, const QString &fileNameInfix ) 79void MediaWidget::loadSkin( const SkinButtonInfo *skinInfo, uint buttonCount, const QString &name, const QString &fileNameInfix )
80{ 80{
81 Skin skin( name, fileNameInfix ); 81 Skin skin( name, fileNameInfix );
82 82
83 QString skinPath = "opieplayer2/skins/" + name; 83 QString skinPath = "opieplayer2/skins/" + name;
84 backgroundPixmap = skin.backgroundImage(); 84 backgroundPixmap = skin.backgroundImage();
85 buttonUpImage = skin.buttonUpImage(); 85 buttonUpImage = skin.buttonUpImage();
86 buttonDownImage = skin.buttonDownImage(); 86 buttonDownImage = skin.buttonDownImage();
87 87
88 setupButtons( skinInfo, buttonCount, skin, buttonUpImage.size() ); 88 setupButtons( skinInfo, buttonCount, skin );
89} 89}
90 90
91void MediaWidget::closeEvent( QCloseEvent * ) 91void MediaWidget::closeEvent( QCloseEvent * )
92{ 92{
93 mediaPlayerState.setList(); 93 mediaPlayerState.setList();
94} 94}
95 95
96void MediaWidget::paintEvent( QPaintEvent *pe ) 96void MediaWidget::paintEvent( QPaintEvent *pe )
97{ 97{
98 QPainter p( this ); 98 QPainter p( this );
99 99
100 if ( mediaPlayerState.isFullscreen() ) { 100 if ( mediaPlayerState.isFullscreen() ) {
101 // Clear the background 101 // Clear the background
102 p.setBrush( QBrush( Qt::black ) ); 102 p.setBrush( QBrush( Qt::black ) );
103 return; 103 return;
104 } 104 }
105 105
106 if ( !pe->erased() ) { 106 if ( !pe->erased() ) {
107 // Combine with background and double buffer 107 // Combine with background and double buffer
108 QPixmap pix( pe->rect().size() ); 108 QPixmap pix( pe->rect().size() );
109 QPainter p( &pix ); 109 QPainter p( &pix );
110 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() ); 110 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() );
111 p.drawTiledPixmap( pe->rect(), backgroundPixmap, pe->rect().topLeft() ); 111 p.drawTiledPixmap( pe->rect(), backgroundPixmap, pe->rect().topLeft() );
112 paintAllButtons( p ); 112 paintAllButtons( p );
113 QPainter p2( this ); 113 QPainter p2( this );
114 p2.drawPixmap( pe->rect().topLeft(), pix ); 114 p2.drawPixmap( pe->rect().topLeft(), pix );
115 } else { 115 } else {
116 QPainter p( this ); 116 QPainter p( this );
117 paintAllButtons( p ); 117 paintAllButtons( p );
118 } 118 }
119} 119}
120 120
121MediaWidget::Button *MediaWidget::buttonAt( const QPoint &position ) 121MediaWidget::Button *MediaWidget::buttonAt( const QPoint &position )
122{ 122{
123 if ( position.x() <= 0 || position.y() <= 0 || 123 if ( position.x() <= 0 || position.y() <= 0 ||
124 position.x() >= buttonMask.width() || 124 position.x() >= buttonMask.width() ||
125 position.y() >= buttonMask.height() ) 125 position.y() >= buttonMask.height() )
126 return 0; 126 return 0;
127 127
128 int pixelIdx = buttonMask.pixelIndex( position.x(), position.y() ); 128 int pixelIdx = buttonMask.pixelIndex( position.x(), position.y() );
129 for ( ButtonVector::iterator it = buttons.begin(); it != buttons.end(); ++it ) 129 for ( ButtonVector::iterator it = buttons.begin(); it != buttons.end(); ++it )
130 if ( it->command + 1 == pixelIdx ) 130 if ( it->command + 1 == pixelIdx )
131 return &( *it ); 131 return &( *it );
132 132
133 return 0; 133 return 0;
134} 134}
135 135
136void MediaWidget::mousePressEvent( QMouseEvent *event ) 136void MediaWidget::mousePressEvent( QMouseEvent *event )
137{ 137{
138 Button *button = buttonAt( event->pos() - upperLeftOfButtonMask ); 138 Button *button = buttonAt( event->pos() - upperLeftOfButtonMask );
139 139
140 if ( !button ) { 140 if ( !button ) {
141 QWidget::mousePressEvent( event ); 141 QWidget::mousePressEvent( event );
142 return; 142 return;
143 } 143 }
144 144
145 switch ( button->command ) { 145 switch ( button->command ) {
146 case VolumeUp: emit moreClicked(); return; 146 case VolumeUp: emit moreClicked(); return;
147 case VolumeDown: emit lessClicked(); return; 147 case VolumeDown: emit lessClicked(); return;
148 case Back: emit backClicked(); return; 148 case Back: emit backClicked(); return;
149 case Forward: emit forwardClicked(); return; 149 case Forward: emit forwardClicked(); return;
150 default: break; 150 default: break;
151 } 151 }
152} 152}
153 153
154void MediaWidget::mouseReleaseEvent( QMouseEvent *event ) 154void MediaWidget::mouseReleaseEvent( QMouseEvent *event )
155{ 155{
156 Button *button = buttonAt( event->pos() - upperLeftOfButtonMask ); 156 Button *button = buttonAt( event->pos() - upperLeftOfButtonMask );
157 157
158 if ( !button ) { 158 if ( !button ) {
159 QWidget::mouseReleaseEvent( event ); 159 QWidget::mouseReleaseEvent( event );
160 return; 160 return;
161 } 161 }
162 162
163 if ( button->type == ToggleButton ) 163 if ( button->type == ToggleButton )
164 toggleButton( *button ); 164 toggleButton( *button );
165 165
166 handleCommand( button->command, button->isDown ); 166 handleCommand( button->command, button->isDown );
167} 167}
168 168
169void MediaWidget::makeVisible() 169void MediaWidget::makeVisible()
170{ 170{
171} 171}
172 172
173void MediaWidget::handleCommand( Command command, bool buttonDown ) 173void MediaWidget::handleCommand( Command command, bool buttonDown )
174{ 174{
175 switch ( command ) { 175 switch ( command ) {
176 case Play: mediaPlayerState.togglePaused(); return; 176 case Play: mediaPlayerState.togglePaused(); return;
177 case Stop: mediaPlayerState.setPlaying(FALSE); return; 177 case Stop: mediaPlayerState.setPlaying(FALSE); return;
178 case Next: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setNext(); return; 178 case Next: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setNext(); return;
179 case Previous: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setPrev(); return; 179 case Previous: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setPrev(); return;
180 case Loop: mediaPlayerState.setLooping( buttonDown ); return; 180 case Loop: mediaPlayerState.setLooping( buttonDown ); return;
181 case VolumeUp: emit moreReleased(); return; 181 case VolumeUp: emit moreReleased(); return;
182 case VolumeDown: emit lessReleased(); return; 182 case VolumeDown: emit lessReleased(); return;
183 case PlayList: mediaPlayerState.setList(); return; 183 case PlayList: mediaPlayerState.setList(); return;
184 case Forward: emit forwardReleased(); return; 184 case Forward: emit forwardReleased(); return;
185 case Back: emit backReleased(); return; 185 case Back: emit backReleased(); return;
186 case FullScreen: mediaPlayerState.setFullscreen( true ); makeVisible(); return; 186 case FullScreen: mediaPlayerState.setFullscreen( true ); makeVisible(); return;
187 default: assert( false ); 187 default: assert( false );
188 } 188 }
189} 189}
190 190
191bool MediaWidget::isOverButton( const QPoint &position, int buttonId ) const 191bool MediaWidget::isOverButton( const QPoint &position, int buttonId ) const
192{ 192{
193 return ( position.x() > 0 && position.y() > 0 && 193 return ( position.x() > 0 && position.y() > 0 &&
194 position.x() < buttonMask.width() && 194 position.x() < buttonMask.width() &&
195 position.y() < buttonMask.height() && 195 position.y() < buttonMask.height() &&
196 buttonMask.pixelIndex( position.x(), position.y() ) == buttonId + 1 ); 196 buttonMask.pixelIndex( position.x(), position.y() ) == buttonId + 1 );
197} 197}
198 198
199void MediaWidget::paintAllButtons( QPainter &p ) 199void MediaWidget::paintAllButtons( QPainter &p )
200{ 200{
201 for ( ButtonVector::const_iterator it = buttons.begin(); 201 for ( ButtonVector::const_iterator it = buttons.begin();
202 it != buttons.end(); ++it ) 202 it != buttons.end(); ++it )
203 paintButton( p, *it ); 203 paintButton( p, *it );
204} 204}
205 205
206void MediaWidget::paintButton( const Button &button ) 206void MediaWidget::paintButton( const Button &button )
207{ 207{
208 QPainter p( this ); 208 QPainter p( this );
209 paintButton( p, button ); 209 paintButton( p, button );
210} 210}
211 211
212void MediaWidget::paintButton( QPainter &p, const Button &button ) 212void MediaWidget::paintButton( QPainter &p, const Button &button )
213{ 213{
214 if ( button.isDown ) 214 if ( button.isDown )
215 p.drawPixmap( upperLeftOfButtonMask, button.pixDown ); 215 p.drawPixmap( upperLeftOfButtonMask, button.pixDown );
216 else 216 else
diff --git a/noncore/multimedia/opieplayer2/mediawidget.h b/noncore/multimedia/opieplayer2/mediawidget.h
index 4bd8760..0fe4772 100644
--- a/noncore/multimedia/opieplayer2/mediawidget.h
+++ b/noncore/multimedia/opieplayer2/mediawidget.h
@@ -1,150 +1,150 @@
1/* 1/*
2 Copyright (C) 2002 Simon Hausmann <hausmann@kde.org> 2 Copyright (C) 2002 Simon Hausmann <hausmann@kde.org>
3 (C) 2002 Max Reiss <harlekin@handhelds.org> 3 (C) 2002 Max Reiss <harlekin@handhelds.org>
4 (C) 2002 L. Potter <ljp@llornkcor.com> 4 (C) 2002 L. Potter <ljp@llornkcor.com>
5 (C) 2002 Holger Freyther <zecke@handhelds.org> 5 (C) 2002 Holger Freyther <zecke@handhelds.org>
6 6
7 This library is free software; you can redistribute it and/or 7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public 8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either 9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version. 10 version 2 of the License, or (at your option) any later version.
11 11
12 This library is distributed in the hope that it will be useful, 12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details. 15 Library General Public License for more details.
16 16
17 You should have received a copy of the GNU Library General Public License 17 You should have received a copy of the GNU Library General Public License
18 along with this library; see the file COPYING.LIB. If not, write to 18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. 20 Boston, MA 02111-1307, USA.
21*/ 21*/
22 22
23#ifndef MEDIAWIDGET_H 23#ifndef MEDIAWIDGET_H
24#define MEDIAWIDGET_H 24#define MEDIAWIDGET_H
25 25
26#include <qwidget.h> 26#include <qwidget.h>
27#include <qmap.h> 27#include <qmap.h>
28 28
29#include "mediaplayerstate.h" 29#include "mediaplayerstate.h"
30#include "playlistwidget.h" 30#include "playlistwidget.h"
31 31
32#include <vector> 32#include <vector>
33#include <memory> 33#include <memory>
34 34
35namespace 35namespace
36{ 36{
37 struct simpleAndStupidAllocator 37 struct simpleAndStupidAllocator
38 { 38 {
39 static void *allocate( size_t amount ) 39 static void *allocate( size_t amount )
40 { return ::operator new( amount ); } 40 { return ::operator new( amount ); }
41 static void deallocate( void *p, size_t ) 41 static void deallocate( void *p, size_t )
42 { ::operator delete( p ); } 42 { ::operator delete( p ); }
43 }; 43 };
44} 44}
45 45
46class Skin; 46class Skin;
47 47
48class MediaWidget : public QWidget 48class MediaWidget : public QWidget
49{ 49{
50 Q_OBJECT 50 Q_OBJECT
51public: 51public:
52 enum Command { Play = 0, Stop, Next, Previous, VolumeUp, VolumeDown, Loop, PlayList, Forward, Back, FullScreen, Undefined }; 52 enum Command { Play = 0, Stop, Next, Previous, VolumeUp, VolumeDown, Loop, PlayList, Forward, Back, FullScreen, Undefined };
53 enum ButtonType { NormalButton, ToggleButton }; 53 enum ButtonType { NormalButton, ToggleButton };
54 54
55 struct Button 55 struct Button
56 { 56 {
57 Button() : command( Undefined ), type( NormalButton ), isDown( false ) {} 57 Button() : command( Undefined ), type( NormalButton ), isDown( false ) {}
58 58
59 Command command; 59 Command command;
60 60
61 ButtonType type; // this should be part of the bitfield but gcc2 is too buggy to support this :-( 61 ButtonType type; // this should be part of the bitfield but gcc2 is too buggy to support this :-(
62 bool isDown : 1; 62 bool isDown : 1;
63 63
64 QBitmap mask; 64 QBitmap mask;
65 QPixmap pixUp; 65 QPixmap pixUp;
66 QPixmap pixDown; 66 QPixmap pixDown;
67 }; 67 };
68#if defined( _CC_GNU_ ) 68#if defined( _CC_GNU_ )
69 // use that allocator to avoid the default allocator that on gcc2 requires libstdc++ because 69 // use that allocator to avoid the default allocator that on gcc2 requires libstdc++ because
70 // in the BAD_ALLOC macro it uses std::cerr and friends :-( 70 // in the BAD_ALLOC macro it uses std::cerr and friends :-(
71 typedef std::vector<Button, std::__allocator<Button, simpleAndStupidAllocator> > ButtonVector; 71 typedef std::vector<Button, std::__allocator<Button, simpleAndStupidAllocator> > ButtonVector;
72#else 72#else
73 typedef std::vector<Button> ButtonVector; 73 typedef std::vector<Button> ButtonVector;
74#endif 74#endif
75 75
76 struct SkinButtonInfo 76 struct SkinButtonInfo
77 { 77 {
78 Command command; 78 Command command;
79 const char *fileName; 79 const char *fileName;
80 ButtonType type; 80 ButtonType type;
81 }; 81 };
82 82
83 MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent = 0, const char *name = 0 ); 83 MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent = 0, const char *name = 0 );
84 virtual ~MediaWidget(); 84 virtual ~MediaWidget();
85 85
86public slots: 86public slots:
87 virtual void setDisplayType( MediaPlayerState::DisplayType displayType ) = 0; 87 virtual void setDisplayType( MediaPlayerState::DisplayType displayType ) = 0;
88 virtual void setLength( long length ) = 0; 88 virtual void setLength( long length ) = 0;
89 virtual void setPlaying( bool playing ) = 0; 89 virtual void setPlaying( bool playing ) = 0;
90 90
91 virtual void loadSkin() = 0; 91 virtual void loadSkin() = 0;
92 92
93signals: 93signals:
94 void moreReleased(); 94 void moreReleased();
95 void lessReleased(); 95 void lessReleased();
96 void forwardReleased(); 96 void forwardReleased();
97 void backReleased(); 97 void backReleased();
98 void forwardClicked(); 98 void forwardClicked();
99 void backClicked(); 99 void backClicked();
100 void moreClicked(); 100 void moreClicked();
101 void lessClicked(); 101 void lessClicked();
102 102
103protected: 103protected:
104 void setupButtons( const SkinButtonInfo *skinInfo, uint buttonCount, 104 void setupButtons( const SkinButtonInfo *skinInfo, uint buttonCount,
105 const Skin &skin, const QSize &buttonAreaSize ); 105 const Skin &skin );
106 Button setupButton( const SkinButtonInfo &buttonInfo, const Skin &skin ); 106 Button setupButton( const SkinButtonInfo &buttonInfo, const Skin &skin );
107 107
108 void loadDefaultSkin( const SkinButtonInfo *skinInfo, uint buttonCount, const QString &fileNameInfix = QString::null ); 108 void loadDefaultSkin( const SkinButtonInfo *skinInfo, uint buttonCount, const QString &fileNameInfix = QString::null );
109 void loadSkin( const SkinButtonInfo *skinInfo, uint buttonCount, const QString &name, const QString &fileNameInfix ); 109 void loadSkin( const SkinButtonInfo *skinInfo, uint buttonCount, const QString &name, const QString &fileNameInfix );
110 110
111 virtual void closeEvent( QCloseEvent * ); 111 virtual void closeEvent( QCloseEvent * );
112 112
113 virtual void paintEvent( QPaintEvent *pe ); 113 virtual void paintEvent( QPaintEvent *pe );
114 114
115 Button *buttonAt( const QPoint &position ); 115 Button *buttonAt( const QPoint &position );
116 116
117 virtual void mousePressEvent( QMouseEvent *event ); 117 virtual void mousePressEvent( QMouseEvent *event );
118 virtual void mouseReleaseEvent( QMouseEvent *event ); 118 virtual void mouseReleaseEvent( QMouseEvent *event );
119 119
120 virtual void makeVisible(); 120 virtual void makeVisible();
121 121
122 void handleCommand( Command command, bool buttonDown ); 122 void handleCommand( Command command, bool buttonDown );
123 123
124 bool isOverButton( const QPoint &position, int buttonId ) const; 124 bool isOverButton( const QPoint &position, int buttonId ) const;
125 125
126 void paintAllButtons( QPainter &p ); 126 void paintAllButtons( QPainter &p );
127 void paintButton( const Button &button ); 127 void paintButton( const Button &button );
128 void paintButton( QPainter &p, const Button &button ); 128 void paintButton( QPainter &p, const Button &button );
129 129
130 void setToggleButton( Button &button, bool down ); 130 void setToggleButton( Button &button, bool down );
131 void setToggleButton( Command command, bool down ); 131 void setToggleButton( Command command, bool down );
132 void toggleButton( Button &button ); 132 void toggleButton( Button &button );
133 133
134 MediaPlayerState &mediaPlayerState; 134 MediaPlayerState &mediaPlayerState;
135 PlayListWidget &playList; 135 PlayListWidget &playList;
136 136
137 ButtonVector buttons; 137 ButtonVector buttons;
138 138
139 QImage buttonMask; 139 QImage buttonMask;
140 140
141 QPoint upperLeftOfButtonMask; 141 QPoint upperLeftOfButtonMask;
142 142
143 QPixmap backgroundPixmap; 143 QPixmap backgroundPixmap;
144 QImage buttonUpImage; 144 QImage buttonUpImage;
145 QImage buttonDownImage; 145 QImage buttonDownImage;
146}; 146};
147 147
148#endif // MEDIAWIDGET_H 148#endif // MEDIAWIDGET_H
149/* vim: et sw=4 ts=4 149/* vim: et sw=4 ts=4
150 */ 150 */
diff --git a/noncore/multimedia/opieplayer2/skin.cpp b/noncore/multimedia/opieplayer2/skin.cpp
index ef70957..d3918d1 100644
--- a/noncore/multimedia/opieplayer2/skin.cpp
+++ b/noncore/multimedia/opieplayer2/skin.cpp
@@ -1,84 +1,83 @@
1 1
2#include "skin.h" 2#include "skin.h"
3 3
4#include <qpe/resource.h> 4#include <qpe/resource.h>
5 5
6Skin::Skin( const QString &name, const QString &fileNameInfix ) 6Skin::Skin( const QString &name, const QString &fileNameInfix )
7 : m_name( name ), m_fileNameInfix( fileNameInfix ) 7 : m_name( name ), m_fileNameInfix( fileNameInfix )
8{ 8{
9 m_skinPath = "opieplayer2/skins/" + name; 9 m_skinPath = "opieplayer2/skins/" + name;
10} 10}
11 11
12void Skin::preload( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount, const QSize &buttonAreaSize ) 12void Skin::preload( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount )
13{ 13{
14 backgroundImage(); 14 backgroundImage();
15 buttonUpImage(); 15 buttonUpImage();
16 buttonDownImage(); 16 buttonDownImage();
17 ( void )buttonMask( skinButtonInfo, buttonCount, buttonAreaSize ); 17 ( void )buttonMask( skinButtonInfo, buttonCount );
18} 18}
19 19
20QImage Skin::backgroundImage() const 20QImage Skin::backgroundImage() const
21{ 21{
22 if ( m_backgroundImage.isNull() ) 22 if ( m_backgroundImage.isNull() )
23 m_backgroundImage = QImage( Resource::findPixmap( QString( "%1/background" ).arg( m_skinPath ) ) ); 23 m_backgroundImage = QImage( Resource::findPixmap( QString( "%1/background" ).arg( m_skinPath ) ) );
24 return m_backgroundImage; 24 return m_backgroundImage;
25} 25}
26 26
27QImage Skin::buttonUpImage() const 27QImage Skin::buttonUpImage() const
28{ 28{
29 if ( m_buttonUpImage.isNull() ) 29 if ( m_buttonUpImage.isNull() )
30 m_buttonUpImage = QImage( Resource::findPixmap( QString( "%1/skin%2_up" ).arg( m_skinPath ).arg( m_fileNameInfix ) ) ); 30 m_buttonUpImage = QImage( Resource::findPixmap( QString( "%1/skin%2_up" ).arg( m_skinPath ).arg( m_fileNameInfix ) ) );
31 return m_buttonUpImage; 31 return m_buttonUpImage;
32} 32}
33 33
34QImage Skin::buttonDownImage() const 34QImage Skin::buttonDownImage() const
35{ 35{
36 if ( m_buttonDownImage.isNull() ) 36 if ( m_buttonDownImage.isNull() )
37 m_buttonDownImage = QImage( Resource::findPixmap( QString( "%1/skin%2_down" ).arg( m_skinPath ).arg( m_fileNameInfix ) ) ); 37 m_buttonDownImage = QImage( Resource::findPixmap( QString( "%1/skin%2_down" ).arg( m_skinPath ).arg( m_fileNameInfix ) ) );
38 return m_buttonDownImage; 38 return m_buttonDownImage;
39} 39}
40 40
41QImage Skin::buttonMask( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount, const QSize &buttonAreaSize ) const 41QImage Skin::buttonMask( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount ) const
42{ 42{
43 if ( buttonAreaSize != m_buttonMask.size() )
44 m_buttonMask = QImage();
45
46 if ( !m_buttonMask.isNull() ) 43 if ( !m_buttonMask.isNull() )
47 return m_buttonMask; 44 return m_buttonMask;
48 45
46 QSize buttonAreaSize = buttonUpImage().size();
47
49 m_buttonMask = QImage( buttonAreaSize, 8, 255 ); 48 m_buttonMask = QImage( buttonAreaSize, 8, 255 );
50 m_buttonMask.fill( 0 ); 49 m_buttonMask.fill( 0 );
51 50
52 for ( uint i = 0; i < buttonCount; ++i ) 51 for ( uint i = 0; i < buttonCount; ++i )
53 addButtonToMask( skinButtonInfo[ i ].command + 1, buttonMaskImage( skinButtonInfo[ i ].fileName ) ); 52 addButtonToMask( skinButtonInfo[ i ].command + 1, buttonMaskImage( skinButtonInfo[ i ].fileName ) );
54 53
55 return m_buttonMask; 54 return m_buttonMask;
56} 55}
57 56
58void Skin::addButtonToMask( int tag, const QImage &maskImage ) const 57void Skin::addButtonToMask( int tag, const QImage &maskImage ) const
59{ 58{
60 if ( maskImage.isNull() ) 59 if ( maskImage.isNull() )
61 return; 60 return;
62 61
63 uchar **dest = m_buttonMask.jumpTable(); 62 uchar **dest = m_buttonMask.jumpTable();
64 for ( int y = 0; y < m_buttonMask.height(); y++ ) { 63 for ( int y = 0; y < m_buttonMask.height(); y++ ) {
65 uchar *line = dest[y]; 64 uchar *line = dest[y];
66 for ( int x = 0; x < m_buttonMask.width(); x++ ) 65 for ( int x = 0; x < m_buttonMask.width(); x++ )
67 if ( !qRed( maskImage.pixel( x, y ) ) ) 66 if ( !qRed( maskImage.pixel( x, y ) ) )
68 line[x] = tag; 67 line[x] = tag;
69 } 68 }
70} 69}
71 70
72QImage Skin::buttonMaskImage( const QString &fileName ) const 71QImage Skin::buttonMaskImage( const QString &fileName ) const
73{ 72{
74 ButtonMaskImageMap::Iterator it = m_buttonMasks.find( fileName ); 73 ButtonMaskImageMap::Iterator it = m_buttonMasks.find( fileName );
75 if ( it == m_buttonMasks.end() ) { 74 if ( it == m_buttonMasks.end() ) {
76 QString prefix = m_skinPath + QString::fromLatin1( "/skin%1_mask_" ).arg( m_fileNameInfix ); 75 QString prefix = m_skinPath + QString::fromLatin1( "/skin%1_mask_" ).arg( m_fileNameInfix );
77 QString path = prefix + fileName + ".png"; 76 QString path = prefix + fileName + ".png";
78 it = m_buttonMasks.insert( fileName, QImage( Resource::findPixmap( path ) ) ); 77 it = m_buttonMasks.insert( fileName, QImage( Resource::findPixmap( path ) ) );
79 } 78 }
80 return *it; 79 return *it;
81} 80}
82 81
83/* vim: et sw=4 ts=4 82/* vim: et sw=4 ts=4
84 */ 83 */
diff --git a/noncore/multimedia/opieplayer2/skin.h b/noncore/multimedia/opieplayer2/skin.h
index 14873e7..ee19f4b 100644
--- a/noncore/multimedia/opieplayer2/skin.h
+++ b/noncore/multimedia/opieplayer2/skin.h
@@ -1,46 +1,46 @@
1#ifndef SKIN_H 1#ifndef SKIN_H
2#define SKIN_H 2#define SKIN_H
3 3
4#include <qstring.h> 4#include <qstring.h>
5#include <qimage.h> 5#include <qimage.h>
6#include <qmap.h> 6#include <qmap.h>
7 7
8#include "mediawidget.h" 8#include "mediawidget.h"
9 9
10class Skin 10class Skin
11{ 11{
12public: 12public:
13 Skin( const QString &name, const QString &fileNameInfix ); 13 Skin( const QString &name, const QString &fileNameInfix );
14 14
15 void preload( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount, const QSize &buttonAreaSize ); 15 void preload( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount );
16 16
17 QImage backgroundImage() const; 17 QImage backgroundImage() const;
18 QImage buttonUpImage() const; 18 QImage buttonUpImage() const;
19 QImage buttonDownImage() const; 19 QImage buttonDownImage() const;
20 20
21 QImage buttonMask( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount, const QSize &buttonAreaSize ) const; 21 QImage buttonMask( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount ) const;
22 22
23 QImage buttonMaskImage( const QString &fileName ) const; 23 QImage buttonMaskImage( const QString &fileName ) const;
24 24
25private: 25private:
26 void addButtonToMask( int tag, const QImage &maskImage ) const; 26 void addButtonToMask( int tag, const QImage &maskImage ) const;
27 27
28 QString m_name; 28 QString m_name;
29 QString m_fileNameInfix; 29 QString m_fileNameInfix;
30 QString m_skinPath; 30 QString m_skinPath;
31 31
32 typedef QMap<QString, QImage> ButtonMaskImageMap; 32 typedef QMap<QString, QImage> ButtonMaskImageMap;
33 33
34 mutable QImage m_backgroundImage; 34 mutable QImage m_backgroundImage;
35 mutable QImage m_buttonUpImage; 35 mutable QImage m_buttonUpImage;
36 mutable QImage m_buttonDownImage; 36 mutable QImage m_buttonDownImage;
37 mutable QImage m_buttonMask; 37 mutable QImage m_buttonMask;
38 mutable ButtonMaskImageMap m_buttonMasks; 38 mutable ButtonMaskImageMap m_buttonMasks;
39 39
40 Skin( const Skin & ); 40 Skin( const Skin & );
41 Skin &operator=( const Skin & ); 41 Skin &operator=( const Skin & );
42}; 42};
43 43
44#endif // SKIN_H 44#endif // SKIN_H
45/* vim: et sw=4 ts=4 45/* vim: et sw=4 ts=4
46 */ 46 */