phonebookui/pbkcommonui/src/cntdetaileditor.cpp
changeset 25 76a2435edfd4
child 27 de1630741fbe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/pbkcommonui/src/cntdetaileditor.cpp	Fri Apr 16 14:53:18 2010 +0300
@@ -0,0 +1,107 @@
+/*
+* 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