musicservices/src/getmusicservice.cpp
author hgs
Tue, 21 Sep 2010 11:40:39 -0500
changeset 59 cd9e40a08dda
parent 55 f3930dda3342
permissions -rw-r--r--
201037

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/

#include <hbapplication.h>
#include <QStringList>

#include "musicservices.h"
#include "getmusicservice.h"
#include "mptrace.h"


/*!
 Constructs music fetcher service
 */
GetMusicService::GetMusicService( MusicServices* parent )
    : XQServiceProvider( QLatin1String( "musicplayer.com.nokia.symbian.IMusicFetch" ), parent ),
    mRequestIndex( 0 ),
    mServiceApp( parent )
{
    TX_ENTRY
    publishAll();
    TX_EXIT
}

/*!
 Destructs music fetcher service
 */
GetMusicService::~GetMusicService()
{
    TX_LOG
}

/*!
 Returns whether current service is still active
 */
bool GetMusicService::isActive()
{
    return mRequestIndex > 0;
}

/*!
 Completes current request 
 */
void GetMusicService::complete(QStringList filesList)
{
    if ( isActive() ) {
        connect( this, SIGNAL( returnValueDelivered() ), qApp, SLOT( quit() ) );
        completeRequest( mRequestIndex, filesList );
        mRequestIndex = 0;
    }
}

/*!
 Returns title of calling application
 */
QString GetMusicService::contextTitle() const
{
    return mTitle;
}


/*!
    Music Fetcher service interface defined in service registration xml.
    Service client needs to create a request using interface name
    "com.nokia.services.media.Music" and set string to show in
    opened views title as a request argument.

    Example usage:
    \code
    XQApplicationManager appMgr;
    XQAiwRequest* req = appMgr.create("com.nokia.services.media.IMusicFetch",
        "fetch(QString)", true);

    if (req)
    {
        connect(req, SIGNAL(requestOk(const QVariant&)),
            SLOT(handleRequestOk(const QVariant&)));
        connect(req, SIGNAL(requestError(int,const QString&)),
            SLOT(handleRequestError(int,const QString&)));

        // Set argument for request (title for opened views)
        QList<QVariant> args;
        args << QVariant(QString("<title to show>"));
        req->setArguments(args);

        // Make the request
        if (!req->send())
        {
            qDebug() <<  "Failed to send REQ";
        }
        delete req;
    }
    \endcode
 */
void GetMusicService::fetch()
{
    TX_ENTRY
   //TODO: change to string constant when available
    mTitle = requestInfo().info("WindowTitle").toString();
    mServiceApp->setCurrentService( MusicServices::EUriFetcher );
    emit mServiceApp->serviceActive( requestInfo().clientSecureId() );
    connect(this, SIGNAL( clientDisconnected() ), qApp, SLOT( quit() ) );
    mRequestIndex = setCurrentRequestAsync();
 
    TX_EXIT
}