summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp35
-rw-r--r--noncore/multimedia/opieplayer2/mediaplayer.cpp44
-rw-r--r--noncore/multimedia/opieplayer2/mediawidget.cpp23
-rw-r--r--noncore/multimedia/opieplayer2/mediawidget.h5
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.cpp3
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidgetgui.cpp1
-rw-r--r--noncore/multimedia/opieplayer2/videowidget.cpp3
-rw-r--r--noncore/multimedia/opieplayer2/xinecontrol.cpp9
8 files changed, 24 insertions, 99 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp
index 248221b..8afb318 100644
--- a/noncore/multimedia/opieplayer2/lib.cpp
+++ b/noncore/multimedia/opieplayer2/lib.cpp
@@ -109,220 +109,200 @@ Lib::Lib( InitializationMode initMode, XineVideoWidget* widget )
109 109
110void Lib::run() 110void Lib::run()
111{ 111{
112 odebug << "Lib::run() started" << oendl; 112 odebug << "Lib::run() started" << oendl;
113 initialize(); 113 initialize();
114 m_initialized = true; 114 m_initialized = true;
115 odebug << "Lib::run() finished" << oendl; 115 odebug << "Lib::run() finished" << oendl;
116} 116}
117 117
118void Lib::initialize() 118void Lib::initialize()
119{ 119{
120 m_duringInitialization = true; 120 m_duringInitialization = true;
121 m_xine = xine_new( ); 121 m_xine = xine_new( );
122 122
123 QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf"; 123 QString configPath = QDir::homeDirPath() + "/Settings/opiexine.cf";
124 xine_config_load( m_xine, QFile::encodeName( configPath ) ); 124 xine_config_load( m_xine, QFile::encodeName( configPath ) );
125 125
126 xine_init( m_xine ); 126 xine_init( m_xine );
127 127
128 // allocate oss for sound 128 // allocate oss for sound
129 // and fb for framebuffer 129 // and fb for framebuffer
130 m_audioOutput = xine_open_audio_driver( m_xine, "oss", NULL ); 130 m_audioOutput = xine_open_audio_driver( m_xine, "oss", NULL );
131 m_videoOutput = ::init_video_out_plugin( m_xine, NULL, xine_display_frame, this ); 131 m_videoOutput = ::init_video_out_plugin( m_xine, NULL, xine_display_frame, this );
132 132
133
134//xine_open_video_driver( m_xine, NULL, XINE_VISUAL_TYPE_FB, NULL);
135
136
137// null_display_handler( m_videoOutput, xine_display_frame, this );
138
139 m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput ); 133 m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput );
140 134
141 if (m_wid != 0 ) { 135 if (m_wid != 0 )
142 printf( "!0\n" );
143 setWidget( m_wid ); 136 setWidget( m_wid );
144 }
145 137
146 m_queue = xine_event_new_queue (m_stream);
147 138
139 m_queue = xine_event_new_queue (m_stream);
148 xine_event_create_listener_thread (m_queue, xine_event_handler, this); 140 xine_event_create_listener_thread (m_queue, xine_event_handler, this);
149 141
150 ::null_preload_decoders( m_stream ); 142 ::null_preload_decoders( m_stream );
151 143
152 m_duringInitialization = false; 144 m_duringInitialization = false;
153} 145}
154 146
155Lib::~Lib() { 147Lib::~Lib() {
156 assert( isRunning() == false ); 148 assert( isRunning() == false );
157 assert( m_initialized ); 149 assert( m_initialized );
158 150
159// free( m_config ); 151// free( m_config );
160 152
161 xine_close( m_stream ); 153 xine_close( m_stream );
162
163 xine_event_dispose_queue( m_queue ); 154 xine_event_dispose_queue( m_queue );
164
165 xine_dispose( m_stream ); 155 xine_dispose( m_stream );
166
167 xine_exit( m_xine ); 156 xine_exit( m_xine );
157
168 /* FIXME either free or delete but valgrind bitches against both */ 158 /* FIXME either free or delete but valgrind bitches against both */
169 //free( m_videoOutput ); 159 //free( m_videoOutput );
170 //delete m_audioOutput; 160 //delete m_audioOutput;
171} 161}
172 162
173void Lib::resize ( const QSize &s ) { 163void Lib::resize ( const QSize &s ) {
174 assert( m_initialized || m_duringInitialization ); 164 assert( m_initialized || m_duringInitialization );
175 165
176 if ( s. width ( ) && s. height ( ) ) { 166 if ( s. width ( ) && s. height ( ) ) {
177 ::null_set_gui_width( m_videoOutput, s. width() ); 167 ::null_set_gui_width( m_videoOutput, s. width() );
178 ::null_set_gui_height( m_videoOutput, s. height() ); 168 ::null_set_gui_height( m_videoOutput, s. height() );
179 } 169 }
180} 170}
181 171
182int Lib::majorVersion() { 172int Lib::majorVersion() {
183 int major, minor, sub; 173 int major, minor, sub;
184 xine_get_version ( &major, &minor, &sub ); 174 xine_get_version ( &major, &minor, &sub );
185 return major; 175 return major;
186} 176}
187 177
188int Lib::minorVersion() { 178int Lib::minorVersion() {
189 int major, minor, sub; 179 int major, minor, sub;
190 xine_get_version ( &major, &minor, &sub ); 180 xine_get_version ( &major, &minor, &sub );
191 return minor; 181 return minor;
192} 182}
193 183
194int Lib::subVersion() { 184int Lib::subVersion() {
195 int major, minor, sub; 185 int major, minor, sub;
196 xine_get_version ( &major, &minor, &sub ); 186 xine_get_version ( &major, &minor, &sub );
197 return sub; 187 return sub;
198} 188}
199 189
200int Lib::play( const QString& fileName, int startPos, int start_time ) { 190int Lib::play( const QString& fileName, int startPos, int start_time ) {
201 assert( m_initialized ); 191 assert( m_initialized );
202 // FIXME actually a hack imho. Should not be needed to dispose the whole stream
203 // but without we get wrong media length reads from libxine for the second media
204 //xine_dispose ( m_stream );
205 192
206 QString str = fileName.stripWhiteSpace(); 193 QString str = fileName.stripWhiteSpace();
207 194
208 //m_stream = xine_stream_new (m_xine, m_audioOutput, m_videoOutput );
209 //m_queue = xine_event_new_queue (m_stream);
210 //xine_event_create_listener_thread (m_queue, xine_event_handler, this);
211 195
212 if ( !xine_open( m_stream, str.utf8().data() ) ) { 196 if ( !xine_open( m_stream, str.utf8().data() ) ) {
213 return 0; 197 return 0;
214 } 198 }
215 return xine_play( m_stream, startPos, start_time); 199 return xine_play( m_stream, startPos, start_time);
216} 200}
217 201
218void Lib::stop() { 202void Lib::stop() {
219 assert( m_initialized ); 203 assert( m_initialized );
220
221 odebug << "<<<<<<<< STOP IN LIB TRIGGERED >>>>>>>" << oendl;
222 xine_stop( m_stream ); 204 xine_stop( m_stream );
223} 205}
224 206
225void Lib::pause( bool toggle ) { 207void Lib::pause( bool toggle ) {
226 assert( m_initialized ); 208 assert( m_initialized );
227 209
228 xine_set_param( m_stream, XINE_PARAM_SPEED, toggle ? XINE_SPEED_PAUSE : XINE_SPEED_NORMAL ); 210 xine_set_param( m_stream, XINE_PARAM_SPEED, toggle ? XINE_SPEED_PAUSE : XINE_SPEED_NORMAL );
229} 211}
230 212
231int Lib::speed() const { 213int Lib::speed() const {
232 assert( m_initialized ); 214 assert( m_initialized );
233 215
234 return xine_get_param ( m_stream, XINE_PARAM_SPEED ); 216 return xine_get_param ( m_stream, XINE_PARAM_SPEED );
235} 217}
236 218
237void Lib::setSpeed( int speed ) { 219void Lib::setSpeed( int speed ) {
238 assert( m_initialized ); 220 assert( m_initialized );
239 221
240 xine_set_param ( m_stream, XINE_PARAM_SPEED, speed ); 222 xine_set_param ( m_stream, XINE_PARAM_SPEED, speed );
241} 223}
242 224
243int Lib::status() const { 225int Lib::status() const {
244 assert( m_initialized ); 226 assert( m_initialized );
245 227
246 return xine_get_status( m_stream ); 228 return xine_get_status( m_stream );
247} 229}
248 230
249int Lib::currentPosition() const { 231int Lib::currentPosition() const {
250 assert( m_initialized ); 232 assert( m_initialized );
251 233
252 int pos, time, length; 234 int pos, time, length;
253 xine_get_pos_length( m_stream, &pos, &time, &length ); 235 xine_get_pos_length( m_stream, &pos, &time, &length );
254 return pos; 236 return pos;
255} 237}
256 238
257int Lib::currentTime() const { 239int Lib::currentTime() const {
258 assert( m_initialized ); 240 assert( m_initialized );
259 241
260 int pos, time, length; 242 int pos, time, length;
261 xine_get_pos_length( m_stream, &pos, &time, &length ); 243 pos = time = length = 0;
262 if ( time > 0 ) { 244
245 if ( xine_get_pos_length( m_stream, &pos, &time, &length ) )
263 return time/1000; 246 return time/1000;
264 } else { 247 else
265 return 0; 248 return 0;
266 } 249 }
267}
268 250
269int Lib::length() const { 251int Lib::length() const {
270 assert( m_initialized ); 252 assert( m_initialized );
271 253
272 int pos, time, length; 254 int pos, time, length;
273/* dilb: patch to solve the wrong stream length reported to the GUI*/ 255/* dilb: patch to solve the wrong stream length reported to the GUI*/
274 int iRetVal=0, iTestLoop=0; 256 int iRetVal=0, iTestLoop=0;
275 257
276 do 258 do
277 { 259 {
278 iRetVal = xine_get_pos_length( m_stream, &pos, &time, &length ); 260 iRetVal = xine_get_pos_length( m_stream, &pos, &time, &length );
279 if (iRetVal) 261 if (iRetVal)
280 {/* if the function didn't return 0, then pos, time and length are valid.*/ 262 {/* if the function didn't return 0, then pos, time and length are valid.*/
281 return length/1000; 263 return length/1000;
282 } 264 }
283 /*don't poll too much*/ 265 /*don't poll too much*/
284 usleep(100000); 266 usleep(100000);
285 iTestLoop++; 267 iTestLoop++;
286 } 268 }
287 while ( iTestLoop < 10 ); /* if after 1s, we still don't have any 269 while ( iTestLoop < 10 ); /* if after 1s, we still don't have any
288valid stream, then return -1 (this value could be used to make the stream 270valid stream, then return -1 (this value could be used to make the stream
289unseekable, but it should never occur!! Mr. Murphy ? :) ) */ 271unseekable, but it should never occur!! Mr. Murphy ? :) ) */
290 272
291 return -1; 273 return -1;
292} 274}
293 275
294bool Lib::isSeekable() const { 276bool Lib::isSeekable() const {
295 assert( m_initialized ); 277 assert( m_initialized );
296 278
297 return xine_get_stream_info( m_stream, XINE_STREAM_INFO_SEEKABLE ); 279 return xine_get_stream_info( m_stream, XINE_STREAM_INFO_SEEKABLE );
298} 280}
299 281
300void Lib::seekTo( int time ) { 282void Lib::seekTo( int time ) {
301 assert( m_initialized ); 283 assert( m_initialized );
302 284
303 //xine_trick_mode ( m_stream, XINE_TRICK_MODE_SEEK_TO_TIME, time ); NOT IMPLEMENTED YET IN XINE :_(
304 // since its now milliseconds we need *1000
305 xine_play( m_stream, 0, time*1000 ); 285 xine_play( m_stream, 0, time*1000 );
306} 286}
307 287
308 288
309Frame Lib::currentFrame() const { 289Frame Lib::currentFrame() const {
310 assert( m_initialized ); 290 assert( m_initialized );
311 291
312 Frame frame; 292 Frame frame;
313 return frame; 293 return frame;
314}; 294};
315 295
316QString Lib::metaInfo( int number) const { 296QString Lib::metaInfo( int number) const {
317 assert( m_initialized ); 297 assert( m_initialized );
318 298
319 return xine_get_meta_info( m_stream, number ); 299 return xine_get_meta_info( m_stream, number );
320} 300}
321 301
322int Lib::error() const { 302int Lib::error() const {
323 assert( m_initialized ); 303 assert( m_initialized );
324 304
325 return xine_get_error( m_stream ); 305 return xine_get_error( m_stream );
326}; 306};
327 307
328void Lib::ensureInitialized() 308void Lib::ensureInitialized()
@@ -404,32 +384,31 @@ void Lib::setGamma( int value ) {
404 assert( m_initialized ); 384 assert( m_initialized );
405 385
406 ::null_set_videoGamma( m_videoOutput, value ); 386 ::null_set_videoGamma( m_videoOutput, value );
407} 387}
408 388
409bool Lib::isScaling() const { 389bool Lib::isScaling() const {
410 assert( m_initialized ); 390 assert( m_initialized );
411 391
412 return ::null_is_scaling( m_videoOutput ); 392 return ::null_is_scaling( m_videoOutput );
413} 393}
414 394
415void Lib::xine_event_handler( void* user_data, const xine_event_t* t ) { 395void Lib::xine_event_handler( void* user_data, const xine_event_t* t ) {
416 ( (Lib*)user_data)->handleXineEvent( t ); 396 ( (Lib*)user_data)->handleXineEvent( t );
417} 397}
418 398
419void Lib::xine_display_frame( void* user_data, uint8_t *frame, 399void Lib::xine_display_frame( void* user_data, uint8_t *frame,
420 int width, int height, int bytes ) { 400 int width, int height, int bytes ) {
421 ( (Lib*)user_data)->drawFrame( frame, width, height, bytes ); 401 ( (Lib*)user_data)->drawFrame( frame, width, height, bytes );
422} 402}
423 403
424void Lib::drawFrame( uint8_t* frame, int width, int height, int bytes ) { 404void Lib::drawFrame( uint8_t* frame, int width, int height, int bytes ) {
425 assert( m_initialized ); 405 assert( m_initialized );
426 406
427 if ( !m_video ) { 407 if ( !m_video ) {
428 owarn << "not showing video now" << oendl;
429 return; 408 return;
430 } 409 }
431 410
432 assert( m_wid ); 411 assert( m_wid );
433 412
434 m_wid-> setVideoFrame ( frame, width, height, bytes ); 413 m_wid-> setVideoFrame ( frame, width, height, bytes );
435} 414}
diff --git a/noncore/multimedia/opieplayer2/mediaplayer.cpp b/noncore/multimedia/opieplayer2/mediaplayer.cpp
index e6afbd8..b8023ca 100644
--- a/noncore/multimedia/opieplayer2/mediaplayer.cpp
+++ b/noncore/multimedia/opieplayer2/mediaplayer.cpp
@@ -1,64 +1,61 @@
1#include "mediaplayer.h" 1#include "mediaplayer.h"
2#include "audiowidget.h" 2#include "audiowidget.h"
3#include "videowidget.h" 3#include "videowidget.h"
4#include "volumecontrol.h" 4#include "volumecontrol.h"
5 5
6/* OPIE */ 6/* OPIE */
7#include <opie2/odebug.h> 7#include <opie2/odebug.h>
8#include <opie2/odevice.h>
8#include <qpe/qpeapplication.h> 9#include <qpe/qpeapplication.h>
9#include <qpe/config.h> 10#include <qpe/config.h>
10 11
11/* QT */ 12/* QT */
12#include <qfileinfo.h> 13#include <qfileinfo.h>
13 14
14/* STD */ 15/* STD */
15#include <linux/fb.h> 16#include <linux/fb.h>
16#include <sys/file.h> 17#include <sys/file.h>
17#include <sys/ioctl.h> 18#include <sys/ioctl.h>
18 19
19#define FBIOBLANK 0x4611 20#define FBIOBLANK 0x4611
20 21
21MediaPlayer::MediaPlayer( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QObject *parent, const char *name ) 22MediaPlayer::MediaPlayer( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QObject *parent, const char *name )
22 : QObject( parent, name ), volumeDirection( 0 ), mediaPlayerState( _mediaPlayerState ), playList( _playList ) { 23 : QObject( parent, name ), volumeDirection( 0 ), mediaPlayerState( _mediaPlayerState ), playList( _playList ) {
23 24
24 m_audioUI = 0; 25 m_audioUI = 0;
25 m_videoUI = 0; 26 m_videoUI = 0;
26 m_xineControl = 0; 27 m_xineControl = 0;
27 xine = new XINE::Lib( XINE::Lib::InitializeInThread ); 28 xine = new XINE::Lib( XINE::Lib::InitializeInThread );
28 29
29 fd=-1;fl=-1; 30 fd=-1;fl=-1;
30 playList.setCaption( tr( "OpiePlayer: Initializating" ) ); 31 playList.setCaption( tr( "OpiePlayer: Initializating" ) );
31 32
32 qApp->processEvents(); 33 qApp->processEvents();
33 // QPEApplication::grabKeyboard(); // EVIL 34 // QPEApplication::grabKeyboard(); // EVIL
34 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); 35 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) );
35 36
36 connect( &mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) ); 37 connect( &mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) );
37
38// What is pauseCheck good for? (Simon)
39// connect( &mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( pauseCheck(bool) ) );
40
41 connect( &mediaPlayerState, SIGNAL( next() ), this, SLOT( next() ) ); 38 connect( &mediaPlayerState, SIGNAL( next() ), this, SLOT( next() ) );
42 connect( &mediaPlayerState, SIGNAL( prev() ), this, SLOT( prev() ) ); 39 connect( &mediaPlayerState, SIGNAL( prev() ), this, SLOT( prev() ) );
43 connect( &mediaPlayerState, SIGNAL( blankToggled(bool) ), this, SLOT ( blank(bool) ) ); 40 connect( &mediaPlayerState, SIGNAL( blankToggled(bool) ), this, SLOT ( blank(bool) ) );
44 41
45 volControl = new VolumeControl; 42 volControl = new VolumeControl;
46 Config cfg( "OpiePlayer" ); 43 Config cfg( "OpiePlayer" );
47 cfg.setGroup("PlayList"); 44 cfg.setGroup("PlayList");
48 QString currentPlaylist = cfg.readEntry( "CurrentPlaylist", "default"); 45 QString currentPlaylist = cfg.readEntry( "CurrentPlaylist", "default");
49 playList.setCaption( tr( "OpiePlayer: " ) + QFileInfo(currentPlaylist).baseName() ); 46 playList.setCaption( tr( "OpiePlayer: " ) + QFileInfo(currentPlaylist).baseName() );
50 47
51 m_skinLoader = new SkinLoader; 48 m_skinLoader = new SkinLoader;
52 m_skinLoader->schedule( AudioWidget::guiInfo() ); 49 m_skinLoader->schedule( AudioWidget::guiInfo() );
53 m_skinLoader->schedule( VideoWidget::guiInfo() ); 50 m_skinLoader->schedule( VideoWidget::guiInfo() );
54 m_skinLoader->start(); 51 m_skinLoader->start();
55} 52}
56 53
57MediaPlayer::~MediaPlayer() { 54MediaPlayer::~MediaPlayer() {
58 // this shold never happen, but one never knows... 55 // this shold never happen, but one never knows...
59 if ( xine ) { 56 if ( xine ) {
60 xine->ensureInitialized(); 57 xine->ensureInitialized();
61 delete xine; 58 delete xine;
62 } 59 }
63 delete m_xineControl; 60 delete m_xineControl;
64 delete m_audioUI; 61 delete m_audioUI;
@@ -260,115 +257,78 @@ void MediaPlayer::timerEvent( QTimerEvent * ) {
260 drawnOnScreenDisplay = TRUE; 257 drawnOnScreenDisplay = TRUE;
261 onScreenDisplayVolume = v; 258 onScreenDisplayVolume = v;
262 QPainter p( videoUI() ); 259 QPainter p( videoUI() );
263 p.setPen( QColor( 0x10, 0xD0, 0x10 ) ); 260 p.setPen( QColor( 0x10, 0xD0, 0x10 ) );
264 p.setBrush( QColor( 0x10, 0xD0, 0x10 ) ); 261 p.setBrush( QColor( 0x10, 0xD0, 0x10 ) );
265 262
266 QFont f; 263 QFont f;
267 f.setPixelSize( 20 ); 264 f.setPixelSize( 20 );
268 f.setBold( TRUE ); 265 f.setBold( TRUE );
269 p.setFont( f ); 266 p.setFont( f );
270 p.drawText( (w - 200) / 2, h - yoff + 20, tr( "Volume" ) ); 267 p.drawText( (w - 200) / 2, h - yoff + 20, tr( "Volume" ) );
271 268
272 for ( unsigned int i = 0; i < 10; i++ ) { 269 for ( unsigned int i = 0; i < 10; i++ ) {
273 if ( v > i ) { 270 if ( v > i ) {
274 p.drawRect( (w - 200) / 2 + i * 20 + 0, h - yoff + 40, 9, 30 ); 271 p.drawRect( (w - 200) / 2 + i * 20 + 0, h - yoff + 40, 9, 30 );
275 } else { 272 } else {
276 p.drawRect( (w - 200) / 2 + i * 20 + 3, h - yoff + 50, 3, 10 ); 273 p.drawRect( (w - 200) / 2 + i * 20 + 3, h - yoff + 50, 3, 10 );
277 } 274 }
278 } 275 }
279 } 276 }
280} 277}
281 278
282 279
283void MediaPlayer::blank( bool b ) { 280void MediaPlayer::blank( bool b ) {
284#ifdef QT_QWS_DEVFS 281 Opie::Core::ODevice::inst()->setDisplayStatus( b );
285 fd=open("/dev/fb/0",O_RDWR);
286#else
287 fd=open("/dev/fb0",O_RDWR);
288#endif
289#ifdef QT_QWS_SL5XXX
290 fl= open( "/dev/fl", O_RDWR );
291#endif
292 if (fd != -1) {
293 if ( b ) {
294 odebug << "do blanking" << oendl;
295#ifdef QT_QWS_SL5XXX
296 ioctl( fd, FBIOBLANK, 1 );
297 if(fl !=-1) {
298 ioctl( fl, 2 );
299 ::close(fl);
300 }
301#else
302 ioctl( fd, FBIOBLANK, 3 );
303#endif
304 isBlanked = TRUE;
305 } else {
306 odebug << "do unblanking" << oendl;
307 ioctl( fd, FBIOBLANK, 0);
308#ifdef QT_QWS_SL5XXX
309 if(fl != -1) {
310 ioctl( fl, 1);
311 ::close(fl);
312 }
313#endif
314 isBlanked = FALSE;
315 }
316 close( fd );
317 } else {
318 odebug << "<< /dev/fb0 could not be opened >>" << oendl;
319 }
320} 282}
321 283
322void MediaPlayer::keyReleaseEvent( QKeyEvent *e) { 284void MediaPlayer::keyReleaseEvent( QKeyEvent *e) {
323 switch ( e->key() ) { 285 switch ( e->key() ) {
324////////////////////////////// Zaurus keys 286////////////////////////////// Zaurus keys
325 case Key_Home: 287 case Key_Home:
326 break; 288 break;
327 case Key_F9: //activity 289 case Key_F9: //activity
328 break; 290 break;
329 case Key_F10: //contacts 291 case Key_F10: //contacts
330 break; 292 break;
331 case Key_F11: //menu 293 case Key_F11: //menu
332 break; 294 break;
333 case Key_F12: //home 295 case Key_F12: //home
334 odebug << "Blank here" << oendl; 296 odebug << "Blank here" << oendl;
335// mediaPlayerState->toggleBlank(); 297// mediaPlayerState->toggleBlank();
336 break; 298 break;
337 case Key_F13: //mail 299 case Key_F13: //mail
338 odebug << "Blank here" << oendl; 300 odebug << "Blank here" << oendl;
339 // mediaPlayerState->toggleBlank(); 301 // mediaPlayerState->toggleBlank();
340 break; 302 break;
341 } 303 }
342} 304}
343 305
344void MediaPlayer::cleanUp() {// this happens on closing 306void MediaPlayer::cleanUp() {// this happens on closing
345 Config cfg( "OpiePlayer" ); 307 Config cfg( "OpiePlayer" );
346 mediaPlayerState.writeConfig( cfg ); 308 mediaPlayerState.writeConfig( cfg );
347 playList.writeDefaultPlaylist( ); 309 playList.writeDefaultPlaylist( );
348 310
349// QPEApplication::grabKeyboard();
350// QPEApplication::ungrabKeyboard();
351} 311}
352 312
353void MediaPlayer::recreateAudioAndVideoWidgets() const 313void MediaPlayer::recreateAudioAndVideoWidgets() const
354{ 314{
355 delete m_skinLoader; 315 delete m_skinLoader;
356 316
357 delete m_xineControl; 317 delete m_xineControl;
358 delete m_audioUI; 318 delete m_audioUI;
359 delete m_videoUI; 319 delete m_videoUI;
360 m_audioUI = new AudioWidget( playList, mediaPlayerState, 0, "audioUI" ); 320 m_audioUI = new AudioWidget( playList, mediaPlayerState, 0, "audioUI" );
361 m_videoUI = new VideoWidget( playList, mediaPlayerState, 0, "videoUI" ); 321 m_videoUI = new VideoWidget( playList, mediaPlayerState, 0, "videoUI" );
362 322
363 connect( m_audioUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) ); 323 connect( m_audioUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) );
364 connect( m_audioUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) ); 324 connect( m_audioUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) );
365 connect( m_audioUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) ); 325 connect( m_audioUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) );
366 connect( m_audioUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) ); 326 connect( m_audioUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) );
367 327
368 connect( m_videoUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) ); 328 connect( m_videoUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) );
369 connect( m_videoUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) ); 329 connect( m_videoUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) );
370 connect( m_videoUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) ); 330 connect( m_videoUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) );
371 connect( m_videoUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) ); 331 connect( m_videoUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) );
372 332
373 if ( !xine ) 333 if ( !xine )
374 xine = new XINE::Lib( XINE::Lib::InitializeImmediately ); 334 xine = new XINE::Lib( XINE::Lib::InitializeImmediately );
diff --git a/noncore/multimedia/opieplayer2/mediawidget.cpp b/noncore/multimedia/opieplayer2/mediawidget.cpp
index 563ccf5..880b295 100644
--- a/noncore/multimedia/opieplayer2/mediawidget.cpp
+++ b/noncore/multimedia/opieplayer2/mediawidget.cpp
@@ -27,131 +27,124 @@
27 27
28MediaWidget::MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent, const char *name ) 28MediaWidget::MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent, const char *name )
29 : QWidget( parent, name ), mediaPlayerState( _mediaPlayerState ), playList( _playList ) 29 : QWidget( parent, name ), mediaPlayerState( _mediaPlayerState ), playList( _playList )
30{ 30{
31 connect( &mediaPlayerState, SIGNAL( displayTypeChanged(MediaPlayerState::DisplayType) ), 31 connect( &mediaPlayerState, SIGNAL( displayTypeChanged(MediaPlayerState::DisplayType) ),
32 this, SLOT( setDisplayType(MediaPlayerState::DisplayType) ) ); 32 this, SLOT( setDisplayType(MediaPlayerState::DisplayType) ) );
33 connect( &mediaPlayerState, SIGNAL( lengthChanged(long) ), 33 connect( &mediaPlayerState, SIGNAL( lengthChanged(long) ),
34 this, SLOT( setLength(long) ) ); 34 this, SLOT( setLength(long) ) );
35 connect( &mediaPlayerState, SIGNAL( playingToggled(bool) ), 35 connect( &mediaPlayerState, SIGNAL( playingToggled(bool) ),
36 this, SLOT( setPlaying(bool) ) ); 36 this, SLOT( setPlaying(bool) ) );
37 37
38 setBackgroundMode( NoBackground ); 38 setBackgroundMode( NoBackground );
39} 39}
40 40
41MediaWidget::~MediaWidget() 41MediaWidget::~MediaWidget()
42{ 42{
43} 43}
44 44
45void MediaWidget::setupButtons( const SkinButtonInfo *skinInfo, uint buttonCount, 45void MediaWidget::setupButtons( const SkinButtonInfo *skinInfo, uint buttonCount,
46 const Skin &skin ) 46 const Skin &skin )
47{ 47{
48 buttonMask = skin.buttonMask( skinInfo, buttonCount ); 48 buttonMask = skin.buttonMask( skinInfo, buttonCount );
49 49
50 buttons.clear(); 50 buttons.clear();
51 buttons.reserve( buttonCount );
52 51
53 for ( uint i = 0; i < buttonCount; ++i ) { 52 for ( uint i = 0; i < buttonCount; ++i ) {
54 Button button = setupButton( skinInfo[ i ], skin ); 53 Button button = setupButton( skinInfo[ i ], skin );
55 buttons.push_back( button ); 54 buttons.append( button );
56 } 55 }
57} 56}
58 57
59MediaWidget::Button MediaWidget::setupButton( const SkinButtonInfo &buttonInfo, const Skin &skin ) 58MediaWidget::Button MediaWidget::setupButton( const SkinButtonInfo &buttonInfo, const Skin &skin )
60{ 59{
61 Button button; 60 Button button;
62 button.command = buttonInfo.command; 61 button.command = buttonInfo.command;
63 button.type = buttonInfo.type; 62 button.type = buttonInfo.type;
64 button.mask = skin.buttonMaskImage( buttonInfo.fileName ); 63 button.mask = skin.buttonMaskImage( buttonInfo.fileName );
65 64
66 return button; 65 return button;
67} 66}
68 67
69void MediaWidget::loadDefaultSkin( const GUIInfo &guiInfo ) 68void MediaWidget::loadDefaultSkin( const GUIInfo &guiInfo )
70{ 69{
71 Skin skin( guiInfo.fileNameInfix ); 70 Skin skin( guiInfo.fileNameInfix );
72 skin.setCachable( false ); 71 skin.setCachable( false );
73 loadSkin( guiInfo.buttonInfo, guiInfo.buttonCount, skin ); 72 loadSkin( guiInfo.buttonInfo, guiInfo.buttonCount, skin );
74} 73}
75 74
76void MediaWidget::loadSkin( const SkinButtonInfo *skinInfo, uint buttonCount, const Skin &skin ) 75void MediaWidget::loadSkin( const SkinButtonInfo *skinInfo, uint buttonCount, const Skin &skin )
77{ 76{
78 backgroundPixmap = skin.backgroundPixmap(); 77 backgroundPixmap = skin.backgroundPixmap();
79 buttonUpImage = skin.buttonUpImage(); 78 buttonUpImage = skin.buttonUpImage();
80 buttonDownImage = skin.buttonDownImage(); 79 buttonDownImage = skin.buttonDownImage();
81 80
82 setupButtons( skinInfo, buttonCount, skin ); 81 setupButtons( skinInfo, buttonCount, skin );
83} 82}
84 83
85void MediaWidget::closeEvent( QCloseEvent * ) 84void MediaWidget::closeEvent( QCloseEvent * )
86{ 85{
87 mediaPlayerState.setList(); 86 mediaPlayerState.setList();
88} 87}
89 88
90void MediaWidget::paintEvent( QPaintEvent *pe ) 89void MediaWidget::paintEvent( QPaintEvent * )
91{ 90{
92 QPainter p( this ); 91 QPainter p( this );
93 92
94 if ( mediaPlayerState.isFullscreen() ) {
95 // Clear the background
96 p.setBrush( QBrush( Qt::black ) );
97 return;
98 }
99
100 QPixmap buffer( size() ); 93 QPixmap buffer( size() );
101 QPainter bufferedPainter( &buffer ); 94 QPainter bufferedPainter( &buffer );
102 bufferedPainter.drawTiledPixmap( rect(), backgroundPixmap, QPoint( 0, 0 ) ); 95 bufferedPainter.drawTiledPixmap( rect(), backgroundPixmap, QPoint( 0, 0 ) );
103 paintAllButtons( bufferedPainter ); 96 paintAllButtons( bufferedPainter );
104 p.drawPixmap( 0, 0, buffer ); 97 p.drawPixmap( 0, 0, buffer );
105} 98}
106 99
107void MediaWidget::resizeEvent( QResizeEvent *e ) 100void MediaWidget::resizeEvent( QResizeEvent *e )
108{ 101{
109 QPixmap pixUp = combineImageWithBackground( buttonUpImage, backgroundPixmap, upperLeftOfButtonMask ); 102 QPixmap pixUp = combineImageWithBackground( buttonUpImage, backgroundPixmap, upperLeftOfButtonMask );
110 QPixmap pixDn = combineImageWithBackground( buttonDownImage, backgroundPixmap, upperLeftOfButtonMask ); 103 QPixmap pixDn = combineImageWithBackground( buttonDownImage, backgroundPixmap, upperLeftOfButtonMask );
111 104
112 for ( ButtonVector::iterator it = buttons.begin(); it != buttons.end(); ++it ) { 105 for ( ButtonVector::Iterator it = buttons.begin(); it != buttons.end(); ++it ) {
113 Button &button = *it; 106 Button &button = *it;
114 107
115 if ( button.mask.isNull() ) 108 if ( button.mask.isNull() )
116 continue; 109 continue;
117 button.pixUp = addMaskToPixmap( pixUp, button.mask ); 110 button.pixUp = addMaskToPixmap( pixUp, button.mask );
118 button.pixDown = addMaskToPixmap( pixDn, button.mask ); 111 button.pixDown = addMaskToPixmap( pixDn, button.mask );
119 } 112 }
120 113
121 QWidget::resizeEvent( e ); 114 QWidget::resizeEvent( e );
122} 115}
123 116
124MediaWidget::Button *MediaWidget::buttonAt( const QPoint &position ) 117MediaWidget::Button *MediaWidget::buttonAt( const QPoint &position )
125{ 118{
126 if ( position.x() <= 0 || position.y() <= 0 || 119 if ( position.x() <= 0 || position.y() <= 0 ||
127 position.x() >= buttonMask.width() || 120 position.x() >= buttonMask.width() ||
128 position.y() >= buttonMask.height() ) 121 position.y() >= buttonMask.height() )
129 return 0; 122 return 0;
130 123
131 int pixelIdx = buttonMask.pixelIndex( position.x(), position.y() ); 124 int pixelIdx = buttonMask.pixelIndex( position.x(), position.y() );
132 for ( ButtonVector::iterator it = buttons.begin(); it != buttons.end(); ++it ) 125 for ( ButtonVector::Iterator it = buttons.begin(); it != buttons.end(); ++it )
133 if ( it->command + 1 == pixelIdx ) 126 if ( (*it).command + 1 == pixelIdx )
134 return &( *it ); 127 return &( *it );
135 128
136 return 0; 129 return 0;
137} 130}
138 131
139void MediaWidget::mousePressEvent( QMouseEvent *event ) 132void MediaWidget::mousePressEvent( QMouseEvent *event )
140{ 133{
141 Button *button = buttonAt( event->pos() - upperLeftOfButtonMask ); 134 Button *button = buttonAt( event->pos() - upperLeftOfButtonMask );
142 135
143 if ( !button ) { 136 if ( !button ) {
144 QWidget::mousePressEvent( event ); 137 QWidget::mousePressEvent( event );
145 return; 138 return;
146 } 139 }
147 140
148 switch ( button->command ) { 141 switch ( button->command ) {
149 case VolumeUp: emit moreClicked(); return; 142 case VolumeUp: emit moreClicked(); return;
150 case VolumeDown: emit lessClicked(); return; 143 case VolumeDown: emit lessClicked(); return;
151 case Back: emit backClicked(); return; 144 case Back: emit backClicked(); return;
152 case Forward: emit forwardClicked(); return; 145 case Forward: emit forwardClicked(); return;
153 default: break; 146 default: break;
154 } 147 }
155} 148}
156 149
157void MediaWidget::mouseReleaseEvent( QMouseEvent *event ) 150void MediaWidget::mouseReleaseEvent( QMouseEvent *event )
@@ -180,71 +173,71 @@ void MediaWidget::handleCommand( Command command, bool buttonDown )
180 case Stop: mediaPlayerState.setPlaying(FALSE); return; 173 case Stop: mediaPlayerState.setPlaying(FALSE); return;
181 case Next: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setNext(); return; 174 case Next: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setNext(); return;
182 case Previous: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setPrev(); return; 175 case Previous: if( playList.currentTab() == PlayListWidget::CurrentPlayList ) mediaPlayerState.setPrev(); return;
183 case Loop: mediaPlayerState.setLooping( buttonDown ); return; 176 case Loop: mediaPlayerState.setLooping( buttonDown ); return;
184 case VolumeUp: emit moreReleased(); return; 177 case VolumeUp: emit moreReleased(); return;
185 case VolumeDown: emit lessReleased(); return; 178 case VolumeDown: emit lessReleased(); return;
186 case PlayList: mediaPlayerState.setList(); return; 179 case PlayList: mediaPlayerState.setList(); return;
187 case Forward: emit forwardReleased(); return; 180 case Forward: emit forwardReleased(); return;
188 case Back: emit backReleased(); return; 181 case Back: emit backReleased(); return;
189 case FullScreen: mediaPlayerState.setFullscreen( true ); makeVisible(); return; 182 case FullScreen: mediaPlayerState.setFullscreen( true ); makeVisible(); return;
190 default: assert( false ); 183 default: assert( false );
191 } 184 }
192} 185}
193 186
194bool MediaWidget::isOverButton( const QPoint &position, int buttonId ) const 187bool MediaWidget::isOverButton( const QPoint &position, int buttonId ) const
195{ 188{
196 return ( position.x() > 0 && position.y() > 0 && 189 return ( position.x() > 0 && position.y() > 0 &&
197 position.x() < buttonMask.width() && 190 position.x() < buttonMask.width() &&
198 position.y() < buttonMask.height() && 191 position.y() < buttonMask.height() &&
199 buttonMask.pixelIndex( position.x(), position.y() ) == buttonId + 1 ); 192 buttonMask.pixelIndex( position.x(), position.y() ) == buttonId + 1 );
200} 193}
201 194
202void MediaWidget::paintAllButtons( QPainter &p ) 195void MediaWidget::paintAllButtons( QPainter &p )
203{ 196{
204 for ( ButtonVector::const_iterator it = buttons.begin(); 197 for ( ButtonVector::ConstIterator it = buttons.begin();
205 it != buttons.end(); ++it ) 198 it != buttons.end(); ++it )
206 paintButton( p, *it ); 199 paintButton( p, *it );
207} 200}
208 201
209void MediaWidget::paintButton( const Button &button ) 202void MediaWidget::paintButton( const Button &button )
210{ 203{
211 QPainter p( this ); 204 QPainter p( this );
212 paintButton( p, button ); 205 paintButton( p, button );
213} 206}
214 207
215void MediaWidget::paintButton( QPainter &p, const Button &button ) 208void MediaWidget::paintButton( QPainter &p, const Button &button )
216{ 209{
217 if ( button.isDown ) 210 if ( button.isDown )
218 p.drawPixmap( upperLeftOfButtonMask, button.pixDown ); 211 p.drawPixmap( upperLeftOfButtonMask, button.pixDown );
219 else 212 else
220 p.drawPixmap( upperLeftOfButtonMask, button.pixUp ); 213 p.drawPixmap( upperLeftOfButtonMask, button.pixUp );
221} 214}
222 215
223void MediaWidget::setToggleButton( Command command, bool down ) 216void MediaWidget::setToggleButton( Command command, bool down )
224{ 217{
225 for ( ButtonVector::iterator it = buttons.begin(); it != buttons.end(); ++it ) 218 for ( ButtonVector::Iterator it = buttons.begin(); it != buttons.end(); ++it )
226 if ( it->command == command ) { 219 if ( (*it).command == command ) {
227 setToggleButton( *it, down ); 220 setToggleButton( *it, down );
228 return; 221 return;
229 } 222 }
230} 223}
231 224
232void MediaWidget::setToggleButton( Button &button, bool down ) 225void MediaWidget::setToggleButton( Button &button, bool down )
233{ 226{
234 if ( down != button.isDown ) 227 if ( down != button.isDown )
235 toggleButton( button ); 228 toggleButton( button );
236} 229}
237 230
238void MediaWidget::toggleButton( Button &button ) 231void MediaWidget::toggleButton( Button &button )
239{ 232{
240 button.isDown = !button.isDown; 233 button.isDown = !button.isDown;
241 234
242 paintButton( button ); 235 paintButton( button );
243} 236}
244 237
245QPixmap MediaWidget::combineImageWithBackground( const QImage &image, const QPixmap &background, const QPoint &offset ) 238QPixmap MediaWidget::combineImageWithBackground( const QImage &image, const QPixmap &background, const QPoint &offset )
246{ 239{
247 QPixmap pix( image.size() ); 240 QPixmap pix( image.size() );
248 QPainter p( &pix ); 241 QPainter p( &pix );
249 p.drawTiledPixmap( pix.rect(), background, offset ); 242 p.drawTiledPixmap( pix.rect(), background, offset );
250 p.drawImage( 0, 0, image ); 243 p.drawImage( 0, 0, image );
diff --git a/noncore/multimedia/opieplayer2/mediawidget.h b/noncore/multimedia/opieplayer2/mediawidget.h
index 8c3a467..d885150 100644
--- a/noncore/multimedia/opieplayer2/mediawidget.h
+++ b/noncore/multimedia/opieplayer2/mediawidget.h
@@ -8,74 +8,71 @@
8 modify it under the terms of the GNU General Public 8 modify it under the terms of the GNU General Public
9 License as published by the Free Software Foundation; either 9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version. 10 version 2 of the License, or (at your option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 General Public License for more details. 15 General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; see the file COPYING. If not, write to 18 along with this program; see the file COPYING. If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. 20 Boston, MA 02111-1307, USA.
21*/ 21*/
22 22
23#ifndef MEDIAWIDGET_H 23#ifndef MEDIAWIDGET_H
24#define MEDIAWIDGET_H 24#define MEDIAWIDGET_H
25 25
26#include <qwidget.h> 26#include <qwidget.h>
27#include <qmap.h> 27#include <qmap.h>
28 28
29#include "mediaplayerstate.h" 29#include "mediaplayerstate.h"
30#include "playlistwidget.h" 30#include "playlistwidget.h"
31 31
32#include <vector>
33#include <memory>
34
35class Skin; 32class Skin;
36 33
37class MediaWidget : public QWidget 34class MediaWidget : public QWidget
38{ 35{
39 Q_OBJECT 36 Q_OBJECT
40public: 37public:
41 enum Command { Play = 0, Stop, Next, Previous, VolumeUp, VolumeDown, Loop, PlayList, Forward, Back, FullScreen, Undefined }; 38 enum Command { Play = 0, Stop, Next, Previous, VolumeUp, VolumeDown, Loop, PlayList, Forward, Back, FullScreen, Undefined };
42 enum ButtonType { NormalButton, ToggleButton }; 39 enum ButtonType { NormalButton, ToggleButton };
43 40
44 struct Button 41 struct Button
45 { 42 {
46 Button() : command( Undefined ), type( NormalButton ), isDown( false ) {} 43 Button() : command( Undefined ), type( NormalButton ), isDown( false ) {}
47 44
48 Command command; 45 Command command;
49 46
50 ButtonType type; // this should be part of the bitfield but gcc2 is too buggy to support this :-( 47 ButtonType type; // this should be part of the bitfield but gcc2 is too buggy to support this :-(
51 bool isDown : 1; 48 bool isDown : 1;
52 49
53 QBitmap mask; 50 QBitmap mask;
54 QPixmap pixUp; 51 QPixmap pixUp;
55 QPixmap pixDown; 52 QPixmap pixDown;
56 }; 53 };
57 typedef std::vector<Button> ButtonVector; 54 typedef QValueList<Button> ButtonVector;
58 55
59 struct SkinButtonInfo 56 struct SkinButtonInfo
60 { 57 {
61 Command command; 58 Command command;
62 const char *fileName; 59 const char *fileName;
63 ButtonType type; 60 ButtonType type;
64 }; 61 };
65 62
66 struct GUIInfo 63 struct GUIInfo
67 { 64 {
68 GUIInfo() : buttonInfo( 0 ), buttonCount( 0 ) {} 65 GUIInfo() : buttonInfo( 0 ), buttonCount( 0 ) {}
69 GUIInfo( const QString &_fileNameInfix, const SkinButtonInfo *_buttonInfo, const uint _buttonCount ) 66 GUIInfo( const QString &_fileNameInfix, const SkinButtonInfo *_buttonInfo, const uint _buttonCount )
70 : fileNameInfix( _fileNameInfix ), buttonInfo( _buttonInfo ), buttonCount( _buttonCount ) 67 : fileNameInfix( _fileNameInfix ), buttonInfo( _buttonInfo ), buttonCount( _buttonCount )
71 {} 68 {}
72 69
73 QString fileNameInfix; 70 QString fileNameInfix;
74 const SkinButtonInfo *buttonInfo; 71 const SkinButtonInfo *buttonInfo;
75 const uint buttonCount; 72 const uint buttonCount;
76 }; 73 };
77 typedef QValueList<GUIInfo> GUIInfoList; 74 typedef QValueList<GUIInfo> GUIInfoList;
78 75
79 MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent = 0, const char *name = 0 ); 76 MediaWidget( PlayListWidget &_playList, MediaPlayerState &_mediaPlayerState, QWidget *parent = 0, const char *name = 0 );
80 virtual ~MediaWidget(); 77 virtual ~MediaWidget();
81 78
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp
index 36f77be..d73f0cd 100644
--- a/noncore/multimedia/opieplayer2/playlistwidget.cpp
+++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp
@@ -164,72 +164,69 @@ PlayListWidget::PlayListWidget(QWidget* parent, const char* name, WFlags fl )
164} 164}
165 165
166 166
167PlayListWidget::~PlayListWidget() { 167PlayListWidget::~PlayListWidget() {
168 delete d; 168 delete d;
169 delete m_mp; 169 delete m_mp;
170} 170}
171 171
172 172
173void PlayListWidget::initializeStates() { 173void PlayListWidget::initializeStates() {
174 d->tbPlay->setOn( mediaPlayerState->isPlaying() ); 174 d->tbPlay->setOn( mediaPlayerState->isPlaying() );
175 d->tbLoop->setOn( mediaPlayerState->isLooping() ); 175 d->tbLoop->setOn( mediaPlayerState->isLooping() );
176 d->tbShuffle->setOn( mediaPlayerState->isShuffled() ); 176 d->tbShuffle->setOn( mediaPlayerState->isShuffled() );
177 d->playListFrame->show(); 177 d->playListFrame->show();
178} 178}
179 179
180void PlayListWidget::writeDefaultPlaylist() { 180void PlayListWidget::writeDefaultPlaylist() {
181 181
182 Config config( "OpiePlayer" ); 182 Config config( "OpiePlayer" );
183 config.setGroup( "PlayList" ); 183 config.setGroup( "PlayList" );
184 QString filename=QPEApplication::documentDir() + "/default.m3u"; 184 QString filename=QPEApplication::documentDir() + "/default.m3u";
185 QString currentString = config.readEntry( "CurrentPlaylist", filename); 185 QString currentString = config.readEntry( "CurrentPlaylist", filename);
186 if( currentString == filename) { 186 if( currentString == filename) {
187 Om3u *m3uList; 187 Om3u *m3uList;
188 // odebug << "<<<<<<<<<<<<<default>>>>>>>>>>>>>>>>>>>" << oendl;
189 if( d->selectedFiles->first() ) { 188 if( d->selectedFiles->first() ) {
190 m3uList = new Om3u(filename, IO_ReadWrite | IO_Truncate); 189 m3uList = new Om3u(filename, IO_ReadWrite | IO_Truncate);
191 do { 190 do {
192 // odebug << d->selectedFiles->current()->file() << oendl;
193 m3uList->add( d->selectedFiles->current()->file() ); 191 m3uList->add( d->selectedFiles->current()->file() );
194 } 192 }
195 while ( d->selectedFiles->next() ); 193 while ( d->selectedFiles->next() );
196 194
197 m3uList->write(); 195 m3uList->write();
198 m3uList->close(); 196 m3uList->close();
199 delete m3uList; 197 delete m3uList;
200 198
201 } 199 }
202 } 200 }
203} 201}
204 202
205void PlayListWidget::addToSelection( const DocLnk& lnk ) { 203void PlayListWidget::addToSelection( const DocLnk& lnk ) {
206 d->setDocumentUsed = FALSE; 204 d->setDocumentUsed = FALSE;
207 if( QFileInfo( lnk.file() ).exists() || 205 if( QFileInfo( lnk.file() ).exists() ||
208 lnk.file().left(4) == "http" ) { 206 lnk.file().left(4) == "http" ) {
209 d->selectedFiles->addToSelection( lnk ); 207 d->selectedFiles->addToSelection( lnk );
210 } 208 }
211// writeCurrentM3u();
212} 209}
213 210
214 211
215void PlayListWidget::clearList() { 212void PlayListWidget::clearList() {
216 while ( first() ) { 213 while ( first() ) {
217 d->selectedFiles->removeSelected(); 214 d->selectedFiles->removeSelected();
218 } 215 }
219 Config cfg( "OpiePlayer" ); 216 Config cfg( "OpiePlayer" );
220 cfg.setGroup("PlayList"); 217 cfg.setGroup("PlayList");
221 cfg.writeEntry("CurrentPlaylist","default"); 218 cfg.writeEntry("CurrentPlaylist","default");
222 setCaption("OpiePlayer"); 219 setCaption("OpiePlayer");
223} 220}
224 221
225void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) { 222void PlayListWidget::viewPressed( int mouse, QListViewItem *, const QPoint& , int) {
226 switch (mouse) { 223 switch (mouse) {
227 case LeftButton: 224 case LeftButton:
228 break; 225 break;
229 case RightButton: 226 case RightButton:
230 { 227 {
231 QPopupMenu m; 228 QPopupMenu m;
232 m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() )); 229 m.insertItem( tr( "Play Selected" ), this, SLOT( playSelected() ));
233 m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() )); 230 m.insertItem( tr( "Add to Playlist" ), this, SLOT( addSelected() ));
234 m.exec( QCursor::pos() ); 231 m.exec( QCursor::pos() );
235 } 232 }
diff --git a/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp b/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp
index 922f9d7..c3c1282 100644
--- a/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp
+++ b/noncore/multimedia/opieplayer2/playlistwidgetgui.cpp
@@ -162,32 +162,31 @@ PlayListWidgetGui::PlayListWidgetGui(QWidget* parent, const char* name )
162 Llayout->setMargin( 2 ); 162 Llayout->setMargin( 2 );
163 163
164 playLists = new FileSelector( "playlist/plain;audio/x-mpegurl", LTab, "fileselector" , FALSE, FALSE ); 164 playLists = new FileSelector( "playlist/plain;audio/x-mpegurl", LTab, "fileselector" , FALSE, FALSE );
165 Llayout->addMultiCellWidget( playLists, 0, 0, 0, 1 ); 165 Llayout->addMultiCellWidget( playLists, 0, 0, 0, 1 );
166 166
167 tabWidget->insertTab( LTab, tr( "Lists" ) ); 167 tabWidget->insertTab( LTab, tr( "Lists" ) );
168 168
169 setCentralWidget( vbox5 ); 169 setCentralWidget( vbox5 );
170} 170}
171 171
172 172
173 173
174PlayListWidgetGui::~PlayListWidgetGui() { 174PlayListWidgetGui::~PlayListWidgetGui() {
175} 175}
176 176
177void PlayListWidgetGui::setView( char view ) { 177void PlayListWidgetGui::setView( char view ) {
178 if ( view == 'l' ) 178 if ( view == 'l' )
179 showMaximized(); 179 showMaximized();
180 else 180 else
181 hide(); 181 hide();
182} 182}
183 183
184 184
185void PlayListWidgetGui::setActiveWindow() { 185void PlayListWidgetGui::setActiveWindow() {
186 // odebug << "SETTING active window" << oendl;
187 // When we get raised we need to ensure that it switches views 186 // When we get raised we need to ensure that it switches views
188 MediaPlayerState::DisplayType origDisplayType = mediaPlayerState->displayType(); 187 MediaPlayerState::DisplayType origDisplayType = mediaPlayerState->displayType();
189 mediaPlayerState->setDisplayType( MediaPlayerState::MediaSelection ); // invalidate 188 mediaPlayerState->setDisplayType( MediaPlayerState::MediaSelection ); // invalidate
190 mediaPlayerState->setDisplayType( origDisplayType ); // now switch back 189 mediaPlayerState->setDisplayType( origDisplayType ); // now switch back
191} 190}
192 191
193 192
diff --git a/noncore/multimedia/opieplayer2/videowidget.cpp b/noncore/multimedia/opieplayer2/videowidget.cpp
index 0625376..2b44701 100644
--- a/noncore/multimedia/opieplayer2/videowidget.cpp
+++ b/noncore/multimedia/opieplayer2/videowidget.cpp
@@ -124,48 +124,49 @@ void VideoWidget::sliderReleased() {
124 } 124 }
125 long val = long((double)slider->value() * mediaPlayerState.length() / slider->width()); 125 long val = long((double)slider->value() * mediaPlayerState.length() / slider->width());
126 mediaPlayerState.setPosition( val ); 126 mediaPlayerState.setPosition( val );
127} 127}
128 128
129void VideoWidget::setPosition( long i ) { 129void VideoWidget::setPosition( long i ) {
130 updateSlider( i, mediaPlayerState.length() ); 130 updateSlider( i, mediaPlayerState.length() );
131} 131}
132 132
133 133
134void VideoWidget::setLength( long max ) { 134void VideoWidget::setLength( long max ) {
135 updateSlider( mediaPlayerState.position(), max ); 135 updateSlider( mediaPlayerState.position(), max );
136} 136}
137 137
138void VideoWidget::setDisplayType( MediaPlayerState::DisplayType displayType ) 138void VideoWidget::setDisplayType( MediaPlayerState::DisplayType displayType )
139{ 139{
140 if ( displayType == MediaPlayerState::Video ) { 140 if ( displayType == MediaPlayerState::Video ) {
141 makeVisible(); 141 makeVisible();
142 return; 142 return;
143 } 143 }
144 144
145 // Effectively blank the view next time we show it so it looks nicer 145 // Effectively blank the view next time we show it so it looks nicer
146 scaledWidth = 0; 146 scaledWidth = 0;
147 scaledHeight = 0; 147 scaledHeight = 0;
148 videoFrame->hide();
148 hide(); 149 hide();
149} 150}
150 151
151void VideoWidget::loadSkin() 152void VideoWidget::loadSkin()
152{ 153{
153 loadDefaultSkin( guiInfo() ); 154 loadDefaultSkin( guiInfo() );
154 155
155 delete slider; 156 delete slider;
156 slider = new QSlider( Qt::Horizontal, this ); 157 slider = new QSlider( Qt::Horizontal, this );
157 slider->setMinValue( 0 ); 158 slider->setMinValue( 0 );
158 slider->setMaxValue( 1 ); 159 slider->setMaxValue( 1 );
159 slider->setBackgroundPixmap( backgroundPixmap ); 160 slider->setBackgroundPixmap( backgroundPixmap );
160 //slider->setFocusPolicy( QWidget::NoFocus ); 161 //slider->setFocusPolicy( QWidget::NoFocus );
161 162
162 resizeEvent( 0 ); 163 resizeEvent( 0 );
163} 164}
164 165
165void VideoWidget::updateSlider( long i, long max ) { 166void VideoWidget::updateSlider( long i, long max ) {
166 // Will flicker too much if we don't do this 167 // Will flicker too much if we don't do this
167 if ( max == 0 ) { 168 if ( max == 0 ) {
168 return; 169 return;
169 } 170 }
170 int width = slider->width(); 171 int width = slider->width();
171 int val = int((double)i * width / max); 172 int val = int((double)i * width / max);
@@ -173,59 +174,59 @@ void VideoWidget::updateSlider( long i, long max ) {
173 if ( slider->value() != val ) { 174 if ( slider->value() != val ) {
174 slider->setValue( val ); 175 slider->setValue( val );
175 } 176 }
176 if ( slider->maxValue() != width ) { 177 if ( slider->maxValue() != width ) {
177 slider->setMaxValue( width ); 178 slider->setMaxValue( width );
178 } 179 }
179 } 180 }
180} 181}
181 182
182void VideoWidget::mouseReleaseEvent( QMouseEvent *event ) { 183void VideoWidget::mouseReleaseEvent( QMouseEvent *event ) {
183 if ( mediaPlayerState.isFullscreen() ) { 184 if ( mediaPlayerState.isFullscreen() ) {
184 mediaPlayerState.setFullscreen( FALSE ); 185 mediaPlayerState.setFullscreen( FALSE );
185 makeVisible(); 186 makeVisible();
186 } 187 }
187 MediaWidget::mouseReleaseEvent( event ); 188 MediaWidget::mouseReleaseEvent( event );
188} 189}
189 190
190void VideoWidget::backToNormal() { 191void VideoWidget::backToNormal() {
191 mediaPlayerState.setFullscreen( FALSE ); 192 mediaPlayerState.setFullscreen( FALSE );
192 makeVisible(); 193 makeVisible();
193 setToggleButton( FullScreen, false ); 194 setToggleButton( FullScreen, false );
194} 195}
195 196
196void VideoWidget::makeVisible() { 197void VideoWidget::makeVisible() {
198 videoFrame->show();
197 if ( mediaPlayerState.isFullscreen() ) { 199 if ( mediaPlayerState.isFullscreen() ) {
198 showFullScreen(); 200 showFullScreen();
199 resize( qApp->desktop()->size() ); 201 resize( qApp->desktop()->size() );
200 videoFrame-> setGeometry ( 0, 0, width ( ), height ( )); 202 videoFrame-> setGeometry ( 0, 0, width ( ), height ( ));
201 203
202 slider->hide(); 204 slider->hide();
203 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 205 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
204 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 206 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
205 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 207 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
206 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 208 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
207
208 } else { 209 } else {
209 showNormal(); 210 showNormal();
210 showMaximized(); 211 showMaximized();
211 QWidget *d = QApplication::desktop(); 212 QWidget *d = QApplication::desktop();
212 int w = d->width(); 213 int w = d->width();
213 int h = d->height(); 214 int h = d->height();
214 215
215 if(w>h) { 216 if(w>h) {
216 int newW=(w/2)-(246/2); //this will only work with 320x240 217 int newW=(w/2)-(246/2); //this will only work with 320x240
217 videoFrame->setGeometry( QRect( newW, 4, 240, 170 ) ); 218 videoFrame->setGeometry( QRect( newW, 4, 240, 170 ) );
218 } else { 219 } else {
219 videoFrame->setGeometry( QRect( 0, 30, 240, 170 ) ); 220 videoFrame->setGeometry( QRect( 0, 30, 240, 170 ) );
220 } 221 }
221 222
222 if ( !mediaPlayerState.isSeekable() ) { 223 if ( !mediaPlayerState.isSeekable() ) {
223 if( !slider->isHidden()) { 224 if( !slider->isHidden()) {
224 slider->hide(); 225 slider->hide();
225 } 226 }
226 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) ); 227 disconnect( &mediaPlayerState, SIGNAL( positionChanged(long) ),this, SLOT( setPosition(long) ) );
227 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) ); 228 disconnect( &mediaPlayerState, SIGNAL( positionUpdated(long) ),this, SLOT( setPosition(long) ) );
228 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) ); 229 disconnect( slider, SIGNAL( sliderPressed() ), this, SLOT( sliderPressed() ) );
229 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) ); 230 disconnect( slider, SIGNAL( sliderReleased() ), this, SLOT( sliderReleased() ) );
230 } else { 231 } else {
231 slider->show(); 232 slider->show();
diff --git a/noncore/multimedia/opieplayer2/xinecontrol.cpp b/noncore/multimedia/opieplayer2/xinecontrol.cpp
index 9f944d7..e1816c8 100644
--- a/noncore/multimedia/opieplayer2/xinecontrol.cpp
+++ b/noncore/multimedia/opieplayer2/xinecontrol.cpp
@@ -60,144 +60,141 @@ XineControl::XineControl( XINE::Lib *xine, XineVideoWidget *xineWidget,
60 : QObject( parent, name ), libXine( xine ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget ) 60 : QObject( parent, name ), libXine( xine ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget )
61{ 61{
62 xine->ensureInitialized(); 62 xine->ensureInitialized();
63 63
64 xine->setWidget( xineWidget ); 64 xine->setWidget( xineWidget );
65 65
66 init(); 66 init();
67} 67}
68 68
69void XineControl::init() 69void XineControl::init()
70{ 70{
71 connect( &mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( pause(bool) ) ); 71 connect( &mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( pause(bool) ) );
72 connect( this, SIGNAL( positionChanged(long) ), &mediaPlayerState, SLOT( updatePosition(long) ) ); 72 connect( this, SIGNAL( positionChanged(long) ), &mediaPlayerState, SLOT( updatePosition(long) ) );
73 connect( &mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( stop(bool) ) ); 73 connect( &mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( stop(bool) ) );
74 connect( &mediaPlayerState, SIGNAL( fullscreenToggled(bool) ), this, SLOT( setFullscreen(bool) ) ); 74 connect( &mediaPlayerState, SIGNAL( fullscreenToggled(bool) ), this, SLOT( setFullscreen(bool) ) );
75 connect( &mediaPlayerState, SIGNAL( positionChanged(long) ), this, SLOT( seekTo(long) ) ); 75 connect( &mediaPlayerState, SIGNAL( positionChanged(long) ), this, SLOT( seekTo(long) ) );
76 connect( &mediaPlayerState, SIGNAL( videoGammaChanged(int) ), this, SLOT( setGamma(int) ) ); 76 connect( &mediaPlayerState, SIGNAL( videoGammaChanged(int) ), this, SLOT( setGamma(int) ) );
77 connect( libXine, SIGNAL( stopped() ), this, SLOT( nextMedia() ) ); 77 connect( libXine, SIGNAL( stopped() ), this, SLOT( nextMedia() ) );
78 connect( xineVideoWidget, SIGNAL( videoResized(const QSize&) ), this, SLOT( videoResized(const QSize&) ) ); 78 connect( xineVideoWidget, SIGNAL( videoResized(const QSize&) ), this, SLOT( videoResized(const QSize&) ) );
79 79
80 disabledSuspendScreenSaver = FALSE; 80 disabledSuspendScreenSaver = FALSE;
81} 81}
82 82
83XineControl::~XineControl() { 83XineControl::~XineControl() {
84#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 84#if !defined(QT_NO_COP)
85 if ( disabledSuspendScreenSaver ) { 85 if ( disabledSuspendScreenSaver ) {
86 disabledSuspendScreenSaver = FALSE; 86 disabledSuspendScreenSaver = FALSE;
87 // Re-enable the suspend mode 87 // Re-enable the suspend mode
88 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; 88 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
89 } 89 }
90#endif 90#endif
91 delete libXine; 91 delete libXine;
92} 92}
93 93
94void XineControl::play( const QString& fileName ) { 94void XineControl::play( const QString& fileName ) {
95 95
96 hasVideoChannel = FALSE; 96 hasVideoChannel = FALSE;
97 hasAudioChannel = FALSE; 97 hasAudioChannel = FALSE;
98 m_fileName = fileName; 98 m_fileName = fileName;
99 99
100 odebug << "<<FILENAME: " + fileName + ">>>>" << oendl; 100 odebug << "<<FILENAME: " + fileName + ">>>>" << oendl;
101 101
102 if ( !libXine->play( fileName, 0, 0 ) ) { 102 if ( !libXine->play( fileName, 0, 0 ) ) {
103 QMessageBox::warning( 0l , tr( "Failure" ), getErrorCode() ); 103 QMessageBox::warning( 0l , tr( "Failure" ), getErrorCode() );
104 // toggle stop so the the play button is reset 104 // toggle stop so the the play button is reset
105 mediaPlayerState.setPlaying( false ); 105 mediaPlayerState.setPlaying( false );
106 return; 106 return;
107 } 107 }
108 mediaPlayerState.setPlaying( true ); 108 mediaPlayerState.setPlaying( true );
109 109
110 MediaPlayerState::DisplayType displayType; 110 MediaPlayerState::DisplayType displayType;
111 if ( !libXine->hasVideo() ) { 111 if ( !libXine->hasVideo() ) {
112 displayType = MediaPlayerState::Audio; 112 displayType = MediaPlayerState::Audio;
113 odebug << "HAS AUDIO" << oendl;
114 libXine->setShowVideo( false ); 113 libXine->setShowVideo( false );
115 hasAudioChannel = TRUE; 114 hasAudioChannel = TRUE;
116 } else { 115 } else {
117 displayType = MediaPlayerState::Video; 116 displayType = MediaPlayerState::Video;
118 odebug << "HAS VIDEO" << oendl;
119 libXine->setShowVideo( true ); 117 libXine->setShowVideo( true );
120 hasVideoChannel = TRUE; 118 hasVideoChannel = TRUE;
121 } 119 }
122 // determine if slider is shown 120 // determine if slider is shown
123 mediaPlayerState.setIsSeekable( libXine->isSeekable() ); 121 mediaPlayerState.setIsSeekable( libXine->isSeekable() );
124 122
125 // which gui (video / audio) 123 // which gui (video / audio)
126 mediaPlayerState.setDisplayType( displayType ); 124 mediaPlayerState.setDisplayType( displayType );
127 125
128#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 126#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
129 if ( !disabledSuspendScreenSaver ) { 127 if ( !disabledSuspendScreenSaver ) {
130 disabledSuspendScreenSaver = TRUE; 128 disabledSuspendScreenSaver = TRUE;
131 // Stop the screen from blanking and power saving state 129 // Stop the screen from blanking and power saving state
132 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) 130 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" )
133 << ( displayType == MediaPlayerState::Video ? QPEApplication::Disable : QPEApplication::DisableSuspend ); 131 << ( displayType == MediaPlayerState::Video ? QPEApplication::Disable : QPEApplication::DisableSuspend );
134 } 132 }
135#endif 133#endif
136 134
137 length(); 135 length();
138 position(); 136 position();
139} 137}
140 138
141void XineControl::nextMedia() { 139void XineControl::nextMedia() {
142 mediaPlayerState.setNext(); 140 mediaPlayerState.setNext();
143} 141}
144 142
145void XineControl::setGamma( int value ) { 143void XineControl::setGamma( int value ) {
146 libXine->setGamma( value ); 144 libXine->setGamma( value );
147} 145}
148 146
149void XineControl::stop( bool isSet ) { 147void XineControl::stop( bool isSet ) {
150 if ( !isSet ) { 148 if ( !isSet ) {
151 libXine->stop(); 149 libXine->stop();
152 150
153#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 151#if !defined(QT_NO_COP)
154 if ( disabledSuspendScreenSaver ) { 152 if ( disabledSuspendScreenSaver ) {
155 disabledSuspendScreenSaver = FALSE; 153 disabledSuspendScreenSaver = FALSE;
156 // Re-enable the suspend mode 154 // Re-enable the suspend mode
157 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; 155 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
158 } 156 }
159#endif 157#endif
160 } 158 }
161} 159}
162 160
163/** 161/**
164 * Pause playback 162 * Pause playback
165 * @isSet 163 * @isSet
166 */ 164 */
167void XineControl::pause( bool isSet) { 165void XineControl::pause( bool isSet) {
168 libXine->pause( isSet ); 166 libXine->pause( isSet );
169} 167}
170 168
171 169
172/** 170/**
173 * get current time in playback 171 * get current time in playback
174 */ 172 */
175long XineControl::currentTime() { 173long XineControl::currentTime() {
176 // todo: jede sekunde überprüfen 174 // todo: jede sekunde überprüfen
177 m_currentTime = libXine->currentTime(); 175 m_currentTime = libXine->currentTime();
178 return m_currentTime; 176 return m_currentTime;
179 QTimer::singleShot( 1000, this, SLOT( currentTime() ) );
180} 177}
181 178
182/** 179/**
183 * Set the length of the media file 180 * Set the length of the media file
184 */ 181 */
185void XineControl::length() { 182void XineControl::length() {
186 m_length = libXine->length(); 183 m_length = libXine->length();
187 mediaPlayerState.setLength( m_length ); 184 mediaPlayerState.setLength( m_length );
188} 185}
189 186
190 187
191/** 188/**
192 * Reports the position the xine backend is at right now 189 * Reports the position the xine backend is at right now
193 * @return long the postion in seconds 190 * @return long the postion in seconds
194 */ 191 */
195long XineControl::position() { 192long XineControl::position() {
196 m_position = ( currentTime() ); 193 m_position = ( currentTime() );
197 mediaPlayerState.updatePosition( m_position ); 194 mediaPlayerState.updatePosition( m_position );
198 long emitPos = (long)m_position; 195 long emitPos = (long)m_position;
199 emit positionChanged( emitPos ); 196 emit positionChanged( emitPos );
200 if( mediaPlayerState.isPlaying() ) { 197 if( mediaPlayerState.isPlaying() ) {
201 // needs to be stopped the media is stopped 198 // needs to be stopped the media is stopped
202 QTimer::singleShot( 1000, this, SLOT( position() ) ); 199 QTimer::singleShot( 1000, this, SLOT( position() ) );
203 } 200 }
@@ -236,40 +233,42 @@ QString XineControl::getMetaInfo() {
236 if ( !libXine->metaInfo( 4 ).isEmpty() ) { 233 if ( !libXine->metaInfo( 4 ).isEmpty() ) {
237 returnString += tr( " Album: " + libXine->metaInfo( 4 ) ); 234 returnString += tr( " Album: " + libXine->metaInfo( 4 ) );
238 } 235 }
239 236
240 if ( !libXine->metaInfo( 5 ).isEmpty() ) { 237 if ( !libXine->metaInfo( 5 ).isEmpty() ) {
241 returnString += tr( " Year: " + libXine->metaInfo( 5 ) ); 238 returnString += tr( " Year: " + libXine->metaInfo( 5 ) );
242 } 239 }
243 return returnString; 240 return returnString;
244} 241}
245 242
246QString XineControl::getErrorCode() { 243QString XineControl::getErrorCode() {
247 244
248 int errorCode = libXine->error(); 245 int errorCode = libXine->error();
249 246
250 odebug << QString("ERRORCODE: %1 ").arg(errorCode) << oendl; 247 odebug << QString("ERRORCODE: %1 ").arg(errorCode) << oendl;
251 248
252 if ( errorCode == 1 ) { 249 if ( errorCode == 1 ) {
253 return tr( "No input plugin found for this media type" ); 250 return tr( "No input plugin found for this media type" );
254 } else if ( errorCode == 2 ) { 251 } else if ( errorCode == 2 ) {
255 return tr( "No demux plugin found for this media type" ); 252 return tr( "No demux plugin found for this media type" );
256 } else if ( errorCode == 3 ) { 253 } else if ( errorCode == 3 ) {
257 return tr( "Demuxing failed for this media type" ); 254 return tr( "Demuxing failed for this media type" );
258 } else if ( errorCode == 4 ) { 255 } else if ( errorCode == 4 ) {
259 return tr( "Malformed MRL" ); 256 return tr( "Malformed MRL" );
257 } else if ( errorCode == 5 ) {
258 return tr( "Input failed" );
260 } else { 259 } else {
261 return tr( "Some other error" ); 260 return tr( "Some other error" );
262 } 261 }
263} 262}
264 263
265/** 264/**
266 * Seek to a position in the track 265 * Seek to a position in the track
267 * @param second the second to jump to 266 * @param second the second to jump to
268 */ 267 */
269void XineControl::seekTo( long second ) { 268void XineControl::seekTo( long second ) {
270 libXine->seekTo( (int)second ); 269 libXine->seekTo( (int)second );
271} 270}
272 271
273void XineControl::videoResized ( const QSize &s ) { 272void XineControl::videoResized ( const QSize &s ) {
274 libXine->resize( s ); 273 libXine->resize( s );
275} 274}