phonebookui/cntlistmodel/cntlistmodel_p.cpp
author hgs
Fri, 15 Oct 2010 12:24:46 +0300
changeset 81 640d30f4fb64
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
81
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: Private data for CntListModel.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include <xqsettingsmanager.h>
hgs
parents:
diff changeset
    19
#include <xqsettingskey.h>
hgs
parents:
diff changeset
    20
#include <qtcontacts.h>
hgs
parents:
diff changeset
    21
#include <cntlistmodel_p.h>
hgs
parents:
diff changeset
    22
#include <cntcache.h>
hgs
parents:
diff changeset
    23
#include <cntdisplaytextformatter.h>
hgs
parents:
diff changeset
    24
#include <cntdebug.h>
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
/*!
hgs
parents:
diff changeset
    27
    \class CntListModel
hgs
parents:
diff changeset
    28
    \brief Private data for CntListModel.
hgs
parents:
diff changeset
    29
 */
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
/*!
hgs
parents:
diff changeset
    32
    Initializes all data.
hgs
parents:
diff changeset
    33
 */
hgs
parents:
diff changeset
    34
CntListModelData::CntListModelData(QContactManager *manager, const QContactFilter &filter, bool showMyCard)
hgs
parents:
diff changeset
    35
    : mContactManager(manager),
hgs
parents:
diff changeset
    36
      mCache(CntCache::createSession(this, manager)),
hgs
parents:
diff changeset
    37
      mGroupId(0),
hgs
parents:
diff changeset
    38
      mCurrentContact(NULL),
hgs
parents:
diff changeset
    39
      mCurrentRow(-1),
hgs
parents:
diff changeset
    40
      mShowMyCard(showMyCard),
hgs
parents:
diff changeset
    41
      mMyCardId(manager->selfContactId()),
hgs
parents:
diff changeset
    42
      mSettings(NULL),
hgs
parents:
diff changeset
    43
      mNameListRowSettingkey(NULL),
hgs
parents:
diff changeset
    44
      mCurrentRowSetting(0),
hgs
parents:
diff changeset
    45
      mFormat(new CntDummyDisplayTextFormatter),
hgs
parents:
diff changeset
    46
      mDefaultIcon(HbIcon("qtg_large_avatar")),
hgs
parents:
diff changeset
    47
      mDefaultMyCardIcon(HbIcon("qtg_large_avatar_mycard"))
hgs
parents:
diff changeset
    48
{
hgs
parents:
diff changeset
    49
    CNT_ENTRY
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
    setFilter(filter);
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
    CNT_EXIT
hgs
parents:
diff changeset
    54
}
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
/*!
hgs
parents:
diff changeset
    57
    Cleans up all data.
hgs
parents:
diff changeset
    58
 */
hgs
parents:
diff changeset
    59
CntListModelData::~CntListModelData()
hgs
parents:
diff changeset
    60
{
hgs
parents:
diff changeset
    61
    CNT_ENTRY
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
    mCache->closeSession(this);
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
    delete mSettings;
hgs
parents:
diff changeset
    66
    delete mNameListRowSettingkey;
hgs
parents:
diff changeset
    67
    delete mFormat;
hgs
parents:
diff changeset
    68
    delete mCurrentContact;
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
    CNT_EXIT
hgs
parents:
diff changeset
    71
}
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
/*!
hgs
parents:
diff changeset
    74
    Sets the filter for selecting contacts in the list.
hgs
parents:
diff changeset
    75
 */
hgs
parents:
diff changeset
    76
void CntListModelData::setFilter(const QContactFilter& contactFilter)
hgs
parents:
diff changeset
    77
{
hgs
parents:
diff changeset
    78
    CNT_ENTRY_ARGS(contactFilter.type())
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
    mFilter = contactFilter;
hgs
parents:
diff changeset
    81
    mCurrentRow = -1;
hgs
parents:
diff changeset
    82
    if (contactFilter.type() == QContactFilter::RelationshipFilter) {
hgs
parents:
diff changeset
    83
        QContactRelationshipFilter* relationshipFilter = static_cast<QContactRelationshipFilter*>(&mFilter);
hgs
parents:
diff changeset
    84
        if (relationshipFilter->relationshipType() == QContactRelationship::HasMember &&
hgs
parents:
diff changeset
    85
            relationshipFilter->relatedContactRole() == QContactRelationship::First) {
hgs
parents:
diff changeset
    86
            mGroupId = relationshipFilter->relatedContactId().localId();
hgs
parents:
diff changeset
    87
        }
hgs
parents:
diff changeset
    88
    } else {
hgs
parents:
diff changeset
    89
        mGroupId = 0;
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
        // set proper text formatter for the display name. 
hgs
parents:
diff changeset
    92
        if (contactFilter.type() == QContactFilter::ContactDetailFilter) {
hgs
parents:
diff changeset
    93
            delete mFormat;
hgs
parents:
diff changeset
    94
            mFormat = NULL;
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
            QContactDetailFilter *detailFilter = static_cast<QContactDetailFilter*>(&mFilter);
hgs
parents:
diff changeset
    97
            QStringList filter = detailFilter->value().toStringList();
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
            if (detailFilter->detailDefinitionName() == QContactDisplayLabel::DefinitionName
hgs
parents:
diff changeset
   100
                && detailFilter->matchFlags() & QContactFilter::MatchStartsWith
hgs
parents:
diff changeset
   101
                && !filter.isEmpty()) {
hgs
parents:
diff changeset
   102
                mFormat = new CntHTMLDisplayTextFormatter();
hgs
parents:
diff changeset
   103
            } else {
hgs
parents:
diff changeset
   104
                mFormat = new CntDummyDisplayTextFormatter();
hgs
parents:
diff changeset
   105
            }
hgs
parents:
diff changeset
   106
        }
hgs
parents:
diff changeset
   107
    }
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
    CNT_EXIT_ARGS(mGroupId)
hgs
parents:
diff changeset
   110
}