diff -r 0ba2181d7c28 -r 76a2435edfd4 phonebookui/pbkcommonui/src/cnturleditorviewitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/pbkcommonui/src/cnturleditorviewitem.cpp Fri Apr 16 14:53:18 2010 +0300 @@ -0,0 +1,142 @@ +/* +* 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 "cnturleditorviewitem.h" +#include "cntdetailmodelitem.h" +#include "cntdetailconst.h" +#include +#include +#include +#include +#include +#include +#include + +CntUrlEditorViewItem::CntUrlEditorViewItem( QGraphicsItem* aParent ) : +CntDetailViewItem( aParent ) + { + + } + +CntUrlEditorViewItem::~CntUrlEditorViewItem() + { + + } + +HbAbstractViewItem* CntUrlEditorViewItem::createItem() + { + return new CntUrlEditorViewItem(*this); + } + +HbWidget* CntUrlEditorViewItem::createCustomWidget() + { + QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical); + HbWidget* widget = new HbWidget(); + mBox = new HbComboBox(); + mEdit = new HbLineEdit(); + mEdit->setMaxLength( CNT_URL_EDITOR_MAXLENGTH ); + + widget->setLayout( layout ); + layout->addItem( mBox ); + layout->addItem( mEdit ); + + connect( mBox, SIGNAL(currentIndexChanged(int)), this, SLOT(indexChanged(int)) ); + connect( mEdit, SIGNAL(textChanged(QString)),this, SLOT(textChanged(QString)) ); + + HbDataFormModel* model = static_cast(itemView()->model()); + CntDetailModelItem* item = static_cast( model->itemFromIndex(modelIndex()) ); + QContactUrl detail = item->detail(); + + HbEditorInterface editorInterface( mEdit ); + editorInterface.setFilter( HbUrlFilter::instance() ); + + constructSubTypeModel( detail.contexts() ); + + mEdit->setText( detail.url() ); + + return widget; + } + +void CntUrlEditorViewItem::indexChanged( int aIndex ) + { + QString context = mBox->itemData( aIndex, DetailContext ).toString(); + HbDataFormModel* model = static_cast(itemView()->model()); + CntDetailModelItem* item = static_cast( model->itemFromIndex(modelIndex()) ); + + QContactUrl url = item->detail(); + + QStringList contextList; + if ( !context.isEmpty() ) + contextList << context; + + url.setContexts( contextList ); + + item->setDetail( url ); + } + +void CntUrlEditorViewItem::textChanged( QString aText ) + { + HbDataFormModel* model = static_cast(itemView()->model()); + CntDetailModelItem* item = static_cast( model->itemFromIndex(modelIndex()) ); + + QContactUrl url = item->detail(); + url.setUrl( aText ); + item->setDetail( url ); + } + +void CntUrlEditorViewItem::constructSubTypeModel( QStringList aContext ) + { + QStandardItemModel* model = new QStandardItemModel(); + + QString contextHome = QContactDetail::ContextHome; + QString contextWork = QContactDetail::ContextWork; + QString fieldAddress = QContactUrl::FieldUrl; + + QStandardItem *noContext = new QStandardItem; + noContext->setText(qtTrId("URL")); + noContext->setData(fieldAddress, DetailSubType); + noContext->setData(CNT_URL_EDITOR_MAXLENGTH, DetailMaxLength); + model->appendRow(noContext); + + QStandardItem *home = new QStandardItem; + home->setText(qtTrId("URL (home)")); + home->setData(fieldAddress, DetailSubType); + home->setData(contextHome, DetailContext); + home->setData(CNT_URL_EDITOR_MAXLENGTH, DetailMaxLength); + model->appendRow(home); + + QStandardItem *work = new QStandardItem; + work->setText(qtTrId("URL (work)")); + work->setData(fieldAddress, DetailSubType); + work->setData(contextWork, DetailContext); + work->setData(CNT_URL_EDITOR_MAXLENGTH, DetailMaxLength); + model->appendRow(work); + + mBox->setModel( model ); + + // search the selected index to be set + QString context = aContext.isEmpty() ? "" : aContext.first(); + for ( int i(0); i < model->rowCount(); i++ ) + { + if ( model->item(i)->data( DetailContext ).toString() == context ) + { + mBox->setCurrentIndex( i ); + break; + } + } + } + +// End of File