File indexing completed on 2024-05-19 04:49:36

0001 /***********************************************************************
0002  * Copyright 2012  Eike Hein <hein@kde.org>
0003  *
0004  * This program is free software; you can redistribute it and/or
0005  * modify it under the terms of the GNU General Public License as
0006  * published by the Free Software Foundation; either version 2 of
0007  * the License or (at your option) version 3 or any later version
0008  * accepted by the membership of KDE e.V. (or its successor approved
0009  * by the membership of KDE e.V.), which shall act as a proxy
0010  * defined in Section 14 of version 3 of the license.
0011  *
0012  * This program is distributed in the hope that it will be useful,
0013  * but WITHOUT ANY WARRANTY; without even the implied warranty of
0014  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0015  * GNU General Public License for more details.
0016  *
0017  * You should have received a copy of the GNU General Public License
0018  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
0019  ***********************************************************************/
0020 
0021 #include "Mpris2.h"
0022 
0023 #include "MediaPlayer2.h"
0024 #include "MediaPlayer2Player.h"
0025 #include "MediaPlayer2AmarokExtensions.h"
0026 #include "DBusAmarokApp.h"
0027 
0028 #include <unistd.h>
0029 
0030 #include <QDBusConnection>
0031 
0032 using namespace Amarok;
0033 
0034 Mpris2::Mpris2( QObject *parent )
0035     : QObject( parent )
0036 {
0037     QString mpris2Name( QStringLiteral("org.mpris.MediaPlayer2.amarok") );
0038 
0039     bool success = QDBusConnection::sessionBus().registerService( mpris2Name );
0040 
0041     // If the above failed, it's likely because we're not the first instance
0042     // and the name is already taken. In that event the MPRIS2 spec wants the
0043     // following:
0044     if (!success) {
0045         mpris2Name = mpris2Name + ".instance" + QString::number( getpid() );
0046         success = QDBusConnection::sessionBus().registerService( mpris2Name );
0047     }
0048 
0049     if ( success )
0050     {
0051         DBusAbstractAdaptor *adaptor = new MediaPlayer2( this );
0052         adaptor->setDBusPath( QStringLiteral("/org/mpris/MediaPlayer2") );
0053         adaptor = new MediaPlayer2Player( this );
0054         adaptor->setDBusPath( QStringLiteral("/org/mpris/MediaPlayer2") );
0055         adaptor = new MediaPlayer2AmarokExtensions( this );
0056         adaptor->setDBusPath( QStringLiteral("/org/mpris/MediaPlayer2") );
0057         adaptor = new DBusAmarokApp( this );
0058         adaptor->setDBusPath( QStringLiteral("/org/mpris/MediaPlayer2") );
0059         QDBusConnection::sessionBus().registerObject( QStringLiteral("/org/mpris/MediaPlayer2"), this, QDBusConnection::ExportAdaptors );
0060     }
0061 }
0062 
0063 Mpris2::~Mpris2()
0064 {
0065 }
0066