phonebookui/pbkcommonui/src/cntdetaileditor.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 14:53:18 +0300
changeset 25 76a2435edfd4
child 27 de1630741fbe
permissions -rw-r--r--
Revision: 201011 Kit: 201015

/*
* 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 "cntdetaileditor.h"
#include <hbmenu.h>
CntDetailEditor::CntDetailEditor(CntViewManager *viewManager, QGraphicsItem *parent) :
    CntBaseView(viewManager, parent), mDataForm(0), mDataFormModel(0)
{
    if (loadDocument(":/xml/contacts_editor.docml")) {
        QGraphicsWidget *content = findWidget(QString("content"));
        setWidget(content);
        mDataForm = static_cast<HbDataForm*> (findWidget(QString("dataForm")));
    }
}

void CntDetailEditor::setViewId( CntViewParameters::ViewId aId )
{
    iId = aId;
}

void CntDetailEditor::setInsertAction( const QString aInsert )
{
    HbAction* insert = new HbAction( aInsert );
    menu()->addAction( insert );
    connect( insert, SIGNAL(triggered()), this, SLOT(insertField()) );
}

void CntDetailEditor::insertField()
{
    mDataFormModel->insertDetailField();
}

CntDetailEditor::~CntDetailEditor()
{
    delete mDataForm;
    delete mDataFormModel;
    delete mPrototype;
    delete mHeader;
}

void CntDetailEditor::discardChanges()
{
    QContact selected( *mDataFormModel->contact() );
    CntViewParameters args;
    args.setSelectedContact( selected );
    viewManager()->back( args );
}

void CntDetailEditor::aboutToCloseView()
{
    mDataFormModel->saveContactDetails();
    
    QContact selected( *mDataFormModel->contact() );
    CntViewParameters args;
    args.setSelectedContact( selected );
    viewManager()->back( args );
}

void CntDetailEditor::setHeader(QString aHeader)
{
    if (!mHeader) {
        mHeader = static_cast<HbGroupBox*> (findWidget(QString("headerBox")));
    }
    mHeader->setHeading(aHeader);
}

void CntDetailEditor::setDetails(CntDetailEditorModel* aModel, HbAbstractViewItem* aPrototype)
{
    mDataFormModel = aModel;
    mPrototype = aPrototype;
}

void CntDetailEditor::activateView(const CntViewParameters &viewParameters)
{
    Q_UNUSED( viewParameters );
    HbAction* cancel = static_cast<HbAction*>(findObject("cnt:discardchanges"));
    menu()->addAction( cancel );
    connect( cancel, SIGNAL(triggered()), this, SLOT(discardChanges()) );
    
    // add new field if required
    if ( viewParameters.selectedAction() == "add" ) {
        mDataFormModel->insertDetailField();
    }
    
    mDataForm->setItemRecycling(true);
    mDataForm->setModel(mDataFormModel, mPrototype);
}

CntViewParameters::ViewId CntDetailEditor::viewId() const
{
    return iId;
}

// End of File