[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/libkonq
From:       Matthias Kretz <kretz () kde ! org>
Date:       2006-08-02 22:12:47
Message-ID: 1154556767.982241.25148.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 569091 by mkretz:

- load the Phonon backend only when actual playback is needed
- give the backend the URL when starting the timer so that it can pre-buffer and can be ready on
  play()


 M  +3 -3      konq_iconviewwidget.cc  
 M  +28 -14    konq_sound.cc  
 M  +3 -2      konq_sound.h  


--- trunk/KDE/kdebase/libkonq/konq_iconviewwidget.cc #569090:569091
@@ -352,8 +352,7 @@
 
     // ## shouldn't this be disabled during rectangular selection too ?
     if (d->bSoundPreviews && d->pSoundPlayer &&
-        d->pSoundPlayer->mimeTypes().contains(
-            item->item()->mimetype())
+        d->pSoundPlayer->isMimeTypeKnown(item->item()->mimetype())
         && KGlobalSettings::showFilePreview(item->item()->url())
         && window() == kapp->activeWindow())
     {
@@ -367,6 +366,7 @@
             connect(d->pSoundTimer, SIGNAL(timeout()), SLOT(slotStartSoundPreview()));
         }
         d->pSoundTimer->start();
+        d->pSoundPlayer->setUrl(d->pSoundItem->item()->url());
     }
     else
         stopSound();
@@ -409,7 +409,7 @@
   if (!d->pSoundItem || d->bSoundItemClicked)
     return;
 
-  d->pSoundPlayer->play(d->pSoundItem->item()->url().url());
+  d->pSoundPlayer->play();
 }
 
 
--- trunk/KDE/kdebase/libkonq/konq_sound.cc #569090:569091
@@ -30,47 +30,61 @@
 {
 public:
 	KonqSoundPlayerImpl();
-	virtual ~KonqSoundPlayerImpl();
+	virtual ~KonqSoundPlayerImpl() {}
 
-	virtual const QStringList &mimeTypes();
-	virtual void play(const QString &fileName);
+	virtual bool isMimeTypeKnown(const QString& mimeType);
+	virtual void setUrl(const KUrl &url);
+	virtual void play();
 	virtual void stop();
 	virtual bool isPlaying();
 
 private:
-	QStringList m_mimetypes;
-	Phonon::AudioPlayer m_player;
+	Phonon::AudioPlayer *m_player;
 };
 
 KonqSoundPlayerImpl::KonqSoundPlayerImpl()
-	: m_player(Phonon::MusicCategory)
+	: m_player(0)
 {
 }
 
-KonqSoundPlayerImpl::~KonqSoundPlayerImpl()
+bool KonqSoundPlayerImpl::isMimeTypeKnown(const QString& mimeType)
 {
+	kDebug() << k_funcinfo << mimeType << Phonon::BackendCapabilities::isMimeTypeKnown(mimeType) << endl;
+	return Phonon::BackendCapabilities::isMimeTypeKnown(mimeType);
 }
 
-const QStringList &KonqSoundPlayerImpl::mimeTypes()
+void KonqSoundPlayerImpl::setUrl(const KUrl &url)
 {
-	m_mimetypes = Phonon::BackendCapabilities::self()->knownMimeTypes();
-	return m_mimetypes;
+	kDebug() << k_funcinfo << endl;
+	if (!m_player) {
+		kDebug() << "create AudioPlayer" << endl;
+		m_player = new Phonon::AudioPlayer(Phonon::MusicCategory, this);
+	}
+	m_player->load(url);
 }
 
-void KonqSoundPlayerImpl::play(const QString &fileName)
+void KonqSoundPlayerImpl::play()
 {
 	kDebug() << k_funcinfo << endl;
-	m_player.play(KUrl(fileName));
+	if (m_player)
+		m_player->play();
 }
 
 void KonqSoundPlayerImpl::stop()
 {
-	m_player.stop();
+	kDebug() << k_funcinfo << endl;
+	if (m_player)
+		m_player->stop();
 }
 
 bool KonqSoundPlayerImpl::isPlaying()
 {
-	return m_player.isPlaying();
+	if (m_player) {
+		kDebug() << k_funcinfo << m_player->isPlaying() << endl;
+		return m_player->isPlaying();
+	}
+	kDebug() << k_funcinfo << false << endl;
+	return false;
 }
 
 class KonqSoundFactory : public KLibFactory
--- trunk/KDE/kdebase/libkonq/konq_sound.h #569090:569091
@@ -24,8 +24,9 @@
 class KonqSoundPlayer : public QObject
 {
 public:
-	virtual const QStringList &mimeTypes() = 0;
-	virtual void play(const QString &fileName) = 0;
+	virtual bool isMimeTypeKnown(const QString& mimeType) = 0;
+	virtual void setUrl(const KUrl &url) = 0;
+	virtual void play() = 0;
 	virtual void stop() = 0;
 	virtual bool isPlaying() = 0;
 };
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic