phonebookengines/cntactions/src/cntbrowseraction.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 17 Sep 2010 08:27:32 +0300
changeset 71 7cc7d74059f9
parent 65 ae724a111993
permissions -rw-r--r--
Revision: 201035 Kit: 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 "cntbrowseraction.h"

#include <qcontacturl.h>
#include <qcontactfilters.h>
#include <QDesktopServices>

//Action class
CntBrowserAction::CntBrowserAction() : 
    CntAction("url")
{
}

CntBrowserAction::~CntBrowserAction()
{
}

QContactFilter CntBrowserAction::contactFilter(const QVariant& value) const
{
     Q_UNUSED(value);
     
    QContactDetailFilter urlFilter;
    urlFilter.setDetailDefinitionName(QContactUrl::DefinitionName); 
    
    return urlFilter;
}

bool CntBrowserAction::isDetailSupported(const QContactDetail &detail, const QContact &/*contact*/) const
{
    return (detail.definitionName() == QContactUrl::DefinitionName);
}

QList<QContactDetail> CntBrowserAction::supportedDetails(const QContact& contact) const
{
    return contact.details(QContactUrl::DefinitionName);
}

CntBrowserAction* CntBrowserAction::clone() const
{
     return new CntBrowserAction();
}

void CntBrowserAction::performAction()
{
    if (m_detail.definitionName() == QContactUrl::DefinitionName)
    {
        const QContactUrl &contactUrl = static_cast<const QContactUrl &>(m_detail);
        
        QString address = contactUrl.url();
        if (!address.startsWith("http://"))
        {
            address.prepend("http://");
        }
        
        bool success = QDesktopServices::openUrl(QUrl(address));
        QVariant retValue;
        emitResult(success, retValue);
    }
    else
    {
        QVariant retValue;
        emitResult(GeneralError, retValue);
    }
}