controlpanelui/src/cpringtoneview/src/cpringtoneview.cpp
author hgs
Fri, 14 May 2010 13:21:08 +0800
changeset 19 36aa4756ee82
child 22 a5692c68d772
permissions -rw-r--r--
201019
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
 * All rights reserved.
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0""
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
 *
hgs
parents:
diff changeset
     9
 * Initial Contributors:
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
 *
hgs
parents:
diff changeset
    12
 * Contributors:
hgs
parents:
diff changeset
    13
 *
hgs
parents:
diff changeset
    14
 * Description:
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
 */
hgs
parents:
diff changeset
    17
#include "cpringtoneview.h"
hgs
parents:
diff changeset
    18
#include <HbListWidget>
hgs
parents:
diff changeset
    19
#include <QGraphicsLinearLayout>
hgs
parents:
diff changeset
    20
#include <HbLabel>
hgs
parents:
diff changeset
    21
#include <QList>
hgs
parents:
diff changeset
    22
#include <QModelIndex>
hgs
parents:
diff changeset
    23
#include <QStandardItemModel>
hgs
parents:
diff changeset
    24
#include <QStandardItem>
hgs
parents:
diff changeset
    25
#include <xqaiwrequest.h>
hgs
parents:
diff changeset
    26
#include <cplogger.h>
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
CpRingToneView::CpRingToneView( QGraphicsItem *parent ):
hgs
parents:
diff changeset
    29
                              CpBaseSettingView(0, parent),
hgs
parents:
diff changeset
    30
                              mToneTypeList( new HbListWidget(this) ),
hgs
parents:
diff changeset
    31
                              mReq(0)
hgs
parents:
diff changeset
    32
{
hgs
parents:
diff changeset
    33
    HbWidget* contentWidget = new HbWidget(this);
hgs
parents:
diff changeset
    34
    QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical);
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
    //setup the heading.
hgs
parents:
diff changeset
    37
    HbLabel* label = new HbLabel( hbTrId("txt_cp_subhead_select_tone_type"), contentWidget );
hgs
parents:
diff changeset
    38
    layout->addItem(label);
hgs
parents:
diff changeset
    39
    //handling user click
hgs
parents:
diff changeset
    40
    bool bret = connect(mToneTypeList, SIGNAL( activated(HbListWidgetItem *) ),
hgs
parents:
diff changeset
    41
            this, SLOT(onTypeSelected(HbListWidgetItem *)));
hgs
parents:
diff changeset
    42
    //initialize the list contents
hgs
parents:
diff changeset
    43
    QList<QString> tonesTypeList;
hgs
parents:
diff changeset
    44
    tonesTypeList <<
hgs
parents:
diff changeset
    45
            hbTrId("txt_cp_list_no_tone")<<
hgs
parents:
diff changeset
    46
            hbTrId("txt_cp_list_tone")<<
hgs
parents:
diff changeset
    47
            hbTrId("txt_cp_list_music")<<
hgs
parents:
diff changeset
    48
            hbTrId("txt_cp_list_recording")<<
hgs
parents:
diff changeset
    49
            hbTrId("txt_cp_list_get_more_tones");
hgs
parents:
diff changeset
    50
    for ( int i = 0; i < tonesTypeList.count(); i++ )
hgs
parents:
diff changeset
    51
    {
hgs
parents:
diff changeset
    52
        mToneTypeList->addItem(tonesTypeList.at(i));
hgs
parents:
diff changeset
    53
    }
hgs
parents:
diff changeset
    54
    //add the list to layout.
hgs
parents:
diff changeset
    55
    layout->addItem(mToneTypeList);
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
    contentWidget->setLayout(layout);
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
    setWidget(contentWidget);
hgs
parents:
diff changeset
    60
}
hgs
parents:
diff changeset
    61
CpRingToneView::~CpRingToneView()
hgs
parents:
diff changeset
    62
{
hgs
parents:
diff changeset
    63
    if(mReq)    delete mReq;
hgs
parents:
diff changeset
    64
}
hgs
parents:
diff changeset
    65
void CpRingToneView::onTypeSelected(HbListWidgetItem *item)
hgs
parents:
diff changeset
    66
{
hgs
parents:
diff changeset
    67
    int nRow = mToneTypeList->row( item );
hgs
parents:
diff changeset
    68
    switch(nRow)
hgs
parents:
diff changeset
    69
    {
hgs
parents:
diff changeset
    70
        case 0:         //no tone, set default no sound
hgs
parents:
diff changeset
    71
                emit selOK(QString(""));
hgs
parents:
diff changeset
    72
                emit aboutToClose();
hgs
parents:
diff changeset
    73
                break;
hgs
parents:
diff changeset
    74
        case 1:         //tone
hgs
parents:
diff changeset
    75
                launchMediaFetcher( "com.nokia.symbian.IToneFetch", "fetch()" );
hgs
parents:
diff changeset
    76
                break;
hgs
parents:
diff changeset
    77
        case 2:         //music
hgs
parents:
diff changeset
    78
                launchMediaFetcher("com.nokia.symbian.IMusicFetch", "fetch()" );
hgs
parents:
diff changeset
    79
                break;
hgs
parents:
diff changeset
    80
        case 3:         //recording
hgs
parents:
diff changeset
    81
        case 4:         //get more tones
hgs
parents:
diff changeset
    82
        default:
hgs
parents:
diff changeset
    83
                break;
hgs
parents:
diff changeset
    84
    }
hgs
parents:
diff changeset
    85
}
hgs
parents:
diff changeset
    86
void CpRingToneView::handleOk(const QVariant &result)
hgs
parents:
diff changeset
    87
{
hgs
parents:
diff changeset
    88
    CPFW_LOG( "CpPersonalizationEntryItemData::handleOk" );
hgs
parents:
diff changeset
    89
    if (!result.canConvert<QString>() || result.toString().length() == 0 )  //error result
hgs
parents:
diff changeset
    90
    {
hgs
parents:
diff changeset
    91
        return;
hgs
parents:
diff changeset
    92
    }
hgs
parents:
diff changeset
    93
    hide();
hgs
parents:
diff changeset
    94
    emit selOK( result.value<QString>() );
hgs
parents:
diff changeset
    95
    emit aboutToClose();
hgs
parents:
diff changeset
    96
}
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
void CpRingToneView::handleError(int errorCode, const QString& errorMessage)
hgs
parents:
diff changeset
   100
{
hgs
parents:
diff changeset
   101
    emit(selError( errorCode, errorMessage ));
hgs
parents:
diff changeset
   102
}
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
void CpRingToneView::launchMediaFetcher( const QString &strService, const QString &strItface )
hgs
parents:
diff changeset
   105
{
hgs
parents:
diff changeset
   106
    CPFW_LOG("CpRingToneView::launchMediaFetcher, START");
hgs
parents:
diff changeset
   107
    if(mReq)
hgs
parents:
diff changeset
   108
    {
hgs
parents:
diff changeset
   109
        delete mReq;
hgs
parents:
diff changeset
   110
        mReq = 0;
hgs
parents:
diff changeset
   111
    }
hgs
parents:
diff changeset
   112
        //launch media fetcher
hgs
parents:
diff changeset
   113
    mReq = mAppMgr.create(strService, strItface, true);
hgs
parents:
diff changeset
   114
    if (!mReq)
hgs
parents:
diff changeset
   115
    {
hgs
parents:
diff changeset
   116
      CPFW_LOG("CpRingToneView::launchMediaFetcher, Mediafetcher start failed");
hgs
parents:
diff changeset
   117
      return;
hgs
parents:
diff changeset
   118
    }
hgs
parents:
diff changeset
   119
    else
hgs
parents:
diff changeset
   120
    {
hgs
parents:
diff changeset
   121
        connect(mReq, SIGNAL( requestOk( const QVariant&)), SLOT( handleOk(const QVariant&)) );
hgs
parents:
diff changeset
   122
        connect(mReq, SIGNAL( requestError( int,const QString&)), SLOT(handleError(int,const QString&)) );
hgs
parents:
diff changeset
   123
    }
hgs
parents:
diff changeset
   124
    
hgs
parents:
diff changeset
   125
    QList<QVariant> args;
hgs
parents:
diff changeset
   126
    args << QVariant(QString("<app_name>"));
hgs
parents:
diff changeset
   127
    mReq->setArguments(args);
hgs
parents:
diff changeset
   128
    // Make the request
hgs
parents:
diff changeset
   129
    if (!mReq->send())
hgs
parents:
diff changeset
   130
    {
hgs
parents:
diff changeset
   131
        CPFW_LOG("CpRingToneView::launchMediaFetcher, Mediafetcher calling failed");
hgs
parents:
diff changeset
   132
    }
hgs
parents:
diff changeset
   133
    CPFW_LOG("CpRingToneView::launchMediaFetcher, END");
hgs
parents:
diff changeset
   134
}
hgs
parents:
diff changeset
   135