summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/audiowidget.cpp4
-rw-r--r--noncore/multimedia/opieplayer2/mediaplayerstate.h6
-rw-r--r--noncore/multimedia/opieplayer2/videowidget.cpp4
-rw-r--r--noncore/multimedia/opieplayer2/xinecontrol.cpp2
4 files changed, 8 insertions, 8 deletions
diff --git a/noncore/multimedia/opieplayer2/audiowidget.cpp b/noncore/multimedia/opieplayer2/audiowidget.cpp
index 6ccf206..a52319b 100644
--- a/noncore/multimedia/opieplayer2/audiowidget.cpp
+++ b/noncore/multimedia/opieplayer2/audiowidget.cpp
@@ -50,505 +50,505 @@
50#include "mediaplayerstate.h" 50#include "mediaplayerstate.h"
51#include "playlistwidget.h" 51#include "playlistwidget.h"
52 52
53extern MediaPlayerState *mediaPlayerState; 53extern MediaPlayerState *mediaPlayerState;
54extern PlayListWidget *playList; 54extern PlayListWidget *playList;
55 55
56static const int xo = -2; // movable x offset 56static const int xo = -2; // movable x offset
57static const int yo = 22; // movable y offset 57static const int yo = 22; // movable y offset
58 58
59struct MediaButton { 59struct MediaButton {
60 bool isToggle, isHeld, isDown; 60 bool isToggle, isHeld, isDown;
61}; 61};
62 62
63//Layout information for the audioButtons (and if it is a toggle button or not) 63//Layout information for the audioButtons (and if it is a toggle button or not)
64MediaButton audioButtons[] = { 64MediaButton audioButtons[] = {
65 { TRUE, FALSE, FALSE }, // play 65 { TRUE, FALSE, FALSE }, // play
66 { FALSE, FALSE, FALSE }, // stop 66 { FALSE, FALSE, FALSE }, // stop
67 { FALSE, FALSE, FALSE }, // next 67 { FALSE, FALSE, FALSE }, // next
68 { FALSE, FALSE, FALSE }, // previous 68 { FALSE, FALSE, FALSE }, // previous
69 { FALSE, FALSE, FALSE }, // volume up 69 { FALSE, FALSE, FALSE }, // volume up
70 { FALSE, FALSE, FALSE }, // volume down 70 { FALSE, FALSE, FALSE }, // volume down
71 { TRUE, FALSE, FALSE }, // repeat/loop 71 { TRUE, FALSE, FALSE }, // repeat/loop
72 { FALSE, FALSE, FALSE }, // playlist 72 { FALSE, FALSE, FALSE }, // playlist
73 { FALSE, FALSE, FALSE }, // forward 73 { FALSE, FALSE, FALSE }, // forward
74 { FALSE, FALSE, FALSE } // back 74 { FALSE, FALSE, FALSE } // back
75}; 75};
76 76
77const char *skin_mask_file_names[10] = { 77const char *skin_mask_file_names[10] = {
78 "play", "stop", "next", "prev", "up", 78 "play", "stop", "next", "prev", "up",
79 "down", "loop", "playlist", "forward", "back" 79 "down", "loop", "playlist", "forward", "back"
80}; 80};
81 81
82 82
83static void changeTextColor( QWidget *w ) { 83static void changeTextColor( QWidget *w ) {
84 QPalette p = w->palette(); 84 QPalette p = w->palette();
85 p.setBrush( QColorGroup::Background, QColor( 167, 212, 167 ) ); 85 p.setBrush( QColorGroup::Background, QColor( 167, 212, 167 ) );
86 p.setBrush( QColorGroup::Base, QColor( 167, 212, 167 ) ); 86 p.setBrush( QColorGroup::Base, QColor( 167, 212, 167 ) );
87 w->setPalette( p ); 87 w->setPalette( p );
88} 88}
89 89
90static const int numButtons = (sizeof(audioButtons)/sizeof(MediaButton)); 90static const int numButtons = (sizeof(audioButtons)/sizeof(MediaButton));
91 91
92 92
93AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) : 93AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) :
94 94
95 QWidget( parent, name, f ), songInfo( this ), slider( Qt::Horizontal, this ), time( this ) { 95 QWidget( parent, name, f ), songInfo( this ), slider( Qt::Horizontal, this ), time( this ) {
96 96
97 setCaption( tr("OpiePlayer") ); 97 setCaption( tr("OpiePlayer") );
98 98
99 Config cfg("OpiePlayer"); 99 Config cfg("OpiePlayer");
100 cfg.setGroup("Options"); 100 cfg.setGroup("Options");
101 skin = cfg.readEntry("Skin","default"); 101 skin = cfg.readEntry("Skin","default");
102 //skin = "scaleTest"; 102 //skin = "scaleTest";
103 // color of background, frame, degree of transparency 103 // color of background, frame, degree of transparency
104 104
105 QString skinPath = "opieplayer2/skins/" + skin; 105 QString skinPath = "opieplayer2/skins/" + skin;
106 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) ); 106 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) );
107 imgUp = new QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) ); 107 imgUp = new QImage( Resource::loadImage( QString("%1/skin_up").arg(skinPath) ) );
108 imgDn = new QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) ); 108 imgDn = new QImage( Resource::loadImage( QString("%1/skin_down").arg(skinPath) ) );
109 109
110 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 ); 110 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 );
111 imgButtonMask->fill( 0 ); 111 imgButtonMask->fill( 0 );
112 112
113 for ( int i = 0; i < 10; i++ ) { 113 for ( int i = 0; i < 10; i++ ) {
114 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skin_mask_" + skin_mask_file_names[i] + ".png" ); 114 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skin_mask_" + skin_mask_file_names[i] + ".png" );
115 masks[i] = new QBitmap( filename ); 115 masks[i] = new QBitmap( filename );
116 116
117 if ( !masks[i]->isNull() ) { 117 if ( !masks[i]->isNull() ) {
118 QImage imgMask = masks[i]->convertToImage(); 118 QImage imgMask = masks[i]->convertToImage();
119 uchar **dest = imgButtonMask->jumpTable(); 119 uchar **dest = imgButtonMask->jumpTable();
120 for ( int y = 0; y < imgUp->height(); y++ ) { 120 for ( int y = 0; y < imgUp->height(); y++ ) {
121 uchar *line = dest[y]; 121 uchar *line = dest[y];
122 for ( int x = 0; x < imgUp->width(); x++ ) 122 for ( int x = 0; x < imgUp->width(); x++ )
123 if ( !qRed( imgMask.pixel( x, y ) ) ) 123 if ( !qRed( imgMask.pixel( x, y ) ) )
124 line[x] = i + 1; 124 line[x] = i + 1;
125 } 125 }
126 } 126 }
127 127
128 } 128 }
129 129
130 for ( int i = 0; i < 10; i++ ) { 130 for ( int i = 0; i < 10; i++ ) {
131 buttonPixUp[i] = 0l; 131 buttonPixUp[i] = 0l;
132 buttonPixDown[i] = 0l; 132 buttonPixDown[i] = 0l;
133 } 133 }
134 134
135 setBackgroundPixmap( *pixBg ); 135 setBackgroundPixmap( *pixBg );
136 136
137 songInfo.setFocusPolicy( QWidget::NoFocus ); 137 songInfo.setFocusPolicy( QWidget::NoFocus );
138// changeTextColor( &songInfo ); 138// changeTextColor( &songInfo );
139// songInfo.setBackgroundColor( QColor( 167, 212, 167 )); 139// songInfo.setBackgroundColor( QColor( 167, 212, 167 ));
140// songInfo.setFrameStyle( QFrame::NoFrame); 140// songInfo.setFrameStyle( QFrame::NoFrame);
141 songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken ); 141 songInfo.setFrameStyle( QFrame::WinPanel | QFrame::Sunken );
142// songInfo.setForegroundColor(Qt::white); 142// songInfo.setForegroundColor(Qt::white);
143 143
144 slider.setFixedHeight( 20 ); 144 slider.setFixedHeight( 20 );
145 slider.setMinValue( 0 ); 145 slider.setMinValue( 0 );
146 slider.setMaxValue( 1 ); 146 slider.setMaxValue( 1 );
147 slider.setFocusPolicy( QWidget::NoFocus ); 147 slider.setFocusPolicy( QWidget::NoFocus );
148 slider.setBackgroundPixmap( *pixBg ); 148 slider.setBackgroundPixmap( *pixBg );
149 149
150// Config cofg("qpe"); 150// Config cofg("qpe");
151// cofg.setGroup("Appearance"); 151// cofg.setGroup("Appearance");
152// QColor backgroundcolor = QColor( cofg.readEntry( "Background", "#E5E1D5" ) ); 152// QColor backgroundcolor = QColor( cofg.readEntry( "Background", "#E5E1D5" ) );
153 153
154 time.setFocusPolicy( QWidget::NoFocus ); 154 time.setFocusPolicy( QWidget::NoFocus );
155 time.setAlignment( Qt::AlignCenter ); 155 time.setAlignment( Qt::AlignCenter );
156 156
157// time.setFrame(FALSE); 157// time.setFrame(FALSE);
158// changeTextColor( &time ); 158// changeTextColor( &time );
159 159
160 resizeEvent( NULL ); 160 resizeEvent( NULL );
161 161
162 connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) ); 162 connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) );
163 connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) ); 163 connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) );
164 connect( mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) ); 164 connect( mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) );
165 connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) ); 165 connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) );
166 connect( mediaPlayerState, SIGNAL( isSeekableToggled( bool ) ), this, SLOT( setSeekable( bool ) ) ); 166 connect( mediaPlayerState, SIGNAL( isSeekableToggled( bool ) ), this, SLOT( setSeekable( bool ) ) );
167 167
168 connect( this, SIGNAL( forwardClicked() ), this, SLOT( skipFor() ) ); 168 connect( this, SIGNAL( forwardClicked() ), this, SLOT( skipFor() ) );
169 connect( this, SIGNAL( backClicked() ), this, SLOT( skipBack() ) ); 169 connect( this, SIGNAL( backClicked() ), this, SLOT( skipBack() ) );
170 connect( this, SIGNAL( forwardReleased() ), this, SLOT( stopSkip() ) ); 170 connect( this, SIGNAL( forwardReleased() ), this, SLOT( stopSkip() ) );
171 connect( this, SIGNAL( backReleased() ), this, SLOT( stopSkip() ) ); 171 connect( this, SIGNAL( backReleased() ), this, SLOT( stopSkip() ) );
172 172
173 // Intialise state 173 // Intialise state
174 setLength( mediaPlayerState->length() ); 174 setLength( mediaPlayerState->length() );
175 setPosition( mediaPlayerState->position() ); 175 setPosition( mediaPlayerState->position() );
176 setLooping( mediaPlayerState->fullscreen() ); 176 setLooping( mediaPlayerState->fullscreen() );
177 // setPaused( mediaPlayerState->paused() ); 177 // setPaused( mediaPlayerState->paused() );
178 setPlaying( mediaPlayerState->playing() ); 178 setPlaying( mediaPlayerState->playing() );
179 179
180} 180}
181 181
182AudioWidget::~AudioWidget() { 182AudioWidget::~AudioWidget() {
183 183
184 for ( int i = 0; i < 10; i++ ) { 184 for ( int i = 0; i < 10; i++ ) {
185 delete buttonPixUp[i]; 185 delete buttonPixUp[i];
186 delete buttonPixDown[i]; 186 delete buttonPixDown[i];
187 } 187 }
188 delete pixBg; 188 delete pixBg;
189 delete imgUp; 189 delete imgUp;
190 delete imgDn; 190 delete imgDn;
191 delete imgButtonMask; 191 delete imgButtonMask;
192 for ( int i = 0; i < 10; i++ ) { 192 for ( int i = 0; i < 10; i++ ) {
193 delete masks[i]; 193 delete masks[i];
194 } 194 }
195// mediaPlayerState->setPlaying(false); 195// mediaPlayerState->setPlaying(false);
196} 196}
197 197
198namespace { 198namespace {
199 199
200QPixmap *combineImageWithBackground( QImage img, QPixmap bg, QPoint offset ) { 200QPixmap *combineImageWithBackground( QImage img, QPixmap bg, QPoint offset ) {
201 QPixmap pix( img.width(), img.height() ); 201 QPixmap pix( img.width(), img.height() );
202 QPainter p( &pix ); 202 QPainter p( &pix );
203 p.drawTiledPixmap( pix.rect(), bg, offset ); 203 p.drawTiledPixmap( pix.rect(), bg, offset );
204 p.drawImage( 0, 0, img ); 204 p.drawImage( 0, 0, img );
205 return new QPixmap( pix ); 205 return new QPixmap( pix );
206} 206}
207 207
208 208
209QPixmap *maskPixToMask( QPixmap pix, QBitmap mask ) { 209QPixmap *maskPixToMask( QPixmap pix, QBitmap mask ) {
210 QPixmap *pixmap = new QPixmap( pix ); 210 QPixmap *pixmap = new QPixmap( pix );
211 pixmap->setMask( mask ); 211 pixmap->setMask( mask );
212 return pixmap; 212 return pixmap;
213} 213}
214 214
215}; 215};
216 216
217void AudioWidget::resizeEvent( QResizeEvent * ) { 217void AudioWidget::resizeEvent( QResizeEvent * ) {
218 int h = height(); 218 int h = height();
219 int w = width(); 219 int w = width();
220 220
221 songInfo.setGeometry( QRect( 2, 2, w - 4, 20 ) ); 221 songInfo.setGeometry( QRect( 2, 2, w - 4, 20 ) );
222 slider.setFixedWidth( w - 110 ); 222 slider.setFixedWidth( w - 110 );
223 slider.setGeometry( QRect( 15, h - 22, w - 90, 20 ) ); 223 slider.setGeometry( QRect( 15, h - 22, w - 90, 20 ) );
224 slider.setBackgroundOrigin( QWidget::ParentOrigin ); 224 slider.setBackgroundOrigin( QWidget::ParentOrigin );
225 time.setGeometry( QRect( w - 85, h - 30, 70, 20 ) ); 225 time.setGeometry( QRect( w - 85, h - 30, 70, 20 ) );
226 226
227 xoff = ( w - imgUp->width() ) / 2; 227 xoff = ( w - imgUp->width() ) / 2;
228 yoff = (( h - imgUp->height() ) / 2) - 10; 228 yoff = (( h - imgUp->height() ) / 2) - 10;
229 QPoint p( xoff, yoff ); 229 QPoint p( xoff, yoff );
230 230
231 QPixmap *pixUp = combineImageWithBackground( *imgUp, *pixBg, p ); 231 QPixmap *pixUp = combineImageWithBackground( *imgUp, *pixBg, p );
232 QPixmap *pixDn = combineImageWithBackground( *imgDn, *pixBg, p ); 232 QPixmap *pixDn = combineImageWithBackground( *imgDn, *pixBg, p );
233 233
234 for ( int i = 0; i < 10; i++ ) { 234 for ( int i = 0; i < 10; i++ ) {
235 if ( !masks[i]->isNull() ) { 235 if ( !masks[i]->isNull() ) {
236 delete buttonPixUp[i]; 236 delete buttonPixUp[i];
237 delete buttonPixDown[i]; 237 delete buttonPixDown[i];
238 buttonPixUp[i] = maskPixToMask( *pixUp, *masks[i] ); 238 buttonPixUp[i] = maskPixToMask( *pixUp, *masks[i] );
239 buttonPixDown[i] = maskPixToMask( *pixDn, *masks[i] ); 239 buttonPixDown[i] = maskPixToMask( *pixDn, *masks[i] );
240 } 240 }
241 } 241 }
242 242
243 delete pixUp; 243 delete pixUp;
244 delete pixDn; 244 delete pixDn;
245} 245}
246 246
247static bool audioSliderBeingMoved = FALSE; 247static bool audioSliderBeingMoved = FALSE;
248 248
249 249
250void AudioWidget::sliderPressed() { 250void AudioWidget::sliderPressed() {
251 audioSliderBeingMoved = TRUE; 251 audioSliderBeingMoved = TRUE;
252} 252}
253 253
254 254
255void AudioWidget::sliderReleased() { 255void AudioWidget::sliderReleased() {
256 audioSliderBeingMoved = FALSE; 256 audioSliderBeingMoved = FALSE;
257 if ( slider.width() == 0 ) 257 if ( slider.width() == 0 )
258 return; 258 return;
259 long val = long((double)slider.value() * mediaPlayerState->length() / slider.width()); 259 long val = long((double)slider.value() * mediaPlayerState->length() / slider.width());
260 mediaPlayerState->setPosition( val ); 260 mediaPlayerState->setPosition( val );
261} 261}
262 262
263void AudioWidget::setPosition( long i ) { 263void AudioWidget::setPosition( long i ) {
264 // qDebug("<<<<<<<<<<<<<<<<<<<<<<<<set position %d",i); 264 // qDebug("<<<<<<<<<<<<<<<<<<<<<<<<set position %d",i);
265 updateSlider( i, mediaPlayerState->length() ); 265 updateSlider( i, mediaPlayerState->length() );
266} 266}
267 267
268 268
269void AudioWidget::setLength( long max ) { 269void AudioWidget::setLength( long max ) {
270 updateSlider( mediaPlayerState->position(), max ); 270 updateSlider( mediaPlayerState->position(), max );
271} 271}
272 272
273 273
274void AudioWidget::setView( char view ) { 274void AudioWidget::setView( char view ) {
275 275
276if ( view == 'a' ) { 276if ( view == 'a' ) {
277 // startTimer( 150 ); 277 // startTimer( 150 );
278 showMaximized(); 278 showMaximized();
279 } else { 279 } else {
280 killTimers(); 280 killTimers();
281 hide(); 281 hide();
282 } 282 }
283 // qApp->processEvents(); 283 // qApp->processEvents();
284} 284}
285 285
286 286
287void AudioWidget::setSeekable( bool isSeekable ) { 287void AudioWidget::setSeekable( bool isSeekable ) {
288 288
289 if ( !isSeekable ) { 289 if ( !isSeekable ) {
290 qDebug("<<<<<<<<<<<<<<file is STREAMING>>>>>>>>>>>>>>>>>>>"); 290 qDebug("<<<<<<<<<<<<<<file is STREAMING>>>>>>>>>>>>>>>>>>>");
291 if( !slider.isHidden()) { 291 if( !slider.isHidden()) {
292 slider.hide(); 292 slider.hide();
293 } 293 }
294 disconnect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 294 disconnect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
295 disconnect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 295 disconnect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
296 disconnect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 296 disconnect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
297 disconnect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 297 disconnect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
298 } else { 298 } else {
299 // this stops the slider from being moved, thus 299 // this stops the slider from being moved, thus
300 // does not stop stream when it reaches the end 300 // does not stop stream when it reaches the end
301 slider.show(); 301 slider.show();
302 qDebug( " CONNECT SET POSTION " ); 302 qDebug( " CONNECT SET POSTION " );
303 connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 303 connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
304 connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 304 connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
305 connect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 305 connect( &slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
306 connect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 306 connect( &slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
307 } 307 }
308} 308}
309 309
310 310
311static QString timeAsString( long length ) { 311static QString timeAsString( long length ) {
312 int minutes = length / 60; 312 int minutes = length / 60;
313 int seconds = length % 60; 313 int seconds = length % 60;
314 return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 ); 314 return QString("%1:%2%3").arg( minutes ).arg( seconds / 10 ).arg( seconds % 10 );
315} 315}
316 316
317void AudioWidget::updateSlider( long i, long max ) { 317void AudioWidget::updateSlider( long i, long max ) {
318 318
319 time.setText( timeAsString( i ) + " / " + timeAsString( max ) ); 319 time.setText( timeAsString( i ) + " / " + timeAsString( max ) );
320// qDebug( timeAsString( i ) + " / " + timeAsString( max ) ) ; 320// qDebug( timeAsString( i ) + " / " + timeAsString( max ) ) ;
321 321
322 if ( max == 0 ) { 322 if ( max == 0 ) {
323 return; 323 return;
324 } 324 }
325 // Will flicker too much if we don't do this 325 // Will flicker too much if we don't do this
326 // Scale to something reasonable 326 // Scale to something reasonable
327 int width = slider.width(); 327 int width = slider.width();
328 int val = int((double)i * width / max); 328 int val = int((double)i * width / max);
329 if ( !audioSliderBeingMoved ) { 329 if ( !audioSliderBeingMoved ) {
330 if ( slider.value() != val ) { 330 if ( slider.value() != val ) {
331 slider.setValue( val ); 331 slider.setValue( val );
332 } 332 }
333 333
334 if ( slider.maxValue() != width ) { 334 if ( slider.maxValue() != width ) {
335 slider.setMaxValue( width ); 335 slider.setMaxValue( width );
336 } 336 }
337 } 337 }
338} 338}
339 339
340 340
341void AudioWidget::setToggleButton( int i, bool down ) { 341void AudioWidget::setToggleButton( int i, bool down ) {
342 qDebug("setToggleButton %d", i); 342 qDebug("setToggleButton %d", i);
343 if ( down != audioButtons[i].isDown ) { 343 if ( down != audioButtons[i].isDown ) {
344 toggleButton( i ); 344 toggleButton( i );
345 } 345 }
346} 346}
347 347
348 348
349void AudioWidget::toggleButton( int i ) { 349void AudioWidget::toggleButton( int i ) {
350 audioButtons[i].isDown = !audioButtons[i].isDown; 350 audioButtons[i].isDown = !audioButtons[i].isDown;
351 QPainter p(this); 351 QPainter p(this);
352 paintButton ( &p, i ); 352 paintButton ( &p, i );
353} 353}
354 354
355 355
356void AudioWidget::paintButton( QPainter *p, int i ) { 356void AudioWidget::paintButton( QPainter *p, int i ) {
357 if ( audioButtons[i].isDown ) { 357 if ( audioButtons[i].isDown ) {
358 p->drawPixmap( xoff, yoff, *buttonPixDown[i] ); 358 p->drawPixmap( xoff, yoff, *buttonPixDown[i] );
359 } else { 359 } else {
360 p->drawPixmap( xoff, yoff, *buttonPixUp[i] ); 360 p->drawPixmap( xoff, yoff, *buttonPixUp[i] );
361 } 361 }
362} 362}
363 363
364 364
365void AudioWidget::skipFor() { 365void AudioWidget::skipFor() {
366 skipDirection = +1; 366 skipDirection = +1;
367 startTimer( 50 ); 367 startTimer( 50 );
368 mediaPlayerState->setPosition( mediaPlayerState->position() + 2 ); 368 mediaPlayerState->setPosition( mediaPlayerState->position() + 2 );
369} 369}
370 370
371void AudioWidget::skipBack() { 371void AudioWidget::skipBack() {
372 skipDirection = -1; 372 skipDirection = -1;
373 startTimer( 50 ); 373 startTimer( 50 );
374 mediaPlayerState->setPosition( mediaPlayerState->position() - 2 ); 374 mediaPlayerState->setPosition( mediaPlayerState->position() - 2 );
375} 375}
376 376
377 377
378 378
379void AudioWidget::stopSkip() { 379void AudioWidget::stopSkip() {
380 killTimers(); 380 killTimers();
381} 381}
382 382
383 383
384void AudioWidget::timerEvent( QTimerEvent * ) { 384void AudioWidget::timerEvent( QTimerEvent * ) {
385 if ( skipDirection == +1 ) { 385 if ( skipDirection == +1 ) {
386 mediaPlayerState->setPosition( mediaPlayerState->position() + 2 ); 386 mediaPlayerState->setPosition( mediaPlayerState->position() + 2 );
387 } else if ( skipDirection == -1 ) { 387 } else if ( skipDirection == -1 ) {
388 mediaPlayerState->setPosition( mediaPlayerState->position() - 2 ); 388 mediaPlayerState->setPosition( mediaPlayerState->position() - 2 );
389 } 389 }
390} 390}
391 391
392 392
393void AudioWidget::mouseMoveEvent( QMouseEvent *event ) { 393void AudioWidget::mouseMoveEvent( QMouseEvent *event ) {
394 for ( int i = 0; i < numButtons; i++ ) { 394 for ( int i = 0; i < numButtons; i++ ) {
395 if ( event->state() == QMouseEvent::LeftButton ) { 395 if ( event->state() == QMouseEvent::LeftButton ) {
396 // The test to see if the mouse click is inside the button or not 396 // The test to see if the mouse click is inside the button or not
397 int x = event->pos().x() - xoff; 397 int x = event->pos().x() - xoff;
398 int y = event->pos().y() - yoff; 398 int y = event->pos().y() - yoff;
399 399
400 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask->width() 400 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask->width()
401 && y < imgButtonMask->height() 401 && y < imgButtonMask->height()
402 && imgButtonMask->pixelIndex( x, y ) == i + 1 ); 402 && imgButtonMask->pixelIndex( x, y ) == i + 1 );
403 403
404 if ( isOnButton && !audioButtons[i].isHeld ) { 404 if ( isOnButton && !audioButtons[i].isHeld ) {
405 audioButtons[i].isHeld = TRUE; 405 audioButtons[i].isHeld = TRUE;
406 toggleButton(i); 406 toggleButton(i);
407 switch (i) { 407 switch (i) {
408 case AudioVolumeUp: 408 case AudioVolumeUp:
409 emit moreClicked(); 409 emit moreClicked();
410 return; 410 return;
411 case AudioVolumeDown: 411 case AudioVolumeDown:
412 emit lessClicked(); 412 emit lessClicked();
413 return; 413 return;
414 case AudioForward: 414 case AudioForward:
415 emit forwardClicked(); 415 emit forwardClicked();
416 return; 416 return;
417 case AudioBack: 417 case AudioBack:
418 emit backClicked(); 418 emit backClicked();
419 return; 419 return;
420 } 420 }
421 } else if ( !isOnButton && audioButtons[i].isHeld ) { 421 } else if ( !isOnButton && audioButtons[i].isHeld ) {
422 audioButtons[i].isHeld = FALSE; 422 audioButtons[i].isHeld = FALSE;
423 toggleButton(i); 423 toggleButton(i);
424 } 424 }
425 } else { 425 } else {
426 if ( audioButtons[i].isHeld ) { 426 if ( audioButtons[i].isHeld ) {
427 audioButtons[i].isHeld = FALSE; 427 audioButtons[i].isHeld = FALSE;
428 if ( !audioButtons[i].isToggle ) { 428 if ( !audioButtons[i].isToggle ) {
429 setToggleButton( i, FALSE ); 429 setToggleButton( i, FALSE );
430 } 430 }
431 qDebug("mouseEvent %d", i); 431 qDebug("mouseEvent %d", i);
432 switch (i) { 432 switch (i) {
433 case AudioPlay: 433 case AudioPlay:
434 if( mediaPlayerState->isPaused ) { 434 if( mediaPlayerState->paused() ) {
435 mediaPlayerState->setPaused( FALSE ); 435 mediaPlayerState->setPaused( FALSE );
436 return; 436 return;
437 } else if( !mediaPlayerState->isPaused ) { 437 } else if( !mediaPlayerState->paused() ) {
438 mediaPlayerState->setPaused( TRUE ); 438 mediaPlayerState->setPaused( TRUE );
439 return; 439 return;
440 } 440 }
441 case AudioStop: mediaPlayerState->setPlaying(FALSE); return; 441 case AudioStop: mediaPlayerState->setPlaying(FALSE); return;
442 case AudioNext: if( playList->whichList() ==0 ) mediaPlayerState->setNext(); return; 442 case AudioNext: if( playList->whichList() ==0 ) mediaPlayerState->setNext(); return;
443 case AudioPrevious: if( playList->whichList() ==0 ) mediaPlayerState->setPrev(); return; 443 case AudioPrevious: if( playList->whichList() ==0 ) mediaPlayerState->setPrev(); return;
444 case AudioLoop: mediaPlayerState->setLooping(audioButtons[i].isDown); return; 444 case AudioLoop: mediaPlayerState->setLooping(audioButtons[i].isDown); return;
445 case AudioVolumeUp: emit moreReleased(); return; 445 case AudioVolumeUp: emit moreReleased(); return;
446 case AudioVolumeDown: emit lessReleased(); return; 446 case AudioVolumeDown: emit lessReleased(); return;
447 case AudioPlayList: mediaPlayerState->setList(); return; 447 case AudioPlayList: mediaPlayerState->setList(); return;
448 case AudioForward: emit forwardReleased(); return; 448 case AudioForward: emit forwardReleased(); return;
449 case AudioBack: emit backReleased(); return; 449 case AudioBack: emit backReleased(); return;
450 } 450 }
451 } 451 }
452 } 452 }
453 } 453 }
454} 454}
455 455
456 456
457void AudioWidget::mousePressEvent( QMouseEvent *event ) { 457void AudioWidget::mousePressEvent( QMouseEvent *event ) {
458 mouseMoveEvent( event ); 458 mouseMoveEvent( event );
459} 459}
460 460
461 461
462void AudioWidget::mouseReleaseEvent( QMouseEvent *event ) { 462void AudioWidget::mouseReleaseEvent( QMouseEvent *event ) {
463 mouseMoveEvent( event ); 463 mouseMoveEvent( event );
464} 464}
465 465
466 466
467void AudioWidget::showEvent( QShowEvent* ) { 467void AudioWidget::showEvent( QShowEvent* ) {
468 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 ); 468 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 );
469 mouseMoveEvent( &event ); 469 mouseMoveEvent( &event );
470} 470}
471 471
472 472
473void AudioWidget::closeEvent( QCloseEvent* ) { 473void AudioWidget::closeEvent( QCloseEvent* ) {
474 mediaPlayerState->setList(); 474 mediaPlayerState->setList();
475} 475}
476 476
477 477
478void AudioWidget::paintEvent( QPaintEvent * pe ) { 478void AudioWidget::paintEvent( QPaintEvent * pe ) {
479 if ( !pe->erased() ) { 479 if ( !pe->erased() ) {
480 // Combine with background and double buffer 480 // Combine with background and double buffer
481 QPixmap pix( pe->rect().size() ); 481 QPixmap pix( pe->rect().size() );
482 QPainter p( &pix ); 482 QPainter p( &pix );
483 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() ); 483 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() );
484 p.drawTiledPixmap( pe->rect(), *pixBg, pe->rect().topLeft() ); 484 p.drawTiledPixmap( pe->rect(), *pixBg, pe->rect().topLeft() );
485 for ( int i = 0; i < numButtons; i++ ) 485 for ( int i = 0; i < numButtons; i++ )
486 paintButton( &p, i ); 486 paintButton( &p, i );
487 QPainter p2( this ); 487 QPainter p2( this );
488 p2.drawPixmap( pe->rect().topLeft(), pix ); 488 p2.drawPixmap( pe->rect().topLeft(), pix );
489 } else { 489 } else {
490 QPainter p( this ); 490 QPainter p( this );
491 for ( int i = 0; i < numButtons; i++ ) 491 for ( int i = 0; i < numButtons; i++ )
492 paintButton( &p, i ); 492 paintButton( &p, i );
493 } 493 }
494} 494}
495 495
496void AudioWidget::keyReleaseEvent( QKeyEvent *e) { 496void AudioWidget::keyReleaseEvent( QKeyEvent *e) {
497 switch ( e->key() ) { 497 switch ( e->key() ) {
498 ////////////////////////////// Zaurus keys 498 ////////////////////////////// Zaurus keys
499 case Key_Home: 499 case Key_Home:
500 break; 500 break;
501 case Key_F9: //activity 501 case Key_F9: //activity
502 hide(); 502 hide();
503 // qDebug("Audio F9"); 503 // qDebug("Audio F9");
504 break; 504 break;
505 case Key_F10: //contacts 505 case Key_F10: //contacts
506 break; 506 break;
507 case Key_F11: //menu 507 case Key_F11: //menu
508 mediaPlayerState->toggleBlank(); 508 mediaPlayerState->toggleBlank();
509 break; 509 break;
510 case Key_F12: //home 510 case Key_F12: //home
511 break; 511 break;
512 case Key_F13: //mail 512 case Key_F13: //mail
513 mediaPlayerState->toggleBlank(); 513 mediaPlayerState->toggleBlank();
514 break; 514 break;
515 case Key_Space: { 515 case Key_Space: {
516 if(mediaPlayerState->playing()) { 516 if(mediaPlayerState->playing()) {
517 // toggleButton(1); 517 // toggleButton(1);
518 mediaPlayerState->setPlaying(FALSE); 518 mediaPlayerState->setPlaying(FALSE);
519 // toggleButton(1); 519 // toggleButton(1);
520 } else { 520 } else {
521 // toggleButton(0); 521 // toggleButton(0);
522 mediaPlayerState->setPlaying(TRUE); 522 mediaPlayerState->setPlaying(TRUE);
523 // toggleButton(0); 523 // toggleButton(0);
524 } 524 }
525 } 525 }
526 break; 526 break;
527 case Key_Down: 527 case Key_Down:
528 // toggleButton(6); 528 // toggleButton(6);
529 emit lessClicked(); 529 emit lessClicked();
530 emit lessReleased(); 530 emit lessReleased();
531 // toggleButton(6); 531 // toggleButton(6);
532 break; 532 break;
533 case Key_Up: 533 case Key_Up:
534 // toggleButton(5); 534 // toggleButton(5);
535 emit moreClicked(); 535 emit moreClicked();
536 emit moreReleased(); 536 emit moreReleased();
537 // toggleButton(5); 537 // toggleButton(5);
538 break; 538 break;
539 case Key_Right: 539 case Key_Right:
540 // toggleButton(3); 540 // toggleButton(3);
541 mediaPlayerState->setNext(); 541 mediaPlayerState->setNext();
542 // toggleButton(3); 542 // toggleButton(3);
543 break; 543 break;
544 case Key_Left: 544 case Key_Left:
545 // toggleButton(4); 545 // toggleButton(4);
546 mediaPlayerState->setPrev(); 546 mediaPlayerState->setPrev();
547 // toggleButton(4); 547 // toggleButton(4);
548 break; 548 break;
549 case Key_Escape: { 549 case Key_Escape: {
550 } 550 }
551 break; 551 break;
552 552
553 }; 553 };
554} 554}
diff --git a/noncore/multimedia/opieplayer2/mediaplayerstate.h b/noncore/multimedia/opieplayer2/mediaplayerstate.h
index 8c4e09e..154e3b0 100644
--- a/noncore/multimedia/opieplayer2/mediaplayerstate.h
+++ b/noncore/multimedia/opieplayer2/mediaplayerstate.h
@@ -1,143 +1,143 @@
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..}^=.=       =       ; General Public License for more 22..}^=.=       =       ; 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  -_. . .   )=.  = General Public License along with 26  -_. . .   )=.  = 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// this file is based on work by trolltech 34// this file is based on work by trolltech
35 35
36#ifndef MEDIA_PLAYER_STATE_H 36#ifndef MEDIA_PLAYER_STATE_H
37#define MEDIA_PLAYER_STATE_H 37#define MEDIA_PLAYER_STATE_H
38 38
39 39
40#include <qobject.h> 40#include <qobject.h>
41 41
42 42
43class MediaPlayerDecoder; 43class MediaPlayerDecoder;
44class Config; 44class Config;
45 45
46 46
47class MediaPlayerState : public QObject { 47class MediaPlayerState : public QObject {
48Q_OBJECT 48Q_OBJECT
49public: 49public:
50 MediaPlayerState( QObject *parent, const char *name ); 50 MediaPlayerState( QObject *parent, const char *name );
51 ~MediaPlayerState(); 51 ~MediaPlayerState();
52 52
53 bool isPaused;
54 bool isPlaying;
55 bool isStoped;
56 bool streaming(); 53 bool streaming();
57 bool seekable(); 54 bool seekable();
58 bool fullscreen(); 55 bool fullscreen();
59 bool scaled(); 56 bool scaled();
60 bool looping(); 57 bool looping();
61 bool shuffled(); 58 bool shuffled();
62 bool playlist(); 59 bool playlist();
63 bool paused(); 60 bool paused();
64 bool playing(); 61 bool playing();
65 bool stop(); 62 bool stop();
66 long position(); 63 long position();
67 long length(); 64 long length();
68 char view(); 65 char view();
69 66
70public slots: 67public slots:
71 void setIsStreaming( bool b ); 68 void setIsStreaming( bool b );
72 void setIsSeekable( bool b ); 69 void setIsSeekable( bool b );
73 void setFullscreen( bool b ); 70 void setFullscreen( bool b );
74 void setScaled( bool b ); 71 void setScaled( bool b );
75 void setLooping( bool b ); 72 void setLooping( bool b );
76 void setShuffled( bool b ); 73 void setShuffled( bool b );
77 void setPlaylist( bool b ); 74 void setPlaylist( bool b );
78 void setPaused( bool b ); 75 void setPaused( bool b );
79 void setPlaying( bool b ); 76 void setPlaying( bool b );
80 void setStop( bool b ); 77 void setStop( bool b );
81 void setPosition( long p ); 78 void setPosition( long p );
82 void updatePosition( long p ); 79 void updatePosition( long p );
83 void setLength( long l ); 80 void setLength( long l );
84 void setView( char v ); 81 void setView( char v );
85 void setBlanked( bool b ); 82 void setBlanked( bool b );
86 void setVideoGamma( int v ); 83 void setVideoGamma( int v );
87 84
88 void setPrev(); 85 void setPrev();
89 void setNext(); 86 void setNext();
90 void setList(); 87 void setList();
91 void setVideo(); 88 void setVideo();
92 void setAudio(); 89 void setAudio();
93 90
94 void toggleFullscreen(); 91 void toggleFullscreen();
95 void toggleScaled(); 92 void toggleScaled();
96 void toggleLooping(); 93 void toggleLooping();
97 void toggleShuffled(); 94 void toggleShuffled();
98 void togglePlaylist(); 95 void togglePlaylist();
99 void togglePaused(); 96 void togglePaused();
100 void togglePlaying(); 97 void togglePlaying();
101 void toggleBlank(); 98 void toggleBlank();
102 void writeConfig( Config& cfg ) const; 99 void writeConfig( Config& cfg ) const;
103 100
104 101
105signals: 102signals:
106 void fullscreenToggled( bool ); 103 void fullscreenToggled( bool );
107 void scaledToggled( bool ); 104 void scaledToggled( bool );
108 void loopingToggled( bool ); 105 void loopingToggled( bool );
109 void shuffledToggled( bool ); 106 void shuffledToggled( bool );
110 void playlistToggled( bool ); 107 void playlistToggled( bool );
111 void pausedToggled( bool ); 108 void pausedToggled( bool );
112 void playingToggled( bool ); 109 void playingToggled( bool );
113 void stopToggled( bool ); 110 void stopToggled( bool );
114 void positionChanged( long ); // When the slider is moved 111 void positionChanged( long ); // When the slider is moved
115 void positionUpdated( long ); // When the media file progresses 112 void positionUpdated( long ); // When the media file progresses
116 void lengthChanged( long ); 113 void lengthChanged( long );
117 void viewChanged( char ); 114 void viewChanged( char );
118 void isSeekableToggled( bool ); 115 void isSeekableToggled( bool );
119 void blankToggled( bool ); 116 void blankToggled( bool );
120 void videoGammaChanged( int ); 117 void videoGammaChanged( int );
121 void prev(); 118 void prev();
122 void next(); 119 void next();
123 120
124private: 121private:
125 bool isStreaming; 122 bool isStreaming;
126 bool isSeekable; 123 bool isSeekable;
127 bool isFullscreen; 124 bool isFullscreen;
128 bool isScaled; 125 bool isScaled;
129 bool isBlanked; 126 bool isBlanked;
130 bool isLooping; 127 bool isLooping;
131 bool isShuffled; 128 bool isShuffled;
132 bool usePlaylist; 129 bool usePlaylist;
130 bool isPaused;
131 bool isPlaying;
132 bool isStoped;
133 long curPosition; 133 long curPosition;
134 long curLength; 134 long curLength;
135 char curView; 135 char curView;
136 int videoGamma; 136 int videoGamma;
137 void readConfig( Config& cfg ); 137 void readConfig( Config& cfg );
138 138
139}; 139};
140 140
141 141
142#endif // MEDIA_PLAYER_STATE_H 142#endif // MEDIA_PLAYER_STATE_H
143 143
diff --git a/noncore/multimedia/opieplayer2/videowidget.cpp b/noncore/multimedia/opieplayer2/videowidget.cpp
index c643273..3a757f0 100644
--- a/noncore/multimedia/opieplayer2/videowidget.cpp
+++ b/noncore/multimedia/opieplayer2/videowidget.cpp
@@ -1,521 +1,521 @@
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/qpeapplication.h> 34#include <qpe/qpeapplication.h>
35#include <qpe/resource.h> 35#include <qpe/resource.h>
36#include <qpe/mediaplayerplugininterface.h> 36#include <qpe/mediaplayerplugininterface.h>
37#include <qpe/config.h> 37#include <qpe/config.h>
38 38
39 39
40#include <qwidget.h> 40#include <qwidget.h>
41#include <qpainter.h> 41#include <qpainter.h>
42#include <qpixmap.h> 42#include <qpixmap.h>
43#include <qslider.h> 43#include <qslider.h>
44#include <qdrawutil.h> 44#include <qdrawutil.h>
45#include "videowidget.h" 45#include "videowidget.h"
46#include "mediaplayerstate.h" 46#include "mediaplayerstate.h"
47#include "playlistwidget.h" 47#include "playlistwidget.h"
48 48
49 49
50#ifdef Q_WS_QWS 50#ifdef Q_WS_QWS
51# define USE_DIRECT_PAINTER 51# define USE_DIRECT_PAINTER
52# include <qdirectpainter_qws.h> 52# include <qdirectpainter_qws.h>
53# include <qgfxraster_qws.h> 53# include <qgfxraster_qws.h>
54#endif 54#endif
55 55
56 56
57extern MediaPlayerState *mediaPlayerState; 57extern MediaPlayerState *mediaPlayerState;
58extern PlayListWidget *playList; 58extern PlayListWidget *playList;
59 59
60 60
61static const int xo = 2; // movable x offset 61static const int xo = 2; // movable x offset
62static const int yo = 0; // movable y offset 62static const int yo = 0; // movable y offset
63 63
64 64
65struct MediaButton { 65struct MediaButton {
66 bool isToggle, isHeld, isDown; 66 bool isToggle, isHeld, isDown;
67}; 67};
68 68
69MediaButton videoButtons[] = { 69MediaButton videoButtons[] = {
70 { FALSE, FALSE, FALSE }, // stop 70 { FALSE, FALSE, FALSE }, // stop
71 { TRUE, FALSE, FALSE }, // play 71 { TRUE, FALSE, FALSE }, // play
72 { FALSE, FALSE, FALSE }, // previous 72 { FALSE, FALSE, FALSE }, // previous
73 { FALSE, FALSE, FALSE }, // next 73 { FALSE, FALSE, FALSE }, // next
74 { FALSE, FALSE, FALSE }, // volUp 74 { FALSE, FALSE, FALSE }, // volUp
75 { FALSE, FALSE, FALSE }, // volDown 75 { FALSE, FALSE, FALSE }, // volDown
76 { TRUE, FALSE, FALSE } // fullscreen 76 { TRUE, FALSE, FALSE } // fullscreen
77}; 77};
78 78
79const char *skinV_mask_file_names[7] = { 79const char *skinV_mask_file_names[7] = {
80"stop","play","back","fwd","up","down","full" 80"stop","play","back","fwd","up","down","full"
81}; 81};
82 82
83static const int numVButtons = (sizeof(videoButtons)/sizeof(MediaButton)); 83static const int numVButtons = (sizeof(videoButtons)/sizeof(MediaButton));
84 84
85 85
86VideoWidget::VideoWidget(QWidget* parent, const char* name, WFlags f) : 86VideoWidget::VideoWidget(QWidget* parent, const char* name, WFlags f) :
87QWidget( parent, name, f ), scaledWidth( 0 ), scaledHeight( 0 ) { 87QWidget( parent, name, f ), scaledWidth( 0 ), scaledHeight( 0 ) {
88 88
89 89
90 setCaption( tr("OpiePlayer - Video") ); 90 setCaption( tr("OpiePlayer - Video") );
91 91
92 videoFrame = new XineVideoWidget ( this, "Video frame" ); 92 videoFrame = new XineVideoWidget ( this, "Video frame" );
93 93
94 connect ( videoFrame, SIGNAL( videoResized ( const QSize & )), this, SIGNAL( videoResized ( const QSize & ))); 94 connect ( videoFrame, SIGNAL( videoResized ( const QSize & )), this, SIGNAL( videoResized ( const QSize & )));
95 connect ( videoFrame, SIGNAL( clicked () ), this, SLOT ( backToNormal() ) ); 95 connect ( videoFrame, SIGNAL( clicked () ), this, SLOT ( backToNormal() ) );
96 96
97 Config cfg("OpiePlayer"); 97 Config cfg("OpiePlayer");
98 cfg.setGroup("Options"); 98 cfg.setGroup("Options");
99 skin = cfg.readEntry("Skin","default"); 99 skin = cfg.readEntry("Skin","default");
100 100
101 QString skinPath = "opieplayer2/skins/" + skin; 101 QString skinPath = "opieplayer2/skins/" + skin;
102 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) ); 102 pixBg = new QPixmap( Resource::loadPixmap( QString("%1/background").arg(skinPath) ) );
103 imgUp = new QImage( Resource::loadImage( QString("%1/skinV_up").arg(skinPath) ) ); 103 imgUp = new QImage( Resource::loadImage( QString("%1/skinV_up").arg(skinPath) ) );
104 imgDn = new QImage( Resource::loadImage( QString("%1/skinV_down").arg(skinPath) ) ); 104 imgDn = new QImage( Resource::loadImage( QString("%1/skinV_down").arg(skinPath) ) );
105 105
106 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 ); 106 imgButtonMask = new QImage( imgUp->width(), imgUp->height(), 8, 255 );
107 imgButtonMask->fill( 0 ); 107 imgButtonMask->fill( 0 );
108 108
109 for ( int i = 0; i < 7; i++ ) { 109 for ( int i = 0; i < 7; i++ ) {
110 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skinV_mask_" + skinV_mask_file_names[i] + ".png" ); 110 QString filename = QString( QPEApplication::qpeDir() + "/pics/" + skinPath + "/skinV_mask_" + skinV_mask_file_names[i] + ".png" );
111 masks[i] = new QBitmap( filename ); 111 masks[i] = new QBitmap( filename );
112 112
113 if ( !masks[i]->isNull() ) { 113 if ( !masks[i]->isNull() ) {
114 QImage imgMask = masks[i]->convertToImage(); 114 QImage imgMask = masks[i]->convertToImage();
115 uchar **dest = imgButtonMask->jumpTable(); 115 uchar **dest = imgButtonMask->jumpTable();
116 for ( int y = 0; y < imgUp->height(); y++ ) { 116 for ( int y = 0; y < imgUp->height(); y++ ) {
117 uchar *line = dest[y]; 117 uchar *line = dest[y];
118 for ( int x = 0; x < imgUp->width(); x++ ) { 118 for ( int x = 0; x < imgUp->width(); x++ ) {
119 if ( !qRed( imgMask.pixel( x, y ) ) ) 119 if ( !qRed( imgMask.pixel( x, y ) ) )
120 line[x] = i + 1; 120 line[x] = i + 1;
121 } 121 }
122 } 122 }
123 } 123 }
124 } 124 }
125 125
126 for ( int i = 0; i < 7; i++ ) { 126 for ( int i = 0; i < 7; i++ ) {
127 buttonPixUp[i] = NULL; 127 buttonPixUp[i] = NULL;
128 buttonPixDown[i] = NULL; 128 buttonPixDown[i] = NULL;
129 } 129 }
130 130
131 setBackgroundPixmap( *pixBg ); 131 setBackgroundPixmap( *pixBg );
132 132
133 slider = new QSlider( Qt::Horizontal, this ); 133 slider = new QSlider( Qt::Horizontal, this );
134 slider->setMinValue( 0 ); 134 slider->setMinValue( 0 );
135 slider->setMaxValue( 1 ); 135 slider->setMaxValue( 1 );
136 slider->setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) ); 136 slider->setBackgroundPixmap( Resource::loadPixmap( backgroundPix ) );
137 //slider->setFocusPolicy( QWidget::NoFocus ); 137 //slider->setFocusPolicy( QWidget::NoFocus );
138 138
139 resizeEvent( NULL ); 139 resizeEvent( NULL );
140 140
141 connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) ); 141 connect( mediaPlayerState, SIGNAL( lengthChanged(long) ), this, SLOT( setLength(long) ) );
142 connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) ); 142 connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) );
143 connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) ); 143 connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) );
144 144
145 setLength( mediaPlayerState->length() ); 145 setLength( mediaPlayerState->length() );
146 setPosition( mediaPlayerState->position() ); 146 setPosition( mediaPlayerState->position() );
147 setFullscreen( mediaPlayerState->fullscreen() ); 147 setFullscreen( mediaPlayerState->fullscreen() );
148 setPlaying( mediaPlayerState->playing() ); 148 setPlaying( mediaPlayerState->playing() );
149} 149}
150 150
151 151
152VideoWidget::~VideoWidget() { 152VideoWidget::~VideoWidget() {
153 153
154 for ( int i = 0; i < 7; i++ ) { 154 for ( int i = 0; i < 7; i++ ) {
155 delete buttonPixUp[i]; 155 delete buttonPixUp[i];
156 delete buttonPixDown[i]; 156 delete buttonPixDown[i];
157 } 157 }
158 158
159 delete pixBg; 159 delete pixBg;
160 delete imgUp; 160 delete imgUp;
161 delete imgDn; 161 delete imgDn;
162 delete imgButtonMask; 162 delete imgButtonMask;
163 for ( int i = 0; i < 7; i++ ) { 163 for ( int i = 0; i < 7; i++ ) {
164 delete masks[i]; 164 delete masks[i];
165 } 165 }
166 166
167} 167}
168 168
169QPixmap *combineVImageWithBackground( QImage img, QPixmap bg, QPoint offset ) { 169QPixmap *combineVImageWithBackground( QImage img, QPixmap bg, QPoint offset ) {
170 QPixmap pix( img.width(), img.height() ); 170 QPixmap pix( img.width(), img.height() );
171 QPainter p( &pix ); 171 QPainter p( &pix );
172 p.drawTiledPixmap( pix.rect(), bg, offset ); 172 p.drawTiledPixmap( pix.rect(), bg, offset );
173 p.drawImage( 0, 0, img ); 173 p.drawImage( 0, 0, img );
174 return new QPixmap( pix ); 174 return new QPixmap( pix );
175} 175}
176 176
177QPixmap *maskVPixToMask( QPixmap pix, QBitmap mask ) { 177QPixmap *maskVPixToMask( QPixmap pix, QBitmap mask ) {
178 QPixmap *pixmap = new QPixmap( pix ); 178 QPixmap *pixmap = new QPixmap( pix );
179 pixmap->setMask( mask ); 179 pixmap->setMask( mask );
180 return pixmap; 180 return pixmap;
181} 181}
182 182
183void VideoWidget::resizeEvent( QResizeEvent * ) { 183void VideoWidget::resizeEvent( QResizeEvent * ) {
184 int h = height(); 184 int h = height();
185 int w = width(); 185 int w = width();
186 //int Vh = 160; 186 //int Vh = 160;
187 //int Vw = 220; 187 //int Vw = 220;
188 188
189 slider->setFixedWidth( w - 20 ); 189 slider->setFixedWidth( w - 20 );
190 slider->setGeometry( QRect( 15, h - 22, w - 90, 20 ) ); 190 slider->setGeometry( QRect( 15, h - 22, w - 90, 20 ) );
191 slider->setBackgroundOrigin( QWidget::ParentOrigin ); 191 slider->setBackgroundOrigin( QWidget::ParentOrigin );
192 slider->setFocusPolicy( QWidget::NoFocus ); 192 slider->setFocusPolicy( QWidget::NoFocus );
193 slider->setBackgroundPixmap( *pixBg ); 193 slider->setBackgroundPixmap( *pixBg );
194 194
195 xoff = 0;// ( imgUp->width() ) / 2; 195 xoff = 0;// ( imgUp->width() ) / 2;
196 if(w>h) 196 if(w>h)
197 yoff = 0; 197 yoff = 0;
198 else 198 else
199 yoff = 185;//(( Vh - imgUp->height() ) / 2) - 10; 199 yoff = 185;//(( Vh - imgUp->height() ) / 2) - 10;
200 QPoint p( xoff, yoff ); 200 QPoint p( xoff, yoff );
201 201
202 QPixmap *pixUp = combineVImageWithBackground( *imgUp, *pixBg, p ); 202 QPixmap *pixUp = combineVImageWithBackground( *imgUp, *pixBg, p );
203 QPixmap *pixDn = combineVImageWithBackground( *imgDn, *pixBg, p ); 203 QPixmap *pixDn = combineVImageWithBackground( *imgDn, *pixBg, p );
204 204
205 for ( int i = 0; i < 7; i++ ) { 205 for ( int i = 0; i < 7; i++ ) {
206 if ( !masks[i]->isNull() ) { 206 if ( !masks[i]->isNull() ) {
207 delete buttonPixUp[i]; 207 delete buttonPixUp[i];
208 delete buttonPixDown[i]; 208 delete buttonPixDown[i];
209 buttonPixUp[i] = maskVPixToMask( *pixUp, *masks[i] ); 209 buttonPixUp[i] = maskVPixToMask( *pixUp, *masks[i] );
210 buttonPixDown[i] = maskVPixToMask( *pixDn, *masks[i] ); 210 buttonPixDown[i] = maskVPixToMask( *pixDn, *masks[i] );
211 } 211 }
212 } 212 }
213 213
214 delete pixUp; 214 delete pixUp;
215 delete pixDn; 215 delete pixDn;
216} 216}
217 217
218static bool videoSliderBeingMoved = FALSE; 218static bool videoSliderBeingMoved = FALSE;
219 219
220void VideoWidget::sliderPressed() { 220void VideoWidget::sliderPressed() {
221 videoSliderBeingMoved = TRUE; 221 videoSliderBeingMoved = TRUE;
222} 222}
223 223
224void VideoWidget::sliderReleased() { 224void VideoWidget::sliderReleased() {
225 videoSliderBeingMoved = FALSE; 225 videoSliderBeingMoved = FALSE;
226 if ( slider->width() == 0 ) { 226 if ( slider->width() == 0 ) {
227 return; 227 return;
228 } 228 }
229 long val = long((double)slider->value() * mediaPlayerState->length() / slider->width()); 229 long val = long((double)slider->value() * mediaPlayerState->length() / slider->width());
230 mediaPlayerState->setPosition( val ); 230 mediaPlayerState->setPosition( val );
231} 231}
232 232
233void VideoWidget::setPosition( long i ) { 233void VideoWidget::setPosition( long i ) {
234 updateSlider( i, mediaPlayerState->length() ); 234 updateSlider( i, mediaPlayerState->length() );
235} 235}
236 236
237 237
238void VideoWidget::setLength( long max ) { 238void VideoWidget::setLength( long max ) {
239 updateSlider( mediaPlayerState->position(), max ); 239 updateSlider( mediaPlayerState->position(), max );
240} 240}
241 241
242void VideoWidget::setView( char view ) { 242void VideoWidget::setView( char view ) {
243 243
244 if ( view == 'v' ) { 244 if ( view == 'v' ) {
245 makeVisible(); 245 makeVisible();
246 } else { 246 } else {
247 // Effectively blank the view next time we show it so it looks nicer 247 // Effectively blank the view next time we show it so it looks nicer
248 scaledWidth = 0; 248 scaledWidth = 0;
249 scaledHeight = 0; 249 scaledHeight = 0;
250 hide(); 250 hide();
251 } 251 }
252} 252}
253 253
254void VideoWidget::updateSlider( long i, long max ) { 254void VideoWidget::updateSlider( long i, long max ) {
255 // Will flicker too much if we don't do this 255 // Will flicker too much if we don't do this
256 if ( max == 0 ) { 256 if ( max == 0 ) {
257 return; 257 return;
258 } 258 }
259 int width = slider->width(); 259 int width = slider->width();
260 int val = int((double)i * width / max); 260 int val = int((double)i * width / max);
261 if ( !mediaPlayerState->fullscreen() && !videoSliderBeingMoved ) { 261 if ( !mediaPlayerState->fullscreen() && !videoSliderBeingMoved ) {
262 if ( slider->value() != val ) { 262 if ( slider->value() != val ) {
263 slider->setValue( val ); 263 slider->setValue( val );
264 } 264 }
265 if ( slider->maxValue() != width ) { 265 if ( slider->maxValue() != width ) {
266 slider->setMaxValue( width ); 266 slider->setMaxValue( width );
267 } 267 }
268 } 268 }
269} 269}
270 270
271void VideoWidget::setToggleButton( int i, bool down ) { 271void VideoWidget::setToggleButton( int i, bool down ) {
272 if ( down != videoButtons[i].isDown ) { 272 if ( down != videoButtons[i].isDown ) {
273 toggleButton( i ); 273 toggleButton( i );
274 } 274 }
275} 275}
276 276
277void VideoWidget::toggleButton( int i ) { 277void VideoWidget::toggleButton( int i ) {
278 videoButtons[i].isDown = !videoButtons[i].isDown; 278 videoButtons[i].isDown = !videoButtons[i].isDown;
279 QPainter p(this); 279 QPainter p(this);
280 paintButton ( &p, i ); 280 paintButton ( &p, i );
281} 281}
282 282
283void VideoWidget::paintButton( QPainter *p, int i ) { 283void VideoWidget::paintButton( QPainter *p, int i ) {
284 284
285 if ( videoButtons[i].isDown ) { 285 if ( videoButtons[i].isDown ) {
286 p->drawPixmap( xoff, yoff, *buttonPixDown[i] ); 286 p->drawPixmap( xoff, yoff, *buttonPixDown[i] );
287 } else { 287 } else {
288 p->drawPixmap( xoff, yoff, *buttonPixUp[i] ); 288 p->drawPixmap( xoff, yoff, *buttonPixUp[i] );
289 } 289 }
290} 290}
291 291
292void VideoWidget::mouseMoveEvent( QMouseEvent *event ) { 292void VideoWidget::mouseMoveEvent( QMouseEvent *event ) {
293 for ( int i = 0; i < numVButtons; i++ ) { 293 for ( int i = 0; i < numVButtons; i++ ) {
294 if ( event->state() == QMouseEvent::LeftButton ) { 294 if ( event->state() == QMouseEvent::LeftButton ) {
295 // The test to see if the mouse click is inside the button or not 295 // The test to see if the mouse click is inside the button or not
296 int x = event->pos().x() - xoff; 296 int x = event->pos().x() - xoff;
297 int y = event->pos().y() - yoff; 297 int y = event->pos().y() - yoff;
298 298
299 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask->width() 299 bool isOnButton = ( x > 0 && y > 0 && x < imgButtonMask->width()
300 && y < imgButtonMask->height() 300 && y < imgButtonMask->height()
301 && imgButtonMask->pixelIndex( x, y ) == i + 1 ); 301 && imgButtonMask->pixelIndex( x, y ) == i + 1 );
302 302
303 if ( isOnButton && !videoButtons[i].isHeld ) { 303 if ( isOnButton && !videoButtons[i].isHeld ) {
304 videoButtons[i].isHeld = TRUE; 304 videoButtons[i].isHeld = TRUE;
305 toggleButton(i); 305 toggleButton(i);
306 306
307 switch (i) { 307 switch (i) {
308 case VideoVolUp: 308 case VideoVolUp:
309 emit moreClicked(); 309 emit moreClicked();
310 return; 310 return;
311 case VideoVolDown: 311 case VideoVolDown:
312 emit lessClicked(); 312 emit lessClicked();
313 return; 313 return;
314 } 314 }
315 } else if ( !isOnButton && videoButtons[i].isHeld ) { 315 } else if ( !isOnButton && videoButtons[i].isHeld ) {
316 videoButtons[i].isHeld = FALSE; 316 videoButtons[i].isHeld = FALSE;
317 toggleButton(i); 317 toggleButton(i);
318 } 318 }
319 } else { 319 } else {
320 320
321 if ( videoButtons[i].isHeld ) { 321 if ( videoButtons[i].isHeld ) {
322 videoButtons[i].isHeld = FALSE; 322 videoButtons[i].isHeld = FALSE;
323 if ( !videoButtons[i].isToggle ) { 323 if ( !videoButtons[i].isToggle ) {
324 setToggleButton( i, FALSE ); 324 setToggleButton( i, FALSE );
325 } 325 }
326 326
327 switch(i) { 327 switch(i) {
328 328
329 case VideoPlay: { 329 case VideoPlay: {
330 if( mediaPlayerState->isPaused ) { 330 if( mediaPlayerState->paused() ) {
331 setToggleButton( i, FALSE ); 331 setToggleButton( i, FALSE );
332 mediaPlayerState->setPaused( FALSE ); 332 mediaPlayerState->setPaused( FALSE );
333 return; 333 return;
334 } else if( !mediaPlayerState->isPaused ) { 334 } else if( !mediaPlayerState->paused() ) {
335 setToggleButton( i, TRUE ); 335 setToggleButton( i, TRUE );
336 mediaPlayerState->setPaused( TRUE ); 336 mediaPlayerState->setPaused( TRUE );
337 return; 337 return;
338 } else { 338 } else {
339 return; 339 return;
340 } 340 }
341 } 341 }
342 342
343 case VideoStop: mediaPlayerState->setPlaying( FALSE ); return; 343 case VideoStop: mediaPlayerState->setPlaying( FALSE ); return;
344 case VideoNext: if(playList->whichList() ==0) mediaPlayerState->setNext(); return; 344 case VideoNext: if(playList->whichList() ==0) mediaPlayerState->setNext(); return;
345 case VideoPrevious: if(playList->whichList() ==0) mediaPlayerState->setPrev(); return; 345 case VideoPrevious: if(playList->whichList() ==0) mediaPlayerState->setPrev(); return;
346 case VideoVolUp: emit moreReleased(); return; 346 case VideoVolUp: emit moreReleased(); return;
347 case VideoVolDown: emit lessReleased(); return; 347 case VideoVolDown: emit lessReleased(); return;
348 case VideoFullscreen: mediaPlayerState->setFullscreen( TRUE ); makeVisible(); return; 348 case VideoFullscreen: mediaPlayerState->setFullscreen( TRUE ); makeVisible(); return;
349 } 349 }
350 } 350 }
351 } 351 }
352 } 352 }
353} 353}
354 354
355void VideoWidget::mousePressEvent( QMouseEvent *event ) { 355void VideoWidget::mousePressEvent( QMouseEvent *event ) {
356 mouseMoveEvent( event ); 356 mouseMoveEvent( event );
357} 357}
358 358
359void VideoWidget::mouseReleaseEvent( QMouseEvent *event ) { 359void VideoWidget::mouseReleaseEvent( QMouseEvent *event ) {
360 if ( mediaPlayerState->fullscreen() ) { 360 if ( mediaPlayerState->fullscreen() ) {
361 mediaPlayerState->setFullscreen( FALSE ); 361 mediaPlayerState->setFullscreen( FALSE );
362 makeVisible(); 362 makeVisible();
363 } 363 }
364 mouseMoveEvent( event ); 364 mouseMoveEvent( event );
365} 365}
366 366
367void VideoWidget::showEvent( QShowEvent* ) { 367void VideoWidget::showEvent( QShowEvent* ) {
368 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 ); 368 QMouseEvent event( QEvent::MouseMove, QPoint( 0, 0 ), 0, 0 );
369 mouseMoveEvent( &event ); 369 mouseMoveEvent( &event );
370} 370}
371 371
372 372
373 void VideoWidget::backToNormal() { 373 void VideoWidget::backToNormal() {
374 mediaPlayerState->setFullscreen( FALSE ); 374 mediaPlayerState->setFullscreen( FALSE );
375 makeVisible(); 375 makeVisible();
376 } 376 }
377 377
378void VideoWidget::makeVisible() { 378void VideoWidget::makeVisible() {
379 if ( mediaPlayerState->fullscreen() ) { 379 if ( mediaPlayerState->fullscreen() ) {
380 setBackgroundMode( QWidget::NoBackground ); 380 setBackgroundMode( QWidget::NoBackground );
381 showFullScreen(); 381 showFullScreen();
382 resize( qApp->desktop()->size() ); 382 resize( qApp->desktop()->size() );
383 videoFrame-> setGeometry ( 0, 0, width ( ), height ( )); 383 videoFrame-> setGeometry ( 0, 0, width ( ), height ( ));
384 384
385 slider->hide(); 385 slider->hide();
386 disconnect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 386 disconnect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
387 disconnect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 387 disconnect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
388 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 388 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
389 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 389 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
390 390
391 } else { 391 } else {
392 showNormal(); 392 showNormal();
393 showMaximized(); 393 showMaximized();
394 setBackgroundPixmap( *pixBg ); 394 setBackgroundPixmap( *pixBg );
395 QWidget *d = QApplication::desktop(); 395 QWidget *d = QApplication::desktop();
396 int w = d->width(); 396 int w = d->width();
397 int h = d->height(); 397 int h = d->height();
398 398
399 if(w>h) { 399 if(w>h) {
400 int newW=(w/2)-(246/2); //this will only work with 320x240 400 int newW=(w/2)-(246/2); //this will only work with 320x240
401 videoFrame->setGeometry( QRect( newW, 4, 240, 170 ) ); 401 videoFrame->setGeometry( QRect( newW, 4, 240, 170 ) );
402 } else { 402 } else {
403 videoFrame->setGeometry( QRect( 0, 30, 240, 170 ) ); 403 videoFrame->setGeometry( QRect( 0, 30, 240, 170 ) );
404 } 404 }
405 405
406 if ( !mediaPlayerState->seekable() ) { 406 if ( !mediaPlayerState->seekable() ) {
407 if( !slider->isHidden()) { 407 if( !slider->isHidden()) {
408 slider->hide(); 408 slider->hide();
409 } 409 }
410 disconnect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 410 disconnect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
411 disconnect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 411 disconnect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
412 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 412 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
413 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 413 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
414 } else { 414 } else {
415 slider->show(); 415 slider->show();
416 connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 416 connect( mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
417 connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 417 connect( mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
418 connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 418 connect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
419 connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 419 connect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
420 } 420 }
421 } 421 }
422} 422}
423 423
424 424
425 425
426 426
427void VideoWidget::paintEvent( QPaintEvent * pe) { 427void VideoWidget::paintEvent( QPaintEvent * pe) {
428 QPainter p( this ); 428 QPainter p( this );
429 429
430 if ( mediaPlayerState->fullscreen() ) { 430 if ( mediaPlayerState->fullscreen() ) {
431 // Clear the background 431 // Clear the background
432 p.setBrush( QBrush( Qt::black ) ); 432 p.setBrush( QBrush( Qt::black ) );
433 } else { 433 } else {
434 if ( !pe->erased() ) { 434 if ( !pe->erased() ) {
435 // Combine with background and double buffer 435 // Combine with background and double buffer
436 QPixmap pix( pe->rect().size() ); 436 QPixmap pix( pe->rect().size() );
437 QPainter p( &pix ); 437 QPainter p( &pix );
438 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() ); 438 p.translate( -pe->rect().topLeft().x(), -pe->rect().topLeft().y() );
439 p.drawTiledPixmap( pe->rect(), *pixBg, pe->rect().topLeft() ); 439 p.drawTiledPixmap( pe->rect(), *pixBg, pe->rect().topLeft() );
440 for ( int i = 0; i < numVButtons; i++ ) { 440 for ( int i = 0; i < numVButtons; i++ ) {
441 paintButton( &p, i ); 441 paintButton( &p, i );
442 } 442 }
443 QPainter p2( this ); 443 QPainter p2( this );
444 p2.drawPixmap( pe->rect().topLeft(), pix ); 444 p2.drawPixmap( pe->rect().topLeft(), pix );
445 } else { 445 } else {
446 QPainter p( this ); 446 QPainter p( this );
447 for ( int i = 0; i < numVButtons; i++ ) 447 for ( int i = 0; i < numVButtons; i++ )
448 paintButton( &p, i ); 448 paintButton( &p, i );
449 } 449 }
450 //slider->repaint( TRUE ); 450 //slider->repaint( TRUE );
451 } 451 }
452} 452}
453 453
454 454
455void VideoWidget::closeEvent( QCloseEvent* ) { 455void VideoWidget::closeEvent( QCloseEvent* ) {
456 mediaPlayerState->setList(); 456 mediaPlayerState->setList();
457} 457}
458 458
459 459
460void VideoWidget::keyReleaseEvent( QKeyEvent *e) { 460void VideoWidget::keyReleaseEvent( QKeyEvent *e) {
461 switch ( e->key() ) { 461 switch ( e->key() ) {
462////////////////////////////// Zaurus keys 462////////////////////////////// Zaurus keys
463 case Key_Home: 463 case Key_Home:
464 break; 464 break;
465 case Key_F9: //activity 465 case Key_F9: //activity
466 break; 466 break;
467 case Key_F10: //contacts 467 case Key_F10: //contacts
468// hide(); 468// hide();
469 break; 469 break;
470 case Key_F11: //menu 470 case Key_F11: //menu
471 break; 471 break;
472 case Key_F12: //home 472 case Key_F12: //home
473 break; 473 break;
474 case Key_F13: //mail 474 case Key_F13: //mail
475 break; 475 break;
476 case Key_Space: { 476 case Key_Space: {
477 if(mediaPlayerState->playing()) { 477 if(mediaPlayerState->playing()) {
478 mediaPlayerState->setPlaying(FALSE); 478 mediaPlayerState->setPlaying(FALSE);
479 } else { 479 } else {
480 mediaPlayerState->setPlaying(TRUE); 480 mediaPlayerState->setPlaying(TRUE);
481 } 481 }
482 } 482 }
483 break; 483 break;
484 case Key_Down: 484 case Key_Down:
485// toggleButton(6); 485// toggleButton(6);
486 emit lessClicked(); 486 emit lessClicked();
487 emit lessReleased(); 487 emit lessReleased();
488// toggleButton(6); 488// toggleButton(6);
489 break; 489 break;
490 case Key_Up: 490 case Key_Up:
491// toggleButton(5); 491// toggleButton(5);
492 emit moreClicked(); 492 emit moreClicked();
493 emit moreReleased(); 493 emit moreReleased();
494// toggleButton(5); 494// toggleButton(5);
495 break; 495 break;
496 case Key_Right: 496 case Key_Right:
497 mediaPlayerState->setNext(); 497 mediaPlayerState->setNext();
498 break; 498 break;
499 case Key_Left: 499 case Key_Left:
500 mediaPlayerState->setPrev(); 500 mediaPlayerState->setPrev();
501 break; 501 break;
502 case Key_Escape: 502 case Key_Escape:
503 break; 503 break;
504 504
505 }; 505 };
506} 506}
507 507
508XineVideoWidget* VideoWidget::vidWidget() { 508XineVideoWidget* VideoWidget::vidWidget() {
509 return videoFrame; 509 return videoFrame;
510} 510}
511 511
512 512
513void VideoWidget::setFullscreen ( bool b ) { 513void VideoWidget::setFullscreen ( bool b ) {
514 setToggleButton( VideoFullscreen, b ); 514 setToggleButton( VideoFullscreen, b );
515} 515}
516 516
517 517
518void VideoWidget::setPlaying( bool b) { 518void VideoWidget::setPlaying( bool b) {
519 setToggleButton( VideoPlay, b ); 519 setToggleButton( VideoPlay, b );
520} 520}
521 521
diff --git a/noncore/multimedia/opieplayer2/xinecontrol.cpp b/noncore/multimedia/opieplayer2/xinecontrol.cpp
index c46994a..f6289d7 100644
--- a/noncore/multimedia/opieplayer2/xinecontrol.cpp
+++ b/noncore/multimedia/opieplayer2/xinecontrol.cpp
@@ -1,259 +1,259 @@
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..}^=.=       =       ; General Public License for more 22..}^=.=       =       ; 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  -_. . .   )=.  = General Public License along with 26  -_. . .   )=.  = 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 34
35#include <qtimer.h> 35#include <qtimer.h>
36#include <qmessagebox.h> 36#include <qmessagebox.h>
37#include <qpe/qcopenvelope_qws.h> 37#include <qpe/qcopenvelope_qws.h>
38#include <qpe/qpeapplication.h> 38#include <qpe/qpeapplication.h>
39#include "xinecontrol.h" 39#include "xinecontrol.h"
40#include "mediaplayerstate.h" 40#include "mediaplayerstate.h"
41#include "videowidget.h" 41#include "videowidget.h"
42 42
43extern MediaPlayerState *mediaPlayerState; 43extern MediaPlayerState *mediaPlayerState;
44extern VideoWidget *videoUI; 44extern VideoWidget *videoUI;
45XineControl::XineControl( QObject *parent, const char *name ) 45XineControl::XineControl( QObject *parent, const char *name )
46 : QObject( parent, name ) { 46 : QObject( parent, name ) {
47 47
48 libXine = new XINE::Lib( videoUI->vidWidget() ); 48 libXine = new XINE::Lib( videoUI->vidWidget() );
49 49
50 connect ( videoUI, SIGNAL( videoResized( const QSize & )), this, SLOT( videoResized ( const QSize & ) ) ); 50 connect ( videoUI, SIGNAL( videoResized( const QSize & )), this, SLOT( videoResized ( const QSize & ) ) );
51 connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( pause( bool ) ) ); 51 connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( pause( bool ) ) );
52 connect( this, SIGNAL( positionChanged( long ) ), mediaPlayerState, SLOT( updatePosition( long ) ) ); 52 connect( this, SIGNAL( positionChanged( long ) ), mediaPlayerState, SLOT( updatePosition( long ) ) );
53 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), this, SLOT( stop( bool ) ) ); 53 connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), this, SLOT( stop( bool ) ) );
54 connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), this, SLOT( setFullscreen( bool ) ) ); 54 connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), this, SLOT( setFullscreen( bool ) ) );
55 connect( mediaPlayerState, SIGNAL( positionChanged( long ) ), this, SLOT( seekTo( long ) ) ); 55 connect( mediaPlayerState, SIGNAL( positionChanged( long ) ), this, SLOT( seekTo( long ) ) );
56 connect( mediaPlayerState, SIGNAL( videoGammaChanged( int ) ), this, SLOT( setGamma( int ) ) ); 56 connect( mediaPlayerState, SIGNAL( videoGammaChanged( int ) ), this, SLOT( setGamma( int ) ) );
57 connect( libXine, SIGNAL( stopped() ), this, SLOT( nextMedia() ) ); 57 connect( libXine, SIGNAL( stopped() ), this, SLOT( nextMedia() ) );
58 58
59 disabledSuspendScreenSaver = FALSE; 59 disabledSuspendScreenSaver = FALSE;
60} 60}
61 61
62XineControl::~XineControl() { 62XineControl::~XineControl() {
63#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 63#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
64 if ( disabledSuspendScreenSaver ) { 64 if ( disabledSuspendScreenSaver ) {
65 disabledSuspendScreenSaver = FALSE; 65 disabledSuspendScreenSaver = FALSE;
66 // Re-enable the suspend mode 66 // Re-enable the suspend mode
67 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; 67 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
68 } 68 }
69#endif 69#endif
70 delete libXine; 70 delete libXine;
71} 71}
72 72
73void XineControl::play( const QString& fileName ) { 73void XineControl::play( const QString& fileName ) {
74 hasVideoChannel = FALSE; 74 hasVideoChannel = FALSE;
75 hasAudioChannel = FALSE; 75 hasAudioChannel = FALSE;
76 m_fileName = fileName; 76 m_fileName = fileName;
77 77
78 qDebug("<<FILENAME: " + fileName + ">>>>"); 78 qDebug("<<FILENAME: " + fileName + ">>>>");
79 79
80 if ( !libXine->play( fileName, 0, 0 ) ) { 80 if ( !libXine->play( fileName, 0, 0 ) ) {
81 QMessageBox::warning( 0l , tr( "Failure" ), getErrorCode() ); 81 QMessageBox::warning( 0l , tr( "Failure" ), getErrorCode() );
82 // toggle stop so the the play button is reset 82 // toggle stop so the the play button is reset
83 mediaPlayerState->setPlaying( false ); 83 mediaPlayerState->setPlaying( false );
84 return; 84 return;
85 } 85 }
86 mediaPlayerState->setPlaying( true ); 86 mediaPlayerState->setPlaying( true );
87 87
88 char whichGui; 88 char whichGui;
89 // qDebug( QString( "libXine->hasVideo() return : %1 ").arg( libXine->hasVideo() ) ); 89 // qDebug( QString( "libXine->hasVideo() return : %1 ").arg( libXine->hasVideo() ) );
90 if ( !libXine->hasVideo() ) { 90 if ( !libXine->hasVideo() ) {
91 whichGui = 'a'; 91 whichGui = 'a';
92 qDebug("HAS AUDIO"); 92 qDebug("HAS AUDIO");
93 libXine->setShowVideo( false ); 93 libXine->setShowVideo( false );
94 hasAudioChannel = TRUE; 94 hasAudioChannel = TRUE;
95 } else { 95 } else {
96 whichGui = 'v'; 96 whichGui = 'v';
97 qDebug("HAS VIDEO"); 97 qDebug("HAS VIDEO");
98 libXine->setShowVideo( true ); 98 libXine->setShowVideo( true );
99 hasVideoChannel = TRUE; 99 hasVideoChannel = TRUE;
100 } 100 }
101 // determine if slider is shown 101 // determine if slider is shown
102 mediaPlayerState->setIsSeekable( libXine->isSeekable() ); 102 mediaPlayerState->setIsSeekable( libXine->isSeekable() );
103 103
104 // which gui (video / audio) 104 // which gui (video / audio)
105 mediaPlayerState->setView( whichGui ); 105 mediaPlayerState->setView( whichGui );
106 106
107#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 107#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
108 if ( !disabledSuspendScreenSaver ) { 108 if ( !disabledSuspendScreenSaver ) {
109 disabledSuspendScreenSaver = TRUE; 109 disabledSuspendScreenSaver = TRUE;
110 // Stop the screen from blanking and power saving state 110 // Stop the screen from blanking and power saving state
111 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) 111 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" )
112 << ( whichGui == 'v' ? QPEApplication::Disable : QPEApplication::DisableSuspend ); 112 << ( whichGui == 'v' ? QPEApplication::Disable : QPEApplication::DisableSuspend );
113 } 113 }
114#endif 114#endif
115 115
116 length(); 116 length();
117 position(); 117 position();
118} 118}
119 119
120void XineControl::nextMedia() { 120void XineControl::nextMedia() {
121 mediaPlayerState->setNext(); 121 mediaPlayerState->setNext();
122} 122}
123 123
124void XineControl::setGamma( int value ) { 124void XineControl::setGamma( int value ) {
125 libXine->setGamma( value ); 125 libXine->setGamma( value );
126} 126}
127 127
128void XineControl::stop( bool isSet ) { 128void XineControl::stop( bool isSet ) {
129 if ( !isSet ) { 129 if ( !isSet ) {
130 libXine->stop(); 130 libXine->stop();
131 131
132#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 132#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
133 if ( disabledSuspendScreenSaver ) { 133 if ( disabledSuspendScreenSaver ) {
134 disabledSuspendScreenSaver = FALSE; 134 disabledSuspendScreenSaver = FALSE;
135 // Re-enable the suspend mode 135 // Re-enable the suspend mode
136 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; 136 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
137 } 137 }
138#endif 138#endif
139 } 139 }
140} 140}
141 141
142/** 142/**
143 * Pause playback 143 * Pause playback
144 * @isSet 144 * @isSet
145 */ 145 */
146void XineControl::pause( bool isSet) { 146void XineControl::pause( bool isSet) {
147 if ( isSet ) { 147 if ( isSet ) {
148 libXine->pause(); 148 libXine->pause();
149 } else { 149 } else {
150 libXine->play( m_fileName, 0, m_currentTime ); 150 libXine->play( m_fileName, 0, m_currentTime );
151 } 151 }
152} 152}
153 153
154 154
155/** 155/**
156 * get current time in playback 156 * get current time in playback
157 */ 157 */
158long XineControl::currentTime() { 158long XineControl::currentTime() {
159 // todo: jede sekunde überprüfen 159 // todo: jede sekunde überprüfen
160 m_currentTime = libXine->currentTime(); 160 m_currentTime = libXine->currentTime();
161 return m_currentTime; 161 return m_currentTime;
162 QTimer::singleShot( 1000, this, SLOT( currentTime() ) ); 162 QTimer::singleShot( 1000, this, SLOT( currentTime() ) );
163} 163}
164 164
165/** 165/**
166 * Set the length of the media file 166 * Set the length of the media file
167 */ 167 */
168void XineControl::length() { 168void XineControl::length() {
169 m_length = libXine->length(); 169 m_length = libXine->length();
170 mediaPlayerState->setLength( m_length ); 170 mediaPlayerState->setLength( m_length );
171} 171}
172 172
173 173
174/** 174/**
175 * Reports the position the xine backend is at right now 175 * Reports the position the xine backend is at right now
176 * @return long the postion in seconds 176 * @return long the postion in seconds
177 */ 177 */
178long XineControl::position() { 178long XineControl::position() {
179 m_position = ( currentTime() ); 179 m_position = ( currentTime() );
180 mediaPlayerState->updatePosition( m_position ); 180 mediaPlayerState->updatePosition( m_position );
181 long emitPos = (long)m_position; 181 long emitPos = (long)m_position;
182 emit positionChanged( emitPos ); 182 emit positionChanged( emitPos );
183 if( mediaPlayerState->isPlaying ) { 183 if( mediaPlayerState->playing() ) {
184 // needs to be stopped the media is stopped 184 // needs to be stopped the media is stopped
185 QTimer::singleShot( 1000, this, SLOT( position() ) ); 185 QTimer::singleShot( 1000, this, SLOT( position() ) );
186 } 186 }
187 // qDebug("POSITION : %d", m_position); 187 // qDebug("POSITION : %d", m_position);
188 return m_position; 188 return m_position;
189} 189}
190 190
191/** 191/**
192 * Set videoplayback to fullscreen 192 * Set videoplayback to fullscreen
193 * @param isSet 193 * @param isSet
194 */ 194 */
195void XineControl::setFullscreen( bool isSet ) { 195void XineControl::setFullscreen( bool isSet ) {
196 libXine->showVideoFullScreen( isSet ); 196 libXine->showVideoFullScreen( isSet );
197} 197}
198 198
199 199
200QString XineControl::getMetaInfo() { 200QString XineControl::getMetaInfo() {
201 201
202 QString returnString; 202 QString returnString;
203 203
204 if ( !libXine->metaInfo( 0 ).isEmpty() ) { 204 if ( !libXine->metaInfo( 0 ).isEmpty() ) {
205 returnString += tr( " Title: " + libXine->metaInfo( 0 ) ); 205 returnString += tr( " Title: " + libXine->metaInfo( 0 ) );
206 } 206 }
207 207
208 if ( !libXine->metaInfo( 1 ).isEmpty() ) { 208 if ( !libXine->metaInfo( 1 ).isEmpty() ) {
209 returnString += tr( " Comment: " + libXine->metaInfo( 1 ) ); 209 returnString += tr( " Comment: " + libXine->metaInfo( 1 ) );
210 } 210 }
211 211
212 if ( !libXine->metaInfo( 2 ).isEmpty() ) { 212 if ( !libXine->metaInfo( 2 ).isEmpty() ) {
213 returnString += tr( " Artist: " + libXine->metaInfo( 2 ) ); 213 returnString += tr( " Artist: " + libXine->metaInfo( 2 ) );
214 } 214 }
215 215
216 if ( !libXine->metaInfo( 3 ).isEmpty() ) { 216 if ( !libXine->metaInfo( 3 ).isEmpty() ) {
217 returnString += tr( " Genre: " + libXine->metaInfo( 3 ) ); 217 returnString += tr( " Genre: " + libXine->metaInfo( 3 ) );
218 } 218 }
219 219
220 if ( !libXine->metaInfo( 4 ).isEmpty() ) { 220 if ( !libXine->metaInfo( 4 ).isEmpty() ) {
221 returnString += tr( " Album: " + libXine->metaInfo( 4 ) ); 221 returnString += tr( " Album: " + libXine->metaInfo( 4 ) );
222 } 222 }
223 223
224 if ( !libXine->metaInfo( 5 ).isEmpty() ) { 224 if ( !libXine->metaInfo( 5 ).isEmpty() ) {
225 returnString += tr( " Year: " + libXine->metaInfo( 5 ) ); 225 returnString += tr( " Year: " + libXine->metaInfo( 5 ) );
226 } 226 }
227 return returnString; 227 return returnString;
228} 228}
229 229
230QString XineControl::getErrorCode() { 230QString XineControl::getErrorCode() {
231 231
232 int errorCode = libXine->error(); 232 int errorCode = libXine->error();
233 233
234 qDebug( QString("ERRORCODE: %1 ").arg(errorCode) ); 234 qDebug( QString("ERRORCODE: %1 ").arg(errorCode) );
235 235
236 if ( errorCode == 1 ) { 236 if ( errorCode == 1 ) {
237 return tr( "No input plugin found for this media type" ); 237 return tr( "No input plugin found for this media type" );
238 } else if ( errorCode == 2 ) { 238 } else if ( errorCode == 2 ) {
239 return tr( "No demux plugin found for this media type" ); 239 return tr( "No demux plugin found for this media type" );
240 } else if ( errorCode == 3 ) { 240 } else if ( errorCode == 3 ) {
241 return tr( "Demuxing failed for this media type" ); 241 return tr( "Demuxing failed for this media type" );
242 } else if ( errorCode == 4 ) { 242 } else if ( errorCode == 4 ) {
243 return tr( "Malformed MRL" ); 243 return tr( "Malformed MRL" );
244 } else { 244 } else {
245 return tr( "Some other error" ); 245 return tr( "Some other error" );
246 } 246 }
247} 247}
248 248
249/** 249/**
250 * Seek to a position in the track 250 * Seek to a position in the track
251 * @param second the second to jump to 251 * @param second the second to jump to
252 */ 252 */
253void XineControl::seekTo( long second ) { 253void XineControl::seekTo( long second ) {
254 libXine->seekTo( (int)second ); 254 libXine->seekTo( (int)second );
255} 255}
256 256
257void XineControl::videoResized ( const QSize &s ) { 257void XineControl::videoResized ( const QSize &s ) {
258 libXine->resize( s ); 258 libXine->resize( s );
259} 259}