phonebookui/cntcommonui/contacteditors/cntdetaileditor.cpp
author hgs
Fri, 15 Oct 2010 12:24:46 +0300
changeset 81 640d30f4fb64
parent 72 6abfb1094884
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
#include "cntdetaileditor.h"
hgs
parents:
diff changeset
    18
#include "cnteditorfactory.h"
hgs
parents:
diff changeset
    19
#include "cntgroupeditormodel.h"
hgs
parents:
diff changeset
    20
#include "cntsavemanager.h"
hgs
parents:
diff changeset
    21
#include "cntglobal.h"
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <cntviewparams.h>
hgs
parents:
diff changeset
    24
#include <hbmenu.h>
hgs
parents:
diff changeset
    25
#include <hbaction.h>
hgs
parents:
diff changeset
    26
#include <hbmainwindow.h>
hgs
parents:
diff changeset
    27
#include <hbview.h>
hgs
parents:
diff changeset
    28
#include <hbdocumentloader.h>
hgs
parents:
diff changeset
    29
#include <hbaction.h>
hgs
parents:
diff changeset
    30
#include <hblineedit.h>
hgs
parents:
diff changeset
    31
#include <hbinputeditorinterface.h>
hgs
parents:
diff changeset
    32
#include <hbinputstandardfilters.h>
hgs
parents:
diff changeset
    33
#include <cntdebug.h>
hgs
parents:
diff changeset
    34
#include <hbscrollarea.h>
hgs
parents:
diff changeset
    35
#include <hbscrollbar.h>
hgs
parents:
diff changeset
    36
#include <hbdevicenotificationdialog.h>
hgs
parents:
diff changeset
    37
#include <hbparameterlengthlimiter.h>
hgs
parents:
diff changeset
    38
#include <hbshrinkingvkbhost.h>
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
#include <QApplication>
hgs
parents:
diff changeset
    41
#include <QTimer>
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
const char *CNT_DETAILEDITOR_XML = ":/xml/contacts_detail_editor.docml";
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
CntDetailEditor::CntDetailEditor( int aId ) :
hgs
parents:
diff changeset
    46
    QObject(),
hgs
parents:
diff changeset
    47
    mDataFormModel(NULL),
hgs
parents:
diff changeset
    48
    mHeader(NULL),   
hgs
parents:
diff changeset
    49
    mId(aId),
hgs
parents:
diff changeset
    50
    mView(NULL),
hgs
parents:
diff changeset
    51
    mLoader(NULL),   
hgs
parents:
diff changeset
    52
    mViewManager(NULL),
hgs
parents:
diff changeset
    53
    mEditorFactory(NULL),
hgs
parents:
diff changeset
    54
    mCancel(NULL),
hgs
parents:
diff changeset
    55
    mVirtualKeyboard(NULL)
hgs
parents:
diff changeset
    56
{
hgs
parents:
diff changeset
    57
    bool ok;
hgs
parents:
diff changeset
    58
    document()->load(CNT_DETAILEDITOR_XML, &ok);
hgs
parents:
diff changeset
    59
    if (!ok) {
hgs
parents:
diff changeset
    60
        qFatal("Unable to read %S", CNT_DETAILEDITOR_XML);
hgs
parents:
diff changeset
    61
    }
hgs
parents:
diff changeset
    62
    else {
hgs
parents:
diff changeset
    63
        mView = static_cast<HbView*> (document()->findWidget(QString("view")));
hgs
parents:
diff changeset
    64
        mDataForm = static_cast<HbDataForm*> (document()->findWidget(QString("dataForm")));
hgs
parents:
diff changeset
    65
    }
hgs
parents:
diff changeset
    66
 
hgs
parents:
diff changeset
    67
    mEditorFactory = new CntEditorFactory();
hgs
parents:
diff changeset
    68
    
hgs
parents:
diff changeset
    69
    mSoftkey = new HbAction(Hb::BackNaviAction, mView);
hgs
parents:
diff changeset
    70
    connect( mSoftkey, SIGNAL(triggered()), this, SLOT(saveChanges()) );
hgs
parents:
diff changeset
    71
    
hgs
parents:
diff changeset
    72
    // closing the application from task swapper or end key will cause the contact to be saved
hgs
parents:
diff changeset
    73
    connect( qApp, SIGNAL(aboutToQuit()), this, SLOT(saveContact()));
hgs
parents:
diff changeset
    74
}
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
CntDetailEditor::~CntDetailEditor()
hgs
parents:
diff changeset
    77
{
hgs
parents:
diff changeset
    78
    mView->deleteLater();
hgs
parents:
diff changeset
    79
    
hgs
parents:
diff changeset
    80
    delete mDataForm;
hgs
parents:
diff changeset
    81
    mDataForm = NULL;
hgs
parents:
diff changeset
    82
    delete mDataFormModel;
hgs
parents:
diff changeset
    83
    mDataFormModel = NULL;
hgs
parents:
diff changeset
    84
    delete mHeader;
hgs
parents:
diff changeset
    85
    mHeader = NULL;
hgs
parents:
diff changeset
    86
    delete mLoader;
hgs
parents:
diff changeset
    87
    mLoader = NULL;
hgs
parents:
diff changeset
    88
    delete mEditorFactory;
hgs
parents:
diff changeset
    89
    mEditorFactory = NULL;
hgs
parents:
diff changeset
    90
    delete mVirtualKeyboard;
hgs
parents:
diff changeset
    91
    mVirtualKeyboard = NULL;
hgs
parents:
diff changeset
    92
}
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
void CntDetailEditor::setViewId( int aId )
hgs
parents:
diff changeset
    95
{
hgs
parents:
diff changeset
    96
    mId = aId;
hgs
parents:
diff changeset
    97
}
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
void CntDetailEditor::setInsertAction( const QString aInsert )
hgs
parents:
diff changeset
   100
{
hgs
parents:
diff changeset
   101
    HbAction* insert = new HbAction( aInsert, mView );
hgs
parents:
diff changeset
   102
    mView->menu()->insertAction(mCancel, insert);
hgs
parents:
diff changeset
   103
    connect( insert, SIGNAL(triggered()), this, SLOT(insertField()) );
hgs
parents:
diff changeset
   104
}
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
void CntDetailEditor::activate( const CntViewParameters aArgs )
hgs
parents:
diff changeset
   107
{
hgs
parents:
diff changeset
   108
    mViewManager = &mEngine->viewManager();
hgs
parents:
diff changeset
   109
    mArgs = aArgs; //don't loose the params while swiching between editview and editorviews.
hgs
parents:
diff changeset
   110
    
hgs
parents:
diff changeset
   111
    mCancel = static_cast<HbAction*>(document()->findObject("cnt:discardchanges"));
hgs
parents:
diff changeset
   112
    mCancel->setParent(mView);
hgs
parents:
diff changeset
   113
    mView->menu()->addAction(mCancel);
hgs
parents:
diff changeset
   114
    connect( mCancel, SIGNAL(triggered()), this, SLOT(discardChanges()) );
hgs
parents:
diff changeset
   115
    mCancel->setDisabled(true);
hgs
parents:
diff changeset
   116
    
hgs
parents:
diff changeset
   117
    if ( mView->navigationAction() != mSoftkey) {
hgs
parents:
diff changeset
   118
        mView->setNavigationAction(mSoftkey);
hgs
parents:
diff changeset
   119
    }
hgs
parents:
diff changeset
   120
    
hgs
parents:
diff changeset
   121
    if ( mId == groupEditorView )
hgs
parents:
diff changeset
   122
    {
81
hgs
parents: 72
diff changeset
   123
        mContact = aArgs.value(ESelectedGroupContact).value<QContact>();
72
hgs
parents:
diff changeset
   124
        connect( mDataForm, SIGNAL(itemShown(const QModelIndex&)), this, SLOT(handleItemShown(const QModelIndex&)) );
hgs
parents:
diff changeset
   125
    }
hgs
parents:
diff changeset
   126
    else
hgs
parents:
diff changeset
   127
    {
81
hgs
parents: 72
diff changeset
   128
        mContact = aArgs.value(ESelectedContact).value<QContact>();
72
hgs
parents:
diff changeset
   129
        connect( mDataForm, SIGNAL(itemShown(const QModelIndex&)), this, SLOT(handleItemShown(const QModelIndex&)) );
hgs
parents:
diff changeset
   130
    }
hgs
parents:
diff changeset
   131
    
hgs
parents:
diff changeset
   132
    QContactManager& cm = mEngine->contactManager(SYMBIAN_BACKEND);
hgs
parents:
diff changeset
   133
    connect(&cm, SIGNAL(contactsRemoved(const QList<QContactLocalId>&)), 
hgs
parents:
diff changeset
   134
        this, SLOT(contactDeletedFromOtherSource(const QList<QContactLocalId>&)));
hgs
parents:
diff changeset
   135
    
81
hgs
parents: 72
diff changeset
   136
    mEditorFactory->setupEditorView(*this, mContact);
72
hgs
parents:
diff changeset
   137
    mDataForm->setItemRecycling(true);
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
    // add new field if required
hgs
parents:
diff changeset
   140
    if ( aArgs.value(ESelectedAction).toString() == CNT_ADD_ACTION )
hgs
parents:
diff changeset
   141
    {
hgs
parents:
diff changeset
   142
        mDataFormModel->insertDetailField();
hgs
parents:
diff changeset
   143
    }
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
    connect(mDataFormModel, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
hgs
parents:
diff changeset
   146
            this, SLOT(enableDiscardChanges(/*const QModelIndex &, const QModelIndex &*/)));
hgs
parents:
diff changeset
   147
    
hgs
parents:
diff changeset
   148
    mDataForm->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAsNeeded); 
hgs
parents:
diff changeset
   149
    mDataForm->setScrollingStyle(HbScrollArea::PanWithFollowOn);
hgs
parents:
diff changeset
   150
    mDataForm->verticalScrollBar()->setInteractive(true);
hgs
parents:
diff changeset
   151
    
hgs
parents:
diff changeset
   152
    mVirtualKeyboard = new HbShrinkingVkbHost(mView);
hgs
parents:
diff changeset
   153
}
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
void CntDetailEditor::deactivate()
hgs
parents:
diff changeset
   156
{
hgs
parents:
diff changeset
   157
    QContactManager& mgr = mEngine->contactManager(SYMBIAN_BACKEND);
hgs
parents:
diff changeset
   158
    
hgs
parents:
diff changeset
   159
    disconnect(&mgr, SIGNAL(contactsRemoved(const QList<QContactLocalId>&)),
hgs
parents:
diff changeset
   160
            this, SLOT(contactDeletedFromOtherSource(const QList<QContactLocalId>&)));
81
hgs
parents: 72
diff changeset
   161
    
hgs
parents: 72
diff changeset
   162
    delete mVirtualKeyboard;
hgs
parents: 72
diff changeset
   163
    mVirtualKeyboard = NULL;
72
hgs
parents:
diff changeset
   164
}
hgs
parents:
diff changeset
   165
    
hgs
parents:
diff changeset
   166
bool CntDetailEditor::isDefault() const
hgs
parents:
diff changeset
   167
{
hgs
parents:
diff changeset
   168
    return false;
hgs
parents:
diff changeset
   169
}
hgs
parents:
diff changeset
   170
hgs
parents:
diff changeset
   171
HbView* CntDetailEditor::view() const
hgs
parents:
diff changeset
   172
{
hgs
parents:
diff changeset
   173
    return mView;   
hgs
parents:
diff changeset
   174
}
hgs
parents:
diff changeset
   175
hgs
parents:
diff changeset
   176
HbDocumentLoader* CntDetailEditor::document()
hgs
parents:
diff changeset
   177
{
hgs
parents:
diff changeset
   178
    if (!mLoader) {
hgs
parents:
diff changeset
   179
        mLoader = new HbDocumentLoader();
hgs
parents:
diff changeset
   180
    }
hgs
parents:
diff changeset
   181
    
hgs
parents:
diff changeset
   182
    return mLoader;    
hgs
parents:
diff changeset
   183
}
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
void CntDetailEditor::insertField()
hgs
parents:
diff changeset
   186
{
hgs
parents:
diff changeset
   187
    mDataFormModel->insertDetailField();
hgs
parents:
diff changeset
   188
    mDataForm->scrollTo(mDataFormModel->index(mDataFormModel->rowCount() - 1, 0), HbAbstractItemView::PositionAtBottom);
hgs
parents:
diff changeset
   189
}
hgs
parents:
diff changeset
   190
hgs
parents:
diff changeset
   191
void CntDetailEditor::handleItemShown(const QModelIndex& aIndex )
hgs
parents:
diff changeset
   192
{
hgs
parents:
diff changeset
   193
    HbDataFormModelItem* modelItem = mDataFormModel->itemFromIndex( aIndex );
hgs
parents:
diff changeset
   194
    
hgs
parents:
diff changeset
   195
    if ( modelItem->type() == HbDataFormModelItem::TextItem ) 
hgs
parents:
diff changeset
   196
    {
hgs
parents:
diff changeset
   197
        HbDataFormViewItem* viewItem = static_cast<HbDataFormViewItem*>(mDataForm->itemByIndex( aIndex ));
hgs
parents:
diff changeset
   198
        HbLineEdit* edit = static_cast<HbLineEdit*>( viewItem->dataItemContentWidget() );
hgs
parents:
diff changeset
   199
        QString objName;
hgs
parents:
diff changeset
   200
        
hgs
parents:
diff changeset
   201
        if ( mId == groupEditorView )
hgs
parents:
diff changeset
   202
        {
hgs
parents:
diff changeset
   203
            CntGroupEditorModel* groupModel = static_cast<CntGroupEditorModel*>( mDataFormModel );    
hgs
parents:
diff changeset
   204
            if ( groupModel->isConferenceNumber(aIndex) )
hgs
parents:
diff changeset
   205
            {
hgs
parents:
diff changeset
   206
                edit->setInputMethodHints( Qt::ImhDialableCharactersOnly );
hgs
parents:
diff changeset
   207
                objName = "Conference number line edit %1";
hgs
parents:
diff changeset
   208
            }
hgs
parents:
diff changeset
   209
            else
hgs
parents:
diff changeset
   210
            {
hgs
parents:
diff changeset
   211
                edit->setInputMethodHints( Qt::ImhNoPredictiveText );
hgs
parents:
diff changeset
   212
                objName = "Group name line edit %1";
hgs
parents:
diff changeset
   213
            }
hgs
parents:
diff changeset
   214
        }
hgs
parents:
diff changeset
   215
        else
hgs
parents:
diff changeset
   216
        {
hgs
parents:
diff changeset
   217
            edit->setInputMethodHints( Qt::ImhNoPredictiveText );
hgs
parents:
diff changeset
   218
            
hgs
parents:
diff changeset
   219
            if (modelItem->contentWidgetData( "preferDigits" ).toBool())
hgs
parents:
diff changeset
   220
            {
hgs
parents:
diff changeset
   221
                edit->setInputMethodHints( Qt::ImhPreferNumbers | Qt::ImhNoPredictiveText );
hgs
parents:
diff changeset
   222
            }
hgs
parents:
diff changeset
   223
            
hgs
parents:
diff changeset
   224
            objName = mDataFormModel->detail().definitionName() + " line edit %1";
hgs
parents:
diff changeset
   225
        }
hgs
parents:
diff changeset
   226
        
hgs
parents:
diff changeset
   227
        // Naming UI components for automation testability
hgs
parents:
diff changeset
   228
        edit->setObjectName(objName.arg(aIndex.row()));
hgs
parents:
diff changeset
   229
    }
hgs
parents:
diff changeset
   230
}
hgs
parents:
diff changeset
   231
hgs
parents:
diff changeset
   232
void CntDetailEditor::discardChanges()
hgs
parents:
diff changeset
   233
{
hgs
parents:
diff changeset
   234
    QContact selected( *mDataFormModel->contact() );
hgs
parents:
diff changeset
   235
    QVariant var;
hgs
parents:
diff changeset
   236
    var.setValue(selected);
hgs
parents:
diff changeset
   237
    mArgs.insert(ESelectedContact, var);
hgs
parents:
diff changeset
   238
    mViewManager->back( mArgs );
hgs
parents:
diff changeset
   239
}
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
/*!
hgs
parents:
diff changeset
   242
    Saves all changes made to details (type of details depends on
hgs
parents:
diff changeset
   243
    in which editor we are) of a contact. Doesn't save the contact.
hgs
parents:
diff changeset
   244
*/
hgs
parents:
diff changeset
   245
void CntDetailEditor::saveChanges()
hgs
parents:
diff changeset
   246
{
hgs
parents:
diff changeset
   247
    mDataFormModel->saveContactDetails();
hgs
parents:
diff changeset
   248
    
hgs
parents:
diff changeset
   249
    QContact selected( *mDataFormModel->contact() );
hgs
parents:
diff changeset
   250
    QVariant var;
hgs
parents:
diff changeset
   251
    var.setValue(selected);
hgs
parents:
diff changeset
   252
    if ( mId == groupEditorView )
hgs
parents:
diff changeset
   253
    {
hgs
parents:
diff changeset
   254
       mArgs.insert(ESelectedGroupContact, var);
hgs
parents:
diff changeset
   255
    }
hgs
parents:
diff changeset
   256
    else
hgs
parents:
diff changeset
   257
    {
hgs
parents:
diff changeset
   258
        mArgs.insert(ESelectedContact, var);
hgs
parents:
diff changeset
   259
        
hgs
parents:
diff changeset
   260
        QContactDetail selectedDetail( mDataFormModel->detail() );
hgs
parents:
diff changeset
   261
        QVariant var2;
hgs
parents:
diff changeset
   262
        var2.setValue( selectedDetail );
hgs
parents:
diff changeset
   263
        mArgs.insert( ESelectedDetail, var2 );
hgs
parents:
diff changeset
   264
    }
hgs
parents:
diff changeset
   265
    
hgs
parents:
diff changeset
   266
    mViewManager->back( mArgs );
hgs
parents:
diff changeset
   267
}
hgs
parents:
diff changeset
   268
hgs
parents:
diff changeset
   269
/*!
hgs
parents:
diff changeset
   270
    First saves all changes made to details (type of details depends on
hgs
parents:
diff changeset
   271
    in which editor we are) of a contact and then saves the contact. This
hgs
parents:
diff changeset
   272
    is only called when phonebook is being closed either from task swapper
hgs
parents:
diff changeset
   273
    or by end key.
hgs
parents:
diff changeset
   274
*/
hgs
parents:
diff changeset
   275
void CntDetailEditor::saveContact()
hgs
parents:
diff changeset
   276
{
hgs
parents:
diff changeset
   277
    mDataFormModel->saveContactDetails();
hgs
parents:
diff changeset
   278
    QContactManager& mgr = mEngine->contactManager( SYMBIAN_BACKEND );
hgs
parents:
diff changeset
   279
    QString name = mgr.synthesizedContactDisplayLabel(*mDataFormModel->contact());
hgs
parents:
diff changeset
   280
    
hgs
parents:
diff changeset
   281
    if (name.isEmpty())
hgs
parents:
diff changeset
   282
    {
hgs
parents:
diff changeset
   283
        name = hbTrId("txt_phob_list_unnamed");
hgs
parents:
diff changeset
   284
    }
hgs
parents:
diff changeset
   285
    
81
hgs
parents: 72
diff changeset
   286
    QString myCard = mArgs.value( EMyCard ).toString();
hgs
parents: 72
diff changeset
   287
    QContactLocalId localId = mContact.localId();
hgs
parents: 72
diff changeset
   288
    QContactLocalId selfContactId = mgr.selfContactId();
hgs
parents: 72
diff changeset
   289
    bool isMyCard = ( localId == selfContactId && localId != 0 ) || !myCard.isEmpty();
hgs
parents: 72
diff changeset
   290
        
hgs
parents: 72
diff changeset
   291
    CntSaveManager::CntSaveResult result;
hgs
parents: 72
diff changeset
   292
    CntSaveManager& saveMgr = mEngine->saveManager();
hgs
parents: 72
diff changeset
   293
    if (isMyCard) {
hgs
parents: 72
diff changeset
   294
        result = saveMgr.saveMyCard( mDataFormModel->contact(), &mgr );
hgs
parents: 72
diff changeset
   295
    }
hgs
parents: 72
diff changeset
   296
    else if ( mId == groupEditorView ) {
hgs
parents: 72
diff changeset
   297
        result = saveMgr.saveGroup( mDataFormModel->contact(), &mgr );
hgs
parents: 72
diff changeset
   298
    }
hgs
parents: 72
diff changeset
   299
    else {
hgs
parents: 72
diff changeset
   300
        result = saveMgr.saveContact( mDataFormModel->contact(), &mgr );
hgs
parents: 72
diff changeset
   301
    }
hgs
parents: 72
diff changeset
   302
        
hgs
parents: 72
diff changeset
   303
    if (mId != groupEditorView) {
72
hgs
parents:
diff changeset
   304
        switch (result)
hgs
parents:
diff changeset
   305
        {
hgs
parents:
diff changeset
   306
        case CntSaveManager::ESaved:
81
hgs
parents: 72
diff changeset
   307
            HbDeviceNotificationDialog::notification(QString(),HbParameterLengthLimiter("txt_phob_dpophead_contact_1_saved").arg(name));
72
hgs
parents:
diff changeset
   308
            break;
hgs
parents:
diff changeset
   309
        case CntSaveManager::EUpdated:
81
hgs
parents: 72
diff changeset
   310
            HbDeviceNotificationDialog::notification(QString(),HbParameterLengthLimiter("txt_phob_dpophead_contacts_1_updated").arg(name));
72
hgs
parents:
diff changeset
   311
            break;
hgs
parents:
diff changeset
   312
        case CntSaveManager::EFailed:
hgs
parents:
diff changeset
   313
            HbDeviceNotificationDialog::notification(QString(),hbTrId("SAVING FAILED!"));
hgs
parents:
diff changeset
   314
            break;
hgs
parents:
diff changeset
   315
        case CntSaveManager::EDeleted:
hgs
parents:
diff changeset
   316
        case CntSaveManager::ENothingDone:
hgs
parents:
diff changeset
   317
        default:
hgs
parents:
diff changeset
   318
            break;
hgs
parents:
diff changeset
   319
        }
hgs
parents:
diff changeset
   320
    }
hgs
parents:
diff changeset
   321
}
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
void CntDetailEditor::setHeader(QString aHeader)
hgs
parents:
diff changeset
   324
{
hgs
parents:
diff changeset
   325
    if (!mHeader) {
hgs
parents:
diff changeset
   326
        mHeader = static_cast<HbGroupBox*> (document()->findWidget(QString("headerBox")));
hgs
parents:
diff changeset
   327
    }
hgs
parents:
diff changeset
   328
    mHeader->setHeading(aHeader);
hgs
parents:
diff changeset
   329
}
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
void CntDetailEditor::setDetails(CntDetailEditorModel* aModel, HbAbstractViewItem* aPrototype)
hgs
parents:
diff changeset
   332
{
hgs
parents:
diff changeset
   333
    //Append custom view item prototype
hgs
parents:
diff changeset
   334
    if ( aPrototype )
hgs
parents:
diff changeset
   335
    {
hgs
parents:
diff changeset
   336
        QList <HbAbstractViewItem*> protos = mDataForm->itemPrototypes();
hgs
parents:
diff changeset
   337
        protos.append( aPrototype );
hgs
parents:
diff changeset
   338
        mDataForm->setItemPrototypes( protos );
hgs
parents:
diff changeset
   339
    }
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
    mDataFormModel = aModel;
hgs
parents:
diff changeset
   342
    mDataForm->setModel( mDataFormModel );
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
}
hgs
parents:
diff changeset
   345
hgs
parents:
diff changeset
   346
int CntDetailEditor::viewId() const
hgs
parents:
diff changeset
   347
{
hgs
parents:
diff changeset
   348
    return mId;
hgs
parents:
diff changeset
   349
}
hgs
parents:
diff changeset
   350
hgs
parents:
diff changeset
   351
/*!
hgs
parents:
diff changeset
   352
Go back to the root view
hgs
parents:
diff changeset
   353
*/
hgs
parents:
diff changeset
   354
void CntDetailEditor::showRootView()
hgs
parents:
diff changeset
   355
{   
hgs
parents:
diff changeset
   356
    mViewManager->back( mArgs, true );
hgs
parents:
diff changeset
   357
}
hgs
parents:
diff changeset
   358
hgs
parents:
diff changeset
   359
hgs
parents:
diff changeset
   360
void CntDetailEditor::contactDeletedFromOtherSource(const QList<QContactLocalId>& contactIds)
hgs
parents:
diff changeset
   361
{
hgs
parents:
diff changeset
   362
    CNT_ENTRY
hgs
parents:
diff changeset
   363
    
hgs
parents:
diff changeset
   364
    QContact normalContact = mArgs.value(ESelectedContact).value<QContact>();
hgs
parents:
diff changeset
   365
    QContact groupContact = mArgs.value(ESelectedGroupContact).value<QContact>();
hgs
parents:
diff changeset
   366
    if ( contactIds.contains(normalContact.localId()) || contactIds.contains(groupContact.localId()) )
hgs
parents:
diff changeset
   367
    {
hgs
parents:
diff changeset
   368
        // Do not switch to the previous view immediately. List views are
hgs
parents:
diff changeset
   369
        // not updated properly if this is not done in the event loop
hgs
parents:
diff changeset
   370
        QTimer::singleShot(0, this, SLOT(showRootView()));
hgs
parents:
diff changeset
   371
    }
hgs
parents:
diff changeset
   372
    CNT_EXIT
hgs
parents:
diff changeset
   373
}
hgs
parents:
diff changeset
   374
hgs
parents:
diff changeset
   375
void CntDetailEditor::enableDiscardChanges()
hgs
parents:
diff changeset
   376
{
hgs
parents:
diff changeset
   377
    mCancel->setDisabled(false);
hgs
parents:
diff changeset
   378
}
hgs
parents:
diff changeset
   379
hgs
parents:
diff changeset
   380
// End of File