phonebookui/cntcommonui/contactcard/cntcontactcardheadingitem.cpp
author hgs
Tue, 21 Sep 2010 17:07:25 +0300
changeset 72 6abfb1094884
permissions -rw-r--r--
201037
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
hgs
parents:
diff changeset
    18
#include "cntcontactcardheadingitem.h"
hgs
parents:
diff changeset
    19
#include "cntdebug.h"
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <qtcontacts.h>
hgs
parents:
diff changeset
    22
#include <QGraphicsSceneMouseEvent>
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
#include <hbiconitem.h>
hgs
parents:
diff changeset
    25
#include <hbtextitem.h>
hgs
parents:
diff changeset
    26
#include <hbmarqueeitem.h>
hgs
parents:
diff changeset
    27
#include <hbframedrawer.h>
hgs
parents:
diff changeset
    28
#include <hbframeitem.h>
hgs
parents:
diff changeset
    29
#include <hbstyleloader.h>
hgs
parents:
diff changeset
    30
#include <hbtoucharea.h>
hgs
parents:
diff changeset
    31
#include <hbaction.h>
hgs
parents:
diff changeset
    32
#include <hbmainwindow.h>
hgs
parents:
diff changeset
    33
#include <hbtapgesture.h>
hgs
parents:
diff changeset
    34
#include <hbeffect.h>
hgs
parents:
diff changeset
    35
#include <hbinstantfeedback.h>
hgs
parents:
diff changeset
    36
#include <cntuids.h>
hgs
parents:
diff changeset
    37
#include <xqsettingsmanager.h>
hgs
parents:
diff changeset
    38
#include <xqsettingskey.h>
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
CntContactCardHeadingItem::CntContactCardHeadingItem(QGraphicsItem *parent) :
hgs
parents:
diff changeset
    41
    HbWidget(parent),
hgs
parents:
diff changeset
    42
    mIcon(NULL),
hgs
parents:
diff changeset
    43
    mSecondaryIcon(NULL),
hgs
parents:
diff changeset
    44
    mFirstLineText(NULL),
hgs
parents:
diff changeset
    45
    mPrimaryText(NULL),
hgs
parents:
diff changeset
    46
    mSecondaryText(NULL),
hgs
parents:
diff changeset
    47
    mMarqueeItem(NULL),
hgs
parents:
diff changeset
    48
    mFrameItem(NULL),
hgs
parents:
diff changeset
    49
    mPictureArea(NULL),
hgs
parents:
diff changeset
    50
    mIsFavorite(false),
hgs
parents:
diff changeset
    51
    mIsOnline(false)
hgs
parents:
diff changeset
    52
{
hgs
parents:
diff changeset
    53
    HbEffect::add("icon", "groupbox_icon_click", "iconclick");
hgs
parents:
diff changeset
    54
}
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
CntContactCardHeadingItem::~CntContactCardHeadingItem()
hgs
parents:
diff changeset
    57
{
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
}
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
void CntContactCardHeadingItem::createPrimitives()
hgs
parents:
diff changeset
    62
{
hgs
parents:
diff changeset
    63
    if (!icon.isNull())
hgs
parents:
diff changeset
    64
    {
hgs
parents:
diff changeset
    65
        if (!mIcon && mainWindow()->orientation() != Qt::Horizontal)
hgs
parents:
diff changeset
    66
        {
hgs
parents:
diff changeset
    67
            mIcon = new HbIconItem(this);
hgs
parents:
diff changeset
    68
            mIcon->setAlignment(Qt::AlignCenter);
hgs
parents:
diff changeset
    69
            mIcon->setIcon(icon);
hgs
parents:
diff changeset
    70
            style()->setItemName(mIcon, "icon");
hgs
parents:
diff changeset
    71
        }
hgs
parents:
diff changeset
    72
    }
hgs
parents:
diff changeset
    73
    else
hgs
parents:
diff changeset
    74
    {
hgs
parents:
diff changeset
    75
        if (mIcon)
hgs
parents:
diff changeset
    76
        {
hgs
parents:
diff changeset
    77
            delete mIcon;
hgs
parents:
diff changeset
    78
        }
hgs
parents:
diff changeset
    79
        mIcon = 0;
hgs
parents:
diff changeset
    80
    }
hgs
parents:
diff changeset
    81
    
hgs
parents:
diff changeset
    82
    if (!secondaryIcon.isNull())
hgs
parents:
diff changeset
    83
    {
hgs
parents:
diff changeset
    84
        if (!mSecondaryIcon)
hgs
parents:
diff changeset
    85
        {
hgs
parents:
diff changeset
    86
            mSecondaryIcon = new HbIconItem(this);
hgs
parents:
diff changeset
    87
            mSecondaryIcon->setIcon(secondaryIcon);
hgs
parents:
diff changeset
    88
            style()->setItemName(mSecondaryIcon, "secondary_icon");
hgs
parents:
diff changeset
    89
        }
hgs
parents:
diff changeset
    90
    }
hgs
parents:
diff changeset
    91
    else
hgs
parents:
diff changeset
    92
    {
hgs
parents:
diff changeset
    93
        if (mSecondaryIcon)
hgs
parents:
diff changeset
    94
        {
hgs
parents:
diff changeset
    95
            delete mSecondaryIcon;
hgs
parents:
diff changeset
    96
        }
hgs
parents:
diff changeset
    97
        mSecondaryIcon = 0;
hgs
parents:
diff changeset
    98
    }
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
    if (!firstLineText.isNull())
hgs
parents:
diff changeset
   101
    {
hgs
parents:
diff changeset
   102
        if (!mFirstLineText)
hgs
parents:
diff changeset
   103
        {
hgs
parents:
diff changeset
   104
            mFirstLineText = new HbTextItem(this);
hgs
parents:
diff changeset
   105
            mFirstLineText->setText(firstLineText);
hgs
parents:
diff changeset
   106
            mFirstLineText->setMaximumLines(1);
hgs
parents:
diff changeset
   107
            mFirstLineText->setElideMode(Qt::ElideNone);
hgs
parents:
diff changeset
   108
            style()->setItemName(mFirstLineText, "first_line_text");
hgs
parents:
diff changeset
   109
        }
hgs
parents:
diff changeset
   110
    }
hgs
parents:
diff changeset
   111
    else
hgs
parents:
diff changeset
   112
    {
hgs
parents:
diff changeset
   113
        if (mFirstLineText)
hgs
parents:
diff changeset
   114
        {
hgs
parents:
diff changeset
   115
            delete mFirstLineText;
hgs
parents:
diff changeset
   116
        }
hgs
parents:
diff changeset
   117
        mFirstLineText = 0;
hgs
parents:
diff changeset
   118
    }
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
    if (!primaryText.isNull())
hgs
parents:
diff changeset
   121
    {
hgs
parents:
diff changeset
   122
        if (!mPrimaryText)
hgs
parents:
diff changeset
   123
        {
hgs
parents:
diff changeset
   124
            mPrimaryText = new HbTextItem(this);
hgs
parents:
diff changeset
   125
            mPrimaryText->setText(primaryText);
hgs
parents:
diff changeset
   126
            mPrimaryText->setMaximumLines(2);
hgs
parents:
diff changeset
   127
            mPrimaryText->setTextWrapping(Hb::TextWordWrap);
hgs
parents:
diff changeset
   128
            mPrimaryText->setElideMode(Qt::ElideNone);
hgs
parents:
diff changeset
   129
            style()->setItemName(mPrimaryText, "primary_text");
hgs
parents:
diff changeset
   130
        }
hgs
parents:
diff changeset
   131
    }
hgs
parents:
diff changeset
   132
    else
hgs
parents:
diff changeset
   133
    {
hgs
parents:
diff changeset
   134
        if (mPrimaryText)
hgs
parents:
diff changeset
   135
        {
hgs
parents:
diff changeset
   136
            delete mPrimaryText;
hgs
parents:
diff changeset
   137
        }
hgs
parents:
diff changeset
   138
        mPrimaryText = 0;
hgs
parents:
diff changeset
   139
    }
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
    if (!secondaryText.isNull())
hgs
parents:
diff changeset
   142
    {
hgs
parents:
diff changeset
   143
        if (!mSecondaryText)
hgs
parents:
diff changeset
   144
        {
hgs
parents:
diff changeset
   145
            mSecondaryText = new HbTextItem(this);
hgs
parents:
diff changeset
   146
            mSecondaryText->setText(secondaryText);
hgs
parents:
diff changeset
   147
            mSecondaryText->setMaximumLines(1);
hgs
parents:
diff changeset
   148
            style()->setItemName(mSecondaryText, "secondary_text");
hgs
parents:
diff changeset
   149
        }
hgs
parents:
diff changeset
   150
    }
hgs
parents:
diff changeset
   151
    else
hgs
parents:
diff changeset
   152
    {
hgs
parents:
diff changeset
   153
        if (mSecondaryText)
hgs
parents:
diff changeset
   154
        {
hgs
parents:
diff changeset
   155
            delete mSecondaryText;
hgs
parents:
diff changeset
   156
        }
hgs
parents:
diff changeset
   157
        mSecondaryText = 0;
hgs
parents:
diff changeset
   158
    }
hgs
parents:
diff changeset
   159
hgs
parents:
diff changeset
   160
    if (!tinyMarqueeText.isNull())
hgs
parents:
diff changeset
   161
    {
hgs
parents:
diff changeset
   162
        if (!mMarqueeItem)
hgs
parents:
diff changeset
   163
        {
hgs
parents:
diff changeset
   164
            mMarqueeItem = new HbMarqueeItem(this);
hgs
parents:
diff changeset
   165
            mMarqueeItem->setLoopCount(1);
hgs
parents:
diff changeset
   166
            mMarqueeItem->setText(tinyMarqueeText);
hgs
parents:
diff changeset
   167
            mMarqueeItem->startAnimation();
hgs
parents:
diff changeset
   168
            mMarqueeItem->setFontSpec(HbFontSpec(HbFontSpec::PrimarySmall));
hgs
parents:
diff changeset
   169
            style()->setItemName(mMarqueeItem, "marquee_item");
hgs
parents:
diff changeset
   170
        }
hgs
parents:
diff changeset
   171
    }
hgs
parents:
diff changeset
   172
    else
hgs
parents:
diff changeset
   173
    {
hgs
parents:
diff changeset
   174
        if (mMarqueeItem)
hgs
parents:
diff changeset
   175
        {
hgs
parents:
diff changeset
   176
            delete mMarqueeItem;
hgs
parents:
diff changeset
   177
        }
hgs
parents:
diff changeset
   178
        mMarqueeItem = 0;
hgs
parents:
diff changeset
   179
    }
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
    if (!mFrameItem)
hgs
parents:
diff changeset
   182
    {
hgs
parents:
diff changeset
   183
        mFrameItem = new HbFrameItem(this);
hgs
parents:
diff changeset
   184
        mFrameItem->frameDrawer().setFrameGraphicsName("qtg_fr_groupbox_normal");
hgs
parents:
diff changeset
   185
        mFrameItem->frameDrawer().setFrameType(HbFrameDrawer::NinePieces);
hgs
parents:
diff changeset
   186
        mFrameItem->setZValue(-2);
hgs
parents:
diff changeset
   187
        style()->setItemName(mFrameItem, "background");
hgs
parents:
diff changeset
   188
    }
hgs
parents:
diff changeset
   189
    
hgs
parents:
diff changeset
   190
    if (!mPictureArea) 
hgs
parents:
diff changeset
   191
    {
hgs
parents:
diff changeset
   192
        mPictureArea = new HbTouchArea(this);
hgs
parents:
diff changeset
   193
        style()->setItemName(mPictureArea, "pictureArea");
hgs
parents:
diff changeset
   194
    }
hgs
parents:
diff changeset
   195
hgs
parents:
diff changeset
   196
    if ( mainWindow()->orientation() != Qt::Horizontal)
hgs
parents:
diff changeset
   197
    {
hgs
parents:
diff changeset
   198
        initGesture();
hgs
parents:
diff changeset
   199
    }
hgs
parents:
diff changeset
   200
    else
hgs
parents:
diff changeset
   201
    {
hgs
parents:
diff changeset
   202
        ungrabGesture(Qt::TapGesture);
hgs
parents:
diff changeset
   203
    }
hgs
parents:
diff changeset
   204
}
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
void CntContactCardHeadingItem::setIcon(const HbIcon newIcon)
hgs
parents:
diff changeset
   207
{
hgs
parents:
diff changeset
   208
    if (newIcon != icon)
hgs
parents:
diff changeset
   209
    {
hgs
parents:
diff changeset
   210
        icon = newIcon;
hgs
parents:
diff changeset
   211
    }
hgs
parents:
diff changeset
   212
    if (mainWindow()->orientation() != Qt::Horizontal)
hgs
parents:
diff changeset
   213
    {
hgs
parents:
diff changeset
   214
        createPrimitives();
hgs
parents:
diff changeset
   215
        mIcon->setIcon(icon);
hgs
parents:
diff changeset
   216
        repolish();
hgs
parents:
diff changeset
   217
    }
hgs
parents:
diff changeset
   218
}
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
void CntContactCardHeadingItem::setFavoriteStatus(bool favoriteContact)
hgs
parents:
diff changeset
   221
{
hgs
parents:
diff changeset
   222
    if (favoriteContact != mIsFavorite)
hgs
parents:
diff changeset
   223
    {
hgs
parents:
diff changeset
   224
        mIsFavorite = favoriteContact;
hgs
parents:
diff changeset
   225
        
hgs
parents:
diff changeset
   226
        if (!mIsOnline)
hgs
parents:
diff changeset
   227
        {
hgs
parents:
diff changeset
   228
            setSecondaryIcon();
hgs
parents:
diff changeset
   229
        }
hgs
parents:
diff changeset
   230
    }
hgs
parents:
diff changeset
   231
}
hgs
parents:
diff changeset
   232
hgs
parents:
diff changeset
   233
void CntContactCardHeadingItem::recreatePrimitives()
hgs
parents:
diff changeset
   234
{
hgs
parents:
diff changeset
   235
    HbWidget::recreatePrimitives();
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
    delete mIcon;
hgs
parents:
diff changeset
   238
    mIcon = 0;
hgs
parents:
diff changeset
   239
    
hgs
parents:
diff changeset
   240
    delete mSecondaryIcon;
hgs
parents:
diff changeset
   241
    mSecondaryIcon = 0;
hgs
parents:
diff changeset
   242
hgs
parents:
diff changeset
   243
    delete mFirstLineText;
hgs
parents:
diff changeset
   244
    mFirstLineText = 0;
hgs
parents:
diff changeset
   245
hgs
parents:
diff changeset
   246
    delete mPrimaryText;
hgs
parents:
diff changeset
   247
    mPrimaryText = 0;
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
    delete mSecondaryText;
hgs
parents:
diff changeset
   250
    mSecondaryText = 0;
hgs
parents:
diff changeset
   251
hgs
parents:
diff changeset
   252
    delete mMarqueeItem;
hgs
parents:
diff changeset
   253
    mMarqueeItem = 0;
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
    delete mFrameItem;
hgs
parents:
diff changeset
   256
    mFrameItem = 0;
hgs
parents:
diff changeset
   257
    
hgs
parents:
diff changeset
   258
    delete mPictureArea;
hgs
parents:
diff changeset
   259
    mPictureArea = 0;
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
    createPrimitives();
hgs
parents:
diff changeset
   262
}
hgs
parents:
diff changeset
   263
hgs
parents:
diff changeset
   264
hgs
parents:
diff changeset
   265
void CntContactCardHeadingItem::updatePrimitives()
hgs
parents:
diff changeset
   266
{
hgs
parents:
diff changeset
   267
    HbWidget::updatePrimitives();
hgs
parents:
diff changeset
   268
}
hgs
parents:
diff changeset
   269
hgs
parents:
diff changeset
   270
bool CntContactCardHeadingItem::isNickName(const QContact* contact)
hgs
parents:
diff changeset
   271
{
hgs
parents:
diff changeset
   272
    return !(contact->detail<QContactNickname>().nickname().isNull());
hgs
parents:
diff changeset
   273
}
hgs
parents:
diff changeset
   274
hgs
parents:
diff changeset
   275
bool CntContactCardHeadingItem::isCompanyName(const QContact* contact)
hgs
parents:
diff changeset
   276
{
hgs
parents:
diff changeset
   277
    return (!(contact->detail<QContactOrganization>().title().isNull()) 
hgs
parents:
diff changeset
   278
        || !(contact->detail<QContactOrganization>().name().isNull())
hgs
parents:
diff changeset
   279
        || !(contact->detail<QContactOrganization>().department().isEmpty()));
hgs
parents:
diff changeset
   280
}
hgs
parents:
diff changeset
   281
hgs
parents:
diff changeset
   282
void CntContactCardHeadingItem::setDetails(const QContact* contact)
hgs
parents:
diff changeset
   283
{
hgs
parents:
diff changeset
   284
    primaryText.clear();
hgs
parents:
diff changeset
   285
    firstLineText.clear();
hgs
parents:
diff changeset
   286
    secondaryText.clear();
hgs
parents:
diff changeset
   287
    icon.clear();
hgs
parents:
diff changeset
   288
    tinyMarqueeText.clear();
hgs
parents:
diff changeset
   289
    secondaryIcon.clear();
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
    // icon label
hgs
parents:
diff changeset
   292
    icon = HbIcon("qtg_large_add_contact_picture");
hgs
parents:
diff changeset
   293
hgs
parents:
diff changeset
   294
    QContactName name = contact->detail<QContactName>();
hgs
parents:
diff changeset
   295
hgs
parents:
diff changeset
   296
    // name label
hgs
parents:
diff changeset
   297
    if (isNickName(contact) || isCompanyName(contact))
hgs
parents:
diff changeset
   298
    {
hgs
parents:
diff changeset
   299
        firstLineText = createNameText(name);
hgs
parents:
diff changeset
   300
        if (firstLineText.isEmpty())
hgs
parents:
diff changeset
   301
        {
hgs
parents:
diff changeset
   302
            firstLineText = hbTrId("txt_phob_list_unnamed");
hgs
parents:
diff changeset
   303
        }
hgs
parents:
diff changeset
   304
    }
hgs
parents:
diff changeset
   305
    else
hgs
parents:
diff changeset
   306
    {
hgs
parents:
diff changeset
   307
        primaryText = createNameText(name);
hgs
parents:
diff changeset
   308
        if (primaryText.isEmpty())
hgs
parents:
diff changeset
   309
        {
hgs
parents:
diff changeset
   310
            primaryText = hbTrId("txt_phob_list_unnamed");
hgs
parents:
diff changeset
   311
        }
hgs
parents:
diff changeset
   312
    }
hgs
parents:
diff changeset
   313
hgs
parents:
diff changeset
   314
    // nick label
hgs
parents:
diff changeset
   315
    if (isNickName(contact))
hgs
parents:
diff changeset
   316
    {
hgs
parents:
diff changeset
   317
        secondaryText = contact->detail<QContactNickname>().nickname();
hgs
parents:
diff changeset
   318
    }
hgs
parents:
diff changeset
   319
hgs
parents:
diff changeset
   320
    // company label
hgs
parents:
diff changeset
   321
    if (isCompanyName(contact))
hgs
parents:
diff changeset
   322
    {
hgs
parents:
diff changeset
   323
        QContactOrganization org = contact->detail<QContactOrganization>();
hgs
parents:
diff changeset
   324
        QStringList companyList;
hgs
parents:
diff changeset
   325
        
hgs
parents:
diff changeset
   326
        if (!org.title().isEmpty())
hgs
parents:
diff changeset
   327
            companyList << org.title();
hgs
parents:
diff changeset
   328
        if (!org.name().isEmpty())
hgs
parents:
diff changeset
   329
            companyList << org.name();
hgs
parents:
diff changeset
   330
        if (!org.department().isEmpty())
hgs
parents:
diff changeset
   331
            companyList << org.department().join(", ").trimmed();
hgs
parents:
diff changeset
   332
        tinyMarqueeText = companyList.join(", ").trimmed();
hgs
parents:
diff changeset
   333
    }
hgs
parents:
diff changeset
   334
hgs
parents:
diff changeset
   335
    recreatePrimitives();
hgs
parents:
diff changeset
   336
    repolish();
hgs
parents:
diff changeset
   337
}
hgs
parents:
diff changeset
   338
hgs
parents:
diff changeset
   339
QString CntContactCardHeadingItem::createNameText(const QContactName name)
hgs
parents:
diff changeset
   340
{
hgs
parents:
diff changeset
   341
    XQSettingsManager settingsMng;
hgs
parents:
diff changeset
   342
    XQSettingsKey nameOrderKey(XQSettingsKey::TargetCentralRepository,
hgs
parents:
diff changeset
   343
                             KCRCntSettings.iUid,
hgs
parents:
diff changeset
   344
                             KCntNameOrdering);
hgs
parents:
diff changeset
   345
    int setting = settingsMng.readItemValue(nameOrderKey, XQSettingsManager::TypeInt).toInt();
hgs
parents:
diff changeset
   346
    
hgs
parents:
diff changeset
   347
    QStringList nameList;
hgs
parents:
diff changeset
   348
    QString last_first;
hgs
parents:
diff changeset
   349
    
hgs
parents:
diff changeset
   350
    switch( setting ) {
hgs
parents:
diff changeset
   351
        case CntOrderLastFirst:
hgs
parents:
diff changeset
   352
            nameList << name.prefix() << name.lastName() << name.firstName() << name.middleName() << name.suffix();
hgs
parents:
diff changeset
   353
            break;
hgs
parents:
diff changeset
   354
        case CntOrderLastCommaFirst:
hgs
parents:
diff changeset
   355
            if (!name.firstName().isEmpty() && !name.lastName().isEmpty())
hgs
parents:
diff changeset
   356
                last_first = name.lastName() + ", " + name.firstName();
hgs
parents:
diff changeset
   357
            else
hgs
parents:
diff changeset
   358
                last_first = !name.firstName().isEmpty() ? name.firstName() : name.lastName();
hgs
parents:
diff changeset
   359
            nameList << name.prefix() << last_first << name.middleName() << name.suffix();
hgs
parents:
diff changeset
   360
            break;
hgs
parents:
diff changeset
   361
        default:    // Default to first name last name
hgs
parents:
diff changeset
   362
            nameList << name.prefix() << name.firstName() << name.middleName() << name.lastName() << name.suffix();
hgs
parents:
diff changeset
   363
            break;
hgs
parents:
diff changeset
   364
    }
hgs
parents:
diff changeset
   365
    
hgs
parents:
diff changeset
   366
    nameList.removeAll("");
hgs
parents:
diff changeset
   367
    return nameList.join(" ").trimmed();
hgs
parents:
diff changeset
   368
}
hgs
parents:
diff changeset
   369
hgs
parents:
diff changeset
   370
void CntContactCardHeadingItem::setGroupDetails(const QContact* contact)
hgs
parents:
diff changeset
   371
{
hgs
parents:
diff changeset
   372
    firstLineText.clear();
hgs
parents:
diff changeset
   373
    secondaryText.clear();
hgs
parents:
diff changeset
   374
    icon.clear();
hgs
parents:
diff changeset
   375
hgs
parents:
diff changeset
   376
    // icon label
hgs
parents:
diff changeset
   377
    icon = HbIcon("qtg_large_add_group_picture");
hgs
parents:
diff changeset
   378
hgs
parents:
diff changeset
   379
    QContactName contactName = contact->detail( QContactName::DefinitionName );
hgs
parents:
diff changeset
   380
    QString groupName = contactName.value( QContactName::FieldCustomLabel );
hgs
parents:
diff changeset
   381
hgs
parents:
diff changeset
   382
    primaryText = groupName;
hgs
parents:
diff changeset
   383
    
hgs
parents:
diff changeset
   384
    if (primaryText.isEmpty())
hgs
parents:
diff changeset
   385
    {
hgs
parents:
diff changeset
   386
        primaryText = hbTrId("txt_phob_list_unnamed");
hgs
parents:
diff changeset
   387
    }
hgs
parents:
diff changeset
   388
       
hgs
parents:
diff changeset
   389
    recreatePrimitives();
hgs
parents:
diff changeset
   390
}
hgs
parents:
diff changeset
   391
hgs
parents:
diff changeset
   392
void CntContactCardHeadingItem::processLongPress(const QPointF &point)
hgs
parents:
diff changeset
   393
{
hgs
parents:
diff changeset
   394
    emit passLongPressed(point);
hgs
parents:
diff changeset
   395
}
hgs
parents:
diff changeset
   396
hgs
parents:
diff changeset
   397
void CntContactCardHeadingItem::processShortPress(const QPointF &point)
hgs
parents:
diff changeset
   398
{
hgs
parents:
diff changeset
   399
    emit passShortPressed(point);
hgs
parents:
diff changeset
   400
}
hgs
parents:
diff changeset
   401
hgs
parents:
diff changeset
   402
void CntContactCardHeadingItem::setOnlineStatus(bool online)
hgs
parents:
diff changeset
   403
{
hgs
parents:
diff changeset
   404
    if (online != mIsOnline)
hgs
parents:
diff changeset
   405
    {
hgs
parents:
diff changeset
   406
        mIsOnline = online;
hgs
parents:
diff changeset
   407
        
hgs
parents:
diff changeset
   408
        setSecondaryIcon();
hgs
parents:
diff changeset
   409
    }
hgs
parents:
diff changeset
   410
}
hgs
parents:
diff changeset
   411
hgs
parents:
diff changeset
   412
void CntContactCardHeadingItem::gestureEvent(QGestureEvent* event)
hgs
parents:
diff changeset
   413
{
hgs
parents:
diff changeset
   414
    
hgs
parents:
diff changeset
   415
    if (HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) 
hgs
parents:
diff changeset
   416
    {    
hgs
parents:
diff changeset
   417
        switch (tap->state()) 
hgs
parents:
diff changeset
   418
        {
hgs
parents:
diff changeset
   419
            case Qt::GestureFinished:
hgs
parents:
diff changeset
   420
                if (tap->tapStyleHint() == HbTapGesture::Tap && mIcon->rect().contains(mapFromScene(tap->position())))
hgs
parents:
diff changeset
   421
                {
hgs
parents:
diff changeset
   422
                    processShortPress(tap->position());
hgs
parents:
diff changeset
   423
                }
hgs
parents:
diff changeset
   424
                break;
hgs
parents:
diff changeset
   425
            case Qt::GestureUpdated:
hgs
parents:
diff changeset
   426
                if (tap->tapStyleHint() == HbTapGesture::TapAndHold && mIcon->rect().contains(mapFromScene(tap->position()))) 
hgs
parents:
diff changeset
   427
                {
hgs
parents:
diff changeset
   428
                    HbEffect::cancel(mIcon, QString("iconclick"));
hgs
parents:
diff changeset
   429
                    processLongPress(tap->position());
hgs
parents:
diff changeset
   430
                }
hgs
parents:
diff changeset
   431
                break;
hgs
parents:
diff changeset
   432
            case Qt::GestureStarted:
hgs
parents:
diff changeset
   433
                if (tap->tapStyleHint() == HbTapGesture::Tap && mIcon->rect().contains(mapFromScene(tap->position())))
hgs
parents:
diff changeset
   434
                {
hgs
parents:
diff changeset
   435
                    HbInstantFeedback::play(HbFeedback::Basic);
hgs
parents:
diff changeset
   436
                    HbEffect::start(mIcon, QString("icon"), QString("iconclick"));
hgs
parents:
diff changeset
   437
                }
hgs
parents:
diff changeset
   438
                
hgs
parents:
diff changeset
   439
            default:
hgs
parents:
diff changeset
   440
                break;
hgs
parents:
diff changeset
   441
        }
hgs
parents:
diff changeset
   442
        event->accept();
hgs
parents:
diff changeset
   443
    } 
hgs
parents:
diff changeset
   444
    else 
hgs
parents:
diff changeset
   445
    {
hgs
parents:
diff changeset
   446
        event->ignore();
hgs
parents:
diff changeset
   447
    }
hgs
parents:
diff changeset
   448
}
hgs
parents:
diff changeset
   449
hgs
parents:
diff changeset
   450
QVariant CntContactCardHeadingItem::itemChange(GraphicsItemChange change, const QVariant &value)
hgs
parents:
diff changeset
   451
{      
hgs
parents:
diff changeset
   452
    if (change == QGraphicsItem::ItemSceneHasChanged)
hgs
parents:
diff changeset
   453
    {
hgs
parents:
diff changeset
   454
        HbMainWindow *window = mainWindow();
hgs
parents:
diff changeset
   455
        if (window)
hgs
parents:
diff changeset
   456
        {
hgs
parents:
diff changeset
   457
            connect(window, SIGNAL(orientationChanged(Qt::Orientation)), 
hgs
parents:
diff changeset
   458
                this, SLOT(orientationChanged(Qt::Orientation)));
hgs
parents:
diff changeset
   459
        }
hgs
parents:
diff changeset
   460
        else
hgs
parents:
diff changeset
   461
        {
hgs
parents:
diff changeset
   462
            QObject::disconnect(this, SLOT(orientationChanged(Qt::Orientation)));
hgs
parents:
diff changeset
   463
        }
hgs
parents:
diff changeset
   464
    }
hgs
parents:
diff changeset
   465
    return HbWidget::itemChange(change, value);
hgs
parents:
diff changeset
   466
}
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
void CntContactCardHeadingItem::orientationChanged(Qt::Orientation)
hgs
parents:
diff changeset
   469
{
hgs
parents:
diff changeset
   470
    recreatePrimitives();
hgs
parents:
diff changeset
   471
    repolish();
hgs
parents:
diff changeset
   472
}
hgs
parents:
diff changeset
   473
hgs
parents:
diff changeset
   474
void CntContactCardHeadingItem::initGesture()
hgs
parents:
diff changeset
   475
{
hgs
parents:
diff changeset
   476
    grabGesture(Qt::TapGesture);
hgs
parents:
diff changeset
   477
}
hgs
parents:
diff changeset
   478
hgs
parents:
diff changeset
   479
void CntContactCardHeadingItem::setSecondaryIcon()
hgs
parents:
diff changeset
   480
{
hgs
parents:
diff changeset
   481
    if (mIsOnline)
hgs
parents:
diff changeset
   482
    {
hgs
parents:
diff changeset
   483
        secondaryIcon = HbIcon("qtg_small_online");
hgs
parents:
diff changeset
   484
        recreatePrimitives();
hgs
parents:
diff changeset
   485
        mSecondaryIcon->setIcon(secondaryIcon);
hgs
parents:
diff changeset
   486
    }
hgs
parents:
diff changeset
   487
    else if (!mIsOnline && mIsFavorite)
hgs
parents:
diff changeset
   488
    {
hgs
parents:
diff changeset
   489
        secondaryIcon = HbIcon("qtg_small_favorite");
hgs
parents:
diff changeset
   490
        recreatePrimitives();
hgs
parents:
diff changeset
   491
        mSecondaryIcon->setIcon(secondaryIcon);
hgs
parents:
diff changeset
   492
    }
hgs
parents:
diff changeset
   493
    else
hgs
parents:
diff changeset
   494
    {
hgs
parents:
diff changeset
   495
        secondaryIcon.clear();
hgs
parents:
diff changeset
   496
        recreatePrimitives();
hgs
parents:
diff changeset
   497
    }
hgs
parents:
diff changeset
   498
hgs
parents:
diff changeset
   499
    repolish();
hgs
parents:
diff changeset
   500
}
hgs
parents:
diff changeset
   501
hgs
parents:
diff changeset
   502
// EOF