Plasma
amarok.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "amarok.h"
00020 #include "amarok_p.h"
00021 #include <amarok_interface.h>
00022
00023 #include <KDebug>
00024
00025 #include <QtDBus>
00026
00027
00028 AmarokFactory::AmarokFactory(QObject* parent)
00029 : DBusPlayerFactory(parent)
00030 {
00031 }
00032
00033 Player::Ptr AmarokFactory::create(const QVariantList& args)
00034 {
00035 Q_UNUSED(args);
00036
00037 Amarok* player = new Amarok(this);
00038 if (!player->isRunning()) {
00039 delete player;
00040 player = 0;
00041 }
00042 return Player::Ptr(player);
00043 }
00044
00045 bool AmarokFactory::matches(const QString& serviceName)
00046 {
00047 return serviceName == "org.kde.amarok";
00048 }
00049
00050
00051
00052
00053
00054 Amarok::Amarok(PlayerFactory* factory)
00055 : Player(factory),
00056 amarokPlayer(new AmarokPlayer("org.kde.amarok", "/Player",
00057 QDBusConnection::sessionBus()))
00058 {
00059 setName("Amarok");
00060 }
00061
00062 Amarok::~Amarok()
00063 {
00064 delete amarokPlayer;
00065 }
00066
00067 bool Amarok::isRunning()
00068 {
00069 if (!amarokPlayer->isValid()) {
00070 delete amarokPlayer;
00071 amarokPlayer = new AmarokPlayer("org.kde.amarok", "/Player",
00072 QDBusConnection::sessionBus());
00073 }
00074 return amarokPlayer->isValid();
00075 }
00076
00077 Player::State Amarok::state()
00078 {
00079 if (amarokPlayer->isValid()) {
00080 switch (amarokPlayer->status()) {
00081 case 2:
00082 return Playing;
00083 case 1:
00084 return Paused;
00085 default:
00086 return Stopped;
00087 }
00088 }
00089 return Stopped;
00090 }
00091
00092 QString Amarok::artist()
00093 {
00094 if (amarokPlayer->isValid()) {
00095 return amarokPlayer->artist();
00096 }
00097 return QString();
00098 }
00099
00100 QString Amarok::album()
00101 {
00102 if (amarokPlayer->isValid()) {
00103 return amarokPlayer->album();
00104 }
00105 return QString();
00106 }
00107
00108 QString Amarok::title()
00109 {
00110 if (amarokPlayer->isValid()) {
00111 return amarokPlayer->title();
00112 }
00113 return QString();
00114 }
00115
00116 int Amarok::trackNumber()
00117 {
00118 if (amarokPlayer->isValid()) {
00119 return amarokPlayer->track().value().toInt();
00120 }
00121 return 0;
00122 }
00123
00124 QString Amarok::comment()
00125 {
00126 if (amarokPlayer->isValid()) {
00127 return amarokPlayer->comment();
00128 }
00129 return QString();
00130 }
00131
00132 QString Amarok::genre()
00133 {
00134 if (amarokPlayer->isValid()) {
00135 return amarokPlayer->genre();
00136 }
00137 return QString();
00138 }
00139
00140 int Amarok::length()
00141 {
00142 if (amarokPlayer->isValid()) {
00143 return amarokPlayer->trackTotalTime();
00144 }
00145 return 0;
00146 }
00147
00148 int Amarok::position()
00149 {
00150 if (amarokPlayer->isValid()) {
00151
00152 return amarokPlayer->trackCurrentTime();
00153 }
00154 return 0;
00155 }
00156
00157 float Amarok::volume()
00158 {
00159 if (amarokPlayer->isValid()) {
00160 return float(amarokPlayer->getVolume()) / 100;
00161 }
00162 return 0;
00163 }
00164
00165 void Amarok::play()
00166 {
00167 if (amarokPlayer->isValid()) {
00168 amarokPlayer->play();
00169 }
00170 }
00171
00172 void Amarok::pause()
00173 {
00174 if (amarokPlayer->isValid()) {
00175 amarokPlayer->pause();
00176 }
00177 }
00178
00179 void Amarok::stop()
00180 {
00181 if (amarokPlayer->isValid()) {
00182 amarokPlayer->stop();
00183 }
00184 }
00185
00186 void Amarok::previous()
00187 {
00188 if (amarokPlayer->isValid()) {
00189 amarokPlayer->prev();
00190 }
00191 }
00192
00193 void Amarok::next()
00194 {
00195 if (amarokPlayer->isValid()) {
00196 amarokPlayer->next();
00197 }
00198 }
00199
00200 void Amarok::setVolume(float volume) {
00201 if (amarokPlayer->isValid()) {
00202 amarokPlayer->setVolume(volume * 100);
00203 }
00204 }
00205
00206 void Amarok::seek(int time)
00207 {
00208 if (amarokPlayer->isValid()) {
00209 amarokPlayer->seek(time);
00210 }
00211 }
00212
00213
00214 #include "amarok.moc"