summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/audiowidget.cpp16
-rw-r--r--noncore/multimedia/opieplayer2/mediaplayer.cpp52
-rw-r--r--noncore/multimedia/opieplayer2/mediaplayer.h4
-rw-r--r--noncore/multimedia/opieplayer2/opieplayer2.pro4
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.cpp2
-rw-r--r--noncore/multimedia/opieplayer2/videowidget.cpp29
-rw-r--r--noncore/multimedia/opieplayer2/videowidget.h1
-rw-r--r--noncore/multimedia/opieplayer2/volumecontrol.cpp59
-rw-r--r--noncore/multimedia/opieplayer2/volumecontrol.h47
9 files changed, 156 insertions, 58 deletions
diff --git a/noncore/multimedia/opieplayer2/audiowidget.cpp b/noncore/multimedia/opieplayer2/audiowidget.cpp
index 0e9e7ea..955169c 100644
--- a/noncore/multimedia/opieplayer2/audiowidget.cpp
+++ b/noncore/multimedia/opieplayer2/audiowidget.cpp
@@ -1,199 +1,199 @@
1 1
2#include <qpe/qpeapplication.h> 2#include <qpe/qpeapplication.h>
3#include <qpe/resource.h> 3#include <qpe/resource.h>
4#include <qpe/config.h> 4#include <qpe/config.h>
5 5
6#include <qwidget.h> 6#include <qwidget.h>
7#include <qpixmap.h> 7#include <qpixmap.h>
8#include <qbutton.h> 8#include <qbutton.h>
9#include <qpainter.h> 9#include <qpainter.h>
10#include <qframe.h> 10#include <qframe.h>
11#include <qlayout.h> 11#include <qlayout.h>
12 12
13#include <stdlib.h> 13#include <stdlib.h>
14#include <stdio.h> 14#include <stdio.h>
15 15
16#include "audiowidget.h" 16#include "audiowidget.h"
17#include "mediaplayerstate.h" 17#include "mediaplayerstate.h"
18 18
19extern MediaPlayerState *mediaPlayerState; 19extern MediaPlayerState *mediaPlayerState;
20 20
21static const int xo = -2; // movable x offset 21static const int xo = -2; // movable x offset
22static const int yo = 22; // movable y offset 22static const int yo = 22; // movable y offset
23 23
24 24
25Ticker::Ticker( QWidget* parent=0 ) : QFrame( parent ) { 25Ticker::Ticker( QWidget* parent=0 ) : QFrame( parent ) {
26 setFrameStyle( WinPanel | Sunken ); 26 setFrameStyle( WinPanel | Sunken );
27 setText( "No Song" ); 27 setText( "No Song" );
28} 28}
29 29
30Ticker::~Ticker() { 30Ticker::~Ticker() {
31} 31}
32 32
33void Ticker::setText( const QString& text ) { 33void Ticker::setText( const QString& text ) {
34 pos = 0; // reset it everytime the text is changed 34 pos = 0; // reset it everytime the text is changed
35 scrollText = text; 35 scrollText = text;
36 pixelLen = fontMetrics().width( scrollText ); 36 pixelLen = fontMetrics().width( scrollText );
37 killTimers(); 37 killTimers();
38 if ( pixelLen > width() ) { 38 if ( pixelLen > width() ) {
39 startTimer( 50 ); 39 startTimer( 50 );
40 } 40 }
41 update(); 41 update();
42} 42}
43 43
44 44
45void Ticker::timerEvent( QTimerEvent * ) { 45void Ticker::timerEvent( QTimerEvent * ) {
46 pos = ( pos + 1 > pixelLen ) ? 0 : pos + 1; 46 pos = ( pos + 1 > pixelLen ) ? 0 : pos + 1;
47 scroll( -1, 0, contentsRect() ); 47 scroll( -1, 0, contentsRect() );
48 repaint( FALSE ); 48 repaint( FALSE );
49} 49}
50 50
51void Ticker::drawContents( QPainter *p ) { 51void Ticker::drawContents( QPainter *p ) {
52 for ( int i = 0; i - pos < width() && (i < 1 || pixelLen > width()); i += pixelLen ) 52 for ( int i = 0; i - pos < width() && (i < 1 || pixelLen > width()); i += pixelLen )
53 p->drawText( i - pos, 0, INT_MAX, height(), AlignVCenter, scrollText ); 53 p->drawText( i - pos, 0, INT_MAX, height(), AlignVCenter, scrollText );
54 QPixmap pm( width(), height() ); 54 QPixmap pm( width(), height() );
55 pm.fill( colorGroup().base() ); 55 pm.fill( colorGroup().base() );
56 QPainter pmp( &pm ); 56 QPainter pmp( &pm );
57 for ( int i = 0; i - pos < width() && (i < 1 || pixelLen > width()); i += pixelLen ) { 57 for ( int i = 0; i - pos < width() && (i < 1 || pixelLen > width()); i += pixelLen ) {
58 pmp.drawText( i - pos, 0, INT_MAX, height(), AlignVCenter, scrollText ); 58 pmp.drawText( i - pos, 0, INT_MAX, height(), AlignVCenter, scrollText );
59 } 59 }
60 p->drawPixmap( 0, 0, pm ); 60 p->drawPixmap( 0, 0, pm );
61} 61}
62 62
63struct MediaButton { 63struct MediaButton {
64 bool isToggle, isHeld, isDown; 64 bool isToggle, isHeld, isDown;
65}; 65};
66 66
67//Layout information for the audioButtons (and if it is a toggle button or not) 67//Layout information for the audioButtons (and if it is a toggle button or not)
68MediaButton audioButtons[] = { 68MediaButton audioButtons[] = {
69 { TRUE, FALSE, FALSE }, // play 69 { TRUE, FALSE, FALSE }, // play
70 { FALSE, FALSE, FALSE }, // stop 70 { FALSE, FALSE, FALSE }, // stop
71 { TRUE, FALSE, FALSE }, // pause 71 { FALSE, FALSE, FALSE }, // pause
72 { FALSE, FALSE, FALSE }, // next 72 { FALSE, FALSE, FALSE }, // next
73 { FALSE, FALSE, FALSE }, // previous 73 { FALSE, FALSE, FALSE }, // previous
74 { FALSE, FALSE, FALSE }, // volume up 74 { FALSE, FALSE, FALSE }, // volume up
75 { FALSE, FALSE, FALSE }, // volume down 75 { FALSE, FALSE, FALSE }, // volume down
76 { TRUE, FALSE, FALSE }, // repeat/loop 76 { TRUE, FALSE, FALSE }, // repeat/loop
77 { FALSE, FALSE, FALSE }, // playlist 77 { FALSE, FALSE, FALSE }, // playlist
78 { FALSE, FALSE, FALSE }, // forward 78 { FALSE, FALSE, FALSE }, // forward
79 { FALSE, FALSE, FALSE } // back 79 { FALSE, FALSE, FALSE } // back
80}; 80};
81 81
82const char *skin_mask_file_names[11] = { 82const char *skin_mask_file_names[11] = {
83 "play", "stop", "pause", "next", "prev", "up", 83 "play", "stop", "pause", "next", "prev", "up",
84 "down", "loop", "playlist", "forward", "back" 84 "down", "loop", "playlist", "forward", "back"
85}; 85};
86 86
87 87
88static void changeTextColor( QWidget *w ) { 88static void changeTextColor( QWidget *w ) {
89 QPalette p = w->palette(); 89 QPalette p = w->palette();
90 p.setBrush( QColorGroup::Background, QColor( 167, 212, 167 ) ); 90 p.setBrush( QColorGroup::Background, QColor( 167, 212, 167 ) );
91 p.setBrush( QColorGroup::Base, QColor( 167, 212, 167 ) ); 91 p.setBrush( QColorGroup::Base, QColor( 167, 212, 167 ) );
92 w->setPalette( p ); 92 w->setPalette( p );
93} 93}
94 94
95static const int numButtons = (sizeof(audioButtons)/sizeof(MediaButton)); 95static const int numButtons = (sizeof(audioButtons)/sizeof(MediaButton));
96 96
97 97
98AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) : 98AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) :
99 QWidget( parent, name, f ), songInfo( this ), slider( Qt::Horizontal, this ), time( this ) { 99 QWidget( parent, name, f ), songInfo( this ), slider( Qt::Horizontal, this ), time( this ) {
100 setCaption( tr("OpiePlayer") ); 100 setCaption( tr("OpiePlayer") );
101 101
102 Config cfg("OpiePlayer"); 102 Config cfg("OpiePlayer");
103 cfg.setGroup("AudioWidget"); 103 cfg.setGroup("AudioWidget");
104 skin = cfg.readEntry("Skin","default"); 104 skin = cfg.readEntry("Skin","default");
105 //skin = "scaleTest"; 105 //skin = "scaleTest";
106// color of background, frame, degree of transparency 106// color of background, frame, degree of transparency
107 107
108 QString skinPath = "opieplayer/skins/" + skin; 108 QString skinPath = "opieplayer/skins/" + skin;
109 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) ); 109 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) );
110 imgUp = new QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) ); 110 imgUp = new QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) );
111 imgDn = new QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) ); 111 imgDn = new QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) );
112 112
113 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 ); 113 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 );
114 imgButtonMask->fill( 0 ); 114 imgButtonMask->fill( 0 );
115 115
116 for ( int i = 0; i < 11; i++ ) { 116 for ( int i = 0; i < 11; i++ ) {
117 QString filename = QString(getenv("OPIEDIR")) + "/pics/" + skinPath + "/skin_mask_" + skin_mask_file_names[i] + ".png"; 117 QString filename = QString(getenv("OPIEDIR")) + "/pics/" + skinPath + "/skin_mask_" + skin_mask_file_names[i] + ".png";
118 masks[i] = new QBitmap( filename ); 118 masks[i] = new QBitmap( filename );
119 119
120 if ( !masks[i]->isNull() ) { 120 if ( !masks[i]->isNull() ) {
121 QImage imgMask = masks[i]->convertToImage(); 121 QImage imgMask = masks[i]->convertToImage();
122 uchar **dest = imgButtonMask->jumpTable(); 122 uchar **dest = imgButtonMask->jumpTable();
123 for ( int y = 0; y < imgUp->height(); y++ ) { 123 for ( int y = 0; y < imgUp->height(); y++ ) {
124 uchar *line = dest[y]; 124 uchar *line = dest[y];
125 for ( int x = 0; x < imgUp->width(); x++ ) 125 for ( int x = 0; x < imgUp->width(); x++ )
126 if ( !qRed( imgMask.pixel( x, y ) ) ) 126 if ( !qRed( imgMask.pixel( x, y ) ) )
127 line[x] = i + 1; 127 line[x] = i + 1;
128 } 128 }
129 } 129 }
130 130
131 } 131 }
132 132
133 for ( int i = 0; i < 11; i++ ) { 133 for ( int i = 0; i < 11; i++ ) {
134 buttonPixUp[i] = NULL; 134 buttonPixUp[i] = NULL;
135 buttonPixDown[i] = NULL; 135 buttonPixDown[i] = NULL;
136 } 136 }
137 137
138 setBackgroundPixmap( *pixBg ); 138 setBackgroundPixmap( *pixBg );
139 139
140 songInfo.setFocusPolicy( QWidget::NoFocus ); 140 songInfo.setFocusPolicy( QWidget::NoFocus );
141 changeTextColor( &songInfo ); 141 changeTextColor( &songInfo );
142 142
143 slider.setFixedHeight( 20 ); 143 slider.setFixedHeight( 20 );
144 slider.setMinValue( 0 ); 144 slider.setMinValue( 0 );
145 slider.setMaxValue( 1 ); 145 slider.setMaxValue( 1 );
146 slider.setFocusPolicy( QWidget::NoFocus ); 146 slider.setFocusPolicy( QWidget::NoFocus );
147 slider.setBackgroundPixmap( *pixBg ); 147 slider.setBackgroundPixmap( *pixBg );
148 148
149 time.setFocusPolicy( QWidget::NoFocus ); 149 time.setFocusPolicy( QWidget::NoFocus );
150 time.setAlignment( Qt::AlignCenter ); 150 time.setAlignment( Qt::AlignCenter );
151 time.setFrame(FALSE); 151 time.setFrame(FALSE);
152 changeTextColor( &time ); 152 changeTextColor( &time );
153 153
154 resizeEvent( NULL ); 154 resizeEvent( NULL );
155 155
156 connect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 156 connect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
157 connect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 157 connect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
158 158
159 connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) ); 159 connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) );
160 connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) ); 160 connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) );
161 connect( mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) ); 161 connect( mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) );
162 connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) ); 162 connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) );
163 connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) ); 163 connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) );
164 164
165 // Intialise state 165 // Intialise state
166 setLength( mediaPlayerState->length() ); 166 setLength( mediaPlayerState->length() );
167 setPosition( mediaPlayerState->position() ); 167 setPosition( mediaPlayerState->position() );
168 setLooping( mediaPlayerState->fullscreen() ); 168 setLooping( mediaPlayerState->fullscreen() );
169 setPaused( mediaPlayerState->paused() ); 169 setPaused( mediaPlayerState->paused() );
170 setPlaying( mediaPlayerState->playing() ); 170 setPlaying( mediaPlayerState->playing() );
171 171
172} 172}
173 173
174AudioWidget::~AudioWidget() { 174AudioWidget::~AudioWidget() {
175 175
176 for ( int i = 0; i < 11; i++ ) { 176 for ( int i = 0; i < 11; i++ ) {
177 delete buttonPixUp[i]; 177 delete buttonPixUp[i];
178 delete buttonPixDown[i]; 178 delete buttonPixDown[i];
179 } 179 }
180 delete pixBg; 180 delete pixBg;
181 delete imgUp; 181 delete imgUp;
182 delete imgDn; 182 delete imgDn;
183 delete imgButtonMask; 183 delete imgButtonMask;
184 for ( int i = 0; i < 11; i++ ) { 184 for ( int i = 0; i < 11; i++ ) {
185 delete masks[i]; 185 delete masks[i];
186 } 186 }
187} 187}
188 188
189QPixmap *combineImageWithBackground( QImage img, QPixmap bg, QPoint offset ) { 189QPixmap *combineImageWithBackground( QImage img, QPixmap bg, QPoint offset ) {
190 QPixmap pix( img.width(), img.height() ); 190 QPixmap pix( img.width(), img.height() );
191 QPainter p( &pix ); 191 QPainter p( &pix );
192 p.drawTiledPixmap( pix.rect(), bg, offset ); 192 p.drawTiledPixmap( pix.rect(), bg, offset );
193 p.drawImage( 0, 0, img ); 193 p.drawImage( 0, 0, img );
194 return new QPixmap( pix ); 194 return new QPixmap( pix );
195} 195}
196 196
197 197
198QPixmap *maskPixToMask( QPixmap pix, QBitmap mask ) 198QPixmap *maskPixToMask( QPixmap pix, QBitmap mask )
199{ 199{
@@ -217,281 +217,281 @@ void AudioWidget::resizeEvent( QResizeEvent * ) {
217 xoff = ( w - imgUp->width() ) / 2; 217 xoff = ( w - imgUp->width() ) / 2;
218 yoff = (( h - imgUp->height() ) / 2) - 10; 218 yoff = (( h - imgUp->height() ) / 2) - 10;
219 QPoint p( xoff, yoff ); 219 QPoint p( xoff, yoff );
220 220
221 QPixmap *pixUp = combineImageWithBackground( *imgUp, *pixBg, p ); 221 QPixmap *pixUp = combineImageWithBackground( *imgUp, *pixBg, p );
222 QPixmap *pixDn = combineImageWithBackground( *imgDn, *pixBg, p ); 222 QPixmap *pixDn = combineImageWithBackground( *imgDn, *pixBg, p );
223 223
224 for ( int i = 0; i < 11; i++ ) { 224 for ( int i = 0; i < 11; i++ ) {
225 if ( !masks[i]->isNull() ) { 225 if ( !masks[i]->isNull() ) {
226 delete buttonPixUp[i]; 226 delete buttonPixUp[i];
227 delete buttonPixDown[i]; 227 delete buttonPixDown[i];
228 buttonPixUp[i] = maskPixToMask( *pixUp, *masks[i] ); 228 buttonPixUp[i] = maskPixToMask( *pixUp, *masks[i] );
229 buttonPixDown[i] = maskPixToMask( *pixDn, *masks[i] ); 229 buttonPixDown[i] = maskPixToMask( *pixDn, *masks[i] );
230 } 230 }
231 } 231 }
232 232
233 delete pixUp; 233 delete pixUp;
234 delete pixDn; 234 delete pixDn;
235} 235}
236 236
237static bool audioSliderBeingMoved = FALSE; 237static bool audioSliderBeingMoved = FALSE;
238 238
239 239
240void AudioWidget::sliderPressed() { 240void AudioWidget::sliderPressed() {
241 audioSliderBeingMoved = TRUE; 241 audioSliderBeingMoved = TRUE;
242} 242}
243 243
244 244
245void AudioWidget::sliderReleased() { 245void AudioWidget::sliderReleased() {
246 audioSliderBeingMoved = FALSE; 246 audioSliderBeingMoved = FALSE;
247 if ( slider.width() == 0 ) 247 if ( slider.width() == 0 )
248 return; 248 return;
249 long val = long((double)slider.value() * mediaPlayerState->length() / slider.width()); 249 long val = long((double)slider.value() * mediaPlayerState->length() / slider.width());
250 mediaPlayerState->setPosition( val ); 250 mediaPlayerState->setPosition( val );
251} 251}
252 252
253void AudioWidget::setPosition( long i ) { 253void AudioWidget::setPosition( long i ) {
254// qDebug("<<<<<<<<<<<<<<<<<<<<<<<<set position %d",i); 254// qDebug("<<<<<<<<<<<<<<<<<<<<<<<<set position %d",i);
255 updateSlider( i, mediaPlayerState->length() ); 255 updateSlider( i, mediaPlayerState->length() );
256} 256}
257 257
258 258
259void AudioWidget::setLength( long max ) { 259void AudioWidget::setLength( long max ) {
260 updateSlider( mediaPlayerState->position(), max ); 260 updateSlider( mediaPlayerState->position(), max );
261} 261}
262 262
263 263
264void AudioWidget::setView( char view ) { 264void AudioWidget::setView( char view ) {
265 slider.show(); 265 slider.show();
266 266
267// this isnt working for some reason 267// this isnt working for some reason
268 268
269// if ( mediaPlayerState->streaming() ) { 269// if ( mediaPlayerState->streaming() ) {
270// qDebug("<<<<<<<<<<<<<<file is STREAMING>>>>>>>>>>>>>>>>>>>"); 270// qDebug("<<<<<<<<<<<<<<file is STREAMING>>>>>>>>>>>>>>>>>>>");
271// if( !slider.isHidden()) slider.hide(); 271// if( !slider.isHidden()) slider.hide();
272// disconnect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 272// disconnect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
273// disconnect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 273// disconnect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
274// } else { 274// } else {
275 // this stops the slider from being moved, thus 275 // this stops the slider from being moved, thus
276 // does not stop stream when it reaches the end 276 // does not stop stream when it reaches the end
277 // slider.show(); 277 // slider.show();
278 connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 278 connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
279 connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 279 connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
280// } 280// }
281 281
282 if ( view == 'a' ) { 282 if ( view == 'a' ) {
283 startTimer( 150 ); 283 startTimer( 150 );
284 showMaximized(); 284 showMaximized();
285 } else { 285 } else {
286 killTimers(); 286 killTimers();
287 hide(); 287 hide();
288 } 288 }
289} 289}
290 290
291 291
292static QString timeAsString( long length ) { 292static QString timeAsString( long length ) {
293 int minutes = length / 60; 293 int minutes = length / 60;
294 int seconds = length % 60; 294 int seconds = length % 60;
295 return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 ); 295 return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 );
296} 296}
297 297
298void AudioWidget::updateSlider( long i, long max ) { 298void AudioWidget::updateSlider( long i, long max ) {
299 299
300 time.setText( timeAsString( i ) + " / " + timeAsString( max ) ); 300 time.setText( timeAsString( i ) + " / " + timeAsString( max ) );
301// qDebug( timeAsString( i ) + " / " + timeAsString( max ) ) ; 301// qDebug( timeAsString( i ) + " / " + timeAsString( max ) ) ;
302 302
303 if ( max == 0 ) { 303 if ( max == 0 ) {
304 return; 304 return;
305 } 305 }
306 // Will flicker too much if we don't do this 306 // Will flicker too much if we don't do this
307 // Scale to something reasonable 307 // Scale to something reasonable
308 int width = slider.width(); 308 int width = slider.width();
309 int val = int((double)i * width / max); 309 int val = int((double)i * width / max);
310 if ( !audioSliderBeingMoved ) { 310 if ( !audioSliderBeingMoved ) {
311 if ( slider.value() != val ) { 311 if ( slider.value() != val ) {
312 slider.setValue( val ); 312 slider.setValue( val );
313 } 313 }
314 314
315 if ( slider.maxValue() != width ) { 315 if ( slider.maxValue() != width ) {
316 slider.setMaxValue( width ); 316 slider.setMaxValue( width );
317 } 317 }
318 } 318 }
319} 319}
320 320
321 321
322void AudioWidget::setToggleButton( int i, bool down ) { 322void AudioWidget::setToggleButton( int i, bool down ) {
323 if ( down != audioButtons[i].isDown ) { 323 if ( down != audioButtons[i].isDown ) {
324 toggleButton( i ); 324 toggleButton( i );
325 } 325 }
326} 326}
327 327
328 328
329void AudioWidget::toggleButton( int i ) { 329void AudioWidget::toggleButton( int i ) {
330 audioButtons[i].isDown = !audioButtons[i].isDown; 330 audioButtons[i].isDown = !audioButtons[i].isDown;
331 QPainter p(this); 331 QPainter p(this);
332 paintButton ( &p, i ); 332 paintButton ( &p, i );
333} 333}
334 334
335 335
336void AudioWidget::paintButton( QPainter *p, int i ) { 336void AudioWidget::paintButton( QPainter *p, int i ) {
337 if ( audioButtons[i].isDown ) 337 if ( audioButtons[i].isDown )
338 p->drawPixmap( xoff, yoff, *buttonPixDown[i] ); 338 p->drawPixmap( xoff, yoff, *buttonPixDown[i] );
339 else 339 else
340 p->drawPixmap( xoff, yoff, *buttonPixUp[i] ); 340 p->drawPixmap( xoff, yoff, *buttonPixUp[i] );
341} 341}
342 342
343 343
344void AudioWidget::timerEvent( QTimerEvent * ) { 344void AudioWidget::timerEvent( QTimerEvent * ) {
345// static int frame = 0;
346// if ( !mediaPlayerState->paused() && audioButtons[ AudioPlay ].isDown ) {
347// frame = frame >= 7 ? 0 : frame + 1;
348// }
349} 345}
350 346
351 347
352void AudioWidget::mouseMoveEvent( QMouseEvent *event ) { 348void AudioWidget::mouseMoveEvent( QMouseEvent *event ) {
353 for ( int i = 0; i < numButtons; i++ ) { 349 for ( int i = 0; i < numButtons; i++ ) {
354 if ( event->state() == QMouseEvent::LeftButton ) { 350 if ( event->state() == QMouseEvent::LeftButton ) {
355 351
356 // The test to see if the mouse click is inside the button or not 352 // The test to see if the mouse click is inside the button or not
357 int x = event->pos().x() - xoff; 353 int x = event->pos().x() - xoff;
358 int y = event->pos().y() - yoff; 354 int y = event->pos().y() - yoff;
359 355
360 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask->width() 356 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask->width()
361 && y < imgButtonMask->height() && imgButtonMask->pixelIndex( x, y ) == i + 1 ); 357 && y < imgButtonMask->height() && imgButtonMask->pixelIndex( x, y ) == i + 1 );
362 358
363 if ( isOnButton && i == AudioVolumeUp ) 359 if ( isOnButton && i == AudioVolumeUp )
364 qDebug("on up"); 360 qDebug("on up");
365 361
366 if ( isOnButton && !audioButtons[i].isHeld ) { 362 if ( isOnButton && !audioButtons[i].isHeld ) {
367 audioButtons[i].isHeld = TRUE; 363 audioButtons[i].isHeld = TRUE;
368 toggleButton(i); 364 toggleButton(i);
369 switch (i) { 365 switch (i) {
370 case AudioVolumeUp: 366 case AudioVolumeUp:
371 qDebug("more clicked"); 367 qDebug("more clicked");
372 emit moreClicked(); 368 emit moreClicked();
373 return; 369 return;
374 case AudioVolumeDown: emit lessClicked(); return; 370 case AudioVolumeDown:
371 emit lessClicked();
372 return;
375 } 373 }
376 } else if ( !isOnButton && audioButtons[i].isHeld ) { 374 } else if ( !isOnButton && audioButtons[i].isHeld ) {
377 audioButtons[i].isHeld = FALSE; 375 audioButtons[i].isHeld = FALSE;
378 toggleButton(i); 376 toggleButton(i);
379 } 377 }
380 } else { 378 } else {
381 if ( audioButtons[i].isHeld ) { 379 if ( audioButtons[i].isHeld ) {
382 audioButtons[i].isHeld = FALSE; 380 audioButtons[i].isHeld = FALSE;
383 if ( !audioButtons[i].isToggle ) 381 if ( !audioButtons[i].isToggle ) {
384 setToggleButton( i, FALSE ); 382 setToggleButton( i, FALSE );
383 qDebug("button toggled3 %d",i);
384 }
385 switch (i) { 385 switch (i) {
386 case AudioPlay: mediaPlayerState->setPlaying(audioButtons[i].isDown); return; 386 case AudioPlay: mediaPlayerState->setPlaying(audioButtons[i].isDown); return;
387 case AudioStop: mediaPlayerState->setPlaying(FALSE); return; 387 case AudioStop: mediaPlayerState->setPlaying(FALSE); return;
388 case AudioPause: mediaPlayerState->setPaused(audioButtons[i].isDown); return; 388 case AudioPause: mediaPlayerState->setPaused( audioButtons[i].isDown); return;
389 case AudioNext: mediaPlayerState->setNext(); return; 389 case AudioNext: mediaPlayerState->setNext(); return;
390 case AudioPrevious: mediaPlayerState->setPrev(); return; 390 case AudioPrevious: mediaPlayerState->setPrev(); return;
391 case AudioLoop: mediaPlayerState->setLooping(audioButtons[i].isDown); return; 391 case AudioLoop: mediaPlayerState->setLooping(audioButtons[i].isDown); return;
392 case AudioVolumeUp: emit moreReleased(); return; 392 case AudioVolumeUp: emit moreReleased(); return;
393 case AudioVolumeDown: emit lessReleased(); return; 393 case AudioVolumeDown: emit lessReleased(); return;
394 case AudioPlayList: mediaPlayerState->setList(); return; 394 case AudioPlayList: mediaPlayerState->setList(); return;
395 } 395 }
396 } 396 }
397 } 397 }
398 } 398 }
399} 399}
400 400
401 401
402void AudioWidget::mousePressEvent( QMouseEvent *event ) { 402void AudioWidget::mousePressEvent( QMouseEvent *event ) {
403 mouseMoveEvent( event ); 403 mouseMoveEvent( event );
404} 404}
405 405
406 406
407void AudioWidget::mouseReleaseEvent( QMouseEvent *event ) { 407void AudioWidget::mouseReleaseEvent( QMouseEvent *event ) {
408 mouseMoveEvent( event ); 408 mouseMoveEvent( event );
409} 409}
410 410
411 411
412void AudioWidget::showEvent( QShowEvent* ) { 412void AudioWidget::showEvent( QShowEvent* ) {
413 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 ); 413 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 );
414 mouseMoveEvent( &event ); 414 mouseMoveEvent( &event );
415} 415}
416 416
417 417
418void AudioWidget::closeEvent( QCloseEvent* ) { 418void AudioWidget::closeEvent( QCloseEvent* ) {
419 mediaPlayerState->setList(); 419 mediaPlayerState->setList();
420} 420}
421 421
422 422
423void AudioWidget::paintEvent( QPaintEvent * pe) { 423void AudioWidget::paintEvent( QPaintEvent * pe) {
424 if ( !pe->erased() ) { 424 if ( !pe->erased() ) {
425 // Combine with background and double buffer 425 // Combine with background and double buffer
426 QPixmap pix( pe->rect().size() ); 426 QPixmap pix( pe->rect().size() );
427 QPainter p( &pix ); 427 QPainter p( &pix );
428 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() ); 428 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() );
429 p.drawTiledPixmap( pe->rect(), *pixBg, pe->rect().topLeft() ); 429 p.drawTiledPixmap( pe->rect(), *pixBg, pe->rect().topLeft() );
430 for ( int i = 0; i < numButtons; i++ ) 430 for ( int i = 0; i < numButtons; i++ )
431 paintButton( &p, i ); 431 paintButton( &p, i );
432 QPainter p2( this ); 432 QPainter p2( this );
433 p2.drawPixmap( pe->rect().topLeft(), pix ); 433 p2.drawPixmap( pe->rect().topLeft(), pix );
434 } else { 434 } else {
435 QPainter p( this ); 435 QPainter p( this );
436 for ( int i = 0; i < numButtons; i++ ) 436 for ( int i = 0; i < numButtons; i++ )
437 paintButton( &p, i ); 437 paintButton( &p, i );
438 } 438 }
439} 439}
440 440
441void AudioWidget::keyReleaseEvent( QKeyEvent *e) 441void AudioWidget::keyReleaseEvent( QKeyEvent *e)
442{ 442{
443 switch ( e->key() ) { 443 switch ( e->key() ) {
444////////////////////////////// Zaurus keys 444////////////////////////////// Zaurus keys
445 case Key_Home: 445 case Key_Home:
446 break; 446 break;
447 case Key_F9: //activity 447 case Key_F9: //activity
448 hide(); 448 hide();
449// qDebug("Audio F9"); 449// qDebug("Audio F9");
450 break; 450 break;
451 case Key_F10: //contacts 451 case Key_F10: //contacts
452 break; 452 break;
453 case Key_F11: //menu 453 case Key_F11: //menu
454 break; 454 break;
455 case Key_F12: //home 455 case Key_F12: //home
456 break; 456 break;
457 case Key_F13: //mail 457 case Key_F13: //mail
458 break; 458 break;
459 case Key_Space: { 459 case Key_Space: {
460 if(mediaPlayerState->playing()) { 460 if(mediaPlayerState->playing()) {
461// toggleButton(1); 461// toggleButton(1);
462 mediaPlayerState->setPlaying(FALSE); 462 mediaPlayerState->setPlaying(FALSE);
463// toggleButton(1); 463// toggleButton(1);
464 } else { 464 } else {
465// toggleButton(0); 465// toggleButton(0);
466 mediaPlayerState->setPlaying(TRUE); 466 mediaPlayerState->setPlaying(TRUE);
467// toggleButton(0); 467// toggleButton(0);
468 } 468 }
469 } 469 }
470 break; 470 break;
471 case Key_Down: 471 case Key_Down:
472 toggleButton(6); 472 toggleButton(6);
473 emit lessClicked(); 473 emit lessClicked();
474 emit lessReleased(); 474 emit lessReleased();
475 toggleButton(6); 475 toggleButton(6);
476 break; 476 break;
477 case Key_Up: 477 case Key_Up:
478 toggleButton(5); 478 toggleButton(5);
479 emit moreClicked(); 479 emit moreClicked();
480 emit moreReleased(); 480 emit moreReleased();
481 toggleButton(5); 481 toggleButton(5);
482 break; 482 break;
483 case Key_Right: 483 case Key_Right:
484// toggleButton(3); 484// toggleButton(3);
485 mediaPlayerState->setNext(); 485 mediaPlayerState->setNext();
486// toggleButton(3); 486// toggleButton(3);
487 break; 487 break;
488 case Key_Left: 488 case Key_Left:
489// toggleButton(4); 489// toggleButton(4);
490 mediaPlayerState->setPrev(); 490 mediaPlayerState->setPrev();
491// toggleButton(4); 491// toggleButton(4);
492 break; 492 break;
493 case Key_Escape: 493 case Key_Escape:
494 break; 494 break;
495 495
496 }; 496 };
497} 497}
diff --git a/noncore/multimedia/opieplayer2/mediaplayer.cpp b/noncore/multimedia/opieplayer2/mediaplayer.cpp
index 5411a64..8d8e4e5 100644
--- a/noncore/multimedia/opieplayer2/mediaplayer.cpp
+++ b/noncore/multimedia/opieplayer2/mediaplayer.cpp
@@ -1,232 +1,238 @@
1#include <qpe/qpeapplication.h> 1#include <qpe/qpeapplication.h>
2#include <qpe/qlibrary.h> 2#include <qpe/qlibrary.h>
3#include <qpe/resource.h> 3#include <qpe/resource.h>
4#include <qpe/config.h> 4#include <qpe/config.h>
5 5
6#include <qmainwindow.h> 6#include <qmainwindow.h>
7#include <qmessagebox.h> 7#include <qmessagebox.h>
8#include <qwidgetstack.h> 8#include <qwidgetstack.h>
9#include <qfile.h> 9#include <qfile.h>
10 10
11#include "mediaplayer.h" 11#include "mediaplayer.h"
12#include "playlistwidget.h" 12#include "playlistwidget.h"
13#include "audiowidget.h" 13#include "audiowidget.h"
14#include "volumecontrol.h"
14 15
15#include "mediaplayerstate.h" 16#include "mediaplayerstate.h"
16 17
17 18
18 19
19extern AudioWidget *audioUI; 20extern AudioWidget *audioUI;
20extern PlayListWidget *playList; 21extern PlayListWidget *playList;
21extern MediaPlayerState *mediaPlayerState; 22extern MediaPlayerState *mediaPlayerState;
22 23
23 24
24MediaPlayer::MediaPlayer( QObject *parent, const char *name ) 25MediaPlayer::MediaPlayer( QObject *parent, const char *name )
25 : QObject( parent, name ), volumeDirection( 0 ), currentFile( NULL ) { 26 : QObject( parent, name ), volumeDirection( 0 ), currentFile( NULL ) {
26 27
27 28
28 xineControl = new XineControl(); 29 xineControl = new XineControl();
29// QPEApplication::grabKeyboard(); // EVIL 30// QPEApplication::grabKeyboard(); // EVIL
30 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); 31 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) );
31 32
32 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), this, SLOT( setPlaying( bool ) ) ); 33 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), this, SLOT( setPlaying( bool ) ) );
33 connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( pauseCheck( bool ) ) ); 34 connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( pauseCheck( bool ) ) );
34 connect( mediaPlayerState, SIGNAL( next() ), this, SLOT( next() ) ); 35 connect( mediaPlayerState, SIGNAL( next() ), this, SLOT( next() ) );
35 connect( mediaPlayerState, SIGNAL( prev() ), this, SLOT( prev() ) ); 36 connect( mediaPlayerState, SIGNAL( prev() ), this, SLOT( prev() ) );
36 37
37 connect( audioUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) ); 38 connect( audioUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) );
38 connect( audioUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) ); 39 connect( audioUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) );
39 connect( audioUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) ); 40 connect( audioUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) );
40 connect( audioUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) ); 41 connect( audioUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) );
41 42
43 volControl = new VolumeControl;
44
42} 45}
43 46
44MediaPlayer::~MediaPlayer() { 47MediaPlayer::~MediaPlayer() {
48 delete xineControl;
49 delete volControl;
45} 50}
46 51
47void MediaPlayer::pauseCheck( bool b ) { 52void MediaPlayer::pauseCheck( bool b ) {
48 // Only pause if playing 53 // Only pause if playing
49 if ( b && !mediaPlayerState->playing() ) { 54 if ( b && !mediaPlayerState->playing() ) {
50 mediaPlayerState->setPaused( FALSE ); 55 mediaPlayerState->setPaused( FALSE );
51 } 56 }
52} 57}
53 58
54void MediaPlayer::play() { 59void MediaPlayer::play() {
55 mediaPlayerState->setPlaying( FALSE ); 60 mediaPlayerState->setPlaying( FALSE );
56 mediaPlayerState->setPlaying( TRUE ); 61 mediaPlayerState->setPlaying( TRUE );
57} 62}
58 63
59void MediaPlayer::setPlaying( bool play ) { 64void MediaPlayer::setPlaying( bool play ) {
60 if ( !play ) { 65 if ( !play ) {
61 mediaPlayerState->setPaused( FALSE ); 66 mediaPlayerState->setPaused( FALSE );
62 return; 67 return;
63 } 68 }
64 69
65 if ( mediaPlayerState->paused() ) { 70 if ( mediaPlayerState->paused() ) {
66 mediaPlayerState->setPaused( FALSE ); 71 mediaPlayerState->setPaused( FALSE );
67 return; 72 return;
68 } 73 }
69 74
70 const DocLnk *playListCurrent = playList->current(); 75 const DocLnk *playListCurrent = playList->current();
71 if ( playListCurrent != NULL ) { 76 if ( playListCurrent != NULL ) {
72 currentFile = playListCurrent; 77 currentFile = playListCurrent;
73 } 78 }
74 79
75 xineControl->play( currentFile->file() ); 80 xineControl->play( currentFile->file() );
76 81
77 xineControl->length(); 82 xineControl->length();
78 long seconds = mediaPlayerState->length();// 83 long seconds = mediaPlayerState->length();//
79 QString time; time.sprintf("%li:%02i", seconds/60, (int)seconds%60 ); 84 QString time; time.sprintf("%li:%02i", seconds/60, (int)seconds%60 );
80 qDebug(time); 85 qDebug(time);
81 86
82 QString tickerText; 87 QString tickerText;
83 if( currentFile->file().left(4) == "http" ) 88 if( currentFile->file().left(4) == "http" )
84 tickerText= tr( " File: " ) + currentFile->name(); 89 tickerText= tr( " File: " ) + currentFile->name();
85 else 90 else
86 tickerText = tr( " File: " ) + currentFile->name() + tr(", Length: ") + time; 91 tickerText = tr( " File: " ) + currentFile->name() + tr(", Length: ") + time;
87 92
88// QString fileInfo = mediaPlayerState->curDecoder()->fileInfo(); 93// QString fileInfo = mediaPlayerState->curDecoder()->fileInfo();
89 94
90// if ( !fileInfo.isEmpty() ) 95// if ( !fileInfo.isEmpty() )
91// tickerText += ", " + fileInfo; 96// tickerText += ", " + fileInfo;
92// audioUI->setTickerText( tickerText + "." ); 97// audioUI->setTickerText( tickerText + "." );
93 98
94 audioUI->setTickerText( currentFile->file( ) ); 99 audioUI->setTickerText( currentFile->file( ) );
95 100
96} 101}
97 102
98 103
99void MediaPlayer::prev() { 104void MediaPlayer::prev() {
100 if ( playList->prev() ) { 105 if ( playList->prev() ) {
101 play(); 106 play();
102 } else if ( mediaPlayerState->looping() ) { 107 } else if ( mediaPlayerState->looping() ) {
103 if ( playList->last() ) { 108 if ( playList->last() ) {
104 play(); 109 play();
105 } 110 }
106 } else { 111 } else {
107 mediaPlayerState->setList(); 112 mediaPlayerState->setList();
108 } 113 }
109} 114}
110 115
111 116
112void MediaPlayer::next() { 117void MediaPlayer::next() {
113 if ( playList->next() ) { 118 if ( playList->next() ) {
114 play(); 119 play();
115 } else if ( mediaPlayerState->looping() ) { 120 } else if ( mediaPlayerState->looping() ) {
116 if ( playList->first() ) { 121 if ( playList->first() ) {
117 play(); 122 play();
118 } 123 }
119 } else { 124 } else {
120 mediaPlayerState->setList(); 125 mediaPlayerState->setList();
121 } 126 }
122} 127}
123 128
124 129
125void MediaPlayer::startDecreasingVolume() { 130void MediaPlayer::startDecreasingVolume() {
126 volumeDirection = -1; 131 volumeDirection = -1;
127 startTimer( 100 ); 132 startTimer( 100 );
128 // da kommt demnächst osound denk ich mal 133 volControl->decVol(2);
129 /////////////////////////// lets just move those change volume here
130 // AudioDevice::decreaseVolume();
131} 134}
132 135
133 136
134void MediaPlayer::startIncreasingVolume() { 137void MediaPlayer::startIncreasingVolume() {
135 volumeDirection = +1; 138 volumeDirection = +1;
136 startTimer( 100 ); 139 startTimer( 100 );
137 // AudioDevice::increaseVolume(); 140 volControl->incVol(2);
138} 141}
139 142
140 143
141bool drawnOnScreenDisplay = FALSE; 144bool drawnOnScreenDisplay = FALSE;
142unsigned int onScreenDisplayVolume = 0; 145unsigned int onScreenDisplayVolume = 0;
143const int yoff = 110; 146const int yoff = 110;
144 147
145void MediaPlayer::stopChangingVolume() { 148void MediaPlayer::stopChangingVolume() {
146 killTimers(); 149 killTimers();
147 // Get rid of the on-screen display stuff 150 // Get rid of the on-screen display stuff
148 drawnOnScreenDisplay = FALSE; 151 drawnOnScreenDisplay = FALSE;
149 onScreenDisplayVolume = 0; 152 onScreenDisplayVolume = 0;
150 int w = audioUI->width(); 153 int w = audioUI->width();
151 int h = audioUI->height(); 154 int h = audioUI->height();
152 audioUI->repaint( (w - 200) / 2, h - yoff, 200 + 9, 70, FALSE ); 155 audioUI->repaint( (w - 200) / 2, h - yoff, 200 + 9, 70, FALSE );
153} 156}
154 157
155 158
156void MediaPlayer::timerEvent( QTimerEvent * ) { 159void MediaPlayer::timerEvent( QTimerEvent * ) {
157 // if ( volumeDirection == +1 ) 160 if ( volumeDirection == +1 ) {
158 // AudioDevice::increaseVolume(); 161 volControl->incVol(2);
159 // else if ( volumeDirection == -1 ) 162 } else if ( volumeDirection == -1 ) {
160 // AudioDevice::decreaseVolume(); 163 volControl->decVol(2);
164 }
161 165
162// Display an on-screen display volume
163 unsigned int l, r, v; bool m;
164 166
165// TODO FIXME 167 // TODO FIXME
166// AudioDevice::getVolume( l, r, m ); 168 int v;
167// v = ((l + r) * 11) / (2*0xFFFF); 169 v = volControl->getVolume();
170 v = v / 10;
168 171
169 if ( drawnOnScreenDisplay && onScreenDisplayVolume == v ) 172 if ( drawnOnScreenDisplay && onScreenDisplayVolume == v ) {
170 return; 173 return;
174 }
171 175
172 int w = audioUI->width(); 176 int w = audioUI->width();
173 int h = audioUI->height(); 177 int h = audioUI->height();
174 178
175 if ( drawnOnScreenDisplay ) { 179 if ( drawnOnScreenDisplay ) {
176 if ( onScreenDisplayVolume > v ) 180 if ( onScreenDisplayVolume > v ) {
177 audioUI->repaint( (w - 200) / 2 + v * 20 + 0, h - yoff + 40, (onScreenDisplayVolume - v) * 20 + 9, 30, FALSE ); 181 audioUI->repaint( (w - 200) / 2 + v * 20 + 0, h - yoff + 40, (onScreenDisplayVolume - v) * 20 + 9, 30, FALSE );
182 }
178 } 183 }
179 184
180 drawnOnScreenDisplay = TRUE; 185 drawnOnScreenDisplay = TRUE;
181 onScreenDisplayVolume = v; 186 onScreenDisplayVolume = v;
182 187
183 QPainter p( audioUI ); 188 QPainter p( audioUI );
184 p.setPen( QColor( 0x10, 0xD0, 0x10 ) ); 189 p.setPen( QColor( 0x10, 0xD0, 0x10 ) );
185 p.setBrush( QColor( 0x10, 0xD0, 0x10 ) ); 190 p.setBrush( QColor( 0x10, 0xD0, 0x10 ) );
186 191
187 QFont f; 192 QFont f;
188 f.setPixelSize( 20 ); 193 f.setPixelSize( 20 );
189 f.setBold( TRUE ); 194 f.setBold( TRUE );
190 p.setFont( f ); 195 p.setFont( f );
191 p.drawText( (w - 200) / 2, h - yoff + 20, tr("Volume") ); 196 p.drawText( (w - 200) / 2, h - yoff + 20, tr("Volume") );
192 197
193 for ( unsigned int i = 0; i < 10; i++ ) { 198 for ( unsigned int i = 0; i < 10; i++ ) {
194 if ( v > i ) 199 if ( v > i ) {
195 p.drawRect( (w - 200) / 2 + i * 20 + 0, h - yoff + 40, 9, 30 ); 200 p.drawRect( (w - 200) / 2 + i * 20 + 0, h - yoff + 40, 9, 30 );
196 else 201 } else {
197 p.drawRect( (w - 200) / 2 + i * 20 + 3, h - yoff + 50, 3, 10 ); 202 p.drawRect( (w - 200) / 2 + i * 20 + 3, h - yoff + 50, 3, 10 );
203 }
198 } 204 }
199} 205}
200 206
201void MediaPlayer::keyReleaseEvent( QKeyEvent *e) { 207void MediaPlayer::keyReleaseEvent( QKeyEvent *e) {
202 switch ( e->key() ) { 208 switch ( e->key() ) {
203////////////////////////////// Zaurus keys 209////////////////////////////// Zaurus keys
204 case Key_Home: 210 case Key_Home:
205 break; 211 break;
206 case Key_F9: //activity 212 case Key_F9: //activity
207 break; 213 break;
208 case Key_F10: //contacts 214 case Key_F10: //contacts
209 break; 215 break;
210 case Key_F11: //menu 216 case Key_F11: //menu
211 break; 217 break;
212 case Key_F12: //home 218 case Key_F12: //home
213 qDebug("Blank here"); 219 qDebug("Blank here");
214 break; 220 break;
215 case Key_F13: //mail 221 case Key_F13: //mail
216 break; 222 break;
217 } 223 }
218} 224}
219 225
220void MediaPlayer::doBlank() { 226void MediaPlayer::doBlank() {
221 227
222} 228}
223 229
224void MediaPlayer::doUnblank() { 230void MediaPlayer::doUnblank() {
225 231
226} 232}
227 233
228void MediaPlayer::cleanUp() { 234void MediaPlayer::cleanUp() {
229// QPEApplication::grabKeyboard(); 235// QPEApplication::grabKeyboard();
230// QPEApplication::ungrabKeyboard(); 236// QPEApplication::ungrabKeyboard();
231 237
232} 238}
diff --git a/noncore/multimedia/opieplayer2/mediaplayer.h b/noncore/multimedia/opieplayer2/mediaplayer.h
index 7b79066..16213b5 100644
--- a/noncore/multimedia/opieplayer2/mediaplayer.h
+++ b/noncore/multimedia/opieplayer2/mediaplayer.h
@@ -1,46 +1,46 @@
1 1
2#ifndef MEDIA_PLAYER_H 2#ifndef MEDIA_PLAYER_H
3#define MEDIA_PLAYER_H 3#define MEDIA_PLAYER_H
4 4
5#include <qmainwindow.h> 5#include <qmainwindow.h>
6#include <qframe.h> 6#include <qframe.h>
7#include <qpe/qlibrary.h> 7#include <qpe/qlibrary.h>
8#include <qpe/mediaplayerplugininterface.h> 8#include <qpe/mediaplayerplugininterface.h>
9 9
10#include "xinecontrol.h" 10#include "xinecontrol.h"
11 11
12class DocLnk; 12class DocLnk;
13 13class VolumeControl;
14 14
15class MediaPlayer : public QObject { 15class MediaPlayer : public QObject {
16 Q_OBJECT 16 Q_OBJECT
17public: 17public:
18 MediaPlayer( QObject *parent, const char *name ); 18 MediaPlayer( QObject *parent, const char *name );
19 ~MediaPlayer(); 19 ~MediaPlayer();
20 20
21private slots: 21private slots:
22 void setPlaying( bool ); 22 void setPlaying( bool );
23 void pauseCheck( bool ); 23 void pauseCheck( bool );
24 void play(); 24 void play();
25 void next(); 25 void next();
26 void prev(); 26 void prev();
27 void startIncreasingVolume(); 27 void startIncreasingVolume();
28 void startDecreasingVolume(); 28 void startDecreasingVolume();
29 void stopChangingVolume(); 29 void stopChangingVolume();
30 void cleanUp(); 30 void cleanUp();
31 31
32protected: 32protected:
33 void timerEvent( QTimerEvent *e ); 33 void timerEvent( QTimerEvent *e );
34 void keyReleaseEvent( QKeyEvent *e); 34 void keyReleaseEvent( QKeyEvent *e);
35 void doBlank(); 35 void doBlank();
36 void doUnblank(); 36 void doUnblank();
37private: 37private:
38 int volumeDirection; 38 int volumeDirection;
39 const DocLnk *currentFile; 39 const DocLnk *currentFile;
40 XineControl *xineControl; 40 XineControl *xineControl;
41 41 VolumeControl *volControl;
42}; 42};
43 43
44 44
45#endif // MEDIA_PLAYER_H 45#endif // MEDIA_PLAYER_H
46 46
diff --git a/noncore/multimedia/opieplayer2/opieplayer2.pro b/noncore/multimedia/opieplayer2/opieplayer2.pro
index fee9242..edc4624 100644
--- a/noncore/multimedia/opieplayer2/opieplayer2.pro
+++ b/noncore/multimedia/opieplayer2/opieplayer2.pro
@@ -1,23 +1,23 @@
1TEMPLATE = app 1TEMPLATE = app
2CONFIG = qt warn_on release 2CONFIG = qt warn_on release
3#release 3#release
4DESTDIR = $(OPIEDIR)/bin 4DESTDIR = $(OPIEDIR)/bin
5HEADERS = playlistselection.h mediaplayerstate.h xinecontrol.h mediadetect.h\ 5HEADERS = playlistselection.h mediaplayerstate.h xinecontrol.h mediadetect.h\
6 videowidget.h audiowidget.h playlistwidget.h mediaplayer.h inputDialog.h \ 6 videowidget.h audiowidget.h playlistwidget.h mediaplayer.h inputDialog.h \
7 frame.h lib.h xinevideowidget.h \ 7 frame.h lib.h xinevideowidget.h volumecontrol.h\
8 alphablend.h yuv2rgb.h 8 alphablend.h yuv2rgb.h
9SOURCES = main.cpp \ 9SOURCES = main.cpp \
10 playlistselection.cpp mediaplayerstate.cpp xinecontrol.cpp mediadetect.cpp\ 10 playlistselection.cpp mediaplayerstate.cpp xinecontrol.cpp mediadetect.cpp\
11 videowidget.cpp audiowidget.cpp playlistwidget.cpp mediaplayer.cpp inputDialog.cpp \ 11 videowidget.cpp audiowidget.cpp playlistwidget.cpp mediaplayer.cpp inputDialog.cpp \
12 frame.cpp lib.cpp nullvideo.c xinevideowidget.cpp \ 12 frame.cpp lib.cpp nullvideo.c xinevideowidget.cpp volumecontrol.cpp\
13 alphablend.c yuv2rgb.c yuv2rgb_arm.c yuv2rgb_arm4l.S 13 alphablend.c yuv2rgb.c yuv2rgb_arm.c yuv2rgb_arm4l.S
14TARGET = opieplayer2 14TARGET = opieplayer2
15INCLUDEPATH += $(OPIEDIR)/include 15INCLUDEPATH += $(OPIEDIR)/include
16DEPENDPATH += $(OPIEDIR)/include 16DEPENDPATH += $(OPIEDIR)/include
17LIBS += -lqpe -lpthread -lopie -lxine -lxineutils 17LIBS += -lqpe -lpthread -lopie -lxine -lxineutils
18MOC_DIR=qpeobj 18MOC_DIR=qpeobj
19OBJECTS_DIR=qpeobj 19OBJECTS_DIR=qpeobj
20 20
21INCLUDEPATH += $(OPIEDIR)/include 21INCLUDEPATH += $(OPIEDIR)/include
22DEPENDPATH += $(OPIEDIR)/include 22DEPENDPATH += $(OPIEDIR)/include
23 23
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp
index 9065d63..b43d9f7 100644
--- a/noncore/multimedia/opieplayer2/playlistwidget.cpp
+++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp
@@ -39,257 +39,257 @@
39#include "mediaplayerstate.h" 39#include "mediaplayerstate.h"
40 40
41#include "inputDialog.h" 41#include "inputDialog.h"
42 42
43#include <stdlib.h> 43#include <stdlib.h>
44#include "audiowidget.h" 44#include "audiowidget.h"
45#include "videowidget.h" 45#include "videowidget.h"
46 46
47#include <unistd.h> 47#include <unistd.h>
48#include <sys/file.h> 48#include <sys/file.h>
49#include <sys/ioctl.h> 49#include <sys/ioctl.h>
50#include <sys/soundcard.h> 50#include <sys/soundcard.h>
51 51
52// for setBacklight() 52// for setBacklight()
53#include <linux/fb.h> 53#include <linux/fb.h>
54#include <sys/types.h> 54#include <sys/types.h>
55#include <sys/stat.h> 55#include <sys/stat.h>
56#include <stdlib.h> 56#include <stdlib.h>
57 57
58#define BUTTONS_ON_TOOLBAR 58#define BUTTONS_ON_TOOLBAR
59#define SIDE_BUTTONS 59#define SIDE_BUTTONS
60#define CAN_SAVE_LOAD_PLAYLISTS 60#define CAN_SAVE_LOAD_PLAYLISTS
61 61
62extern MediaPlayerState *mediaPlayerState; 62extern MediaPlayerState *mediaPlayerState;
63 63
64 64
65class PlayListWidgetPrivate { 65class PlayListWidgetPrivate {
66public: 66public:
67 QToolButton *tbPlay, *tbFull, *tbLoop, *tbScale, *tbShuffle, *tbAddToList, *tbRemoveFromList, *tbMoveUp, *tbMoveDown, *tbRemove; 67 QToolButton *tbPlay, *tbFull, *tbLoop, *tbScale, *tbShuffle, *tbAddToList, *tbRemoveFromList, *tbMoveUp, *tbMoveDown, *tbRemove;
68 QFrame *playListFrame; 68 QFrame *playListFrame;
69 FileSelector *files; 69 FileSelector *files;
70 PlayListSelection *selectedFiles; 70 PlayListSelection *selectedFiles;
71 bool setDocumentUsed; 71 bool setDocumentUsed;
72 DocLnk *current; 72 DocLnk *current;
73}; 73};
74 74
75 75
76class ToolButton : public QToolButton { 76class ToolButton : public QToolButton {
77public: 77public:
78 ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE ) 78 ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE )
79 : QToolButton( parent, name ) { 79 : QToolButton( parent, name ) {
80 setTextLabel( name ); 80 setTextLabel( name );
81 setPixmap( Resource::loadPixmap( icon ) ); 81 setPixmap( Resource::loadPixmap( icon ) );
82 setAutoRaise( TRUE ); 82 setAutoRaise( TRUE );
83 setFocusPolicy( QWidget::NoFocus ); 83 setFocusPolicy( QWidget::NoFocus );
84 setToggleButton( t ); 84 setToggleButton( t );
85 connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot ); 85 connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot );
86 QPEMenuToolFocusManager::manager()->addWidget( this ); 86 QPEMenuToolFocusManager::manager()->addWidget( this );
87 } 87 }
88}; 88};
89 89
90 90
91class MenuItem : public QAction { 91class MenuItem : public QAction {
92public: 92public:
93 MenuItem( QWidget *parent, const QString& text, QObject *handler, const QString& slot ) 93 MenuItem( QWidget *parent, const QString& text, QObject *handler, const QString& slot )
94 : QAction( text, QString::null, 0, 0 ) { 94 : QAction( text, QString::null, 0, 0 ) {
95 connect( this, SIGNAL( activated() ), handler, slot ); 95 connect( this, SIGNAL( activated() ), handler, slot );
96 addTo( parent ); 96 addTo( parent );
97 } 97 }
98}; 98};
99 99
100 100
101PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) 101PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl )
102 : QMainWindow( parent, name, fl ) { 102 : QMainWindow( parent, name, fl ) {
103 103
104 d = new PlayListWidgetPrivate; 104 d = new PlayListWidgetPrivate;
105 d->setDocumentUsed = FALSE; 105 d->setDocumentUsed = FALSE;
106 d->current = NULL; 106 d->current = NULL;
107 fromSetDocument = FALSE; 107 fromSetDocument = FALSE;
108 insanityBool=FALSE; 108 insanityBool=FALSE;
109 audioScan = FALSE; 109 audioScan = FALSE;
110 videoScan = FALSE; 110 videoScan = FALSE;
111 111
112 setBackgroundMode( PaletteButton ); 112 setBackgroundMode( PaletteButton );
113 113
114 setCaption( tr("OpiePlayer") ); 114 setCaption( tr("OpiePlayer") );
115 setIcon( Resource::loadPixmap( "opieplayer/MPEGPlayer" ) ); 115 setIcon( Resource::loadPixmap( "opieplayer/MPEGPlayer" ) );
116 116
117 setToolBarsMovable( FALSE ); 117 setToolBarsMovable( FALSE );
118 118
119 // Create Toolbar 119 // Create Toolbar
120 QPEToolBar *toolbar = new QPEToolBar( this ); 120 QPEToolBar *toolbar = new QPEToolBar( this );
121 toolbar->setHorizontalStretchable( TRUE ); 121 toolbar->setHorizontalStretchable( TRUE );
122 122
123 // Create Menubar 123 // Create Menubar
124 QPEMenuBar *menu = new QPEMenuBar( toolbar ); 124 QPEMenuBar *menu = new QPEMenuBar( toolbar );
125 menu->setMargin( 0 ); 125 menu->setMargin( 0 );
126 126
127 QPEToolBar *bar = new QPEToolBar( this ); 127 QPEToolBar *bar = new QPEToolBar( this );
128 bar->setLabel( tr( "Play Operations" ) ); 128 bar->setLabel( tr( "Play Operations" ) );
129 129
130 tbDeletePlaylist = new QPushButton( Resource::loadIconSet("trash"),"",bar,"close"); 130 tbDeletePlaylist = new QPushButton( Resource::loadIconSet("trash"),"",bar,"close");
131 tbDeletePlaylist->setFlat(TRUE); 131 tbDeletePlaylist->setFlat(TRUE);
132 tbDeletePlaylist->setFixedSize(20,20); 132 tbDeletePlaylist->setFixedSize(20,20);
133 133
134 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "opieplayer/add_to_playlist", 134 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), "opieplayer/add_to_playlist",
135 this , SLOT(addSelected()) ); 135 this , SLOT(addSelected()) );
136 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), "opieplayer/remove_from_playlist", 136 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), "opieplayer/remove_from_playlist",
137 this , SLOT(removeSelected()) ); 137 this , SLOT(removeSelected()) );
138 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play", 138 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer/play",
139 this , SLOT( btnPlay(bool) ), TRUE ); 139 this , SLOT( btnPlay(bool) ), TRUE );
140 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer/shuffle", 140 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer/shuffle",
141 mediaPlayerState, SLOT(setShuffled(bool)), TRUE ); 141 mediaPlayerState, SLOT(setShuffled(bool)), TRUE );
142 d->tbLoop = new ToolButton( bar, tr( "Loop" ),"opieplayer/loop", 142 d->tbLoop = new ToolButton( bar, tr( "Loop" ),"opieplayer/loop",
143 mediaPlayerState, SLOT(setLooping(bool)), TRUE ); 143 mediaPlayerState, SLOT(setLooping(bool)), TRUE );
144 tbDeletePlaylist->hide(); 144 tbDeletePlaylist->hide();
145 145
146 QPopupMenu *pmPlayList = new QPopupMenu( this ); 146 QPopupMenu *pmPlayList = new QPopupMenu( this );
147 menu->insertItem( tr( "File" ), pmPlayList ); 147 menu->insertItem( tr( "File" ), pmPlayList );
148 new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) ); 148 new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) );
149 new MenuItem( pmPlayList, tr( "Add all audio files" ), this, SLOT( addAllMusicToList() ) ); 149 new MenuItem( pmPlayList, tr( "Add all audio files" ), this, SLOT( addAllMusicToList() ) );
150 new MenuItem( pmPlayList, tr( "Add all video files" ), this, SLOT( addAllVideoToList() ) ); 150 new MenuItem( pmPlayList, tr( "Add all video files" ), this, SLOT( addAllVideoToList() ) );
151 new MenuItem( pmPlayList, tr( "Add all files" ), this, SLOT( addAllToList() ) ); 151 new MenuItem( pmPlayList, tr( "Add all files" ), this, SLOT( addAllToList() ) );
152 pmPlayList->insertSeparator(-1); 152 pmPlayList->insertSeparator(-1);
153 new MenuItem( pmPlayList, tr( "Save PlayList" ), this, SLOT( saveList() ) ); 153 new MenuItem( pmPlayList, tr( "Save PlayList" ), this, SLOT( saveList() ) );
154 new MenuItem( pmPlayList, tr( "Export playlist to m3u" ), this, SLOT(writem3u() ) ); 154 new MenuItem( pmPlayList, tr( "Export playlist to m3u" ), this, SLOT(writem3u() ) );
155 pmPlayList->insertSeparator(-1); 155 pmPlayList->insertSeparator(-1);
156 new MenuItem( pmPlayList, tr( "Open File or URL" ), this,SLOT( openFile() ) ); 156 new MenuItem( pmPlayList, tr( "Open File or URL" ), this,SLOT( openFile() ) );
157 pmPlayList->insertSeparator(-1); 157 pmPlayList->insertSeparator(-1);
158 new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ), this,SLOT( scanForAudio() ) ); 158 new MenuItem( pmPlayList, tr( "Rescan for Audio Files" ), this,SLOT( scanForAudio() ) );
159 new MenuItem( pmPlayList, tr( "Rescan for Video Files" ), this,SLOT( scanForVideo() ) ); 159 new MenuItem( pmPlayList, tr( "Rescan for Video Files" ), this,SLOT( scanForVideo() ) );
160 160
161 QPopupMenu *pmView = new QPopupMenu( this ); 161 QPopupMenu *pmView = new QPopupMenu( this );
162 menu->insertItem( tr( "View" ), pmView ); 162 menu->insertItem( tr( "View" ), pmView );
163 163
164 fullScreenButton = new QAction(tr("Full Screen"), Resource::loadPixmap("fullscreen"), QString::null, 0, this, 0); 164 fullScreenButton = new QAction(tr("Full Screen"), Resource::loadPixmap("fullscreen"), QString::null, 0, this, 0);
165 fullScreenButton->addTo(pmView); 165 fullScreenButton->addTo(pmView);
166 scaleButton = new QAction(tr("Scale"), Resource::loadPixmap("opieplayer/scale"), QString::null, 0, this, 0); 166 scaleButton = new QAction(tr("Scale"), Resource::loadPixmap("opieplayer/scale"), QString::null, 0, this, 0);
167 scaleButton->addTo(pmView); 167 //scaleButton->addTo(pmView);
168 168
169 QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton ); 169 QVBox *vbox5 = new QVBox( this ); vbox5->setBackgroundMode( PaletteButton );
170 QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton ); 170 QVBox *vbox4 = new QVBox( vbox5 ); vbox4->setBackgroundMode( PaletteButton );
171 171
172 QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton ); 172 QHBox *hbox6 = new QHBox( vbox4 ); hbox6->setBackgroundMode( PaletteButton );
173 173
174 tabWidget = new QTabWidget( hbox6, "tabWidget" ); 174 tabWidget = new QTabWidget( hbox6, "tabWidget" );
175// tabWidget->setTabShape(QTabWidget::Triangular); 175// tabWidget->setTabShape(QTabWidget::Triangular);
176 176
177 QWidget *pTab; 177 QWidget *pTab;
178 pTab = new QWidget( tabWidget, "pTab" ); 178 pTab = new QWidget( tabWidget, "pTab" );
179 tabWidget->insertTab( pTab,"Playlist"); 179 tabWidget->insertTab( pTab,"Playlist");
180 180
181 181
182 // Add the playlist area 182 // Add the playlist area
183 183
184 QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton ); 184 QVBox *vbox3 = new QVBox( pTab ); vbox3->setBackgroundMode( PaletteButton );
185 d->playListFrame = vbox3; 185 d->playListFrame = vbox3;
186 d->playListFrame ->setMinimumSize(235,260); 186 d->playListFrame ->setMinimumSize(235,260);
187 187
188 QHBox *hbox2 = new QHBox( vbox3 ); hbox2->setBackgroundMode( PaletteButton ); 188 QHBox *hbox2 = new QHBox( vbox3 ); hbox2->setBackgroundMode( PaletteButton );
189 189
190 d->selectedFiles = new PlayListSelection( hbox2); 190 d->selectedFiles = new PlayListSelection( hbox2);
191 QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton ); 191 QVBox *vbox1 = new QVBox( hbox2 ); vbox1->setBackgroundMode( PaletteButton );
192 192
193 QPEApplication::setStylusOperation( d->selectedFiles->viewport(),QPEApplication::RightOnHold); 193 QPEApplication::setStylusOperation( d->selectedFiles->viewport(),QPEApplication::RightOnHold);
194 194
195 QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch 195 QVBox *stretch1 = new QVBox( vbox1 ); stretch1->setBackgroundMode( PaletteButton ); // add stretch
196 new ToolButton( vbox1, tr( "Move Up" ), "opieplayer/up", d->selectedFiles, SLOT(moveSelectedUp()) ); 196 new ToolButton( vbox1, tr( "Move Up" ), "opieplayer/up", d->selectedFiles, SLOT(moveSelectedUp()) );
197 new ToolButton( vbox1, tr( "Remove" ), "opieplayer/cut", d->selectedFiles, SLOT(removeSelected()) ); 197 new ToolButton( vbox1, tr( "Remove" ), "opieplayer/cut", d->selectedFiles, SLOT(removeSelected()) );
198 new ToolButton( vbox1, tr( "Move Down" ), "opieplayer/down", d->selectedFiles, SLOT(moveSelectedDown()) ); 198 new ToolButton( vbox1, tr( "Move Down" ), "opieplayer/down", d->selectedFiles, SLOT(moveSelectedDown()) );
199 QVBox *stretch2 = new QVBox( vbox1 ); stretch2->setBackgroundMode( PaletteButton ); // add stretch 199 QVBox *stretch2 = new QVBox( vbox1 ); stretch2->setBackgroundMode( PaletteButton ); // add stretch
200 200
201 QWidget *aTab; 201 QWidget *aTab;
202 aTab = new QWidget( tabWidget, "aTab" ); 202 aTab = new QWidget( tabWidget, "aTab" );
203 audioView = new QListView( aTab, "Audioview" ); 203 audioView = new QListView( aTab, "Audioview" );
204 audioView->setMinimumSize(233,260); 204 audioView->setMinimumSize(233,260);
205 audioView->addColumn( tr("Title"),140); 205 audioView->addColumn( tr("Title"),140);
206 audioView->addColumn(tr("Size"), -1); 206 audioView->addColumn(tr("Size"), -1);
207 audioView->addColumn(tr("Media"),-1); 207 audioView->addColumn(tr("Media"),-1);
208 audioView->setColumnAlignment(1, Qt::AlignRight); 208 audioView->setColumnAlignment(1, Qt::AlignRight);
209 audioView->setColumnAlignment(2, Qt::AlignRight); 209 audioView->setColumnAlignment(2, Qt::AlignRight);
210 audioView->setAllColumnsShowFocus(TRUE); 210 audioView->setAllColumnsShowFocus(TRUE);
211 211
212 audioView->setMultiSelection( TRUE ); 212 audioView->setMultiSelection( TRUE );
213 audioView->setSelectionMode( QListView::Extended); 213 audioView->setSelectionMode( QListView::Extended);
214 214
215 tabWidget->insertTab(aTab,tr("Audio")); 215 tabWidget->insertTab(aTab,tr("Audio"));
216 216
217 QPEApplication::setStylusOperation( audioView->viewport(),QPEApplication::RightOnHold); 217 QPEApplication::setStylusOperation( audioView->viewport(),QPEApplication::RightOnHold);
218 218
219 QWidget *vTab; 219 QWidget *vTab;
220 vTab = new QWidget( tabWidget, "vTab" ); 220 vTab = new QWidget( tabWidget, "vTab" );
221 videoView = new QListView( vTab, "Videoview" ); 221 videoView = new QListView( vTab, "Videoview" );
222 videoView->setMinimumSize(233,260); 222 videoView->setMinimumSize(233,260);
223 223
224 videoView->addColumn(tr("Title"),140); 224 videoView->addColumn(tr("Title"),140);
225 videoView->addColumn(tr("Size"),-1); 225 videoView->addColumn(tr("Size"),-1);
226 videoView->addColumn(tr("Media"),-1); 226 videoView->addColumn(tr("Media"),-1);
227 videoView->setColumnAlignment(1, Qt::AlignRight); 227 videoView->setColumnAlignment(1, Qt::AlignRight);
228 videoView->setColumnAlignment(2, Qt::AlignRight); 228 videoView->setColumnAlignment(2, Qt::AlignRight);
229 videoView->setAllColumnsShowFocus(TRUE); 229 videoView->setAllColumnsShowFocus(TRUE);
230 videoView->setMultiSelection( TRUE ); 230 videoView->setMultiSelection( TRUE );
231 videoView->setSelectionMode( QListView::Extended); 231 videoView->setSelectionMode( QListView::Extended);
232 232
233 QPEApplication::setStylusOperation( videoView->viewport(),QPEApplication::RightOnHold); 233 QPEApplication::setStylusOperation( videoView->viewport(),QPEApplication::RightOnHold);
234 234
235 tabWidget->insertTab( vTab,tr("Video")); 235 tabWidget->insertTab( vTab,tr("Video"));
236 236
237 //playlists list 237 //playlists list
238 QWidget *LTab; 238 QWidget *LTab;
239 LTab = new QWidget( tabWidget, "LTab" ); 239 LTab = new QWidget( tabWidget, "LTab" );
240 playLists = new FileSelector( "playlist/plain", LTab, "fileselector" , FALSE, FALSE); //buggy 240 playLists = new FileSelector( "playlist/plain", LTab, "fileselector" , FALSE, FALSE); //buggy
241 playLists->setMinimumSize(233,260); 241 playLists->setMinimumSize(233,260);
242 tabWidget->insertTab(LTab,tr("Lists")); 242 tabWidget->insertTab(LTab,tr("Lists"));
243 243
244 connect(tbDeletePlaylist,(SIGNAL(released())),SLOT( deletePlaylist())); 244 connect(tbDeletePlaylist,(SIGNAL(released())),SLOT( deletePlaylist()));
245 connect( fullScreenButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleFullscreen()) ); 245 connect( fullScreenButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleFullscreen()) );
246 connect( scaleButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleScaled()) ); 246 connect( scaleButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleScaled()) );
247 connect( d->selectedFiles, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), 247 connect( d->selectedFiles, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
248 this,SLOT( playlistViewPressed(int, QListViewItem *, const QPoint&, int)) ); 248 this,SLOT( playlistViewPressed(int, QListViewItem *, const QPoint&, int)) );
249 connect( audioView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), 249 connect( audioView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
250 this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) ); 250 this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) );
251 connect( audioView, SIGNAL( returnPressed( QListViewItem *)), 251 connect( audioView, SIGNAL( returnPressed( QListViewItem *)),
252 this,SLOT( playIt( QListViewItem *)) ); 252 this,SLOT( playIt( QListViewItem *)) );
253 connect( audioView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); 253 connect( audioView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) );
254 connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), 254 connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)),
255 this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) ); 255 this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) );
256 connect( videoView, SIGNAL( returnPressed( QListViewItem *)), 256 connect( videoView, SIGNAL( returnPressed( QListViewItem *)),
257 this,SLOT( playIt( QListViewItem *)) ); 257 this,SLOT( playIt( QListViewItem *)) );
258 connect( videoView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); 258 connect( videoView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) );
259 connect( playLists, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( loadList( const DocLnk & ) ) ); 259 connect( playLists, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( loadList( const DocLnk & ) ) );
260 connect( tabWidget, SIGNAL (currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*))); 260 connect( tabWidget, SIGNAL (currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*)));
261 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) ); 261 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) );
262 connect( mediaPlayerState, SIGNAL( loopingToggled( bool ) ), d->tbLoop, SLOT( setOn( bool ) ) ); 262 connect( mediaPlayerState, SIGNAL( loopingToggled( bool ) ), d->tbLoop, SLOT( setOn( bool ) ) );
263 connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( bool ) ) ); 263 connect( mediaPlayerState, SIGNAL( shuffledToggled( bool ) ), d->tbShuffle, SLOT( setOn( bool ) ) );
264 connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) ); 264 connect( mediaPlayerState, SIGNAL( playlistToggled( bool ) ), this, SLOT( setPlaylist( bool ) ) );
265 connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) ); 265 connect( d->selectedFiles, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( playIt( QListViewItem *) ) );
266 266
267 setCentralWidget( vbox5 ); 267 setCentralWidget( vbox5 );
268 268
269 Config cfg( "OpiePlayer" ); 269 Config cfg( "OpiePlayer" );
270 readConfig( cfg ); 270 readConfig( cfg );
271 QString currentPlaylist = cfg.readEntry("CurrentPlaylist",""); 271 QString currentPlaylist = cfg.readEntry("CurrentPlaylist","");
272 loadList(DocLnk( currentPlaylist)); 272 loadList(DocLnk( currentPlaylist));
273 setCaption(tr("OpiePlayer: ")+ currentPlaylist ); 273 setCaption(tr("OpiePlayer: ")+ currentPlaylist );
274 274
275 initializeStates(); 275 initializeStates();
276} 276}
277 277
278 278
279PlayListWidget::~PlayListWidget() { 279PlayListWidget::~PlayListWidget() {
280 Config cfg( "OpiePlayer" ); 280 Config cfg( "OpiePlayer" );
281 writeConfig( cfg ); 281 writeConfig( cfg );
282 282
283 if ( d->current ) { 283 if ( d->current ) {
284 delete d->current; 284 delete d->current;
285 } 285 }
286 delete d; 286 delete d;
287} 287}
288 288
289 289
290void PlayListWidget::initializeStates() { 290void PlayListWidget::initializeStates() {
291 291
292 d->tbPlay->setOn( mediaPlayerState->playing() ); 292 d->tbPlay->setOn( mediaPlayerState->playing() );
293 d->tbLoop->setOn( mediaPlayerState->looping() ); 293 d->tbLoop->setOn( mediaPlayerState->looping() );
294 d->tbShuffle->setOn( mediaPlayerState->shuffled() ); 294 d->tbShuffle->setOn( mediaPlayerState->shuffled() );
295 setPlaylist( true); 295 setPlaylist( true);
diff --git a/noncore/multimedia/opieplayer2/videowidget.cpp b/noncore/multimedia/opieplayer2/videowidget.cpp
index af06079..188b18d 100644
--- a/noncore/multimedia/opieplayer2/videowidget.cpp
+++ b/noncore/multimedia/opieplayer2/videowidget.cpp
@@ -1,394 +1,381 @@
1/* 1/*
2                This file is part of the Opie Project 2                This file is part of the Opie Project
3 3
4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> 4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org>
5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com> 5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com>
6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> 6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
7 =. 7 =.
8 .=l. 8 .=l.
9           .>+-= 9           .>+-=
10 _;:,     .>    :=|. This program is free software; you can 10 _;:,     .>    :=|. This program is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_,   >  .   <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU General Public 12:`=1 )Y*s>-.--   : the terms of the GNU General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i,     .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14 - .   .-<_>     .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17    .i_,=:_.      -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; Library General Public License for more 22..}^=.=       =       ; Library General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = Library General Public License along with 26  -_. . .   )=.  = Library General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#include <qpe/resource.h> 34#include <qpe/resource.h>
35#include <qpe/mediaplayerplugininterface.h>
36#include <qpe/config.h> 35#include <qpe/config.h>
37 36
38#include <qwidget.h> 37#include <qwidget.h>
39#include <qpainter.h> 38#include <qpainter.h>
40#include <qpixmap.h> 39#include <qpixmap.h>
41#include <qslider.h> 40#include <qslider.h>
42#include <qdrawutil.h> 41#include <qdrawutil.h>
43#include "videowidget.h" 42#include "videowidget.h"
44#include "mediaplayerstate.h" 43#include "mediaplayerstate.h"
45 44
46 45
47#ifdef Q_WS_QWS 46#ifdef Q_WS_QWS
48# define USE_DIRECT_PAINTER 47# define USE_DIRECT_PAINTER
49# include <qdirectpainter_qws.h> 48# include <qdirectpainter_qws.h>
50# include <qgfxraster_qws.h> 49# include <qgfxraster_qws.h>
51#endif 50#endif
52 51
53 52
54extern MediaPlayerState *mediaPlayerState; 53extern MediaPlayerState *mediaPlayerState;
55 54
56 55
57static const int xo = 2; // movable x offset 56static const int xo = 2; // movable x offset
58static const int yo = 0; // movable y offset 57static const int yo = 0; // movable y offset
59 58
60 59
61struct MediaButton { 60struct MediaButton {
62 int xPos, yPos; 61 int xPos, yPos;
63 bool isToggle, isHeld, isDown; 62 bool isToggle, isHeld, isDown;
64 int controlType; 63 int controlType;
65}; 64};
66 65
67 66
68// Layout information for the videoButtons (and if it is a toggle button or not) 67// Layout information for the videoButtons (and if it is a toggle button or not)
69MediaButton videoButtons[] = { 68MediaButton videoButtons[] = {
70 { 5+0*32+xo, 200+yo, FALSE, FALSE, FALSE, 4 }, // previous 69 { 5+0*32+xo, 200+yo, FALSE, FALSE, FALSE, 4 }, // previous
71 { 5+1*32+xo, 200+yo, FALSE, FALSE, FALSE, 1 }, // stop 70 { 5+1*32+xo, 200+yo, FALSE, FALSE, FALSE, 1 }, // stop
72 { 5+2*32+xo, 200+yo, TRUE, FALSE, FALSE, 0 }, // play 71 { 5+2*32+xo, 200+yo, TRUE, FALSE, FALSE, 0 }, // play
73 { 5+3*32+xo, 200+yo, TRUE, FALSE, FALSE, 2 }, // pause 72 { 5+3*32+xo, 200+yo, TRUE, FALSE, FALSE, 2 }, // pause
74 { 5+4*32+xo, 200+yo, FALSE, FALSE, FALSE, 3 }, // next 73 { 5+4*32+xo, 200+yo, FALSE, FALSE, FALSE, 3 }, // next
75 { 5+5*32+xo, 200+yo, FALSE, FALSE, FALSE, 8 }, // playlist 74 { 5+5*32+xo, 200+yo, FALSE, FALSE, FALSE, 8 }, // playlist
76 { 5+6*32+xo, 200+yo, TRUE, FALSE, FALSE, 9 } // fullscreen 75 { 5+6*32+xo, 200+yo, TRUE, FALSE, FALSE, 9 } // fullscreen
77}; 76};
78 77
79 78
80static const int numButtons = (sizeof(videoButtons)/sizeof(MediaButton)); 79static const int numButtons = (sizeof(videoButtons)/sizeof(MediaButton));
81 80
82 81
83VideoWidget::VideoWidget(QWidget* parent, const char* name, WFlags f) : 82VideoWidget::VideoWidget(QWidget* parent, const char* name, WFlags f) :
84 QWidget( parent, name, f ), scaledWidth( 0 ), scaledHeight( 0 ) { 83 QWidget( parent, name, f ), scaledWidth( 0 ), scaledHeight( 0 ) {
85 setCaption( tr("OpiePlayer - Video") ); 84 setCaption( tr("OpiePlayer - Video") );
86 Config cfg("OpiePlayer"); 85 Config cfg("OpiePlayer");
87 cfg.setGroup("VideoWidget"); 86 cfg.setGroup("VideoWidget");
88 87
89 QString Button0aPix, Button0bPix, controlsPix; 88 QString Button0aPix, Button0bPix, controlsPix;
90 //backgroundPix=cfg.readEntry( "backgroundPix", "opieplayer/metalFinish");
91 Button0aPix=cfg.readEntry( "Button0aPix", "opieplayer/mediaButton0a"); 89 Button0aPix=cfg.readEntry( "Button0aPix", "opieplayer/mediaButton0a");
92 Button0bPix=cfg.readEntry( "Button0bPix","opieplayer/mediaButton0b"); 90 Button0bPix=cfg.readEntry( "Button0bPix","opieplayer/mediaButton0b");
93 controlsPix=cfg.readEntry( "controlsPix","opieplayer/mediaControls0" ); 91 controlsPix=cfg.readEntry( "controlsPix","opieplayer/mediaControls0" );
94 92
95 cfg.setGroup("AudioWidget"); 93 cfg.setGroup("AudioWidget");
96 QString skin = cfg.readEntry("Skin","default"); 94 QString skin = cfg.readEntry("Skin","default");
97 QString skinPath = "opieplayer/skins/" + skin; 95 QString skinPath = "opieplayer/skins/" + skin;
98 backgroundPix = QString("%1/background").arg(skinPath) ; 96 backgroundPix = QString("%1/background").arg(skinPath) ;
99 97
100 setBackgroundPixmap( Resource::loadPixmap( backgroundPix) ); 98 setBackgroundPixmap( Resource::loadPixmap( backgroundPix) );
101 pixmaps[0] = new QPixmap( Resource::loadPixmap( Button0aPix ) ); 99 pixmaps[0] = new QPixmap( Resource::loadPixmap( Button0aPix ) );
102 pixmaps[1] = new QPixmap( Resource::loadPixmap( Button0bPix ) ); 100 pixmaps[1] = new QPixmap( Resource::loadPixmap( Button0bPix ) );
103 pixmaps[2] = new QPixmap( Resource::loadPixmap( controlsPix) ); 101 pixmaps[2] = new QPixmap( Resource::loadPixmap( controlsPix) );
104 currentFrame = new QImage( 220 + 2, 160, (QPixmap::defaultDepth() == 16) ? 16 : 32 ); 102 currentFrame = new QImage( 220 + 2, 160, (QPixmap::defaultDepth() == 16) ? 16 : 32 );
105 103
106 slider = new QSlider( Qt::Horizontal, this ); 104 slider = new QSlider( Qt::Horizontal, this );
107 slider->setMinValue( 0 ); 105 slider->setMinValue( 0 );
108 slider->setMaxValue( 1 ); 106 slider->setMaxValue( 1 );
109 slider->setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) ); 107
108 slider->setBackgroundPixmap( *this->backgroundPixmap () ); //Resource::loadPixmap( backgroundPix ) );
109 slider->setBackgroundOrigin( QWidget::ParentOrigin);
110 slider->setFocusPolicy( QWidget::NoFocus ); 110 slider->setFocusPolicy( QWidget::NoFocus );
111 slider->setGeometry( QRect( 7, 250, 220, 20 ) ); 111 slider->setGeometry( QRect( 7, 250, 220, 20 ) );
112 112
113 videoFrame = new XineVideoWidget ( this, "Video frame" ); 113 videoFrame = new XineVideoWidget ( this, "Video frame" );
114 114
115 connect ( videoFrame, SIGNAL( videoResized ( const QSize & )), this, SIGNAL( videoResized ( const QSize & ))); 115 connect ( videoFrame, SIGNAL( videoResized ( const QSize & )), this, SIGNAL( videoResized ( const QSize & )));
116 116
117 connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 117 connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
118 connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 118 connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
119 119
120 connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) ); 120 connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) );
121 connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 121 connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
122 connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 122 connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
123 connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) ); 123 connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) );
124 connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) ); 124 connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) );
125 connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) ); 125 connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) );
126 126
127 // Intialise state 127 // Intialise state
128 setLength( mediaPlayerState->length() ); 128 setLength( mediaPlayerState->length() );
129 setPosition( mediaPlayerState->position() ); 129 setPosition( mediaPlayerState->position() );
130 setFullscreen( mediaPlayerState->fullscreen() ); 130 setFullscreen( mediaPlayerState->fullscreen() );
131 setPaused( mediaPlayerState->paused() ); 131 setPaused( mediaPlayerState->paused() );
132 setPlaying( mediaPlayerState->playing() ); 132 setPlaying( mediaPlayerState->playing() );
133 133
134} 134}
135 135
136 136
137VideoWidget::~VideoWidget() { 137VideoWidget::~VideoWidget() {
138 for ( int i = 0; i < 3; i++ ) { 138 for ( int i = 0; i < 3; i++ ) {
139 delete pixmaps[i]; 139 delete pixmaps[i];
140 } 140 }
141 delete currentFrame; 141 delete currentFrame;
142} 142}
143 143
144 144
145static bool videoSliderBeingMoved = FALSE; 145static bool videoSliderBeingMoved = FALSE;
146 146
147 147
148void VideoWidget::sliderPressed() { 148void VideoWidget::sliderPressed() {
149 videoSliderBeingMoved = TRUE; 149 videoSliderBeingMoved = TRUE;
150} 150}
151 151
152 152
153void VideoWidget::sliderReleased() { 153void VideoWidget::sliderReleased() {
154 videoSliderBeingMoved = FALSE; 154 videoSliderBeingMoved = FALSE;
155 if ( slider->width() == 0 ) { 155 if ( slider->width() == 0 ) {
156 return; 156 return;
157 } 157 }
158 long val = long((double)slider->value() * mediaPlayerState->length() / slider->width()); 158 long val = long((double)slider->value() * mediaPlayerState->length() / slider->width());
159 mediaPlayerState->setPosition( val ); 159 mediaPlayerState->setPosition( val );
160} 160}
161 161
162 162
163void VideoWidget::setPosition( long i ) { 163void VideoWidget::setPosition( long i ) {
164 updateSlider( i, mediaPlayerState->length() ); 164 updateSlider( i, mediaPlayerState->length() );
165} 165}
166 166
167 167
168void VideoWidget::setLength( long max ) { 168void VideoWidget::setLength( long max ) {
169 updateSlider( mediaPlayerState->position(), max ); 169 updateSlider( mediaPlayerState->position(), max );
170} 170}
171 171
172 172
173void VideoWidget::setView( char view ) { 173void VideoWidget::setView( char view ) {
174 if ( view == 'v' ) { 174 if ( view == 'v' ) {
175 makeVisible(); 175 makeVisible();
176 } else { 176 } else {
177 // Effectively blank the view next time we show it so it looks nicer 177 // Effectively blank the view next time we show it so it looks nicer
178 scaledWidth = 0; 178 scaledWidth = 0;
179 scaledHeight = 0; 179 scaledHeight = 0;
180 hide(); 180 hide();
181 } 181 }
182} 182}
183 183
184 184
185void VideoWidget::updateSlider( long i, long max ) { 185void VideoWidget::updateSlider( long i, long max ) {
186 // Will flicker too much if we don't do this 186 // Will flicker too much if we don't do this
187 if ( max == 0 ) { 187 if ( max == 0 ) {
188 return; 188 return;
189 } 189 }
190 int width = slider->width(); 190 int width = slider->width();
191 int val = int((double)i * width / max); 191 int val = int((double)i * width / max);
192 if ( !mediaPlayerState->fullscreen() && !videoSliderBeingMoved ) { 192 if ( !mediaPlayerState->fullscreen() && !videoSliderBeingMoved ) {
193 if ( slider->value() != val ) { 193 if ( slider->value() != val ) {
194 slider->setValue( val ); 194 slider->setValue( val );
195 } 195 }
196 if ( slider->maxValue() != width ) { 196 if ( slider->maxValue() != width ) {
197 slider->setMaxValue( width ); 197 slider->setMaxValue( width );
198 } 198 }
199 } 199 }
200} 200}
201 201
202 202
203void VideoWidget::setToggleButton( int i, bool down ) { 203void VideoWidget::setToggleButton( int i, bool down ) {
204 if ( down != videoButtons[i].isDown ) { 204 if ( down != videoButtons[i].isDown ) {
205 toggleButton( i ); 205 toggleButton( i );
206 } 206 }
207} 207}
208 208
209 209
210void VideoWidget::toggleButton( int i ) { 210void VideoWidget::toggleButton( int i ) {
211 videoButtons[i].isDown = !videoButtons[i].isDown; 211 videoButtons[i].isDown = !videoButtons[i].isDown;
212 QPainter p(this); 212 QPainter p(this);
213 paintButton ( &p, i ); 213 paintButton ( &p, i );
214} 214}
215 215
216 216
217void VideoWidget::paintButton( QPainter *p, int i ) { 217void VideoWidget::paintButton( QPainter *p, int i ) {
218 int x = videoButtons[i].xPos; 218 int x = videoButtons[i].xPos;
219 int y = videoButtons[i].yPos; 219 int y = videoButtons[i].yPos;
220 int offset = 10 + videoButtons[i].isDown; 220 int offset = 10 + videoButtons[i].isDown;
221 p->drawPixmap( x, y, *pixmaps[videoButtons[i].isDown] ); 221 p->drawPixmap( x, y, *pixmaps[videoButtons[i].isDown] );
222 p->drawPixmap( x + 1 + offset, y + offset, *pixmaps[2], 9 * videoButtons[i].controlType, 0, 9, 9 ); 222 p->drawPixmap( x + 1 + offset, y + offset, *pixmaps[2], 9 * videoButtons[i].controlType, 0, 9, 9 );
223} 223}
224 224
225 225
226void VideoWidget::mouseMoveEvent( QMouseEvent *event ) { 226void VideoWidget::mouseMoveEvent( QMouseEvent *event ) {
227 for ( int i = 0; i < numButtons; i++ ) { 227 for ( int i = 0; i < numButtons; i++ ) {
228 int x = videoButtons[i].xPos; 228 int x = videoButtons[i].xPos;
229 int y = videoButtons[i].yPos; 229 int y = videoButtons[i].yPos;
230 if ( event->state() == QMouseEvent::LeftButton ) { 230 if ( event->state() == QMouseEvent::LeftButton ) {
231 // The test to see if the mouse click is inside the circular button or not 231 // The test to see if the mouse click is inside the circular button or not
232 // (compared with the radius squared to avoid a square-root of our distance) 232 // (compared with the radius squared to avoid a square-root of our distance)
233 int radius = 16; 233 int radius = 16;
234 QPoint center = QPoint( x + radius, y + radius ); 234 QPoint center = QPoint( x + radius, y + radius );
235 QPoint dXY = center - event->pos(); 235 QPoint dXY = center - event->pos();
236 int dist = dXY.x() * dXY.x() + dXY.y() * dXY.y(); 236 int dist = dXY.x() * dXY.x() + dXY.y() * dXY.y();
237 bool isOnButton = dist <= (radius * radius); 237 bool isOnButton = dist <= (radius * radius);
238 if ( isOnButton != videoButtons[i].isHeld ) { 238 if ( isOnButton != videoButtons[i].isHeld ) {
239 videoButtons[i].isHeld = isOnButton; 239 videoButtons[i].isHeld = isOnButton;
240 toggleButton(i); 240 toggleButton(i);
241 } 241 }
242 } else { 242 } else {
243 if ( videoButtons[i].isHeld ) { 243 if ( videoButtons[i].isHeld ) {
244 videoButtons[i].isHeld = FALSE; 244 videoButtons[i].isHeld = FALSE;
245 if ( !videoButtons[i].isToggle ) 245 if ( !videoButtons[i].isToggle )
246 setToggleButton( i, FALSE ); 246 setToggleButton( i, FALSE );
247 qDebug("button toggled3 %d",i);
247 } 248 }
249
248 } 250 }
249 switch (i) { 251 switch (i) {
250 case VideoPlay: mediaPlayerState->setPlaying(videoButtons[i].isDown); return; 252 case VideoPlay: mediaPlayerState->setPlaying(videoButtons[i].isDown); return;
251 case VideoStop: mediaPlayerState->setPlaying(FALSE); return; 253 case VideoStop: mediaPlayerState->setPlaying(FALSE); return;
252 case VideoPause: mediaPlayerState->setPaused(videoButtons[i].isDown); return; 254 case VideoPause: mediaPlayerState->setPaused(videoButtons[i].isDown); return;
253 case VideoNext: mediaPlayerState->setNext(); return; 255 case VideoNext: mediaPlayerState->setNext(); return;
254 case VideoPrevious: mediaPlayerState->setPrev(); return; 256 case VideoPrevious: mediaPlayerState->setPrev(); return;
255 case VideoPlayList: mediaPlayerState->setList(); return; 257 case VideoPlayList: mediaPlayerState->setList(); return;
256 case VideoFullscreen: mediaPlayerState->setFullscreen( TRUE ); makeVisible(); return; 258 case VideoFullscreen: mediaPlayerState->setFullscreen( TRUE ); makeVisible(); return;
257 } 259 }
258 260
259 } 261 }
260} 262}
261 263
262 264
263void VideoWidget::mousePressEvent( QMouseEvent *event ) { 265void VideoWidget::mousePressEvent( QMouseEvent *event ) {
264 mouseMoveEvent( event ); 266 mouseMoveEvent( event );
265} 267}
266 268
267 269
268void VideoWidget::mouseReleaseEvent( QMouseEvent *event ) { 270void VideoWidget::mouseReleaseEvent( QMouseEvent *event ) {
269 if ( mediaPlayerState->fullscreen() ) { 271 if ( mediaPlayerState->fullscreen() ) {
270 mediaPlayerState->setFullscreen( FALSE ); 272 mediaPlayerState->setFullscreen( FALSE );
271 makeVisible(); 273 makeVisible();
272 274
273 mouseMoveEvent( event ); 275 mouseMoveEvent( event );
274 } 276 }
275} 277}
276 278
277 279
278void VideoWidget::makeVisible() { 280void VideoWidget::makeVisible() {
279 if ( mediaPlayerState->fullscreen() ) { 281 if ( mediaPlayerState->fullscreen() ) {
280 setBackgroundMode( QWidget::NoBackground ); 282 setBackgroundMode( QWidget::NoBackground );
281 showFullScreen(); 283 showFullScreen();
282 resize( qApp->desktop()->size() ); 284 resize( qApp->desktop()->size() );
283 slider->hide(); 285 slider->hide();
284 videoFrame-> setGeometry ( 0, 0, width ( ), height ( )); 286 videoFrame-> setGeometry ( 0, 0, width ( ), height ( ));
285 } else { 287 } else {
286 setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) ); 288 setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) );
287 showNormal(); 289 showNormal();
288 showMaximized(); 290 showMaximized();
289 slider->show(); 291 slider->show();
290 videoFrame->setGeometry( QRect( 10, 20, 220, 160 ) ); 292 videoFrame->setGeometry( QRect( 10, 20, 220, 160 ) );
291 } 293 }
292} 294}
293 295
294 296
295void VideoWidget::paintEvent( QPaintEvent * ) { 297void VideoWidget::paintEvent( QPaintEvent * ) {
296 QPainter p( this ); 298 QPainter p( this );
297 299
298 if ( mediaPlayerState->fullscreen() ) { 300 if ( mediaPlayerState->fullscreen() ) {
299 // Clear the background 301 // Clear the background
300 p.setBrush( QBrush( Qt::black ) ); 302 p.setBrush( QBrush( Qt::black ) );
301// videoFrame->setGeometry( QRect( 0, 0 , 240 ,320 ) ); 303// videoFrame->setGeometry( QRect( 0, 0 , 240 ,320 ) );
302 304
303 } else { 305 } else {
304 306
305 // videoFrame->setGeometry( QRect( 0, 15 , 240 ,170 ) ); 307 // videoFrame->setGeometry( QRect( 0, 15 , 240 ,170 ) );
306 // draw the buttons 308 // draw the buttons
307 309
308 for ( int i = 0; i < numButtons; i++ ) { 310 for ( int i = 0; i < numButtons; i++ ) {
309 paintButton( &p, i ); 311 paintButton( &p, i );
310 } 312 }
311 // draw the slider 313 // draw the slider
312 slider->repaint( TRUE ); 314 slider->repaint( TRUE );
313 } 315 }
314} 316}
315 317
316 318
317void VideoWidget::closeEvent( QCloseEvent* ) { 319void VideoWidget::closeEvent( QCloseEvent* ) {
318 mediaPlayerState->setList(); 320 mediaPlayerState->setList();
319} 321}
320 322
321 323
322bool VideoWidget::playVideo() {
323 bool result = FALSE;
324
325 int stream = 0;
326
327 int sw = 240;
328 int sh = 320;
329 int dd = QPixmap::defaultDepth();
330 int w = height();
331 int h = width();
332
333 return true;
334}
335
336
337 324
338void VideoWidget::keyReleaseEvent( QKeyEvent *e) 325void VideoWidget::keyReleaseEvent( QKeyEvent *e)
339{ 326{
340 switch ( e->key() ) { 327 switch ( e->key() ) {
341////////////////////////////// Zaurus keys 328////////////////////////////// Zaurus keys
342 case Key_Home: 329 case Key_Home:
343 break; 330 break;
344 case Key_F9: //activity 331 case Key_F9: //activity
345 break; 332 break;
346 case Key_F10: //contacts 333 case Key_F10: //contacts
347// hide(); 334// hide();
348 break; 335 break;
349 case Key_F11: //menu 336 case Key_F11: //menu
350 break; 337 break;
351 case Key_F12: //home 338 case Key_F12: //home
352 break; 339 break;
353 case Key_F13: //mail 340 case Key_F13: //mail
354 break; 341 break;
355 case Key_Space: { 342 case Key_Space: {
356 if(mediaPlayerState->playing()) { 343 if(mediaPlayerState->playing()) {
357 mediaPlayerState->setPlaying(FALSE); 344 mediaPlayerState->setPlaying(FALSE);
358 } else { 345 } else {
359 mediaPlayerState->setPlaying(TRUE); 346 mediaPlayerState->setPlaying(TRUE);
360 } 347 }
361 } 348 }
362 break; 349 break;
363 case Key_Down: 350 case Key_Down:
364// toggleButton(6); 351// toggleButton(6);
365// emit lessClicked(); 352// emit lessClicked();
366// emit lessReleased(); 353// emit lessReleased();
367// toggleButton(6); 354// toggleButton(6);
368 break; 355 break;
369 case Key_Up: 356 case Key_Up:
370// toggleButton(5); 357// toggleButton(5);
371// emit moreClicked(); 358// emit moreClicked();
372// emit moreReleased(); 359// emit moreReleased();
373// toggleButton(5); 360// toggleButton(5);
374 break; 361 break;
375 case Key_Right: 362 case Key_Right:
376 mediaPlayerState->setNext(); 363 mediaPlayerState->setNext();
377 break; 364 break;
378 case Key_Left: 365 case Key_Left:
379 mediaPlayerState->setPrev(); 366 mediaPlayerState->setPrev();
380 break; 367 break;
381 case Key_Escape: 368 case Key_Escape:
382 break; 369 break;
383 370
384 }; 371 };
385} 372}
386XineVideoWidget* VideoWidget::vidWidget() { 373XineVideoWidget* VideoWidget::vidWidget() {
387 return videoFrame; 374 return videoFrame;
388} 375}
389 376
390 377
391void VideoWidget::setFullscreen ( bool b ) 378void VideoWidget::setFullscreen ( bool b )
392{ 379{
393 setToggleButton( VideoFullscreen, b ); 380 setToggleButton( VideoFullscreen, b );
394} \ No newline at end of file 381}
diff --git a/noncore/multimedia/opieplayer2/videowidget.h b/noncore/multimedia/opieplayer2/videowidget.h
index fc53f89..04e810e 100644
--- a/noncore/multimedia/opieplayer2/videowidget.h
+++ b/noncore/multimedia/opieplayer2/videowidget.h
@@ -1,102 +1,101 @@
1/* 1/*
2                This file is part of the Opie Project 2                This file is part of the Opie Project
3 3
4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org> 4              Copyright (c) 2002 Max Reiss <harlekin@handhelds.org>
5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com> 5 Copyright (c) 2002 L. Potter <ljp@llornkcor.com>
6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org> 6 Copyright (c) 2002 Holger Freyther <zecke@handhelds.org>
7 =. 7 =.
8 .=l. 8 .=l.
9           .>+-= 9           .>+-=
10 _;:,     .>    :=|. This program is free software; you can 10 _;:,     .>    :=|. This program is free software; you can
11.> <`_,   >  .   <= redistribute it and/or modify it under 11.> <`_,   >  .   <= redistribute it and/or modify it under
12:`=1 )Y*s>-.--   : the terms of the GNU General Public 12:`=1 )Y*s>-.--   : the terms of the GNU General Public
13.="- .-=="i,     .._ License as published by the Free Software 13.="- .-=="i,     .._ License as published by the Free Software
14 - .   .-<_>     .<> Foundation; either version 2 of the License, 14 - .   .-<_>     .<> Foundation; either version 2 of the License,
15     ._= =}       : or (at your option) any later version. 15     ._= =}       : or (at your option) any later version.
16    .%`+i>       _;_. 16    .%`+i>       _;_.
17    .i_,=:_.      -<s. This program is distributed in the hope that 17    .i_,=:_.      -<s. This program is distributed in the hope that
18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 18     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
19    : ..    .:,     . . . without even the implied warranty of 19    : ..    .:,     . . . without even the implied warranty of
20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 20    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 21  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
22..}^=.=       =       ; Library General Public License for more 22..}^=.=       =       ; Library General Public License for more
23++=   -.     .`     .: details. 23++=   -.     .`     .: details.
24 :     =  ...= . :.=- 24 :     =  ...= . :.=-
25 -.   .:....=;==+<; You should have received a copy of the GNU 25 -.   .:....=;==+<; You should have received a copy of the GNU
26  -_. . .   )=.  = Library General Public License along with 26  -_. . .   )=.  = Library General Public License along with
27    --        :-=` this library; see the file COPYING.LIB. 27    --        :-=` this library; see the file COPYING.LIB.
28 If not, write to the Free Software Foundation, 28 If not, write to the Free Software Foundation,
29 Inc., 59 Temple Place - Suite 330, 29 Inc., 59 Temple Place - Suite 330,
30 Boston, MA 02111-1307, USA. 30 Boston, MA 02111-1307, USA.
31 31
32*/ 32*/
33 33
34#ifndef VIDEO_WIDGET_H 34#ifndef VIDEO_WIDGET_H
35#define VIDEO_WIDGET_H 35#define VIDEO_WIDGET_H
36 36
37#include <qwidget.h> 37#include <qwidget.h>
38#include "xinevideowidget.h" 38#include "xinevideowidget.h"
39 39
40class QPixmap; 40class QPixmap;
41class QSlider; 41class QSlider;
42 42
43enum VideoButtons { 43enum VideoButtons {
44 VideoPrevious, 44 VideoPrevious,
45 VideoStop, 45 VideoStop,
46 VideoPlay, 46 VideoPlay,
47 VideoPause, 47 VideoPause,
48 VideoNext, 48 VideoNext,
49 VideoPlayList, 49 VideoPlayList,
50 VideoFullscreen 50 VideoFullscreen
51}; 51};
52 52
53class VideoWidget : public QWidget { 53class VideoWidget : public QWidget {
54 Q_OBJECT 54 Q_OBJECT
55public: 55public:
56 VideoWidget( QWidget* parent=0, const char* name=0, WFlags f=0 ); 56 VideoWidget( QWidget* parent=0, const char* name=0, WFlags f=0 );
57 ~VideoWidget(); 57 ~VideoWidget();
58 58
59 bool playVideo();
60 XineVideoWidget* vidWidget(); 59 XineVideoWidget* vidWidget();
61public slots: 60public slots:
62 void updateSlider( long, long ); 61 void updateSlider( long, long );
63 void sliderPressed( ); 62 void sliderPressed( );
64 void sliderReleased( ); 63 void sliderReleased( );
65 void setPaused( bool b) { setToggleButton( VideoPause, b ); } 64 void setPaused( bool b) { setToggleButton( VideoPause, b ); }
66 void setPlaying( bool b) { setToggleButton( VideoPlay, b ); } 65 void setPlaying( bool b) { setToggleButton( VideoPlay, b ); }
67 void setFullscreen( bool b ); 66 void setFullscreen( bool b );
68 void makeVisible(); 67 void makeVisible();
69 void setPosition( long ); 68 void setPosition( long );
70 void setLength( long ); 69 void setLength( long );
71 void setView( char ); 70 void setView( char );
72 71
73signals: 72signals:
74 void sliderMoved( long ); 73 void sliderMoved( long );
75 void videoResized ( const QSize &s ); 74 void videoResized ( const QSize &s );
76 75
77protected: 76protected:
78 void paintEvent( QPaintEvent *pe ); 77 void paintEvent( QPaintEvent *pe );
79 void mouseMoveEvent( QMouseEvent *event ); 78 void mouseMoveEvent( QMouseEvent *event );
80 void mousePressEvent( QMouseEvent *event ); 79 void mousePressEvent( QMouseEvent *event );
81 void mouseReleaseEvent( QMouseEvent *event ); 80 void mouseReleaseEvent( QMouseEvent *event );
82 void closeEvent( QCloseEvent *event ); 81 void closeEvent( QCloseEvent *event );
83 void keyReleaseEvent( QKeyEvent *e); 82 void keyReleaseEvent( QKeyEvent *e);
84 83
85private: 84private:
86 void paintButton( QPainter *p, int i ); 85 void paintButton( QPainter *p, int i );
87 void toggleButton( int ); 86 void toggleButton( int );
88 void setToggleButton( int, bool ); 87 void setToggleButton( int, bool );
89 88
90 QString backgroundPix; 89 QString backgroundPix;
91 QSlider *slider; 90 QSlider *slider;
92 QPixmap *pixmaps[3]; 91 QPixmap *pixmaps[3];
93 QImage *currentFrame; 92 QImage *currentFrame;
94 int scaledWidth; 93 int scaledWidth;
95 int scaledHeight; 94 int scaledHeight;
96 XineVideoWidget* videoFrame; 95 XineVideoWidget* videoFrame;
97}; 96};
98 97
99#endif // VIDEO_WIDGET_H 98#endif // VIDEO_WIDGET_H
100 99
101 100
102 101
diff --git a/noncore/multimedia/opieplayer2/volumecontrol.cpp b/noncore/multimedia/opieplayer2/volumecontrol.cpp
new file mode 100644
index 0000000..b8ec0df
--- a/dev/null
+++ b/noncore/multimedia/opieplayer2/volumecontrol.cpp
@@ -0,0 +1,59 @@
1
2#include <qpe/qpeapplication.h>
3#include <qpe/config.h>
4#include "qpe/qcopenvelope_qws.h"
5#include <qmessagebox.h>
6
7#include "volumecontrol.h"
8
9int VolumeControl::getVolume() {
10 int volumePerc;
11 Config cfg( "qpe" );
12 cfg. setGroup( "Volume" );
13 volumePerc = cfg. readNumEntry( "VolumePercent", 50 );
14 m_volumePerc = volumePerc;
15 return volumePerc;
16}
17
18
19void VolumeControl::setVolume( int volumePerc ) {
20 Config cfg("qpe");
21 cfg.setGroup("Volume");
22
23 if ( volumePerc > 100 ) {
24 volumePerc = 100;
25 }
26 if ( volumePerc < 0 ) {
27 volumePerc = 0;
28 }
29
30 m_volumePerc = volumePerc;
31 cfg.writeEntry("VolumePercent", volumePerc );
32 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << false;
33}
34
35
36void VolumeControl::incVol( int ammount ) {
37 int oldVol = getVolume();
38 setVolume( oldVol + ammount);
39}
40
41void VolumeControl::decVol( int ammount ) {
42 int oldVol = getVolume();
43 setVolume( oldVol - ammount);
44}
45
46
47VolumeControl::VolumeControl( ) {
48 getVolume();
49}
50
51VolumeControl::~VolumeControl() {
52 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << false;
53}
54
55
56
57
58
59
diff --git a/noncore/multimedia/opieplayer2/volumecontrol.h b/noncore/multimedia/opieplayer2/volumecontrol.h
new file mode 100644
index 0000000..37be398
--- a/dev/null
+++ b/noncore/multimedia/opieplayer2/volumecontrol.h
@@ -0,0 +1,47 @@
1/*************
2 * this is only a quick hack and will be later replaced by osound
3 *
4 **********/
5
6
7#ifndef VOLUMECONTROL_H
8#define VOLUMECONTROL_H
9
10
11
12#include <qobject.h>
13
14class VolumeControl : public QObject {
15 Q_OBJECT
16public:
17 VolumeControl();
18 ~VolumeControl();
19
20 // increase by "ammount"
21 void incVol( int ammount );
22 void decVol( int ammount );
23
24 /**
25 * Get the volume in percent
26 * @return volume percentage
27 */
28 int getVolume();
29
30public slots:
31
32 /**
33 * Set the volume in percent
34 * @value volumePerc between 0 and 100
35 */
36 void setVolume( int volumePerc );
37
38
39
40private:
41
42 int m_volumePerc;
43
44};
45
46#endif
47