summaryrefslogtreecommitdiffstats
path: root/juk/playermanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'juk/playermanager.h')
-rw-r--r--juk/playermanager.h117
1 files changed, 117 insertions, 0 deletions
diff --git a/juk/playermanager.h b/juk/playermanager.h
new file mode 100644
index 00000000..8f1920b1
--- /dev/null
+++ b/juk/playermanager.h
@@ -0,0 +1,117 @@
+/***************************************************************************
+ begin : Sat Feb 14 2004
+ copyright : (C) 2004 by Scott Wheeler
+ email : wheeler@kde.org
+***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef PLAYERMANAGER_H
+#define PLAYERMANAGER_H
+
+#include "player.h"
+#include "jukIface.h"
+
+class QTimer;
+class KSelectAction;
+class SliderAction;
+class StatusLabel;
+class PlaylistInterface;
+
+/**
+ * This class serves as a proxy to the Player interface and handles managing
+ * the actions from the top-level mainwindow.
+ */
+
+class PlayerManager : public Player, public PlayerIface
+{
+ Q_OBJECT
+
+protected:
+ PlayerManager();
+ virtual ~PlayerManager();
+
+public:
+ static PlayerManager *instance();
+
+ bool playing() const;
+ bool paused() const;
+ float volume() const;
+ int status() const;
+ int totalTime() const;
+ int currentTime() const;
+ int position() const;
+
+ QStringList trackProperties();
+ QString trackProperty(const QString &property) const;
+ QPixmap trackCover(const QString &size) const;
+
+ FileHandle playingFile() const;
+ QString playingString() const;
+
+ void setPlaylistInterface(PlaylistInterface *interface);
+ void setStatusLabel(StatusLabel *label);
+
+ QString randomPlayMode() const;
+
+ static KSelectAction *playerSelectAction(QObject *parent);
+
+public slots:
+
+ void play(const FileHandle &file);
+ void play(const QString &file);
+ void play();
+ void pause();
+ void stop();
+ void setVolume(float volume = 1.0);
+ void seek(int seekTime);
+ void seekPosition(int position);
+ void seekForward();
+ void seekBack();
+ void playPause();
+ void forward();
+ void back();
+ void volumeUp();
+ void volumeDown();
+ void mute();
+
+ void setRandomPlayMode(const QString &randomMode);
+
+signals:
+ void signalPlay();
+ void signalPause();
+ void signalStop();
+
+private:
+ Player *player() const;
+ void setup();
+ void setOutput(const QString &);
+
+private slots:
+ void slotPollPlay();
+ void slotUpdateTime(int position);
+ void slotSetOutput(const QString &);
+ void slotSetVolume(int volume);
+
+private:
+ FileHandle m_file;
+ SliderAction *m_sliderAction;
+ PlaylistInterface *m_playlistInterface;
+ StatusLabel *m_statusLabel;
+ Player *m_player;
+ QTimer *m_timer;
+ bool m_noSeek;
+ bool m_muted;
+ bool m_setup;
+
+ static const int m_pollInterval = 800;
+};
+
+#endif