phonebookui/pbkcommonui/src/cnturleditorview.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Mar 2010 09:27:18 +0200
changeset 24 0ba2181d7c28
child 25 76a2435edfd4
permissions -rw-r--r--
Revision: 201007 Kit: 201011

/*
* 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 "cnturleditorview.h"
#include "cnteditordataviewitem.h"
#include <hbinputstandardfilters.h>

CntUrlEditorView::CntUrlEditorView(CntViewManager *viewManager, QGraphicsItem *parent):
    CntBaseDetailEditorView(viewManager, parent)
{
    setHeader(hbTrId("Edit URL details"));
}

CntUrlEditorView::~CntUrlEditorView()
{

}

void CntUrlEditorView::aboutToCloseView()
{
    for (int i = 0; i < mDetailList.count(); i++)
    {
        mContact->saveDetail(mDetailList.at(i));
        
        if (mDetailList.at(i)->value(QContactUrl::FieldUrl).isEmpty())
        {
            mContact->removeDetail(mDetailList.at(i));
        }
    }
    CntBaseDetailEditorView::aboutToCloseView();
}

QStandardItemModel *CntUrlEditorView::itemModel()
{
    QStandardItemModel *fieldModel = new QStandardItemModel();
    
    QString contextHome = QContactDetail::ContextHome;
    QString contextWork = QContactDetail::ContextWork;
    
    QString urlField = QContactUrl::FieldUrl;
    
    QStandardItem *url = new QStandardItem;
    url->setText(hbTrId("txt_phob_dblist_url"));
    url->setData(urlField, Qt::UserRole);
    url->setData(":/icons/qgn_prop_nrtyp_url.svg", Qt::UserRole+2);
    url->setData(CNT_URL_EDITOR_MAXLENGTH, Qt::UserRole+3);
    fieldModel->appendRow(url);
    QStandardItem *urlhome = new QStandardItem;
    urlhome->setText(hbTrId("txt_phob_dblist_url_home"));
    urlhome->setData(urlField, Qt::UserRole);
    urlhome->setData(contextHome, Qt::UserRole+1);
    urlhome->setData(":/icons/qgn_prop_nrtyp_url.svg", Qt::UserRole+2);
    urlhome->setData(CNT_URL_EDITOR_MAXLENGTH, Qt::UserRole+3);
    fieldModel->appendRow(urlhome);
    QStandardItem *urlwork = new QStandardItem;
    urlwork->setText(hbTrId("txt_phob_dblist_url_work"));
    urlwork->setData(urlField, Qt::UserRole);
    urlwork->setData(contextWork, Qt::UserRole+1);
    urlwork->setData(":/icons/qgn_prop_nrtyp_url.svg", Qt::UserRole+2);
    urlwork->setData(CNT_URL_EDITOR_MAXLENGTH, Qt::UserRole+3);
    fieldModel->appendRow(urlwork);
    
    return fieldModel;
}

void CntUrlEditorView::initializeForm()
{
    QContactUrl *buttonUrl = new QContactUrl();
    mDetailList.append(buttonUrl);
    CntEditorDataModelItem *buttonItem = new CntEditorDataModelItem(*buttonUrl, hbTrId("Add URL"),
            static_cast<HbDataFormModelItem::DataItemType>(HbDataFormModelItem::CustomItemBase+2));
    formModel()->appendDataFormItem(buttonItem, formModel()->invisibleRootItem());
    
    QList<QContactUrl> details = mContact->details<QContactUrl>();
    
    if (details.count() > 0)
    {
        for(int i = 0;i < details.count();i++)
        {
            QContactUrl *url = new QContactUrl(details.at(i));
            mDetailList.append(url);
            CntEditorDataModelItem *item = new CntEditorDataModelItem(*url, QContactUrl::FieldUrl, itemModel(), 
                    HbDataFormModelItem::CustomItemBase);
            item->setTextFilter(HbUrlFilter::instance());
            formModel()->insertDataFormItem(formModel()->rowCount() - 1, item, formModel()->invisibleRootItem());
            
            // check if this was the clicked item in edit view
            if (mParamString != "add" && mParamString.toInt() == i)
            {
                // set focus to the added field's lineedit
                static_cast<CntEditorDataViewItem*>(dataForm()->itemByIndex(formModel()->indexFromItem(item)))->focusLineEdit();
            }
        }
    }
    else
    {
        addDetail();
    }
}

void CntUrlEditorView::addDetail()
{
    QContactUrl *url = new QContactUrl();
    mDetailList.append(url);
    CntEditorDataModelItem *item = new CntEditorDataModelItem(*url, QContactUrl::FieldUrl, itemModel(), 
            HbDataFormModelItem::CustomItemBase);
    item->setTextFilter(HbEmailAddressFilter::instance());
    formModel()->insertDataFormItem(formModel()->rowCount() - 1, item, formModel()->invisibleRootItem());
    
    // set focus to the added field's lineedit
    static_cast<CntEditorDataViewItem*>(dataForm()->itemByIndex(formModel()->indexFromItem(item)))->focusLineEdit();
}