summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/multimedia/opieplayer/audiodevice.cpp76
-rw-r--r--core/multimedia/opieplayer/audiowidget.cpp35
-rw-r--r--core/multimedia/opieplayer/audiowidget.h13
-rw-r--r--core/multimedia/opieplayer/mediaplayer.cpp59
-rw-r--r--core/multimedia/opieplayer/mediaplayerstate.h2
5 files changed, 92 insertions, 93 deletions
diff --git a/core/multimedia/opieplayer/audiodevice.cpp b/core/multimedia/opieplayer/audiodevice.cpp
index 020f6be..136e06c 100644
--- a/core/multimedia/opieplayer/audiodevice.cpp
+++ b/core/multimedia/opieplayer/audiodevice.cpp
@@ -36,9 +36,4 @@
#endif
-// #ifdef Q_WS_WIN
-// #include <windows.h>
-// #include <mmsystem.h>
-// #include <mmreg.h>
-// #endif
#if defined(Q_WS_X11) || defined(Q_WS_QWS)
#include <fcntl.h>
@@ -51,9 +46,4 @@
#endif
-// #if defined(Q_OS_WIN32)
-// static const int expectedBytesPerMilliSecond = 2 * 2 * 44000 / 1000;
-// static const int timerResolutionMilliSeconds = 30;
-// static const int sound_fragment_bytes = timerResolutionMilliSeconds * expectedBytesPerMilliSecond;
-// #else
# if defined(QT_QWS_IPAQ)
static const int sound_fragment_shift = 14;
@@ -102,21 +92,4 @@ void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume
muted = AudioDevicePrivate::muted;
unsigned int volume;
-// #ifdef Q_OS_WIN32
-// HWAVEOUT handle;
-// WAVEFORMATEX formatData;
-// formatData.cbSize = sizeof(WAVEFORMATEX);
-// formatData.wFormatTag = WAVE_FORMAT_PCM;
-// formatData.nAvgBytesPerSec = 4 * 44000;
-// formatData.nBlockAlign = 4;
-// formatData.nChannels = 2;
-// formatData.nSamplesPerSec = 44000;
-// formatData.wBitsPerSample = 16;
-// waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL);
-// if ( waveOutGetVolume( handle, (LPDWORD)&volume ) )
-// // qDebug( "get volume of audio device failed" );
-// waveOutClose( handle );
-// leftVolume = volume & 0xFFFF;
-// rightVolume = volume >> 16;
-// #else
int mixerHandle = open( "/dev/mixer", O_RDWR );
if ( mixerHandle >= 0 ) {
@@ -128,5 +101,4 @@ void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume
leftVolume = ((volume & 0x00FF) << 16) / 101;
rightVolume = ((volume & 0xFF00) << 8) / 101;
-//#endif
}
@@ -143,20 +115,4 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume,
rightVolume = ( (int)rightVolume < 0 ) ? 0 : (( rightVolume > 0xFFFF ) ? 0xFFFF : rightVolume );
}
-// #ifdef Q_OS_WIN32
-// HWAVEOUT handle;
-// WAVEFORMATEX formatData;
-// formatData.cbSize = sizeof(WAVEFORMATEX);
-// formatData.wFormatTag = WAVE_FORMAT_PCM;
-// formatData.nAvgBytesPerSec = 4 * 44000;
-// formatData.nBlockAlign = 4;
-// formatData.nChannels = 2;
-// formatData.nSamplesPerSec = 44000;
-// formatData.wBitsPerSample = 16;
-// waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL);
-// unsigned int volume = (rightVolume << 16) | leftVolume;
-// if ( waveOutSetVolume( handle, volume ) )
-// // qDebug( "set volume of audio device failed" );
-// waveOutClose( handle );
-// #else
// Volume can be from 0 to 100 which is 101 distinct values
unsigned int rV = (rightVolume * 101) >> 16;
@@ -191,5 +147,4 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume,
-
AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) {
qDebug("creating new audio device");
@@ -267,7 +222,4 @@ AudioDevice::~AudioDevice() {
QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE;
-// #ifdef Q_OS_WIN32
-// waveOutClose( (HWAVEOUT)d->handle );
-// #else
# ifndef KEEP_DEVICE_OPEN
close( d->handle ); // Now it should be safe to shut the handle
@@ -275,5 +227,4 @@ AudioDevice::~AudioDevice() {
delete d->unwrittenBuffer;
delete d;
-//#endif
QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE;
@@ -289,18 +240,4 @@ void AudioDevice::volumeChanged( bool muted )
void AudioDevice::write( char *buffer, unsigned int length )
{
-// #ifdef Q_OS_WIN32
-// // returns immediately and (to be implemented) emits completedIO() when finished writing
-// WAVEHDR *lpWaveHdr = (WAVEHDR *)malloc( sizeof(WAVEHDR) );
-// // maybe the buffer should be copied so that this fool proof, but its a performance hit
-// lpWaveHdr->lpData = buffer;
-// lpWaveHdr->dwBufferLength = length;
-// lpWaveHdr->dwFlags = 0L;
-// lpWaveHdr->dwLoops = 0L;
-// waveOutPrepareHeader( (HWAVEOUT)d->handle, lpWaveHdr, sizeof(WAVEHDR) );
-// // waveOutWrite returns immediately. the data is sent in the background.
-// if ( waveOutWrite( (HWAVEOUT)d->handle, lpWaveHdr, sizeof(WAVEHDR) ) )
-// qDebug( "failed to write block to audio device" );
-// // emit completedIO();
-// #else
int t = ::write( d->handle, buffer, length );
if ( t<0 ) t = 0;
@@ -339,7 +276,4 @@ unsigned int AudioDevice::bufferSize() const
unsigned int AudioDevice::canWrite() const
{
-// #ifdef Q_OS_WIN32
-// return bufferSize(); // Any better?
-// #else
audio_buf_info info;
if ( d->can_GETOSPACE && ioctl(d->handle,SNDCTL_DSP_GETOSPACE,&info) ) {
@@ -366,17 +300,8 @@ unsigned int AudioDevice::canWrite() const
return d->bufferSize;
}
-//#endif
}
int AudioDevice::bytesWritten() {
-// #ifdef Q_OS_WIN32
-// MMTIME pmmt = { TIME_BYTES, 0 };
-// if ( ( waveOutGetPosition( (HWAVEOUT)d->handle, &pmmt, sizeof(MMTIME) ) != MMSYSERR_NOERROR ) || ( pmmt.wType != TIME_BYTES ) ) {
-// qDebug( "failed to get audio device position" );
-// return -1;
-// }
-// return pmmt.u.cb;
-// #else
int buffered = 0;
if ( ioctl( d->handle, SNDCTL_DSP_GETODELAY, &buffered ) ) {
@@ -385,5 +310,4 @@ int AudioDevice::bytesWritten() {
}
return buffered;
-//#endif
}
diff --git a/core/multimedia/opieplayer/audiowidget.cpp b/core/multimedia/opieplayer/audiowidget.cpp
index d20d560..ef7c8dc 100644
--- a/core/multimedia/opieplayer/audiowidget.cpp
+++ b/core/multimedia/opieplayer/audiowidget.cpp
@@ -147,5 +147,5 @@ AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) :
connect( mediaPlayerState, SIGNAL( viewChanged(char) ), this, SLOT( setView(char) ) );
connect( mediaPlayerState, SIGNAL( loopingToggled(bool) ), this, SLOT( setLooping(bool) ) );
- connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) );
+// connect( mediaPlayerState, SIGNAL( pausedToggled(bool) ), this, SLOT( setPaused(bool) ) );
connect( mediaPlayerState, SIGNAL( playingToggled(bool) ), this, SLOT( setPlaying(bool) ) );
@@ -154,5 +154,5 @@ AudioWidget::AudioWidget(QWidget* parent, const char* name, WFlags f) :
setPosition( mediaPlayerState->position() );
setLooping( mediaPlayerState->fullscreen() );
- setPaused( mediaPlayerState->paused() );
+// setPaused( mediaPlayerState->paused() );
setPlaying( mediaPlayerState->playing() );
@@ -364,5 +364,14 @@ void AudioWidget::mouseMoveEvent( QMouseEvent *event ) {
emit moreClicked();
return;
- case AudioVolumeDown: emit lessClicked(); return;
+ case AudioVolumeDown:
+ qDebug("less clicked");
+ emit lessClicked();
+ return;
+ case AudioForward:
+ emit forwardClicked();
+ return;
+ case AudioBack:
+ emit backClicked();
+ return;
}
} else if ( !isOnButton && audioButtons[i].isHeld ) {
@@ -376,7 +385,15 @@ void AudioWidget::mouseMoveEvent( QMouseEvent *event ) {
setToggleButton( i, FALSE );
switch (i) {
- case AudioPlay: mediaPlayerState->setPlaying(audioButtons[i].isDown); return;
+ case AudioPlay:
+ if( mediaPlayerState->isPaused ) {
+ mediaPlayerState->setPaused( FALSE );
+ return;
+ } else if( !mediaPlayerState->isPaused ) {
+ mediaPlayerState->setPaused( TRUE );
+ return;
+ }
+// case AudioPlay: mediaPlayerState->setPlaying(audioButtons[i].isDown); return;
case AudioStop: mediaPlayerState->setPlaying(FALSE); return;
- case AudioPause: mediaPlayerState->setPaused(audioButtons[i].isDown); return;
+// case AudioPause: mediaPlayerState->setPaused(audioButtons[i].isDown); return;
case AudioNext: mediaPlayerState->setNext(); return;
case AudioPrevious: mediaPlayerState->setPrev(); return;
@@ -464,14 +481,14 @@ void AudioWidget::keyReleaseEvent( QKeyEvent *e)
break;
case Key_Down: //volume
- toggleButton(6);
+// toggleButton(6);
emit lessClicked();
emit lessReleased();
- toggleButton(6);
+// toggleButton(6);
break;
case Key_Up: //volume
- toggleButton(5);
+// toggleButton(5);
emit moreClicked();
emit moreReleased();
- toggleButton(5);
+// toggleButton(5);
break;
case Key_Right: //next in playlist
diff --git a/core/multimedia/opieplayer/audiowidget.h b/core/multimedia/opieplayer/audiowidget.h
index c686741..96bc55c 100644
--- a/core/multimedia/opieplayer/audiowidget.h
+++ b/core/multimedia/opieplayer/audiowidget.h
@@ -37,7 +37,6 @@ class QPixmap;
enum AudioButtons {
- AudioPlay,
+ AudioPlay=0,
AudioStop,
- AudioPause,
AudioNext,
AudioPrevious,
@@ -45,5 +44,7 @@ enum AudioButtons {
AudioVolumeDown,
AudioLoop,
- AudioPlayList
+ AudioPlayList,
+ AudioForward,
+ AudioBack
};
@@ -62,5 +63,5 @@ public slots:
void sliderPressed( );
void sliderReleased( );
- void setPaused( bool b) { setToggleButton( AudioPause, b ); }
+// void setPaused( bool b) { setToggleButton( AudioPause, b ); }
void setLooping( bool b) { setToggleButton( AudioLoop, b ); }
void setPlaying( bool b) { setToggleButton( AudioPlay, b ); }
@@ -75,4 +76,8 @@ signals:
void lessReleased();
void sliderMoved(long);
+ void forwardClicked();
+ void backClicked();
+ void forwardReleased();
+ void backReleased();
protected:
diff --git a/core/multimedia/opieplayer/mediaplayer.cpp b/core/multimedia/opieplayer/mediaplayer.cpp
index b0963cf..4f3823a 100644
--- a/core/multimedia/opieplayer/mediaplayer.cpp
+++ b/core/multimedia/opieplayer/mediaplayer.cpp
@@ -107,5 +107,6 @@ void MediaPlayer::setPlaying( bool play ) {
if ( ((currentFile->file()).left(4) != "http") && !QFile::exists( currentFile->file() ) ) {
QMessageBox::critical( 0, tr( "File not found"),
- tr( "The following file was not found: <i>" ) + currentFile->file() + "</i>" );
+ tr( "The following file was not found: <i>" )
+ + currentFile->file() + "</i>" );
mediaPlayerState->setPlaying( FALSE );
return;
@@ -114,5 +115,6 @@ void MediaPlayer::setPlaying( bool play ) {
if ( !mediaPlayerState->newDecoder( currentFile->file() ) ) {
QMessageBox::critical( 0, tr( "No decoder found"),
- tr( "Sorry, no appropriate decoders found for this file: <i>" ) + currentFile->file() + "</i>" );
+ tr( "Sorry, no appropriate decoders found for this file: <i>" )
+ + currentFile->file() + "</i>" );
mediaPlayerState->setPlaying( FALSE );
return;
@@ -177,17 +179,68 @@ void MediaPlayer::startIncreasingVolume() {
startTimer( 100 );
AudioDevice::increaseVolume();
+
}
+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 );
}
void MediaPlayer::timerEvent( QTimerEvent * ) {
+// qDebug("timer");
if ( volumeDirection == +1 )
- AudioDevice::increaseVolume();
+ AudioDevice::increaseVolume();
else if ( volumeDirection == -1 )
AudioDevice::decreaseVolume();
+
+ // Display an on-screen display volume
+ unsigned int l, r, v; bool m;
+ AudioDevice::getVolume( l, r, m );
+ v = ((l + r) * 11) / (2*0xFFFF);
+
+ if ( drawnOnScreenDisplay && onScreenDisplayVolume == v ) {
+// qDebug("returning %d, %d, %d, %d", v, l, r, m);
+ 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 );
+ }
+
+ 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 );
+ }
}
diff --git a/core/multimedia/opieplayer/mediaplayerstate.h b/core/multimedia/opieplayer/mediaplayerstate.h
index 26185c5..1c65599 100644
--- a/core/multimedia/opieplayer/mediaplayerstate.h
+++ b/core/multimedia/opieplayer/mediaplayerstate.h
@@ -34,4 +34,5 @@ public:
MediaPlayerState( QObject *parent, const char *name );
~MediaPlayerState();
+ bool isPaused;
bool isStreaming;
@@ -102,5 +103,4 @@ private:
bool isShuffled;
bool usePlaylist;
- bool isPaused;
bool isPlaying;
long curPosition;