[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/multimedia/k3b
From: Michal Malek <michalm () jabster ! pl>
Date: 2010-07-03 20:31:01
Message-ID: 20100703203101.1F52CAC8E7 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1145688 by mmalek:
* Various fixes of player behaviour
* Removed "Play/Pause" action, instad hiding/showing "Play"/"Pause" actions
M +5 -2 libk3bdevice/k3bmsf.cpp
M +70 -104 src/projects/k3baudiotrackplayer.cpp
M +2 -1 src/projects/k3baudiotrackplayer.h
M +2 -1 src/projects/k3baudioview.cpp
M +11 -12 src/projects/k3baudioviewimpl.cpp
--- trunk/extragear/multimedia/k3b/libk3bdevice/k3bmsf.cpp #1145687:1145688
@@ -15,8 +15,9 @@
#include "k3bmsf.h"
#include <QtCore/QRegExp>
#include <QtCore/QSharedData>
+#include <KDebug>
-#include <math.h>
+#include <cmath>
class K3b::Msf::Private : public QSharedData
{
@@ -300,7 +301,9 @@
K3b::Msf K3b::Msf::fromAudioBytes( qint64 bytes )
{
- Q_ASSERT( bytes%2352 == 0 );
+ if( bytes % 2352 != 0 ) {
+ kWarning() << "bytes:" << bytes << "(not aligned to" << 2352 << ")!";
+ }
return Msf( bytes/2352 );
}
--- trunk/extragear/multimedia/k3b/src/projects/k3baudiotrackplayer.cpp #1145687:1145688
@@ -40,10 +40,9 @@
{
public:
AudioTrackPlayerSeekAction( AudioTrackPlayer* player, QObject* parent );
- ~AudioTrackPlayerSeekAction();
void setValue( int value );
- void setMaximum( int value );
+ void setCurrentTrack( const K3b::AudioTrack& track );
protected:
virtual QWidget* createWidget( QWidget* parent );
@@ -60,11 +59,6 @@
}
-AudioTrackPlayerSeekAction::~AudioTrackPlayerSeekAction()
-{
-}
-
-
void AudioTrackPlayerSeekAction::setValue( int value )
{
Q_FOREACH( QWidget* widget, createdWidgets() ) {
@@ -75,11 +69,16 @@
}
-void AudioTrackPlayerSeekAction::setMaximum( int value )
+void AudioTrackPlayerSeekAction::setCurrentTrack( const K3b::AudioTrack& track )
{
Q_FOREACH( QWidget* widget, createdWidgets() ) {
if( QSlider* slider = qobject_cast<QSlider*>( widget ) ) {
- slider->setMaximum( value );
+ // we show the currently playing track as a tooltip on the slider
+ slider->setToolTip( i18n("Playing track %1: %2 - %3")
+ .arg( track.trackNumber() )
+ .arg( track.artist() )
+ .arg( track.title()) );
+ slider->setMaximum( track.length().audioBytes() );
}
}
}
@@ -89,6 +88,8 @@
{
QSlider* slider = new QSlider( container );
slider->setRange( 0, 100 );
+ slider->setSingleStep( Msf::fromSeconds( 10 ).audioBytes() );
+ slider->setPageStep( Msf::fromSeconds( 30 ).audioBytes() );
slider->setOrientation( Qt::Horizontal );
connect( slider, SIGNAL(sliderMoved(int)), m_player, SLOT(slotSeek(int)) );
return slider;
@@ -106,7 +107,6 @@
KAction* actionPlay;
KAction* actionPause;
- KAction* actionPlayPause;
KAction* actionStop;
KAction* actionNext;
KAction* actionPrevious;
@@ -132,54 +132,32 @@
// create the actions
// TODO: create shortcuts (is there a way to let the user change them?)
- d->actionPlay = createAction( this, i18n("Play"),
- "media-playback-start",
- QKeySequence(),
- this, SLOT(playPause()),
- actionCollection,
- "player_play" );
- d->actionPause = createAction( this, i18n("Pause"),
- "media-playback-pause",
- QKeySequence(),
- this, SLOT(playPause()),
- actionCollection,
- "player_pause" );
- d->actionPlayPause = createAction( this, i18n("Play/Pause"),
- "media-playback-start",
- QKeySequence(),
- this, SLOT(playPause()),
- actionCollection,
- "player_play_pause" );
-
- d->actionStop = createAction( this, i18n("Stop"),
- "media-playback-stop",
- QKeySequence(),
- this, SLOT(stop()),
- actionCollection,
- "player_stop" );
- d->actionNext = createAction( this, i18n("Next"),
- "media-skip-forward",
- QKeySequence(),
- this, SLOT(next()),
- actionCollection,
- "player_next" );
- d->actionPrevious = createAction( this, i18n("Previous"),
- "media-skip-backward",
- QKeySequence(),
- this, SLOT(previous()),
- actionCollection,
- "player_previous" );
- d->actionSeek = new AudioTrackPlayerSeekAction( this, actionCollection );
- if( actionCollection ) {
- actionCollection->addAction( "player_seek", d->actionSeek );
- }
-
+ d->actionPlay = new KAction( KIcon( "media-playback-start" ), i18n("Play"), this );
+ d->actionPlay->setToolTip( i18n("Play") );
+ d->actionPause = new KAction( KIcon( "media-playback-pause" ), i18n("Pause"), this );
+ d->actionPause->setVisible( false );
+ d->actionPause->setToolTip( i18n("Pause") );
+ d->actionStop = new KAction( KIcon( "media-playback-stop" ), i18n("Stop"), this );
d->actionStop->setEnabled( false );
- d->actionPause->setEnabled( false );
+ d->actionStop->setToolTip( i18n("Stop") );
+ d->actionNext = new KAction( KIcon( "media-skip-forward" ), i18n("Next"), this );
d->actionNext->setEnabled( false );
+ d->actionNext->setToolTip( i18n("Next") );
+ d->actionPrevious = new KAction( KIcon( "media-skip-backward" ), i18n("Previous"), this );
d->actionPrevious->setEnabled( false );
+ d->actionPrevious->setToolTip( i18n("Previous") );
+ d->actionSeek = new AudioTrackPlayerSeekAction( this, actionCollection );
d->actionSeek->setEnabled( false );
+ if( actionCollection ) {
+ actionCollection->addAction( "player_play", d->actionPlay );
+ actionCollection->addAction( "player_pause", d->actionPause );
+ actionCollection->addAction( "player_stop", d->actionStop );
+ actionCollection->addAction( "player_next", d->actionNext );
+ actionCollection->addAction( "player_previous", d->actionPrevious );
+ actionCollection->addAction( "player_seek", d->actionSeek );
+ }
+
connect( d->doc, SIGNAL(changed()),
this, SLOT(slotDocChanged()) );
connect( d->doc, SIGNAL(trackChanged(K3b::AudioTrack*)),
@@ -192,13 +170,16 @@
this, SLOT(slotStateChanged(QAudio::State)) );
connect( d->audioDocReader, SIGNAL(currentTrackChanged(K3b::AudioTrack)),
this, SLOT(slotCurrentTrackChanged(K3b::AudioTrack)) );
-
- // tooltips
- d->actionPlay->setToolTip( i18n("Play") );
- d->actionStop->setToolTip( i18n("Stop") );
- d->actionPause->setToolTip( i18n("Pause") );
- d->actionNext->setToolTip( i18n("Next") );
- d->actionPrevious->setToolTip( i18n("Previous") );
+ connect( d->actionPlay, SIGNAL(triggered(bool)),
+ this, SLOT(play()) );
+ connect( d->actionPause, SIGNAL(triggered(bool)),
+ this, SLOT(pause()) );
+ connect( d->actionStop, SIGNAL(triggered(bool)),
+ this, SLOT(stop()) );
+ connect( d->actionNext, SIGNAL(triggered(bool)),
+ this, SLOT(next()) );
+ connect( d->actionPrevious, SIGNAL(triggered(bool)),
+ this, SLOT(previous()) );
}
@@ -219,51 +200,32 @@
void AudioTrackPlayer::playTrack( const K3b::AudioTrack& track )
{
d->audioDocReader->setCurrentTrack( track );
+ play();
}
-void AudioTrackPlayer::playPause()
+void AudioTrackPlayer::play()
{
- if( d->audioOutput->state() == QAudio::StoppedState ) {
- d->actionPlayPause->setIcon( KIcon( "media-playback-start" ) );
- d->actionPause->setEnabled( true );
- d->actionPlay->setEnabled( false );
- d->actionStop->setEnabled( true );
- d->actionSeek->setEnabled( true );
+ if( d->audioOutput->state() == QAudio::StoppedState ||
+ d->audioOutput->state() == QAudio::IdleState ) {
d->audioDocReader->open();
d->audioOutput->start( d->audioDocReader );
}
else if( d->audioOutput->state() == QAudio::SuspendedState ) {
- d->actionPlayPause->setIcon( KIcon( "media-playback-pause" ) );
- d->actionPause->setEnabled( true );
- d->actionPlay->setEnabled( false );
- d->actionStop->setEnabled( true );
d->audioOutput->resume();
}
- else {
- d->actionPlayPause->setIcon( KIcon( "media-playback-start" ) );
- d->actionPause->setEnabled( false );
- d->actionPlay->setEnabled( true );
- d->actionStop->setEnabled( true );
+}
+
+
+void AudioTrackPlayer::pause()
+{
d->audioOutput->suspend();
}
-}
void AudioTrackPlayer::stop()
{
- d->actionStop->setEnabled( false );
- d->actionPause->setEnabled( false );
- d->actionPlay->setEnabled( true );
- d->actionSeek->setEnabled( false );
- d->actionNext->setEnabled( false );
- d->actionPrevious->setEnabled( false );
d->audioOutput->stop();
- d->audioDocReader->close();
-
- d->actionPlayPause->setIcon( KIcon( "media-playback-start" ) );
-
- emit stopped();
}
@@ -326,12 +288,7 @@
void AudioTrackPlayer::slotCurrentTrackChanged( const K3b::AudioTrack& track )
{
- // we show the currently playing track as a tooltip on the slider
- d->actionSeek->setToolTip( i18n("Playing track %1: %2 - %3")
- .arg(track.trackNumber())
- .arg(track.artist())
- .arg(track.title()) );
- d->actionSeek->setMaximum( track.length().audioBytes() );
+ d->actionSeek->setCurrentTrack( track );
d->actionNext->setEnabled( &track != d->doc->lastTrack() );
d->actionPrevious->setEnabled( &track != d->doc->firstTrack() );
@@ -341,19 +298,28 @@
void AudioTrackPlayer::slotStateChanged( QAudio::State state )
{
- switch( state )
- {
- case QAudio::ActiveState:
+ if( QAudio::ActiveState == state ) {
+ d->actionPause->setVisible( true );
+ d->actionPlay->setVisible( false );
+ d->actionStop->setEnabled( true );
+ d->actionSeek->setEnabled( true );
emit started();
- break;
- case QAudio::SuspendedState:
+ }
+ else if( QAudio::SuspendedState == state ) {
+ d->actionPause->setVisible( false );
+ d->actionPlay->setVisible( true );
+ d->actionStop->setEnabled( true );
emit paused();
- break;
- case QAudio::IdleState:
- case QAudio::StoppedState:
- default:
+ }
+ else /*if( QAudio::IdleState == state || QAudio::StoppedState == state )*/ {
+ d->actionStop->setEnabled( false );
+ d->actionPause->setVisible( false );
+ d->actionPlay->setVisible( true );
+ d->actionSeek->setEnabled( false );
+ d->actionNext->setEnabled( false );
+ d->actionPrevious->setEnabled( false );
+ d->audioDocReader->close();
emit stopped();
- break;
}
}
--- trunk/extragear/multimedia/k3b/src/projects/k3baudiotrackplayer.h #1145687:1145688
@@ -41,7 +41,8 @@
public Q_SLOTS:
void playTrack( const K3b::AudioTrack& track );
- void playPause();
+ void play();
+ void pause();
void stop();
void next();
void previous();
--- trunk/extragear/multimedia/k3b/src/projects/k3baudioview.cpp #1145687:1145688
@@ -57,7 +57,8 @@
toolBox()->addSeparator();
toolBox()->addAction( actionCollection()->action( "player_previous" ) );
- toolBox()->addAction( actionCollection()->action( "player_play_pause" ) );
+ toolBox()->addAction( actionCollection()->action( "player_play" ) );
+ toolBox()->addAction( actionCollection()->action( "player_pause" ) );
toolBox()->addAction( actionCollection()->action( "player_stop" ) );
toolBox()->addAction( actionCollection()->action( "player_next" ) );
toolBox()->addSeparator();
--- trunk/extragear/multimedia/k3b/src/projects/k3baudioviewimpl.cpp #1145687:1145688
@@ -125,12 +125,6 @@
m_actionQueryMusicBrainzTrack->setEnabled( false );
m_actionQueryMusicBrainzTrack->setVisible( false );
#endif
-
-#ifdef __GNUC__
-#warning enable player once ported to Phonon
-#endif
- m_actionPlayTrack->setEnabled( false );
- m_actionPlayTrack->setVisible( false );
}
@@ -315,6 +309,17 @@
}
+void K3b::AudioViewImpl::slotPlayTrack()
+{
+ const QModelIndexList indexes = m_trackView->selectionModel()->selectedRows();
+ QList<AudioTrack*> tracks;
+ tracksForIndexes( tracks, indexes );
+
+ if( !tracks.empty() && tracks.first() != 0 )
+ m_player->playTrack( *tracks.first() );
+}
+
+
void K3b::AudioViewImpl::slotQueryMusicBrainz()
{
#ifdef ENABLE_MUSICBRAINZ
@@ -364,12 +369,6 @@
}
-void K3b::AudioViewImpl::slotPlayTrack()
-{
- // Not implemented yet
-}
-
-
void K3b::AudioViewImpl::slotSelectionChanged()
{
if( m_trackView->hasFocus() ) {
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic