summaryrefslogtreecommitdiff
path: root/noncore
authorzecke <zecke>2004-09-24 15:15:51 (UTC)
committer zecke <zecke>2004-09-24 15:15:51 (UTC)
commit4c53e68c3ac96baaaf39cc049c89d8ccf022ff59 (patch) (unidiff)
tree8273ae338f0d611c28438a4f8a6a6fc8329e90e8 /noncore
parenta214128c01e38ffd50edc4ed5b5c72593796eab2 (diff)
downloadopie-4c53e68c3ac96baaaf39cc049c89d8ccf022ff59.zip
opie-4c53e68c3ac96baaaf39cc049c89d8ccf022ff59.tar.gz
opie-4c53e68c3ac96baaaf39cc049c89d8ccf022ff59.tar.bz2
Handling of Errors is a bit problematic with the current design.
We can start playing from multiple contexts. This are the PlayList context and single file context. Now the problem is that MediapPlayerState::setPlaying emits a signal. If started from the the PlayList setPlaying(false) would trigger an infite loop together with the Play ToggleButton, in single file context setPlaying(false) is the right choiche. The intermediate solution is to show an Error MessageBox and to raise the Audio Widget and leave it to the user to close it or go to the next file.
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/playlistwidget.cpp1
-rw-r--r--noncore/multimedia/opieplayer2/xinecontrol.cpp48
-rw-r--r--noncore/multimedia/opieplayer2/xinecontrol.h4
3 files changed, 30 insertions, 23 deletions
diff --git a/noncore/multimedia/opieplayer2/playlistwidget.cpp b/noncore/multimedia/opieplayer2/playlistwidget.cpp
index d73f0cd..37b998f 100644
--- a/noncore/multimedia/opieplayer2/playlistwidget.cpp
+++ b/noncore/multimedia/opieplayer2/playlistwidget.cpp
@@ -33,48 +33,49 @@
33 33
34#include "playlistselection.h" 34#include "playlistselection.h"
35#include "playlistwidget.h" 35#include "playlistwidget.h"
36#include "mediaplayer.h" 36#include "mediaplayer.h"
37#include "inputDialog.h" 37#include "inputDialog.h"
38#include "om3u.h" 38#include "om3u.h"
39#include "playlistfileview.h" 39#include "playlistfileview.h"
40 40
41/* OPIE */ 41/* OPIE */
42#include <opie2/odebug.h> 42#include <opie2/odebug.h>
43#include <opie2/ofiledialog.h> 43#include <opie2/ofiledialog.h>
44using namespace Opie::Core; 44using namespace Opie::Core;
45using namespace Opie::Ui; 45using namespace Opie::Ui;
46 46
47/* QT */ 47/* QT */
48#include <qmessagebox.h> 48#include <qmessagebox.h>
49#include <qtoolbar.h> 49#include <qtoolbar.h>
50 50
51/* STD */ 51/* STD */
52#include <assert.h> 52#include <assert.h>
53 53
54PlayListWidget::PlayListWidget(QWidget* parent, const char* name, WFlags fl ) 54PlayListWidget::PlayListWidget(QWidget* parent, const char* name, WFlags fl )
55 : PlayListWidgetGui( parent, "playList" ) , currentFileListView( 0 ) 55 : PlayListWidgetGui( parent, "playList" ) , currentFileListView( 0 )
56{ 56{
57 Global::statusMessage( tr( "Loading of Skin started" ) );
57 mediaPlayerState = new MediaPlayerState(0, "mediaPlayerState" ); 58 mediaPlayerState = new MediaPlayerState(0, "mediaPlayerState" );
58 m_mp = new MediaPlayer(*this, *mediaPlayerState, 0, "mediaPlayer"); 59 m_mp = new MediaPlayer(*this, *mediaPlayerState, 0, "mediaPlayer");
59 60
60 61
61 62
62 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ), 63 d->tbAddToList = new ToolButton( bar, tr( "Add to Playlist" ),
63 "opieplayer2/add_to_playlist", 64 "opieplayer2/add_to_playlist",
64 this , SLOT(addSelected() ) ); 65 this , SLOT(addSelected() ) );
65 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ), 66 d->tbRemoveFromList = new ToolButton( bar, tr( "Remove from Playlist" ),
66 "opieplayer2/remove_from_playlist", 67 "opieplayer2/remove_from_playlist",
67 this , SLOT(removeSelected() ) ); 68 this , SLOT(removeSelected() ) );
68 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer2/play", 69 d->tbPlay = new ToolButton( bar, tr( "Play" ), "opieplayer2/play",
69 this , SLOT( btnPlay(bool) ), TRUE ); 70 this , SLOT( btnPlay(bool) ), TRUE );
70 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer2/shuffle", 71 d->tbShuffle = new ToolButton( bar, tr( "Randomize" ),"opieplayer2/shuffle",
71 mediaPlayerState, SLOT( setShuffled(bool) ), TRUE ); 72 mediaPlayerState, SLOT( setShuffled(bool) ), TRUE );
72 d->tbLoop = new ToolButton( bar, tr( "Loop" ), "opieplayer2/loop", 73 d->tbLoop = new ToolButton( bar, tr( "Loop" ), "opieplayer2/loop",
73 mediaPlayerState, SLOT( setLooping(bool) ), TRUE ); 74 mediaPlayerState, SLOT( setLooping(bool) ), TRUE );
74 75
75 (void)new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) ); 76 (void)new MenuItem( pmPlayList, tr( "Clear List" ), this, SLOT( clearList() ) );
76 (void)new MenuItem( pmPlayList, tr( "Add all audio files" ), 77 (void)new MenuItem( pmPlayList, tr( "Add all audio files" ),
77 this, SLOT( addAllMusicToList() ) ); 78 this, SLOT( addAllMusicToList() ) );
78 (void)new MenuItem( pmPlayList, tr( "Add all video files" ), 79 (void)new MenuItem( pmPlayList, tr( "Add all video files" ),
79 this, SLOT( addAllVideoToList() ) ); 80 this, SLOT( addAllVideoToList() ) );
80 (void)new MenuItem( pmPlayList, tr( "Add all files" ), 81 (void)new MenuItem( pmPlayList, tr( "Add all files" ),
diff --git a/noncore/multimedia/opieplayer2/xinecontrol.cpp b/noncore/multimedia/opieplayer2/xinecontrol.cpp
index e1816c8..c47a773 100644
--- a/noncore/multimedia/opieplayer2/xinecontrol.cpp
+++ b/noncore/multimedia/opieplayer2/xinecontrol.cpp
@@ -23,108 +23,103 @@
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#include "xinecontrol.h" 34#include "xinecontrol.h"
35#include "xinevideowidget.h" 35#include "xinevideowidget.h"
36 36
37/* OPIE */ 37/* OPIE */
38#include <opie2/odebug.h> 38#include <opie2/odebug.h>
39#include <qpe/qcopenvelope_qws.h> 39#include <qpe/qcopenvelope_qws.h>
40#include <qpe/qpeapplication.h> 40#include <qpe/qpeapplication.h>
41using namespace Opie::Core; 41using namespace Opie::Core;
42 42
43/* QT */ 43/* QT */
44#include <qtimer.h> 44#include <qtimer.h>
45#include <qmessagebox.h> 45#include <qmessagebox.h>
46 46
47XineControl::XineControl( XineVideoWidget *xineWidget,
48 MediaPlayerState &_mediaPlayerState,
49 QObject *parent, const char *name )
50 : QObject( parent, name ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget )
51{
52 libXine = new XINE::Lib( XINE::Lib::InitializeImmediately, xineWidget );
53
54 init();
55}
56
57XineControl::XineControl( XINE::Lib *xine, XineVideoWidget *xineWidget, 47XineControl::XineControl( XINE::Lib *xine, XineVideoWidget *xineWidget,
58 MediaPlayerState &_mediaPlayerState, 48 MediaPlayerState &_mediaPlayerState,
59 QObject *parent, const char *name ) 49 QObject *parent, const char *name )
60 : QObject( parent, name ), libXine( xine ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget ) 50 : QObject( parent, name ), libXine( xine ), mediaPlayerState( _mediaPlayerState ), xineVideoWidget( xineWidget )
61{ 51{
52 m_wasError = false;
53
62 xine->ensureInitialized(); 54 xine->ensureInitialized();
63 55
64 xine->setWidget( xineWidget ); 56 xine->setWidget( xineWidget );
65 57
66 init(); 58 init();
67} 59}
68 60
69void XineControl::init() 61void XineControl::init()
70{ 62{
71 connect( &mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( pause(bool) ) ); 63 connect( &mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( pause(bool) ) );
72 connect( this, SIGNAL( positionChanged(long) ), &mediaPlayerState, SLOT( updatePosition(long) ) ); 64 connect( this, SIGNAL( positionChanged(long) ), &mediaPlayerState, SLOT( updatePosition(long) ) );
73 connect( &mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( stop(bool) ) ); 65 connect( &mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( stop(bool) ) );
74 connect( &mediaPlayerState, SIGNAL( fullscreenToggled(bool) ), this, SLOT( setFullscreen(bool) ) ); 66 connect( &mediaPlayerState, SIGNAL( fullscreenToggled(bool) ), this, SLOT( setFullscreen(bool) ) );
75 connect( &mediaPlayerState, SIGNAL( positionChanged(long) ), this, SLOT( seekTo(long) ) ); 67 connect( &mediaPlayerState, SIGNAL( positionChanged(long) ), this, SLOT( seekTo(long) ) );
76 connect( &mediaPlayerState, SIGNAL( videoGammaChanged(int) ), this, SLOT( setGamma(int) ) ); 68 connect( &mediaPlayerState, SIGNAL( videoGammaChanged(int) ), this, SLOT( setGamma(int) ) );
77 connect( libXine, SIGNAL( stopped() ), this, SLOT( nextMedia() ) ); 69 connect( libXine, SIGNAL( stopped() ), this, SLOT( nextMedia() ) );
78 connect( xineVideoWidget, SIGNAL( videoResized(const QSize&) ), this, SLOT( videoResized(const QSize&) ) ); 70 connect( xineVideoWidget, SIGNAL( videoResized(const QSize&) ), this, SLOT( videoResized(const QSize&) ) );
79 71
80 disabledSuspendScreenSaver = FALSE; 72 disabledSuspendScreenSaver = FALSE;
81} 73}
82 74
83XineControl::~XineControl() { 75XineControl::~XineControl() {
84#if !defined(QT_NO_COP) 76#if !defined(QT_NO_COP)
85 if ( disabledSuspendScreenSaver ) { 77 if ( disabledSuspendScreenSaver ) {
86 disabledSuspendScreenSaver = FALSE; 78 disabledSuspendScreenSaver = FALSE;
87 // Re-enable the suspend mode 79 // Re-enable the suspend mode
88 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; 80 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
89 } 81 }
90#endif 82#endif
91 delete libXine; 83 delete libXine;
92} 84}
93 85
94void XineControl::play( const QString& fileName ) { 86void XineControl::play( const QString& fileName ) {
95 87
96 hasVideoChannel = FALSE; 88 hasVideoChannel = FALSE;
97 hasAudioChannel = FALSE; 89 hasAudioChannel = FALSE;
98 m_fileName = fileName; 90 m_fileName = fileName;
91 m_wasError = false;
99 92
100 odebug << "<<FILENAME: " + fileName + ">>>>" << oendl;
101 93
94 /*
95 * If Playing Fails we will fire up an MessgaeBox
96 * but present the AudioWidget so the User can
97 * either Quit and change the Playlist or Continue
98 */
102 if ( !libXine->play( fileName, 0, 0 ) ) { 99 if ( !libXine->play( fileName, 0, 0 ) ) {
103 QMessageBox::warning( 0l , tr( "Failure" ), getErrorCode() ); 100 QMessageBox::warning( 0l , tr( "Failure" ), getErrorCode() );
104 // toggle stop so the the play button is reset 101 m_wasError = true;
105 mediaPlayerState.setPlaying( false );
106 return;
107 } 102 }
108 mediaPlayerState.setPlaying( true ); 103 mediaPlayerState.setPlaying( true );
109 104
110 MediaPlayerState::DisplayType displayType; 105 MediaPlayerState::DisplayType displayType;
111 if ( !libXine->hasVideo() ) { 106 if ( !libXine->hasVideo() ) {
112 displayType = MediaPlayerState::Audio; 107 displayType = MediaPlayerState::Audio;
113 libXine->setShowVideo( false ); 108 libXine->setShowVideo( false );
114 hasAudioChannel = TRUE; 109 hasAudioChannel = TRUE;
115 } else { 110 } else {
116 displayType = MediaPlayerState::Video; 111 displayType = MediaPlayerState::Video;
117 libXine->setShowVideo( true ); 112 libXine->setShowVideo( true );
118 hasVideoChannel = TRUE; 113 hasVideoChannel = TRUE;
119 } 114 }
120 // determine if slider is shown 115 // determine if slider is shown
121 mediaPlayerState.setIsSeekable( libXine->isSeekable() ); 116 mediaPlayerState.setIsSeekable( libXine->isSeekable() );
122 117
123 // which gui (video / audio) 118 // which gui (video / audio)
124 mediaPlayerState.setDisplayType( displayType ); 119 mediaPlayerState.setDisplayType( displayType );
125 120
126#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 121#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
127 if ( !disabledSuspendScreenSaver ) { 122 if ( !disabledSuspendScreenSaver ) {
128 disabledSuspendScreenSaver = TRUE; 123 disabledSuspendScreenSaver = TRUE;
129 // Stop the screen from blanking and power saving state 124 // Stop the screen from blanking and power saving state
130 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) 125 QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" )
@@ -193,82 +188,95 @@ long XineControl::position() {
193 m_position = ( currentTime() ); 188 m_position = ( currentTime() );
194 mediaPlayerState.updatePosition( m_position ); 189 mediaPlayerState.updatePosition( m_position );
195 long emitPos = (long)m_position; 190 long emitPos = (long)m_position;
196 emit positionChanged( emitPos ); 191 emit positionChanged( emitPos );
197 if( mediaPlayerState.isPlaying() ) { 192 if( mediaPlayerState.isPlaying() ) {
198 // needs to be stopped the media is stopped 193 // needs to be stopped the media is stopped
199 QTimer::singleShot( 1000, this, SLOT( position() ) ); 194 QTimer::singleShot( 1000, this, SLOT( position() ) );
200 } 195 }
201 return m_position; 196 return m_position;
202} 197}
203 198
204/** 199/**
205 * Set videoplayback to fullscreen 200 * Set videoplayback to fullscreen
206 * @param isSet 201 * @param isSet
207 */ 202 */
208void XineControl::setFullscreen( bool isSet ) { 203void XineControl::setFullscreen( bool isSet ) {
209 libXine->showVideoFullScreen( isSet ); 204 libXine->showVideoFullScreen( isSet );
210} 205}
211 206
212 207
213QString XineControl::getMetaInfo() { 208QString XineControl::getMetaInfo() {
214 209
215 QString returnString; 210 QString returnString;
216 211
212 /*
213 * If there was an error let us
214 * change the Meta Info to contain the Error Message
215 */
216 if ( m_wasError ) {
217 returnString = tr("Error on file '%1' with reason: ",
218 "Error when playing a file" ).arg( m_fileName );
219 returnString += getErrorCode();
220 returnString.replace( QRegExp("<qt>", false), "" );
221 returnString.replace( QRegExp("</qt>", false), "" );
222 return returnString;
223 }
224
217 if ( !libXine->metaInfo( 0 ).isEmpty() ) { 225 if ( !libXine->metaInfo( 0 ).isEmpty() ) {
218 returnString += tr( " Title: " + libXine->metaInfo( 0 ) ); 226 returnString += tr( " Title: " + libXine->metaInfo( 0 ) );
219 } 227 }
220 228
221 if ( !libXine->metaInfo( 1 ).isEmpty() ) { 229 if ( !libXine->metaInfo( 1 ).isEmpty() ) {
222 returnString += tr( " Comment: " + libXine->metaInfo( 1 ) ); 230 returnString += tr( " Comment: " + libXine->metaInfo( 1 ) );
223 } 231 }
224 232
225 if ( !libXine->metaInfo( 2 ).isEmpty() ) { 233 if ( !libXine->metaInfo( 2 ).isEmpty() ) {
226 returnString += tr( " Artist: " + libXine->metaInfo( 2 ) ); 234 returnString += tr( " Artist: " + libXine->metaInfo( 2 ) );
227 } 235 }
228 236
229 if ( !libXine->metaInfo( 3 ).isEmpty() ) { 237 if ( !libXine->metaInfo( 3 ).isEmpty() ) {
230 returnString += tr( " Genre: " + libXine->metaInfo( 3 ) ); 238 returnString += tr( " Genre: " + libXine->metaInfo( 3 ) );
231 } 239 }
232 240
233 if ( !libXine->metaInfo( 4 ).isEmpty() ) { 241 if ( !libXine->metaInfo( 4 ).isEmpty() ) {
234 returnString += tr( " Album: " + libXine->metaInfo( 4 ) ); 242 returnString += tr( " Album: " + libXine->metaInfo( 4 ) );
235 } 243 }
236 244
237 if ( !libXine->metaInfo( 5 ).isEmpty() ) { 245 if ( !libXine->metaInfo( 5 ).isEmpty() ) {
238 returnString += tr( " Year: " + libXine->metaInfo( 5 ) ); 246 returnString += tr( " Year: " + libXine->metaInfo( 5 ) );
239 } 247 }
240 return returnString; 248 return returnString;
241} 249}
242 250
243QString XineControl::getErrorCode() { 251QString XineControl::getErrorCode() {
244 252
245 int errorCode = libXine->error(); 253 int errorCode = libXine->error();
246 254
247 odebug << QString("ERRORCODE: %1 ").arg(errorCode) << oendl; 255 odebug << QString("ERRORCODE: %1 ").arg(errorCode) << oendl;
248 256
249 if ( errorCode == 1 ) { 257 if ( errorCode == 1 ) {
250 return tr( "No input plugin found for this media type" ); 258 return tr( "<qt>No input plugin found for this media type</qt>" );
251 } else if ( errorCode == 2 ) { 259 } else if ( errorCode == 2 ) {
252 return tr( "No demux plugin found for this media type" ); 260 return tr( "<qt>No demux plugin found for this media type</qt>" );
253 } else if ( errorCode == 3 ) { 261 } else if ( errorCode == 3 ) {
254 return tr( "Demuxing failed for this media type" ); 262 return tr( "<qt>Demuxing failed for this media type</qt>" );
255 } else if ( errorCode == 4 ) { 263 } else if ( errorCode == 4 ) {
256 return tr( "Malformed MRL" ); 264 return tr( "<qt>Malformed MRL</qt>" );
257 } else if ( errorCode == 5 ) { 265 } else if ( errorCode == 5 ) {
258 return tr( "Input failed" ); 266 return tr( "<qt>Input failed</qt>" );
259 } else { 267 } else {
260 return tr( "Some other error" ); 268 return tr( "<qt>Some other error</qt>" );
261 } 269 }
262} 270}
263 271
264/** 272/**
265 * Seek to a position in the track 273 * Seek to a position in the track
266 * @param second the second to jump to 274 * @param second the second to jump to
267 */ 275 */
268void XineControl::seekTo( long second ) { 276void XineControl::seekTo( long second ) {
269 libXine->seekTo( (int)second ); 277 libXine->seekTo( (int)second );
270} 278}
271 279
272void XineControl::videoResized ( const QSize &s ) { 280void XineControl::videoResized ( const QSize &s ) {
273 libXine->resize( s ); 281 libXine->resize( s );
274} 282}
diff --git a/noncore/multimedia/opieplayer2/xinecontrol.h b/noncore/multimedia/opieplayer2/xinecontrol.h
index 3f44f2e..848bd05 100644
--- a/noncore/multimedia/opieplayer2/xinecontrol.h
+++ b/noncore/multimedia/opieplayer2/xinecontrol.h
@@ -20,51 +20,48 @@
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#ifndef XINECONTROL_H 34#ifndef XINECONTROL_H
35#define XINECONTROL_H 35#define XINECONTROL_H
36 36
37#include "lib.h" 37#include "lib.h"
38 38
39#include "mediaplayerstate.h" 39#include "mediaplayerstate.h"
40 40
41class XineControl : public QObject { 41class XineControl : public QObject {
42 Q_OBJECT 42 Q_OBJECT
43public: 43public:
44 XineControl( XineVideoWidget *xineWidget,
45 MediaPlayerState &_mediaPlayerState,
46 QObject *parent = 0, const char *name =0 );
47 // note that this constructor takes over ownership of the passed 44 // note that this constructor takes over ownership of the passed
48 // XINE::Lib object. 45 // XINE::Lib object.
49 XineControl( XINE::Lib *xine, XineVideoWidget *xineWidget, 46 XineControl( XINE::Lib *xine, XineVideoWidget *xineWidget,
50 MediaPlayerState &_mediaPlayerState, 47 MediaPlayerState &_mediaPlayerState,
51 QObject *parent = 0, const char *name =0 ); 48 QObject *parent = 0, const char *name =0 );
52 ~XineControl(); 49 ~XineControl();
53 50
54 bool hasVideo() const { return hasVideoChannel; } 51 bool hasVideo() const { return hasVideoChannel; }
55 bool hasAudio() const { return hasAudioChannel; } 52 bool hasAudio() const { return hasAudioChannel; }
56 53
57public slots: 54public slots:
58 void play( const QString& fileName ); 55 void play( const QString& fileName );
59 void stop( bool ); 56 void stop( bool );
60 57
61 /** 58 /**
62 * Pause the media stream 59 * Pause the media stream
63 * @param if pause or not 60 * @param if pause or not
64 */ 61 */
65 void pause( bool ); 62 void pause( bool );
66 63
67 /** 64 /**
68 * Set videos fullscreen 65 * Set videos fullscreen
69 * @param yes or no 66 * @param yes or no
70 */ 67 */
@@ -96,31 +93,32 @@ public slots:
96 QString getErrorCode(); 93 QString getErrorCode();
97 94
98 95
99 void videoResized ( const QSize &s ); 96 void videoResized ( const QSize &s );
100 97
101 /** 98 /**
102 * Set the gamma value of the video output 99 * Set the gamma value of the video output
103 * @param int value between -100 and 100, 0 is original 100 * @param int value between -100 and 100, 0 is original
104 */ 101 */
105 void setGamma( int ); 102 void setGamma( int );
106 103
107private: 104private:
108 void init(); 105 void init();
109 106
110 XINE::Lib *libXine; 107 XINE::Lib *libXine;
111 long m_currentTime; 108 long m_currentTime;
112 long m_position; 109 long m_position;
113 int m_length; 110 int m_length;
114 QString m_fileName; 111 QString m_fileName;
115 bool disabledSuspendScreenSaver : 1; 112 bool disabledSuspendScreenSaver : 1;
116 bool hasVideoChannel : 1; 113 bool hasVideoChannel : 1;
117 bool hasAudioChannel : 1; 114 bool hasAudioChannel : 1;
118 MediaPlayerState &mediaPlayerState; 115 MediaPlayerState &mediaPlayerState;
119 XineVideoWidget *xineVideoWidget; 116 XineVideoWidget *xineVideoWidget;
117 bool m_wasError : 1; // used for chaeting on the metainfo
120 118
121signals: 119signals:
122 void positionChanged( long ); 120 void positionChanged( long );
123}; 121};
124 122
125 123
126#endif 124#endif