phonebookui/pbkcommonui/src/cntnameseditorview.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Mar 2010 09:27:18 +0200
changeset 24 0ba2181d7c28
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 "cntnameseditorview.h"
#include "cnteditordataviewitem.h"

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

CntNamesEditorView::~CntNamesEditorView()
{

}

void CntNamesEditorView::aboutToCloseView()
{
    for (int i = 0; i < mDetailList.count(); i++)
    {
        mContact->saveDetail(mDetailList.at(i));
        if (mDetailList.at(i)->definitionName() == QContactNickname::DefinitionName && 
                mDetailList.at(i)->value(QContactNickname::FieldNickname).isEmpty())
        {
            mContact->removeDetail(mDetailList.at(i));
        }
        if (mDetailList.at(i)->definitionName() == QContactName::DefinitionName && 
                mDetailList.at(i)->value(QContactName::FieldFirst).isEmpty() &&
                mDetailList.at(i)->value(QContactName::FieldLast).isEmpty() &&
                mDetailList.at(i)->value(QContactName::FieldMiddle).isEmpty() &&
                mDetailList.at(i)->value(QContactName::FieldPrefix).isEmpty() &&
                mDetailList.at(i)->value(QContactName::FieldSuffix).isEmpty())
        {
            mContact->removeDetail(mDetailList.at(i));
        }
    }
    CntBaseDetailEditorView::aboutToCloseView();
}

void CntNamesEditorView::initializeForm()
{    
    QList<QContactName> nameDetails = mContact->details<QContactName>();
    QList<QContactNickname> nickDetails = mContact->details<QContactNickname>();
    QContactName *name = 0;
    QContactNickname *nick = 0;
    
    if (nameDetails.count() > 0)
    {
        name = new QContactName(nameDetails.at(0));
    }
    else
    {
        name = new QContactName();
    }
    mDetailList.append(name);
    
    if (nickDetails.count() > 0)
    {
        nick = new QContactNickname(nickDetails.at(0));
    }
    else
    {
        nick = new QContactNickname();
    }
    mDetailList.append(nick);
    
    CntEditorDataModelItem *item = new CntEditorDataModelItem(*name, QContactName::FieldFirst, CNT_NAMES_EDITOR_MAXLENGTH,
            static_cast<HbDataFormModelItem::DataItemType>(HbDataFormModelItem::CustomItemBase+1), hbTrId("txt_phob_formlabel_first_name"));
    formModel()->appendDataFormItem(item, formModel()->invisibleRootItem());
    
    item = new CntEditorDataModelItem(*name, QContactName::FieldLast, CNT_NAMES_EDITOR_MAXLENGTH,
            static_cast<HbDataFormModelItem::DataItemType>(HbDataFormModelItem::CustomItemBase+1), hbTrId("txt_phob_formlabel_last_name"));
    formModel()->appendDataFormItem(item, formModel()->invisibleRootItem());
    
    item = new CntEditorDataModelItem(*name, QContactName::FieldMiddle, CNT_NAMES_EDITOR_MAXLENGTH,
            static_cast<HbDataFormModelItem::DataItemType>(HbDataFormModelItem::CustomItemBase+1), hbTrId("txt_phob_formlabel_middle_name"));
    formModel()->appendDataFormItem(item, formModel()->invisibleRootItem());
    
    item = new CntEditorDataModelItem(*nick, QContactNickname::FieldNickname, CNT_NAMES_EDITOR_MAXLENGTH,
            static_cast<HbDataFormModelItem::DataItemType>(HbDataFormModelItem::CustomItemBase+1), hbTrId("txt_phob_formlabel_nick_name"));
    formModel()->appendDataFormItem(item, formModel()->invisibleRootItem());
    
    item = new CntEditorDataModelItem(*name, QContactName::FieldPrefix, CNT_PREFIXSUFFIX_EDITOR_MAXLENGTH,
            static_cast<HbDataFormModelItem::DataItemType>(HbDataFormModelItem::CustomItemBase+1), hbTrId("txt_phob_formlabel_prefix"));
    formModel()->appendDataFormItem(item, formModel()->invisibleRootItem());
    
    item = new CntEditorDataModelItem(*name, QContactName::FieldSuffix, CNT_PREFIXSUFFIX_EDITOR_MAXLENGTH,
            static_cast<HbDataFormModelItem::DataItemType>(HbDataFormModelItem::CustomItemBase+1), hbTrId("Suffix"));
    formModel()->appendDataFormItem(item, formModel()->invisibleRootItem());

    // set focus to first name field's lineedit
    static_cast<CntEditorDataViewItem*>(dataForm()->itemByIndex(formModel()->index(0, 0, QModelIndex())))->focusLineEdit();
}