|
|
|
/***************************************************************************
|
|
|
|
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 TQTimer;
|
|
|
|
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;
|
|
|
|
|
|
|
|
TQStringList trackProperties();
|
|
|
|
TQString trackProperty(const TQString &property) const;
|
|
|
|
TQPixmap trackCover(const TQString &size) const;
|
|
|
|
|
|
|
|
FileHandle playingFile() const;
|
|
|
|
TQString playingString() const;
|
|
|
|
|
|
|
|
void setPlaylistInterface(PlaylistInterface *interface);
|
|
|
|
void setStatusLabel(StatusLabel *label);
|
|
|
|
|
|
|
|
TQString randomPlayMode() const;
|
|
|
|
|
|
|
|
static KSelectAction *playerSelectAction(TQObject *parent);
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
|
|
void play(const FileHandle &file);
|
|
|
|
void play(const TQString &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 forwardAlbum();
|
|
|
|
void volumeUp();
|
|
|
|
void volumeDown();
|
|
|
|
void mute();
|
|
|
|
|
|
|
|
void setRandomPlayMode(const TQString &randomMode);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void signalPlay();
|
|
|
|
void signalPause();
|
|
|
|
void signalStop();
|
|
|
|
|
|
|
|
private:
|
|
|
|
Player *player() const;
|
|
|
|
void setup();
|
|
|
|
void setOutput(const TQString &);
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void slotPollPlay();
|
|
|
|
void slotUpdateTime(int position);
|
|
|
|
void slotSetOutput(const TQString &);
|
|
|
|
void slotSetVolume(int volume);
|
|
|
|
|
|
|
|
private:
|
|
|
|
FileHandle m_file;
|
|
|
|
SliderAction *m_sliderAction;
|
|
|
|
PlaylistInterface *m_playlistInterface;
|
|
|
|
StatusLabel *m_statusLabel;
|
|
|
|
Player *m_player;
|
|
|
|
TQTimer *m_timer;
|
|
|
|
bool m_noSeek;
|
|
|
|
bool m_muted;
|
|
|
|
bool m_setup;
|
|
|
|
|
|
|
|
static const int m_pollInterval = 800;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|