summaryrefslogtreecommitdiff
path: root/core/multimedia/opieplayer/audiowidget.cpp
Unidiff
Diffstat (limited to 'core/multimedia/opieplayer/audiowidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r--core/multimedia/opieplayer/audiowidget.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/core/multimedia/opieplayer/audiowidget.cpp b/core/multimedia/opieplayer/audiowidget.cpp
index 7da2d54..376f8d3 100644
--- a/core/multimedia/opieplayer/audiowidget.cpp
+++ b/core/multimedia/opieplayer/audiowidget.cpp
@@ -1,172 +1,177 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "audiowidget.h"
21#include "mediaplayerstate.h"
22
23/* OPIE */
20#include <qpe/qpeapplication.h> 24#include <qpe/qpeapplication.h>
21#include <qpe/resource.h> 25#include <qpe/resource.h>
22#include <qpe/config.h> 26#include <qpe/config.h>
27#include <opie2/odebug.h>
23 28
29/* QT */
24#include <qdir.h> 30#include <qdir.h>
25#include "audiowidget.h"
26#include "mediaplayerstate.h"
27 31
32/* STD */
28#include <stdlib.h> 33#include <stdlib.h>
29#include <stdio.h> 34#include <stdio.h>
30 35
31extern MediaPlayerState *mediaPlayerState; 36extern MediaPlayerState *mediaPlayerState;
32 37
33 38
34static const int xo = -2; // movable x offset 39static const int xo = -2; // movable x offset
35static const int yo = 22; // movable y offset 40static const int yo = 22; // movable y offset
36 41
37using namespace Opie::Ui; 42using namespace Opie::Ui;
38struct MediaButton { 43struct MediaButton {
39 bool isToggle, isHeld, isDown; 44 bool isToggle, isHeld, isDown;
40}; 45};
41 46
42//Layout information for the audioButtons (and if it is a toggle button or not) 47//Layout information for the audioButtons (and if it is a toggle button or not)
43MediaButton audioButtons[] = { 48MediaButton audioButtons[] = {
44 { TRUE, FALSE, FALSE }, // play 49 { TRUE, FALSE, FALSE }, // play
45 { FALSE, FALSE, FALSE }, // stop 50 { FALSE, FALSE, FALSE }, // stop
46 { FALSE, FALSE, FALSE }, // next 51 { FALSE, FALSE, FALSE }, // next
47 { FALSE, FALSE, FALSE }, // previous 52 { FALSE, FALSE, FALSE }, // previous
48 { FALSE, FALSE, FALSE }, // volume up 53 { FALSE, FALSE, FALSE }, // volume up
49 { FALSE, FALSE, FALSE }, // volume down 54 { FALSE, FALSE, FALSE }, // volume down
50 { TRUE, FALSE, FALSE }, // repeat/loop 55 { TRUE, FALSE, FALSE }, // repeat/loop
51 { FALSE, FALSE, FALSE }, // playlist 56 { FALSE, FALSE, FALSE }, // playlist
52 { FALSE, FALSE, FALSE }, // forward 57 { FALSE, FALSE, FALSE }, // forward
53 { FALSE, FALSE, FALSE } // back 58 { FALSE, FALSE, FALSE } // back
54}; 59};
55 60
56const char *skin_mask_file_names[10] = { 61const char *skin_mask_file_names[10] = {
57 "play", "stop", "next", "prev", "up", 62 "play", "stop", "next", "prev", "up",
58 "down", "loop", "playlist", "forward", "back" 63 "down", "loop", "playlist", "forward", "back"
59}; 64};
60 65
61static void changeTextColor( QWidget *w ) { 66static void changeTextColor( QWidget *w ) {
62 QPalette p = w->palette(); 67 QPalette p = w->palette();
63 p.setBrush( QColorGroup::Background, QColor( 167, 212, 167 ) ); 68 p.setBrush( QColorGroup::Background, QColor( 167, 212, 167 ) );
64 p.setBrush( QColorGroup::Base, QColor( 167, 212, 167 ) ); 69 p.setBrush( QColorGroup::Base, QColor( 167, 212, 167 ) );
65 w->setPalette( p ); 70 w->setPalette( p );
66} 71}
67 72
68static const int numButtons = (sizeof(audioButtons)/sizeof(MediaButton)); 73static const int numButtons = (sizeof(audioButtons)/sizeof(MediaButton));
69 74
70AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) : 75AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) :
71 QWidget( parent, name, f ), songInfo( this ), slider( Qt::Horizontal, this ), time( this ) 76 QWidget( parent, name, f ), songInfo( this ), slider( Qt::Horizontal, this ), time( this )
72{ 77{
73 setCaption( tr("OpiePlayer") ); 78 setCaption( tr("OpiePlayer") );
74 // qDebug("<<<<<audioWidget"); 79 // odebug << "<<<<<audioWidget" << oendl;
75 80
76 Config cfg("OpiePlayer"); 81 Config cfg("OpiePlayer");
77 cfg.setGroup("Options"); 82 cfg.setGroup("Options");
78 skin = cfg.readEntry("Skin","default"); 83 skin = cfg.readEntry("Skin","default");
79 //skin = "scaleTest"; 84 //skin = "scaleTest";
80// color of background, frame, degree of transparency 85// color of background, frame, degree of transparency
81 86
82// QString skinPath = "opieplayer/skins/" + skin; 87// QString skinPath = "opieplayer/skins/" + skin;
83 QString skinPath; 88 QString skinPath;
84 skinPath = "opieplayer2/skins/" + skin; 89 skinPath = "opieplayer2/skins/" + skin;
85 if(!QDir(QString(getenv("OPIEDIR")) +"/pics/"+skinPath).exists()) 90 if(!QDir(QString(getenv("OPIEDIR")) +"/pics/"+skinPath).exists())
86 skinPath = "opieplayer2/skins/default"; 91 skinPath = "opieplayer2/skins/default";
87 92
88 // qDebug("skin path " + skinPath); 93 // odebug << "skin path " + skinPath << oendl;
89 94
90 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) ); 95 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) );
91 imgUp = new QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) ); 96 imgUp = new QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) );
92 imgDn = new QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) ); 97 imgDn = new QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) );
93 98
94 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 ); 99 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 );
95 imgButtonMask->fill( 0 ); 100 imgButtonMask->fill( 0 );
96 101
97 for ( int i = 0; i < 10; i++ ) { 102 for ( int i = 0; i < 10; i++ ) {
98 QString filename = QString(getenv("OPIEDIR")) + "/pics/" + skinPath + "/skin_mask_" + skin_mask_file_names[i] + ".png"; 103 QString filename = QString(getenv("OPIEDIR")) + "/pics/" + skinPath + "/skin_mask_" + skin_mask_file_names[i] + ".png";
99 masks[i] = new QBitmap( filename ); 104 masks[i] = new QBitmap( filename );
100 105
101 if ( !masks[i]->isNull() ) { 106 if ( !masks[i]->isNull() ) {
102 QImage imgMask = masks[i]->convertToImage(); 107 QImage imgMask = masks[i]->convertToImage();
103 uchar **dest = imgButtonMask->jumpTable(); 108 uchar **dest = imgButtonMask->jumpTable();
104 for ( int y = 0; y < imgUp->height(); y++ ) { 109 for ( int y = 0; y < imgUp->height(); y++ ) {
105 uchar *line = dest[y]; 110 uchar *line = dest[y];
106 for ( int x = 0; x < imgUp->width(); x++ ) 111 for ( int x = 0; x < imgUp->width(); x++ )
107 if ( !qRed( imgMask.pixel( x, y ) ) ) 112 if ( !qRed( imgMask.pixel( x, y ) ) )
108 line[x] = i + 1; 113 line[x] = i + 1;
109 } 114 }
110 } 115 }
111 116
112 } 117 }
113 118
114 for ( int i = 0; i < 11; i++ ) { 119 for ( int i = 0; i < 11; i++ ) {
115 buttonPixUp[i] = NULL; 120 buttonPixUp[i] = NULL;
116 buttonPixDown[i] = NULL; 121 buttonPixDown[i] = NULL;
117 } 122 }
118 123
119 QWidget *d = QApplication::desktop(); 124 QWidget *d = QApplication::desktop();
120 int width = d->width(); 125 int width = d->width();
121 int height = d->height(); 126 int height = d->height();
122 127
123 if( (width != pixBg->width() ) || (height != pixBg->height() ) ) { 128 if( (width != pixBg->width() ) || (height != pixBg->height() ) ) {
124 // qDebug("<<<<<<<< scale image >>>>>>>>>>>>"); 129// odebug << "<<<<<<<< scale image >>>>>>>>>>>>" << oendl;
125 QImage img; 130 QImage img;
126 img = pixBg->convertToImage(); 131 img = pixBg->convertToImage();
127 pixBg->convertFromImage( img.smoothScale( width, height)); 132 pixBg->convertFromImage( img.smoothScale( width, height));
128 } 133 }
129 setBackgroundPixmap( *pixBg); 134 setBackgroundPixmap( *pixBg);
130 135
131 songInfo.setFocusPolicy( QWidget::NoFocus ); 136 songInfo.setFocusPolicy( QWidget::NoFocus );
132 137
133// changeTextColor( &songInfo ); 138// changeTextColor( &songInfo );
134// songInfo.setBackgroundColor( QColor( 167, 212, 167 )); 139// songInfo.setBackgroundColor( QColor( 167, 212, 167 ));
135// songInfo.setFrameStyle( QFrame::NoFrame); 140// songInfo.setFrameStyle( QFrame::NoFrame);
136// songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken ); 141// songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken );
137 //NoFrame 142 //NoFrame
138// songInfo.setForegroundColor(Qt::white); 143// songInfo.setForegroundColor(Qt::white);
139 144
140 slider.setFixedHeight( 20 ); 145 slider.setFixedHeight( 20 );
141 slider.setMinValue( 0 ); 146 slider.setMinValue( 0 );
142 slider.setMaxValue( 1 ); 147 slider.setMaxValue( 1 );
143 slider.setFocusPolicy( QWidget::NoFocus ); 148 slider.setFocusPolicy( QWidget::NoFocus );
144 149
145 slider.setBackgroundPixmap( *pixBg ); 150 slider.setBackgroundPixmap( *pixBg );
146 151
147 time.setFocusPolicy( QWidget::NoFocus ); 152 time.setFocusPolicy( QWidget::NoFocus );
148 time.setAlignment( Qt::AlignCenter ); 153 time.setAlignment( Qt::AlignCenter );
149 time.setFrame(FALSE); 154 time.setFrame(FALSE);
150 changeTextColor( &time ); 155 changeTextColor( &time );
151 156
152 resizeEvent( NULL ); 157 resizeEvent( NULL );
153 158
154 connect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 159 connect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
155 connect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 160 connect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
156 161
157 connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) ); 162 connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) );
158 connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) ); 163 connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) );
159 connect( mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) ); 164 connect( mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) );
160// connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) ); 165// connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) );
161 connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) ); 166 connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) );
162 167
163 // Intialise state 168 // Intialise state
164 setLength( mediaPlayerState->length() ); 169 setLength( mediaPlayerState->length() );
165 setPosition( mediaPlayerState->position() ); 170 setPosition( mediaPlayerState->position() );
166 setLooping( mediaPlayerState->fullscreen() ); 171 setLooping( mediaPlayerState->fullscreen() );
167// setPaused( mediaPlayerState->paused() ); 172// setPaused( mediaPlayerState->paused() );
168 setPlaying( mediaPlayerState->playing() ); 173 setPlaying( mediaPlayerState->playing() );
169this->setFocus(); 174this->setFocus();
170} 175}
171 176
172 177
@@ -208,97 +213,97 @@ QPixmap *maskPixToMask( QPixmap pix, QBitmap mask )
208void AudioWidget::resizeEvent( QResizeEvent * ) { 213void AudioWidget::resizeEvent( QResizeEvent * ) {
209 int h = height(); 214 int h = height();
210 int w = width(); 215 int w = width();
211 216
212 songInfo.setGeometry( QRect( 2, 10, w - 4, 20 ) ); 217 songInfo.setGeometry( QRect( 2, 10, w - 4, 20 ) );
213 slider.setFixedWidth( w - 110 ); 218 slider.setFixedWidth( w - 110 );
214 slider.setGeometry( QRect( 15, h - 30, w - 90, 20 ) ); 219 slider.setGeometry( QRect( 15, h - 30, w - 90, 20 ) );
215 slider.setBackgroundOrigin( QWidget::ParentOrigin ); 220 slider.setBackgroundOrigin( QWidget::ParentOrigin );
216 time.setGeometry( QRect( w - 85, h - 30, 70, 20 ) ); 221 time.setGeometry( QRect( w - 85, h - 30, 70, 20 ) );
217 222
218 xoff = ( w - imgUp->width() ) / 2; 223 xoff = ( w - imgUp->width() ) / 2;
219 yoff = (( h - imgUp->height() ) / 2) - 10; 224 yoff = (( h - imgUp->height() ) / 2) - 10;
220 QPoint p( xoff, yoff ); 225 QPoint p( xoff, yoff );
221 226
222 QPixmap *pixUp = combineImageWithBackground( *imgUp, *pixBg, p ); 227 QPixmap *pixUp = combineImageWithBackground( *imgUp, *pixBg, p );
223 QPixmap *pixDn = combineImageWithBackground( *imgDn, *pixBg, p ); 228 QPixmap *pixDn = combineImageWithBackground( *imgDn, *pixBg, p );
224 229
225 for ( int i = 0; i < 10; i++ ) { 230 for ( int i = 0; i < 10; i++ ) {
226 if ( !masks[i]->isNull() ) { 231 if ( !masks[i]->isNull() ) {
227 delete buttonPixUp[i]; 232 delete buttonPixUp[i];
228 delete buttonPixDown[i]; 233 delete buttonPixDown[i];
229 buttonPixUp[i] = maskPixToMask( *pixUp, *masks[i] ); 234 buttonPixUp[i] = maskPixToMask( *pixUp, *masks[i] );
230 buttonPixDown[i] = maskPixToMask( *pixDn, *masks[i] ); 235 buttonPixDown[i] = maskPixToMask( *pixDn, *masks[i] );
231 } 236 }
232 } 237 }
233 238
234 delete pixUp; 239 delete pixUp;
235 delete pixDn; 240 delete pixDn;
236} 241}
237 242
238 243
239static bool audioSliderBeingMoved = FALSE; 244static bool audioSliderBeingMoved = FALSE;
240 245
241void AudioWidget::sliderPressed() { 246void AudioWidget::sliderPressed() {
242 audioSliderBeingMoved = TRUE; 247 audioSliderBeingMoved = TRUE;
243} 248}
244 249
245 250
246void AudioWidget::sliderReleased() { 251void AudioWidget::sliderReleased() {
247 audioSliderBeingMoved = FALSE; 252 audioSliderBeingMoved = FALSE;
248 if ( slider.width() == 0 ) 253 if ( slider.width() == 0 )
249 return; 254 return;
250 long val = long((double)slider.value() * mediaPlayerState->length() / slider.width()); 255 long val = long((double)slider.value() * mediaPlayerState->length() / slider.width());
251 mediaPlayerState->setPosition( val ); 256 mediaPlayerState->setPosition( val );
252} 257}
253 258
254 259
255void AudioWidget::setPosition( long i ) { 260void AudioWidget::setPosition( long i ) {
256// qDebug("set position %d",i); 261// odebug << "set position " << i << "" << oendl;
257 long length = mediaPlayerState->length(); 262 long length = mediaPlayerState->length();
258 updateSlider( i, length ); 263 updateSlider( i, length );
259} 264}
260 265
261 266
262void AudioWidget::setLength( long max ) { 267void AudioWidget::setLength( long max ) {
263 updateSlider( mediaPlayerState->position(), max ); 268 updateSlider( mediaPlayerState->position(), max );
264} 269}
265 270
266 271
267void AudioWidget::setView( char view ) { 272void AudioWidget::setView( char view ) {
268 273
269 if (mediaPlayerState->isStreaming) { 274 if (mediaPlayerState->isStreaming) {
270 if( !slider.isHidden()) slider.hide(); 275 if( !slider.isHidden()) slider.hide();
271 disconnect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 276 disconnect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
272 disconnect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 277 disconnect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
273 } else { 278 } else {
274// this stops the slider from being moved, thus 279// this stops the slider from being moved, thus
275 // does not stop stream when it reaches the end 280 // does not stop stream when it reaches the end
276 slider.show(); 281 slider.show();
277 connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 282 connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
278 connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 283 connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
279 } 284 }
280 285
281 if ( view == 'a' ) { 286 if ( view == 'a' ) {
282 startTimer( 150 ); 287 startTimer( 150 );
283// show(); 288// show();
284 QPEApplication::showWidget( this ); 289 QPEApplication::showWidget( this );
285 } else { 290 } else {
286 killTimers(); 291 killTimers();
287 hide(); 292 hide();
288 } 293 }
289 294
290} 295}
291 296
292 297
293static QString timeAsString( long length ) { 298static QString timeAsString( long length ) {
294 length /= 44100; 299 length /= 44100;
295 int minutes = length / 60; 300 int minutes = length / 60;
296 int seconds = length % 60; 301 int seconds = length % 60;
297 return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 ); 302 return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 );
298} 303}
299 304
300void AudioWidget::updateSlider( long i, long max ) { 305void AudioWidget::updateSlider( long i, long max ) {
301this->setFocus(); 306this->setFocus();
302 time.setText( timeAsString( i ) + " / " + timeAsString( max ) ); 307 time.setText( timeAsString( i ) + " / " + timeAsString( max ) );
303 308
304 if ( max == 0 ) 309 if ( max == 0 )
@@ -322,200 +327,200 @@ void AudioWidget::setToggleButton( int i, bool down ) {
322} 327}
323 328
324 329
325void AudioWidget::toggleButton( int i ) { 330void AudioWidget::toggleButton( int i ) {
326 audioButtons[i].isDown = !audioButtons[i].isDown; 331 audioButtons[i].isDown = !audioButtons[i].isDown;
327 QPainter p(this); 332 QPainter p(this);
328 paintButton ( &p, i ); 333 paintButton ( &p, i );
329} 334}
330 335
331 336
332void AudioWidget::paintButton( QPainter *p, int i ) { 337void AudioWidget::paintButton( QPainter *p, int i ) {
333 if ( audioButtons[i].isDown ) 338 if ( audioButtons[i].isDown )
334 p->drawPixmap( xoff, yoff, *buttonPixDown[i] ); 339 p->drawPixmap( xoff, yoff, *buttonPixDown[i] );
335 else 340 else
336 p->drawPixmap( xoff, yoff, *buttonPixUp[i] ); 341 p->drawPixmap( xoff, yoff, *buttonPixUp[i] );
337} 342}
338 343
339 344
340void AudioWidget::timerEvent( QTimerEvent * ) { 345void AudioWidget::timerEvent( QTimerEvent * ) {
341/* 346/*
342 int x = audioButtons[AudioPlay].xPos; 347 int x = audioButtons[AudioPlay].xPos;
343 int y = audioButtons[AudioPlay].yPos; 348 int y = audioButtons[AudioPlay].yPos;
344 QPainter p( this ); 349 QPainter p( this );
345 // Optimize to only draw the little bit of the changing images which is different 350 // Optimize to only draw the little bit of the changing images which is different
346 p.drawPixmap( x + 14, y + 8, *pixmaps[3], 32 * frame, 0, 32, 32 ); 351 p.drawPixmap( x + 14, y + 8, *pixmaps[3], 32 * frame, 0, 32, 32 );
347 p.drawPixmap( x + 37, y + 37, *pixmaps[2], 18 * AudioPlay, 0, 6, 3 ); 352 p.drawPixmap( x + 37, y + 37, *pixmaps[2], 18 * AudioPlay, 0, 6, 3 );
348*/ 353*/
349/* 354/*
350 static int frame = 0; 355 static int frame = 0;
351 if ( !mediaPlayerState->paused() && audioButtons[ AudioPlay ].isDown ) { 356 if ( !mediaPlayerState->paused() && audioButtons[ AudioPlay ].isDown ) {
352 frame = frame >= 7 ? 0 : frame + 1; 357 frame = frame >= 7 ? 0 : frame + 1;
353 } 358 }
354 */ 359 */
355} 360}
356 361
357 362
358void AudioWidget::mouseMoveEvent( QMouseEvent *event ) { 363void AudioWidget::mouseMoveEvent( QMouseEvent *event ) {
359 for ( int i = 0; i < numButtons; i++ ) { 364 for ( int i = 0; i < numButtons; i++ ) {
360 if ( event->state() == QMouseEvent::LeftButton ) { 365 if ( event->state() == QMouseEvent::LeftButton ) {
361 366
362 // The test to see if the mouse click is inside the button or not 367 // The test to see if the mouse click is inside the button or not
363 int x = event->pos().x() - xoff; 368 int x = event->pos().x() - xoff;
364 int y = event->pos().y() - yoff; 369 int y = event->pos().y() - yoff;
365 370
366 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask->width() 371 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask->width()
367 && y < imgButtonMask->height() && imgButtonMask->pixelIndex( x, y ) == i + 1 ); 372 && y < imgButtonMask->height() && imgButtonMask->pixelIndex( x, y ) == i + 1 );
368 373
369// if ( isOnButton && i == AudioVolumeUp ) 374// if ( isOnButton && i == AudioVolumeUp )
370// qDebug("on up"); 375// odebug << "on up" << oendl;
371 376
372 if ( isOnButton && !audioButtons[i].isHeld ) { 377 if ( isOnButton && !audioButtons[i].isHeld ) {
373 audioButtons[i].isHeld = TRUE; 378 audioButtons[i].isHeld = TRUE;
374 toggleButton(i); 379 toggleButton(i);
375 switch (i) { 380 switch (i) {
376 case AudioVolumeUp: 381 case AudioVolumeUp:
377 // qDebug("more clicked"); 382 // odebug << "more clicked" << oendl;
378 emit moreClicked(); 383 emit moreClicked();
379 return; 384 return;
380 case AudioVolumeDown: 385 case AudioVolumeDown:
381 // qDebug("less clicked"); 386 // odebug << "less clicked" << oendl;
382 emit lessClicked(); 387 emit lessClicked();
383 return; 388 return;
384 case AudioForward: 389 case AudioForward:
385 emit forwardClicked(); 390 emit forwardClicked();
386 return; 391 return;
387 case AudioBack: 392 case AudioBack:
388 emit backClicked(); 393 emit backClicked();
389 return; 394 return;
390 } 395 }
391 } else if ( !isOnButton && audioButtons[i].isHeld ) { 396 } else if ( !isOnButton && audioButtons[i].isHeld ) {
392 audioButtons[i].isHeld = FALSE; 397 audioButtons[i].isHeld = FALSE;
393 toggleButton(i); 398 toggleButton(i);
394 } 399 }
395 } else { 400 } else {
396 if ( audioButtons[i].isHeld ) { 401 if ( audioButtons[i].isHeld ) {
397 audioButtons[i].isHeld = FALSE; 402 audioButtons[i].isHeld = FALSE;
398 if ( !audioButtons[i].isToggle ) 403 if ( !audioButtons[i].isToggle )
399 setToggleButton( i, FALSE ); 404 setToggleButton( i, FALSE );
400 switch (i) { 405 switch (i) {
401 case AudioPlay: 406 case AudioPlay:
402 if( mediaPlayerState->isPaused ) { 407 if( mediaPlayerState->isPaused ) {
403 mediaPlayerState->setPaused( FALSE ); 408 mediaPlayerState->setPaused( FALSE );
404 return; 409 return;
405 } else if( !mediaPlayerState->isPaused ) { 410 } else if( !mediaPlayerState->isPaused ) {
406 mediaPlayerState->setPaused( TRUE ); 411 mediaPlayerState->setPaused( TRUE );
407 return; 412 return;
408 } 413 }
409// case AudioPlay: mediaPlayerState->setPlaying(audioButtons[i].isDown); return; 414// case AudioPlay: mediaPlayerState->setPlaying(audioButtons[i].isDown); return;
410 case AudioStop: mediaPlayerState->setPlaying(FALSE); return; 415 case AudioStop: mediaPlayerState->setPlaying(FALSE); return;
411// case AudioPause: mediaPlayerState->setPaused(audioButtons[i].isDown); return; 416// case AudioPause: mediaPlayerState->setPaused(audioButtons[i].isDown); return;
412 case AudioNext: mediaPlayerState->setNext(); return; 417 case AudioNext: mediaPlayerState->setNext(); return;
413 case AudioPrevious: mediaPlayerState->setPrev(); return; 418 case AudioPrevious: mediaPlayerState->setPrev(); return;
414 case AudioLoop: mediaPlayerState->setLooping(audioButtons[i].isDown); return; 419 case AudioLoop: mediaPlayerState->setLooping(audioButtons[i].isDown); return;
415 case AudioVolumeUp: emit moreReleased(); return; 420 case AudioVolumeUp: emit moreReleased(); return;
416 case AudioVolumeDown: emit lessReleased(); return; 421 case AudioVolumeDown: emit lessReleased(); return;
417 case AudioPlayList: mediaPlayerState->setList(); return; 422 case AudioPlayList: mediaPlayerState->setList(); return;
418 } 423 }
419 } 424 }
420 } 425 }
421 } 426 }
422} 427}
423 428
424 429
425 430
426void AudioWidget::mousePressEvent( QMouseEvent *event ) { 431void AudioWidget::mousePressEvent( QMouseEvent *event ) {
427 mouseMoveEvent( event ); 432 mouseMoveEvent( event );
428} 433}
429 434
430 435
431void AudioWidget::mouseReleaseEvent( QMouseEvent *event ) { 436void AudioWidget::mouseReleaseEvent( QMouseEvent *event ) {
432 mouseMoveEvent( event ); 437 mouseMoveEvent( event );
433} 438}
434 439
435 440
436void AudioWidget::showEvent( QShowEvent* ) { 441void AudioWidget::showEvent( QShowEvent* ) {
437 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 ); 442 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 );
438 mouseMoveEvent( &event ); 443 mouseMoveEvent( &event );
439} 444}
440 445
441 446
442void AudioWidget::closeEvent( QCloseEvent* ) { 447void AudioWidget::closeEvent( QCloseEvent* ) {
443 mediaPlayerState->setList(); 448 mediaPlayerState->setList();
444} 449}
445 450
446 451
447void AudioWidget::paintEvent( QPaintEvent * pe) { 452void AudioWidget::paintEvent( QPaintEvent * pe) {
448 if ( !pe->erased() ) { 453 if ( !pe->erased() ) {
449 // Combine with background and double buffer 454 // Combine with background and double buffer
450 QPixmap pix( pe->rect().size() ); 455 QPixmap pix( pe->rect().size() );
451 QPainter p( &pix ); 456 QPainter p( &pix );
452 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() ); 457 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() );
453 p.drawTiledPixmap( pe->rect(), *pixBg, pe->rect().topLeft() ); 458 p.drawTiledPixmap( pe->rect(), *pixBg, pe->rect().topLeft() );
454 for ( int i = 0; i < numButtons; i++ ) 459 for ( int i = 0; i < numButtons; i++ )
455 paintButton( &p, i ); 460 paintButton( &p, i );
456 QPainter p2( this ); 461 QPainter p2( this );
457 p2.drawPixmap( pe->rect().topLeft(), pix ); 462 p2.drawPixmap( pe->rect().topLeft(), pix );
458 } else { 463 } else {
459 QPainter p( this ); 464 QPainter p( this );
460 for ( int i = 0; i < numButtons; i++ ) 465 for ( int i = 0; i < numButtons; i++ )
461 paintButton( &p, i ); 466 paintButton( &p, i );
462 } 467 }
463} 468}
464 469
465void AudioWidget::keyReleaseEvent( QKeyEvent *e) 470void AudioWidget::keyReleaseEvent( QKeyEvent *e)
466{ 471{
467 switch ( e->key() ) { 472 switch ( e->key() ) {
468////////////////////////////// Zaurus keys 473////////////////////////////// Zaurus keys
469 case Key_Home: 474 case Key_Home:
470 break; 475 break;
471 case Key_F9: //activity 476 case Key_F9: //activity
472 hide(); 477 hide();
473// qDebug("Audio F9"); 478// odebug << "Audio F9" << oendl;
474 break; 479 break;
475 case Key_F10: //contacts 480 case Key_F10: //contacts
476 break; 481 break;
477 case Key_F11: //menu 482 case Key_F11: //menu
478 break; 483 break;
479 case Key_F12: //home 484 case Key_F12: //home
480 break; 485 break;
481 case Key_F13: //mail 486 case Key_F13: //mail
482 break; 487 break;
483 case Key_Space: { 488 case Key_Space: {
484 489
485 if(mediaPlayerState->playing()) { 490 if(mediaPlayerState->playing()) {
486// toggleButton(1); 491// toggleButton(1);
487 mediaPlayerState->setPlaying(FALSE); 492 mediaPlayerState->setPlaying(FALSE);
488// toggleButton(1); 493// toggleButton(1);
489 } else { 494 } else {
490// toggleButton(0); 495// toggleButton(0);
491 mediaPlayerState->setPlaying(TRUE); 496 mediaPlayerState->setPlaying(TRUE);
492// toggleButton(0); 497// toggleButton(0);
493 } 498 }
494 } 499 }
495 break; 500 break;
496 case Key_Down: //volume 501 case Key_Down: //volume
497// toggleButton(6); 502// toggleButton(6);
498 emit lessClicked(); 503 emit lessClicked();
499 emit lessReleased(); 504 emit lessReleased();
500// toggleButton(6); 505// toggleButton(6);
501 break; 506 break;
502 case Key_Up: //volume 507 case Key_Up: //volume
503// toggleButton(5); 508// toggleButton(5);
504 emit moreClicked(); 509 emit moreClicked();
505 emit moreReleased(); 510 emit moreReleased();
506// toggleButton(5); 511// toggleButton(5);
507 break; 512 break;
508 case Key_Right: //next in playlist 513 case Key_Right: //next in playlist
509// toggleButton(3); 514// toggleButton(3);
510 mediaPlayerState->setNext(); 515 mediaPlayerState->setNext();
511// toggleButton(3); 516// toggleButton(3);
512 break; 517 break;
513 case Key_Left: // previous in playlist 518 case Key_Left: // previous in playlist
514// toggleButton(4); 519// toggleButton(4);
515 mediaPlayerState->setPrev(); 520 mediaPlayerState->setPrev();
516// toggleButton(4); 521// toggleButton(4);
517 break; 522 break;
518 case Key_Escape: 523 case Key_Escape:
519 break; 524 break;
520 525
521 }; 526 };