• Skip to content
  • Skip to link menu
KDE 4.1 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

Engines

amarok.cpp

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2007 Alex Merry <alex.merry@kdemail.net>
00003  *
00004  *   This program is free software; you can redistribute it and/or modify
00005  *   it under the terms of the GNU Library General Public License version 2 as
00006  *   published by the Free Software Foundation
00007  *
00008  *   This program is distributed in the hope that it will be useful,
00009  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
00010  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00011  *   GNU General Public License for more details
00012  *
00013  *   You should have received a copy of the GNU Library General Public
00014  *   License along with this program; if not, write to the
00015  *   Free Software Foundation, Inc.,
00016  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
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         // this doesn't look right - is Amarok giving the wrong info?
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"

Engines

Skip menu "Engines"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members

API Reference

Skip menu "API Reference"
  • KWin
  •   KWin Libraries
  • Libraries
  •   libkworkspace
  •   libplasma
  •   libsolidcontrol
  •   libtaskmanager
  • Plasma
  •   Animators
  •   Applets
  •   Engines
  • Solid Modules
Generated for API Reference by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal