summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/mediaplayer.cpp106
-rw-r--r--noncore/multimedia/opieplayer2/xinecontrol.cpp6
-rw-r--r--noncore/multimedia/opieplayer2/xinecontrol.h5
3 files changed, 85 insertions, 32 deletions
diff --git a/noncore/multimedia/opieplayer2/mediaplayer.cpp b/noncore/multimedia/opieplayer2/mediaplayer.cpp
index a3238f0..51fbb8b 100644
--- a/noncore/multimedia/opieplayer2/mediaplayer.cpp
+++ b/noncore/multimedia/opieplayer2/mediaplayer.cpp
@@ -1,68 +1,75 @@
#include <qpe/qpeapplication.h>
#include <qpe/qlibrary.h>
#include <qpe/resource.h>
#include <qpe/config.h>
#include <qmainwindow.h>
#include <qmessagebox.h>
#include <qwidgetstack.h>
#include <qfile.h>
#include "mediaplayer.h"
#include "playlistwidget.h"
#include "audiowidget.h"
+#include "videowidget.h"
#include "volumecontrol.h"
#include "mediaplayerstate.h"
extern AudioWidget *audioUI;
+extern VideoWidget *videoUI;
extern PlayListWidget *playList;
extern MediaPlayerState *mediaPlayerState;
MediaPlayer::MediaPlayer( QObject *parent, const char *name )
: QObject( parent, name ), volumeDirection( 0 ), currentFile( NULL ) {
xineControl = new XineControl();
// QPEApplication::grabKeyboard(); // EVIL
connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) );
connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), this, SLOT( setPlaying( bool ) ) );
connect( mediaPlayerState, SIGNAL( pausedToggled( bool ) ), this, SLOT( pauseCheck( bool ) ) );
connect( mediaPlayerState, SIGNAL( next() ), this, SLOT( next() ) );
connect( mediaPlayerState, SIGNAL( prev() ), this, SLOT( prev() ) );
connect( audioUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) );
connect( audioUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) );
connect( audioUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) );
connect( audioUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) );
+ connect( videoUI, SIGNAL( moreClicked() ), this, SLOT( startIncreasingVolume() ) );
+ connect( videoUI, SIGNAL( lessClicked() ), this, SLOT( startDecreasingVolume() ) );
+ connect( videoUI, SIGNAL( moreReleased() ), this, SLOT( stopChangingVolume() ) );
+ connect( videoUI, SIGNAL( lessReleased() ), this, SLOT( stopChangingVolume() ) );
+
volControl = new VolumeControl;
}
MediaPlayer::~MediaPlayer() {
delete xineControl;
delete volControl;
}
void MediaPlayer::pauseCheck( bool b ) {
if ( b && !mediaPlayerState->playing() ) {
mediaPlayerState->setPaused( FALSE );
}
}
void MediaPlayer::play() {
mediaPlayerState->setPlaying( FALSE );
mediaPlayerState->setPlaying( TRUE );
}
void MediaPlayer::setPlaying( bool play ) {
if ( !play ) {
mediaPlayerState->setPaused( FALSE );
return;
@@ -130,98 +137,135 @@ void MediaPlayer::next() {
void MediaPlayer::startDecreasingVolume() {
volumeDirection = -1;
startTimer( 100 );
volControl->decVol(2);
}
void MediaPlayer::startIncreasingVolume() {
volumeDirection = +1;
startTimer( 100 );
volControl->incVol(2);
}
bool drawnOnScreenDisplay = FALSE;
unsigned int onScreenDisplayVolume = 0;
const int yoff = 110;
void MediaPlayer::stopChangingVolume() {
killTimers();
// Get rid of the on-screen display stuff
drawnOnScreenDisplay = FALSE;
onScreenDisplayVolume = 0;
- int w = audioUI->width();
- int h = audioUI->height();
- audioUI->repaint( (w - 200) / 2, h - yoff, 200 + 9, 70, FALSE );
+ int w=0;
+ int h=0;
+ if( !xineControl->hasVideo()) {
+ w = audioUI->width();
+ h = audioUI->height();
+ audioUI->repaint( (w - 200) / 2, h - yoff, 200 + 9, 70, FALSE );
+ } else {
+ w = videoUI->width();
+ h = videoUI->height();
+ videoUI->repaint( (w - 200) / 2, h - yoff, 200 + 9, 70, FALSE );
+ }
}
void MediaPlayer::timerEvent( QTimerEvent * ) {
if ( volumeDirection == +1 ) {
volControl->incVol(2);
} else if ( volumeDirection == -1 ) {
volControl->decVol(2);
}
- // TODO FIXME
+ // TODO FIXME
int v;
v = volControl->getVolume();
v = v / 10;
- if ( drawnOnScreenDisplay && onScreenDisplayVolume == v ) {
- return;
- }
-
- int w = audioUI->width();
- int h = audioUI->height();
-
- if ( drawnOnScreenDisplay ) {
- if ( onScreenDisplayVolume > v ) {
- audioUI->repaint( (w - 200) / 2 + v * 20 + 0, h - yoff + 40, (onScreenDisplayVolume - v) * 20 + 9, 30, FALSE );
- }
+ if ( drawnOnScreenDisplay && onScreenDisplayVolume == v ) {
+ return;
}
- drawnOnScreenDisplay = TRUE;
- onScreenDisplayVolume = v;
+ int w=0; int h=0;
+ if( !xineControl->hasVideo()) {
+ w = audioUI->width();
+ h = audioUI->height();
- QPainter p( audioUI );
- p.setPen( QColor( 0x10, 0xD0, 0x10 ) );
- p.setBrush( QColor( 0x10, 0xD0, 0x10 ) );
-
- QFont f;
- f.setPixelSize( 20 );
- f.setBold( TRUE );
- p.setFont( f );
- p.drawText( (w - 200) / 2, h - yoff + 20, tr("Volume") );
+ if ( drawnOnScreenDisplay ) {
+ if ( onScreenDisplayVolume > v ) {
+ audioUI->repaint( (w - 200) / 2 + v * 20 + 0, h - yoff + 40, (onScreenDisplayVolume - v) * 20 + 9, 30, FALSE );
+ }
+ }
+ drawnOnScreenDisplay = TRUE;
+ onScreenDisplayVolume = v;
+ QPainter p( audioUI );
+ p.setPen( QColor( 0x10, 0xD0, 0x10 ) );
+ p.setBrush( QColor( 0x10, 0xD0, 0x10 ) );
+
+ QFont f;
+ f.setPixelSize( 20 );
+ f.setBold( TRUE );
+ p.setFont( f );
+ p.drawText( (w - 200) / 2, h - yoff + 20, tr("Volume") );
+
+ for ( unsigned int i = 0; i < 10; i++ ) {
+ if ( v > i ) {
+ p.drawRect( (w - 200) / 2 + i * 20 + 0, h - yoff + 40, 9, 30 );
+ } else {
+ p.drawRect( (w - 200) / 2 + i * 20 + 3, h - yoff + 50, 3, 10 );
+ }
+ }
+ } else {
+ w = videoUI->width();
+ h = videoUI->height();
- for ( unsigned int i = 0; i < 10; i++ ) {
- if ( v > i ) {
- p.drawRect( (w - 200) / 2 + i * 20 + 0, h - yoff + 40, 9, 30 );
- } else {
- p.drawRect( (w - 200) / 2 + i * 20 + 3, h - yoff + 50, 3, 10 );
+ if ( drawnOnScreenDisplay ) {
+ if ( onScreenDisplayVolume > v ) {
+ videoUI->repaint( (w - 200) / 2 + v * 20 + 0, h - yoff + 40, (onScreenDisplayVolume - v) * 20 + 9, 30, FALSE );
+ }
+ }
+ drawnOnScreenDisplay = TRUE;
+ onScreenDisplayVolume = v;
+ QPainter p( videoUI );
+ p.setPen( QColor( 0x10, 0xD0, 0x10 ) );
+ p.setBrush( QColor( 0x10, 0xD0, 0x10 ) );
+
+ QFont f;
+ f.setPixelSize( 20 );
+ f.setBold( TRUE );
+ p.setFont( f );
+ p.drawText( (w - 200) / 2, h - yoff + 20, tr("Volume") );
+
+ for ( unsigned int i = 0; i < 10; i++ ) {
+ if ( v > i ) {
+ p.drawRect( (w - 200) / 2 + i * 20 + 0, h - yoff + 40, 9, 30 );
+ } else {
+ p.drawRect( (w - 200) / 2 + i * 20 + 3, h - yoff + 50, 3, 10 );
+ }
}
}
}
void MediaPlayer::keyReleaseEvent( QKeyEvent *e) {
switch ( e->key() ) {
////////////////////////////// Zaurus keys
case Key_Home:
break;
case Key_F9: //activity
break;
case Key_F10: //contacts
break;
case Key_F11: //menu
break;
case Key_F12: //home
qDebug("Blank here");
break;
case Key_F13: //mail
break;
}
}
void MediaPlayer::doBlank() {
diff --git a/noncore/multimedia/opieplayer2/xinecontrol.cpp b/noncore/multimedia/opieplayer2/xinecontrol.cpp
index 84ef3f3..17112a2 100644
--- a/noncore/multimedia/opieplayer2/xinecontrol.cpp
+++ b/noncore/multimedia/opieplayer2/xinecontrol.cpp
@@ -47,63 +47,67 @@ XineControl::XineControl( QObject *parent, const char *name )
connect ( videoUI, SIGNAL( videoResized ( const QSize & )), this, SLOT( videoResized ( const QSize & )));
connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( pause(bool) ) );
connect( this, SIGNAL( positionChanged( long ) ), mediaPlayerState, SLOT( updatePosition( long ) ) );
connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), this, SLOT( stop( bool ) ) );
connect( mediaPlayerState, SIGNAL( fullscreenToggled( bool ) ), this, SLOT( setFullscreen( bool ) ) );
connect( mediaPlayerState, SIGNAL( positionChanged( long ) ), this, SLOT( seekTo( long ) ) );
connect( libXine, SIGNAL( stopped() ), this, SLOT( nextMedia() ) );
disabledSuspendScreenSaver = FALSE;
}
XineControl::~XineControl() {
#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
if ( disabledSuspendScreenSaver ) {
disabledSuspendScreenSaver = FALSE;
// Re-enable the suspend mode
QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
}
#endif
delete libXine;
}
void XineControl::play( const QString& fileName ) {
+ hasVideoChannel=FALSE;
+ hasAudioChannel=FALSE;
m_fileName = fileName;
libXine->play( fileName );
mediaPlayerState->setPlaying( true );
// default to audio view until we know how to handle video
// MediaDetect mdetect;
char whichGui = mdetect.videoOrAudio( fileName );
if (whichGui == 'f') {
qDebug("Nicht erkannter Dateityp");
return;
}
if (whichGui == 'a') {
libXine->setShowVideo( false );
+ hasAudioChannel=TRUE;
} else {
libXine->setShowVideo( true );
+ hasVideoChannel=TRUE;
}
// determine if slider is shown
// mediaPlayerState->setIsStreaming( mdetect.isStreaming( fileName ) );
mediaPlayerState->setIsStreaming( !libXine->isSeekable() );
// which gui (video / audio)
mediaPlayerState->setView( whichGui );
#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
if ( !disabledSuspendScreenSaver ) {
disabledSuspendScreenSaver = TRUE;
// Stop the screen from blanking and power saving state
QCopEnvelope("QPE/System", "setScreenSaverMode(int)" )
<< ( whichGui == 'v' ? QPEApplication::Disable : QPEApplication::DisableSuspend );
}
#endif
length();
position();
}
void XineControl::nextMedia() {
mediaPlayerState->setNext();
}
@@ -171,26 +175,26 @@ long XineControl::position() {
if(mediaPlayerState->isPlaying)
// needs to be stopped the media is stopped
QTimer::singleShot( 1000, this, SLOT( position() ) );
// qDebug("POSITION : %d", m_position);
return m_position;
}
/**
* Set videoplayback to fullscreen
* @param isSet
*/
void XineControl::setFullscreen( bool isSet ) {
libXine->showVideoFullScreen( isSet);
}
/**
* Seek to a position in the track
* @param second the second to jump to
*/
void XineControl::seekTo( long second ) {
libXine->play( m_fileName , 0, (int)second );
}
void XineControl::videoResized ( const QSize &s ) {
- libXine-> resize ( s );
+ libXine-> resize ( s );
}
diff --git a/noncore/multimedia/opieplayer2/xinecontrol.h b/noncore/multimedia/opieplayer2/xinecontrol.h
index 9ad221e..88458be 100644
--- a/noncore/multimedia/opieplayer2/xinecontrol.h
+++ b/noncore/multimedia/opieplayer2/xinecontrol.h
@@ -24,51 +24,56 @@
 :     =  ...= . :.=-
 -.   .:....=;==+<; You should have received a copy of the GNU
  -_. . .   )=.  = Library General Public License along with
    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef XINECONTROL_H
#define XINECONTROL_H
#include "lib.h"
#include "mediadetect.h"
#include <qobject.h>
class XineControl : public QObject {
Q_OBJECT
public:
XineControl( QObject *parent = 0, const char *name =0 );
~XineControl();
int m_length;
+ bool hasVideo() const { return hasVideoChannel; }
+ bool hasAudio() const { return hasAudioChannel; }
+
public slots:
void play( const QString& fileName );
void stop( bool );
void pause( bool );
void setFullscreen( bool );
long currentTime();
void seekTo( long );
// get length of media file and set it
void length();
long position();
void nextMedia();
void videoResized ( const QSize &s );
private:
XINE::Lib *libXine;
MediaDetect mdetect;
long m_currentTime;
long m_position;
QString m_fileName;
bool disabledSuspendScreenSaver;
+ bool hasVideoChannel;
+ bool hasAudioChannel;
signals:
void positionChanged( long );
};
#endif