summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/audiowidget.cpp10
-rw-r--r--noncore/multimedia/opieplayer2/mediawidget.h4
-rw-r--r--noncore/multimedia/opieplayer2/videowidget.cpp21
3 files changed, 18 insertions, 17 deletions
diff --git a/noncore/multimedia/opieplayer2/audiowidget.cpp b/noncore/multimedia/opieplayer2/audiowidget.cpp
index c148820..12f91a9 100644
--- a/noncore/multimedia/opieplayer2/audiowidget.cpp
+++ b/noncore/multimedia/opieplayer2/audiowidget.cpp
@@ -91,65 +91,65 @@ AudioWidget::AudioWidget( PlayListWidget &playList, MediaPlayerState &mediaPlaye
91 Config cfg("OpiePlayer"); 91 Config cfg("OpiePlayer");
92 cfg.setGroup("Options"); 92 cfg.setGroup("Options");
93 skin = cfg.readEntry("Skin","default"); 93 skin = cfg.readEntry("Skin","default");
94 //skin = "scaleTest"; 94 //skin = "scaleTest";
95 // color of background, frame, degree of transparency 95 // color of background, frame, degree of transparency
96 96
97 QString skinPath = "opieplayer2/skins/" + skin; 97 QString skinPath = "opieplayer2/skins/" + skin;
98 pixBg = QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) ); 98 pixBg = QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) );
99 imgUp = QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) ); 99 imgUp = QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) );
100 imgDn = QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) ); 100 imgDn = QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) );
101 101
102 buttonMask = QImage( imgUp.width(), imgUp.height(), 8, 255 ); 102 buttonMask = QImage( imgUp.width(), imgUp.height(), 8, 255 );
103 buttonMask.fill( 0 ); 103 buttonMask.fill( 0 );
104 104
105 for ( uint i = 0; i < buttonCount; i++ ) { 105 for ( uint i = 0; i < buttonCount; i++ ) {
106 Button button; 106 Button button;
107 button.type = skinInfo[ i ].type; 107 button.type = skinInfo[ i ].type;
108 108
109 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skin_mask_" + skinInfo[i].fileName + ".png" ); 109 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skin_mask_" + skinInfo[i].fileName + ".png" );
110 button.mask =QBitmap( filename ); 110 button.mask =QBitmap( filename );
111 111
112 if ( !button.mask.isNull() ) { 112 if ( !button.mask.isNull() ) {
113 QImage imgMask = button.mask.convertToImage(); 113 QImage imgMask = button.mask.convertToImage();
114 uchar **dest = buttonMask.jumpTable(); 114 uchar **dest = buttonMask.jumpTable();
115 for ( int y = 0; y < imgUp.height(); y++ ) { 115 for ( int y = 0; y < imgUp.height(); y++ ) {
116 uchar *line = dest[y]; 116 uchar *line = dest[y];
117 for ( int x = 0; x < imgUp.width(); x++ ) 117 for ( int x = 0; x < imgUp.width(); x++ )
118 if ( !qRed( imgMask.pixel( x, y ) ) ) 118 if ( !qRed( imgMask.pixel( x, y ) ) )
119 line[x] = i + 1; 119 line[x] = i + 1;
120 } 120 }
121 } 121 }
122 122
123 buttons.push_back( button ); 123 buttons.insert( i, button );
124 } 124 }
125 125
126 setBackgroundPixmap( pixBg ); 126 setBackgroundPixmap( pixBg );
127 127
128 songInfo.setFocusPolicy( QWidget::NoFocus ); 128 songInfo.setFocusPolicy( QWidget::NoFocus );
129// changeTextColor( &songInfo ); 129// changeTextColor( &songInfo );
130// songInfo.setBackgroundColor( QColor( 167, 212, 167 )); 130// songInfo.setBackgroundColor( QColor( 167, 212, 167 ));
131// songInfo.setFrameStyle( QFrame::NoFrame); 131// songInfo.setFrameStyle( QFrame::NoFrame);
132 songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken ); 132 songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken );
133// songInfo.setForegroundColor(Qt::white); 133// songInfo.setForegroundColor(Qt::white);
134 134
135 slider.setFixedHeight( 20 ); 135 slider.setFixedHeight( 20 );
136 slider.setMinValue( 0 ); 136 slider.setMinValue( 0 );
137 slider.setMaxValue( 1 ); 137 slider.setMaxValue( 1 );
138 slider.setFocusPolicy( QWidget::NoFocus ); 138 slider.setFocusPolicy( QWidget::NoFocus );
139 slider.setBackgroundPixmap( pixBg ); 139 slider.setBackgroundPixmap( pixBg );
140 140
141// Config cofg("qpe"); 141// Config cofg("qpe");
142// cofg.setGroup("Appearance"); 142// cofg.setGroup("Appearance");
143// QColor backgroundcolor = QColor( cofg.readEntry( "Background", "#E5E1D5" ) ); 143// QColor backgroundcolor = QColor( cofg.readEntry( "Background", "#E5E1D5" ) );
144 144
145 time.setFocusPolicy( QWidget::NoFocus ); 145 time.setFocusPolicy( QWidget::NoFocus );
146 time.setAlignment( Qt::AlignCenter ); 146 time.setAlignment( Qt::AlignCenter );
147 147
148// time.setFrame(FALSE); 148// time.setFrame(FALSE);
149// changeTextColor( &time ); 149// changeTextColor( &time );
150 150
151 resizeEvent( NULL ); 151 resizeEvent( NULL );
152 152
153 connect( &mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) ); 153 connect( &mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) );
154 connect( &mediaPlayerState, SIGNAL( isSeekableToggled( bool ) ), this, SLOT( setSeekable( bool ) ) ); 154 connect( &mediaPlayerState, SIGNAL( isSeekableToggled( bool ) ), this, SLOT( setSeekable( bool ) ) );
155 155
@@ -179,65 +179,65 @@ QPixmap combineImageWithBackground( QImage img, QPixmap bg, QPoint offset ) {
179 QPainter p( &pix ); 179 QPainter p( &pix );
180 p.drawTiledPixmap( pix.rect(), bg, offset ); 180 p.drawTiledPixmap( pix.rect(), bg, offset );
181 p.drawImage( 0, 0, img ); 181 p.drawImage( 0, 0, img );
182 return pix; 182 return pix;
183} 183}
184 184
185 185
186QPixmap maskPixToMask( QPixmap pix, QBitmap mask ) { 186QPixmap maskPixToMask( QPixmap pix, QBitmap mask ) {
187 QPixmap pixmap( pix ); 187 QPixmap pixmap( pix );
188 pixmap.setMask( mask ); 188 pixmap.setMask( mask );
189 return pixmap; 189 return pixmap;
190} 190}
191 191
192}; 192};
193 193
194void AudioWidget::resizeEvent( QResizeEvent * ) { 194void AudioWidget::resizeEvent( QResizeEvent * ) {
195 int h = height(); 195 int h = height();
196 int w = width(); 196 int w = width();
197 197
198 songInfo.setGeometry( QRect( 2, 2, w - 4, 20 ) ); 198 songInfo.setGeometry( QRect( 2, 2, w - 4, 20 ) );
199 slider.setFixedWidth( w - 110 ); 199 slider.setFixedWidth( w - 110 );
200 slider.setGeometry( QRect( 15, h - 22, w - 90, 20 ) ); 200 slider.setGeometry( QRect( 15, h - 22, w - 90, 20 ) );
201 slider.setBackgroundOrigin( QWidget::ParentOrigin ); 201 slider.setBackgroundOrigin( QWidget::ParentOrigin );
202 time.setGeometry( QRect( w - 85, h - 30, 70, 20 ) ); 202 time.setGeometry( QRect( w - 85, h - 30, 70, 20 ) );
203 203
204 upperLeftOfButtonMask.rx() = ( w - imgUp.width() ) / 2; 204 upperLeftOfButtonMask.rx() = ( w - imgUp.width() ) / 2;
205 upperLeftOfButtonMask.ry() = (( h - imgUp.height() ) / 2) - 10; 205 upperLeftOfButtonMask.ry() = (( h - imgUp.height() ) / 2) - 10;
206 QPoint p = upperLeftOfButtonMask; 206 QPoint p = upperLeftOfButtonMask;
207 207
208 QPixmap pixUp = combineImageWithBackground( imgUp, pixBg, p ); 208 QPixmap pixUp = combineImageWithBackground( imgUp, pixBg, p );
209 QPixmap pixDn = combineImageWithBackground( imgDn, pixBg, p ); 209 QPixmap pixDn = combineImageWithBackground( imgDn, pixBg, p );
210 210
211 for ( uint i = 0; i < buttons.size(); i++ ) { 211 for ( uint i = 0; i < buttons.count(); i++ ) {
212 if ( !buttons[i].mask.isNull() ) { 212 if ( !buttons[i].mask.isNull() ) {
213 buttons[i].pixUp = maskPixToMask( pixUp, buttons[i].mask ); 213 buttons[i].pixUp = maskPixToMask( pixUp, buttons[i].mask );
214 buttons[i].pixDown = maskPixToMask( pixDn, buttons[i].mask ); 214 buttons[i].pixDown = maskPixToMask( pixDn, buttons[i].mask );
215 } 215 }
216 } 216 }
217} 217}
218 218
219void AudioWidget::sliderPressed() { 219void AudioWidget::sliderPressed() {
220 audioSliderBeingMoved = TRUE; 220 audioSliderBeingMoved = TRUE;
221} 221}
222 222
223 223
224void AudioWidget::sliderReleased() { 224void AudioWidget::sliderReleased() {
225 audioSliderBeingMoved = FALSE; 225 audioSliderBeingMoved = FALSE;
226 if ( slider.width() == 0 ) 226 if ( slider.width() == 0 )
227 return; 227 return;
228 long val = long((double)slider.value() * mediaPlayerState.length() / slider.width()); 228 long val = long((double)slider.value() * mediaPlayerState.length() / slider.width());
229 mediaPlayerState.setPosition( val ); 229 mediaPlayerState.setPosition( val );
230} 230}
231 231
232void AudioWidget::setPosition( long i ) { 232void AudioWidget::setPosition( long i ) {
233 // qDebug("<<<<<<<<<<<<<<<<<<<<<<<<set position %d",i); 233 // qDebug("<<<<<<<<<<<<<<<<<<<<<<<<set position %d",i);
234 updateSlider( i, mediaPlayerState.length() ); 234 updateSlider( i, mediaPlayerState.length() );
235} 235}
236 236
237 237
238void AudioWidget::setLength( long max ) { 238void AudioWidget::setLength( long max ) {
239 updateSlider( mediaPlayerState.position(), max ); 239 updateSlider( mediaPlayerState.position(), max );
240} 240}
241 241
242 242
243void AudioWidget::setDisplayType( MediaPlayerState::DisplayType mediaType ) { 243void AudioWidget::setDisplayType( MediaPlayerState::DisplayType mediaType ) {
@@ -322,134 +322,134 @@ void AudioWidget::paintButton( QPainter &p, int i ) {
322} 322}
323 323
324 324
325void AudioWidget::skipFor() { 325void AudioWidget::skipFor() {
326 skipDirection = +1; 326 skipDirection = +1;
327 startTimer( 50 ); 327 startTimer( 50 );
328 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 ); 328 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 );
329} 329}
330 330
331void AudioWidget::skipBack() { 331void AudioWidget::skipBack() {
332 skipDirection = -1; 332 skipDirection = -1;
333 startTimer( 50 ); 333 startTimer( 50 );
334 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 ); 334 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 );
335} 335}
336 336
337 337
338 338
339void AudioWidget::stopSkip() { 339void AudioWidget::stopSkip() {
340 killTimers(); 340 killTimers();
341} 341}
342 342
343 343
344void AudioWidget::timerEvent( QTimerEvent * ) { 344void AudioWidget::timerEvent( QTimerEvent * ) {
345 if ( skipDirection == +1 ) { 345 if ( skipDirection == +1 ) {
346 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 ); 346 mediaPlayerState.setPosition( mediaPlayerState.position() + 2 );
347 } else if ( skipDirection == -1 ) { 347 } else if ( skipDirection == -1 ) {
348 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 ); 348 mediaPlayerState.setPosition( mediaPlayerState.position() - 2 );
349 } 349 }
350} 350}
351 351
352 352
353void AudioWidget::mouseMoveEvent( QMouseEvent *event ) { 353void AudioWidget::mouseMoveEvent( QMouseEvent *event ) {
354 for ( unsigned int i = 0; i < buttons.size(); i++ ) { 354 for ( unsigned int i = 0; i < buttons.count(); i++ ) {
355 if ( event->state() == QMouseEvent::LeftButton ) { 355 if ( event->state() == QMouseEvent::LeftButton ) {
356 // The test to see if the mouse click is inside the button or not 356 // The test to see if the mouse click is inside the button or not
357 bool isOnButton = isOverButton( event->pos() - upperLeftOfButtonMask, i ); 357 bool isOnButton = isOverButton( event->pos() - upperLeftOfButtonMask, i );
358 358
359 if ( isOnButton && !buttons[i].isHeld ) { 359 if ( isOnButton && !buttons[i].isHeld ) {
360 buttons[i].isHeld = TRUE; 360 buttons[i].isHeld = TRUE;
361 toggleButton(i); 361 toggleButton(i);
362 switch (i) { 362 switch (i) {
363 case VolumeUp: 363 case VolumeUp:
364 emit moreClicked(); 364 emit moreClicked();
365 return; 365 return;
366 case VolumeDown: 366 case VolumeDown:
367 emit lessClicked(); 367 emit lessClicked();
368 return; 368 return;
369 case Forward: 369 case Forward:
370 emit forwardClicked(); 370 emit forwardClicked();
371 return; 371 return;
372 case Back: 372 case Back:
373 emit backClicked(); 373 emit backClicked();
374 return; 374 return;
375 } 375 }
376 } else if ( !isOnButton && buttons[i].isHeld ) { 376 } else if ( !isOnButton && buttons[i].isHeld ) {
377 buttons[i].isHeld = FALSE; 377 buttons[i].isHeld = FALSE;
378 toggleButton(i); 378 toggleButton(i);
379 } 379 }
380 } else { 380 } else {
381 if ( buttons[i].isHeld ) { 381 if ( buttons[i].isHeld ) {
382 buttons[i].isHeld = FALSE; 382 buttons[i].isHeld = FALSE;
383 if ( buttons[i].type != ToggleButton ) { 383 if ( buttons[i].type != ToggleButton ) {
384 setToggleButton( i, FALSE ); 384 setToggleButton( i, FALSE );
385 } 385 }
386 qDebug("mouseEvent %d", i); 386 qDebug("mouseEvent %d", i);
387 handleCommand( static_cast<Command>( i ), buttons[ i ].isDown ); 387 handleCommand( static_cast<Command>( i ), buttons[ i ].isDown );
388 } 388 }
389 } 389 }
390 } 390 }
391} 391}
392 392
393 393
394void AudioWidget::mousePressEvent( QMouseEvent *event ) { 394void AudioWidget::mousePressEvent( QMouseEvent *event ) {
395 mouseMoveEvent( event ); 395 mouseMoveEvent( event );
396} 396}
397 397
398 398
399void AudioWidget::mouseReleaseEvent( QMouseEvent *event ) { 399void AudioWidget::mouseReleaseEvent( QMouseEvent *event ) {
400 mouseMoveEvent( event ); 400 mouseMoveEvent( event );
401} 401}
402 402
403 403
404void AudioWidget::showEvent( QShowEvent* ) { 404void AudioWidget::showEvent( QShowEvent* ) {
405 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 ); 405 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 );
406 mouseMoveEvent( &event ); 406 mouseMoveEvent( &event );
407} 407}
408 408
409 409
410void AudioWidget::paintEvent( QPaintEvent * pe ) { 410void AudioWidget::paintEvent( QPaintEvent * pe ) {
411 if ( !pe->erased() ) { 411 if ( !pe->erased() ) {
412 // Combine with background and double buffer 412 // Combine with background and double buffer
413 QPixmap pix( pe->rect().size() ); 413 QPixmap pix( pe->rect().size() );
414 QPainter p( &pix ); 414 QPainter p( &pix );
415 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() ); 415 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() );
416 p.drawTiledPixmap( pe->rect(), pixBg, pe->rect().topLeft() ); 416 p.drawTiledPixmap( pe->rect(), pixBg, pe->rect().topLeft() );
417 for ( unsigned int i = 0; i < buttons.size(); i++ ) 417 for ( unsigned int i = 0; i < buttons.count(); i++ )
418 paintButton( p, i ); 418 paintButton( p, i );
419 QPainter p2( this ); 419 QPainter p2( this );
420 p2.drawPixmap( pe->rect().topLeft(), pix ); 420 p2.drawPixmap( pe->rect().topLeft(), pix );
421 } else { 421 } else {
422 QPainter p( this ); 422 QPainter p( this );
423 for ( unsigned int i = 0; i < buttons.size(); i++ ) 423 for ( unsigned int i = 0; i < buttons.count(); i++ )
424 paintButton( p, i ); 424 paintButton( p, i );
425 } 425 }
426} 426}
427 427
428void AudioWidget::keyReleaseEvent( QKeyEvent *e) { 428void AudioWidget::keyReleaseEvent( QKeyEvent *e) {
429 switch ( e->key() ) { 429 switch ( e->key() ) {
430 ////////////////////////////// Zaurus keys 430 ////////////////////////////// Zaurus keys
431 case Key_Home: 431 case Key_Home:
432 break; 432 break;
433 case Key_F9: //activity 433 case Key_F9: //activity
434 hide(); 434 hide();
435 // qDebug("Audio F9"); 435 // qDebug("Audio F9");
436 break; 436 break;
437 case Key_F10: //contacts 437 case Key_F10: //contacts
438 break; 438 break;
439 case Key_F11: //menu 439 case Key_F11: //menu
440 mediaPlayerState.toggleBlank(); 440 mediaPlayerState.toggleBlank();
441 break; 441 break;
442 case Key_F12: //home 442 case Key_F12: //home
443 break; 443 break;
444 case Key_F13: //mail 444 case Key_F13: //mail
445 mediaPlayerState.toggleBlank(); 445 mediaPlayerState.toggleBlank();
446 break; 446 break;
447 case Key_Space: { 447 case Key_Space: {
448 mediaPlayerState.togglePaused(); 448 mediaPlayerState.togglePaused();
449 } 449 }
450 break; 450 break;
451 case Key_Down: 451 case Key_Down:
452 // toggleButton(6); 452 // toggleButton(6);
453 emit lessClicked(); 453 emit lessClicked();
454 emit lessReleased(); 454 emit lessReleased();
455 // toggleButton(6); 455 // toggleButton(6);
diff --git a/noncore/multimedia/opieplayer2/mediawidget.h b/noncore/multimedia/opieplayer2/mediawidget.h
index 504b705..49bf024 100644
--- a/noncore/multimedia/opieplayer2/mediawidget.h
+++ b/noncore/multimedia/opieplayer2/mediawidget.h
@@ -22,82 +22,84 @@
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 33
34class MediaWidget : public QWidget 34class MediaWidget : public QWidget
35{ 35{
36 Q_OBJECT 36 Q_OBJECT
37public: 37public:
38 enum Command { Play = 0, Stop, Next, Previous, VolumeUp, VolumeDown, Loop, PlayList, Forward, Back }; 38 enum Command { Play = 0, Stop, Next, Previous, VolumeUp, VolumeDown, Loop, PlayList, Forward, Back };
39 enum ButtonType { NormalButton, ToggleButton }; 39 enum ButtonType { NormalButton, ToggleButton };
40 40
41 struct Button 41 struct Button
42 { 42 {
43 Button() : type( NormalButton ), isHeld( false ), isDown( false ) {} 43 Button() : type( NormalButton ), isHeld( false ), isDown( false ) {}
44 44
45 ButtonType type : 1; 45 ButtonType type : 1;
46 bool isHeld : 1; 46 bool isHeld : 1;
47 bool isDown : 1; 47 bool isDown : 1;
48 48
49 QBitmap mask; 49 QBitmap mask;
50 QPixmap pixUp; 50 QPixmap pixUp;
51 QPixmap pixDown; 51 QPixmap pixDown;
52 }; 52 };
53 typedef std::vector<Button> ButtonVector; 53 typedef std::vector<Button> ButtonVector;
54 // when the transition is done this should be Command -> Button
55 typedef QMap<int, Button> ButtonMap;
54 56
55 struct SkinButtonInfo 57 struct SkinButtonInfo
56 { 58 {
57 Command command; 59 Command command;
58 const char *fileName; 60 const char *fileName;
59 ButtonType type; 61 ButtonType type;
60 }; 62 };
61 63
62 typedef std::vector<QBitmap> MaskVector; 64 typedef std::vector<QBitmap> MaskVector;
63 typedef std::vector<QPixmap> PixmapVector; 65 typedef std::vector<QPixmap> PixmapVector;
64 66
65 MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent = 0, const char *name = 0 ); 67 MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent = 0, const char *name = 0 );
66 virtual ~MediaWidget(); 68 virtual ~MediaWidget();
67 69
68public slots: 70public slots:
69 virtual void setDisplayType( MediaPlayerState::DisplayType displayType ) = 0; 71 virtual void setDisplayType( MediaPlayerState::DisplayType displayType ) = 0;
70 virtual void setLength( long length ) = 0; 72 virtual void setLength( long length ) = 0;
71 virtual void setPlaying( bool playing ) = 0; 73 virtual void setPlaying( bool playing ) = 0;
72 74
73signals: 75signals:
74 void moreReleased(); 76 void moreReleased();
75 void lessReleased(); 77 void lessReleased();
76 void forwardReleased(); 78 void forwardReleased();
77 void backReleased(); 79 void backReleased();
78 80
79protected: 81protected:
80 virtual void closeEvent( QCloseEvent * ); 82 virtual void closeEvent( QCloseEvent * );
81 83
82 void handleCommand( Command command, bool buttonDown ); 84 void handleCommand( Command command, bool buttonDown );
83 85
84 bool isOverButton( const QPoint &position, int buttonId ) const; 86 bool isOverButton( const QPoint &position, int buttonId ) const;
85 87
86 void paintButton( int buttonId ); 88 void paintButton( int buttonId );
87 virtual void paintButton( QPainter &p, int i ) = 0; 89 virtual void paintButton( QPainter &p, int i ) = 0;
88 90
89 void toggleButton( int buttonId ); 91 void toggleButton( int buttonId );
90 92
91 MediaPlayerState &mediaPlayerState; 93 MediaPlayerState &mediaPlayerState;
92 PlayListWidget &playList; 94 PlayListWidget &playList;
93 95
94 ButtonVector buttons; 96 ButtonMap buttons;
95 97
96 QImage buttonMask; 98 QImage buttonMask;
97 99
98 QPoint upperLeftOfButtonMask; 100 QPoint upperLeftOfButtonMask;
99}; 101};
100 102
101#endif // MEDIAWIDGET_H 103#endif // MEDIAWIDGET_H
102/* vim: et sw=4 ts=4 104/* vim: et sw=4 ts=4
103 */ 105 */
diff --git a/noncore/multimedia/opieplayer2/videowidget.cpp b/noncore/multimedia/opieplayer2/videowidget.cpp
index 380c703..7d85d63 100644
--- a/noncore/multimedia/opieplayer2/videowidget.cpp
+++ b/noncore/multimedia/opieplayer2/videowidget.cpp
@@ -45,72 +45,71 @@
45#include "mediaplayerstate.h" 45#include "mediaplayerstate.h"
46#include "playlistwidget.h" 46#include "playlistwidget.h"
47 47
48 48
49#ifdef Q_WS_QWS 49#ifdef Q_WS_QWS
50# define USE_DIRECT_PAINTER 50# define USE_DIRECT_PAINTER
51# include <qdirectpainter_qws.h> 51# include <qdirectpainter_qws.h>
52# include <qgfxraster_qws.h> 52# include <qgfxraster_qws.h>
53#endif 53#endif
54 54
55 55
56namespace 56namespace
57{ 57{
58 58
59const int xo = 2; // movable x offset 59const int xo = 2; // movable x offset
60const int yo = 0; // movable y offset 60const int yo = 0; // movable y offset
61 61
62const char * const skinV_mask_file_names[7] = { 62const char * const skinV_mask_file_names[7] = {
63"play","stop","fwd","back","up","down","full" 63"play","stop","fwd","back","up","down","full"
64}; 64};
65 65
66} 66}
67 67
68VideoWidget::VideoWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent, const char* name ) 68VideoWidget::VideoWidget( PlayListWidget &playList, MediaPlayerState &mediaPlayerState, QWidget* parent, const char* name )
69 : MediaWidget( playList, mediaPlayerState, parent, name ), scaledWidth( 0 ), scaledHeight( 0 ) 69 : MediaWidget( playList, mediaPlayerState, parent, name ), scaledWidth( 0 ), scaledHeight( 0 )
70{ 70{
71 setCaption( tr("OpiePlayer - Video") ); 71 setCaption( tr("OpiePlayer - Video") );
72 72
73 Button defaultButton; 73 Button defaultButton;
74 Button toggleButton = defaultButton; 74 Button toggleButton = defaultButton;
75 toggleButton.type = ToggleButton; 75 toggleButton.type = ToggleButton;
76 76
77 buttons.reserve( 7 ); 77 buttons.insert( 0, toggleButton ); // play
78 buttons.push_back( toggleButton ); // play 78 buttons.insert( 1, toggleButton ); // stop
79 buttons.push_back( defaultButton ); // stop 79 buttons.insert( 2, toggleButton ); // next
80 buttons.push_back( defaultButton ); // next 80 buttons.insert( 3, toggleButton ); // previous
81 buttons.push_back( defaultButton ); // previous 81 buttons.insert( 4, toggleButton ); // volUp
82 buttons.push_back( defaultButton ); // volUp 82 buttons.insert( 5, toggleButton ); // volDown
83 buttons.push_back( defaultButton ); // volDown 83 buttons.insert( 6, toggleButton ); // fullscreen
84 buttons.push_back( toggleButton ); //fullscreen
85 84
86 videoFrame = new XineVideoWidget ( this, "Video frame" ); 85 videoFrame = new XineVideoWidget ( this, "Video frame" );
87 86
88 connect ( videoFrame, SIGNAL( videoResized ( const QSize & )), this, SIGNAL( videoResized ( const QSize & ))); 87 connect ( videoFrame, SIGNAL( videoResized ( const QSize & )), this, SIGNAL( videoResized ( const QSize & )));
89 connect ( videoFrame, SIGNAL( clicked () ), this, SLOT ( backToNormal() ) ); 88 connect ( videoFrame, SIGNAL( clicked () ), this, SLOT ( backToNormal() ) );
90 89
91 Config cfg("OpiePlayer"); 90 Config cfg("OpiePlayer");
92 cfg.setGroup("Options"); 91 cfg.setGroup("Options");
93 skin = cfg.readEntry("Skin","default"); 92 skin = cfg.readEntry("Skin","default");
94 93
95 QString skinPath = "opieplayer2/skins/" + skin; 94 QString skinPath = "opieplayer2/skins/" + skin;
96 pixBg = QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) ); 95 pixBg = QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) );
97 imgUp = QImage( Resource::loadImage( QString("%1/skinV_up").arg(skinPath) ) ); 96 imgUp = QImage( Resource::loadImage( QString("%1/skinV_up").arg(skinPath) ) );
98 imgDn = QImage( Resource::loadImage( QString("%1/skinV_down").arg(skinPath) ) ); 97 imgDn = QImage( Resource::loadImage( QString("%1/skinV_down").arg(skinPath) ) );
99 98
100 buttonMask = QImage( imgUp.width(), imgUp.height(), 8, 255 ); 99 buttonMask = QImage( imgUp.width(), imgUp.height(), 8, 255 );
101 buttonMask.fill( 0 ); 100 buttonMask.fill( 0 );
102 101
103 for ( int i = 0; i < 7; i++ ) { 102 for ( int i = 0; i < 7; i++ ) {
104 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skinV_mask_" + skinV_mask_file_names[i] + ".png" ); 103 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skinV_mask_" + skinV_mask_file_names[i] + ".png" );
105 masks[i] = new QBitmap( filename ); 104 masks[i] = new QBitmap( filename );
106 105
107 if ( !masks[i]->isNull() ) { 106 if ( !masks[i]->isNull() ) {
108 QImage imgMask = masks[i]->convertToImage(); 107 QImage imgMask = masks[i]->convertToImage();
109 uchar **dest = buttonMask.jumpTable(); 108 uchar **dest = buttonMask.jumpTable();
110 for ( int y = 0; y < imgUp.height(); y++ ) { 109 for ( int y = 0; y < imgUp.height(); y++ ) {
111 uchar *line = dest[y]; 110 uchar *line = dest[y];
112 for ( int x = 0; x < imgUp.width(); x++ ) { 111 for ( int x = 0; x < imgUp.width(); x++ ) {
113 if ( !qRed( imgMask.pixel( x, y ) ) ) 112 if ( !qRed( imgMask.pixel( x, y ) ) )
114 line[x] = i + 1; 113 line[x] = i + 1;
115 } 114 }
116 } 115 }
@@ -242,65 +241,65 @@ void VideoWidget::updateSlider( long i, long max ) {
242 // Will flicker too much if we don't do this 241 // Will flicker too much if we don't do this
243 if ( max == 0 ) { 242 if ( max == 0 ) {
244 return; 243 return;
245 } 244 }
246 int width = slider->width(); 245 int width = slider->width();
247 int val = int((double)i * width / max); 246 int val = int((double)i * width / max);
248 if ( !mediaPlayerState.isFullscreen() && !videoSliderBeingMoved ) { 247 if ( !mediaPlayerState.isFullscreen() && !videoSliderBeingMoved ) {
249 if ( slider->value() != val ) { 248 if ( slider->value() != val ) {
250 slider->setValue( val ); 249 slider->setValue( val );
251 } 250 }
252 if ( slider->maxValue() != width ) { 251 if ( slider->maxValue() != width ) {
253 slider->setMaxValue( width ); 252 slider->setMaxValue( width );
254 } 253 }
255 } 254 }
256} 255}
257 256
258void VideoWidget::setToggleButton( int i, bool down ) { 257void VideoWidget::setToggleButton( int i, bool down ) {
259 if ( down != buttons[i].isDown ) { 258 if ( down != buttons[i].isDown ) {
260 toggleButton( i ); 259 toggleButton( i );
261 } 260 }
262} 261}
263 262
264void VideoWidget::paintButton( QPainter &p, int i ) { 263void VideoWidget::paintButton( QPainter &p, int i ) {
265 264
266 if ( buttons[i].isDown ) { 265 if ( buttons[i].isDown ) {
267 p.drawPixmap( upperLeftOfButtonMask, *buttonPixDown[i] ); 266 p.drawPixmap( upperLeftOfButtonMask, *buttonPixDown[i] );
268 } else { 267 } else {
269 p.drawPixmap( upperLeftOfButtonMask, *buttonPixUp[i] ); 268 p.drawPixmap( upperLeftOfButtonMask, *buttonPixUp[i] );
270 } 269 }
271} 270}
272 271
273void VideoWidget::mouseMoveEvent( QMouseEvent *event ) { 272void VideoWidget::mouseMoveEvent( QMouseEvent *event ) {
274 for ( unsigned int i = 0; i < buttons.size(); i++ ) { 273 for ( unsigned int i = 0; i < buttons.count(); i++ ) {
275 if ( event->state() == QMouseEvent::LeftButton ) { 274 if ( event->state() == QMouseEvent::LeftButton ) {
276 // The test to see if the mouse click is inside the button or not 275 // The test to see if the mouse click is inside the button or not
277 bool isOnButton = isOverButton( event->pos() - upperLeftOfButtonMask, i ); 276 bool isOnButton = isOverButton( event->pos() - upperLeftOfButtonMask, i );
278 277
279 if ( isOnButton && !buttons[i].isHeld ) { 278 if ( isOnButton && !buttons[i].isHeld ) {
280 buttons[i].isHeld = TRUE; 279 buttons[i].isHeld = TRUE;
281 toggleButton(i); 280 toggleButton(i);
282 281
283 switch (i) { 282 switch (i) {
284 case VideoVolUp: 283 case VideoVolUp:
285 emit moreClicked(); 284 emit moreClicked();
286 return; 285 return;
287 case VideoVolDown: 286 case VideoVolDown:
288 emit lessClicked(); 287 emit lessClicked();
289 return; 288 return;
290 } 289 }
291 } else if ( !isOnButton && buttons[i].isHeld ) { 290 } else if ( !isOnButton && buttons[i].isHeld ) {
292 buttons[i].isHeld = FALSE; 291 buttons[i].isHeld = FALSE;
293 toggleButton(i); 292 toggleButton(i);
294 } 293 }
295 } else { 294 } else {
296 295
297 if ( buttons[i].isHeld ) { 296 if ( buttons[i].isHeld ) {
298 buttons[i].isHeld = FALSE; 297 buttons[i].isHeld = FALSE;
299 if ( buttons[i].type != ToggleButton ) { 298 if ( buttons[i].type != ToggleButton ) {
300 setToggleButton( i, FALSE ); 299 setToggleButton( i, FALSE );
301 } 300 }
302 301
303 switch(i) { 302 switch(i) {
304 303
305 case VideoPlay: { 304 case VideoPlay: {
306 if( mediaPlayerState.isPaused() ) { 305 if( mediaPlayerState.isPaused() ) {
@@ -384,72 +383,72 @@ void VideoWidget::makeVisible() {
384 slider->hide(); 383 slider->hide();
385 } 384 }
386 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 385 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
387 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 386 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
388 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 387 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
389 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 388 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
390 } else { 389 } else {
391 slider->show(); 390 slider->show();
392 connect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 391 connect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
393 connect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 392 connect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
394 connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 393 connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
395 connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 394 connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
396 } 395 }
397 } 396 }
398} 397}
399 398
400 399
401 400
402 401
403void VideoWidget::paintEvent( QPaintEvent * pe) { 402void VideoWidget::paintEvent( QPaintEvent * pe) {
404 QPainter p( this ); 403 QPainter p( this );
405 404
406 if ( mediaPlayerState.isFullscreen() ) { 405 if ( mediaPlayerState.isFullscreen() ) {
407 // Clear the background 406 // Clear the background
408 p.setBrush( QBrush( Qt::black ) ); 407 p.setBrush( QBrush( Qt::black ) );
409 } else { 408 } else {
410 if ( !pe->erased() ) { 409 if ( !pe->erased() ) {
411 // Combine with background and double buffer 410 // Combine with background and double buffer
412 QPixmap pix( pe->rect().size() ); 411 QPixmap pix( pe->rect().size() );
413 QPainter p( &pix ); 412 QPainter p( &pix );
414 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() ); 413 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() );
415 p.drawTiledPixmap( pe->rect(), pixBg, pe->rect().topLeft() ); 414 p.drawTiledPixmap( pe->rect(), pixBg, pe->rect().topLeft() );
416 for ( unsigned int i = 0; i < buttons.size(); i++ ) { 415 for ( unsigned int i = 0; i < buttons.count(); i++ ) {
417 paintButton( p, i ); 416 paintButton( p, i );
418 } 417 }
419 QPainter p2( this ); 418 QPainter p2( this );
420 p2.drawPixmap( pe->rect().topLeft(), pix ); 419 p2.drawPixmap( pe->rect().topLeft(), pix );
421 } else { 420 } else {
422 QPainter p( this ); 421 QPainter p( this );
423 for ( unsigned int i = 0; i < buttons.size(); i++ ) 422 for ( unsigned int i = 0; i < buttons.count(); i++ )
424 paintButton( p, i ); 423 paintButton( p, i );
425 } 424 }
426 //slider->repaint( TRUE ); 425 //slider->repaint( TRUE );
427 } 426 }
428} 427}
429 428
430 429
431void VideoWidget::keyReleaseEvent( QKeyEvent *e) { 430void VideoWidget::keyReleaseEvent( QKeyEvent *e) {
432 switch ( e->key() ) { 431 switch ( e->key() ) {
433////////////////////////////// Zaurus keys 432////////////////////////////// Zaurus keys
434 case Key_Home: 433 case Key_Home:
435 break; 434 break;
436 case Key_F9: //activity 435 case Key_F9: //activity
437 break; 436 break;
438 case Key_F10: //contacts 437 case Key_F10: //contacts
439// hide(); 438// hide();
440 break; 439 break;
441 case Key_F11: //menu 440 case Key_F11: //menu
442 break; 441 break;
443 case Key_F12: //home 442 case Key_F12: //home
444 break; 443 break;
445 case Key_F13: //mail 444 case Key_F13: //mail
446 break; 445 break;
447 case Key_Space: { 446 case Key_Space: {
448 if(mediaPlayerState.isPlaying()) { 447 if(mediaPlayerState.isPlaying()) {
449 mediaPlayerState.setPlaying(FALSE); 448 mediaPlayerState.setPlaying(FALSE);
450 } else { 449 } else {
451 mediaPlayerState.setPlaying(TRUE); 450 mediaPlayerState.setPlaying(TRUE);
452 } 451 }
453 } 452 }
454 break; 453 break;
455 case Key_Down: 454 case Key_Down: