phonebookui/pbkcommonui/src/cnturleditorviewitem.cpp
changeset 25 76a2435edfd4
child 27 de1630741fbe
--- /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 <qgraphicslinearlayout.h>
+#include <qstandarditemmodel.h>
+#include <qcontacturl.h>
+#include <hbdataformmodel.h>
+#include <hbabstractitemview.h>
+#include <hbinputeditorinterface.h>
+#include <hbinputstandardfilters.h>
+
+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<HbDataFormModel*>(itemView()->model());
+    CntDetailModelItem* item = static_cast<CntDetailModelItem*>( 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<HbDataFormModel*>(itemView()->model());
+    CntDetailModelItem* item = static_cast<CntDetailModelItem*>( 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<HbDataFormModel*>(itemView()->model());
+    CntDetailModelItem* item = static_cast<CntDetailModelItem*>( 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