phonebookui/pbkcommonui/inc/cntcontactcardheadingitem.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 23 Jun 2010 18:02:44 +0300
changeset 46 efe85016a067
parent 37 fd64c38c277d
child 66 554fe4dbbb59
permissions -rw-r--r--
Revision: 201023 Kit: 2010125

/*
* 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:
*
*/

#ifndef CNTHEADINGWIDGET_H
#define CNTHEADINGWIDGET_H

#include <QObject>
#include <qmobilityglobal.h>
#include <hbwidget.h>

class HbTouchArea;
class HbIconItem;
class HbTextItem;
class HbFrameItem;
class HbMarqueeItem;
class QGestureEvent;

QTM_BEGIN_NAMESPACE
class QContact;
class QContactName;
QTM_END_NAMESPACE

QTM_USE_NAMESPACE

class CntContactCardHeadingItem : public HbWidget
{
    friend class TestCntContactCardHeadingItem;
    
    Q_OBJECT
    
    Q_PROPERTY( QString first_line_text READ getFirstLineText )
    Q_PROPERTY( QString primary_text READ getPrimaryText )
    Q_PROPERTY( QString second_line_text READ getSecondLineText )
    Q_PROPERTY( QString secondary_text READ getSecondaryText )
    Q_PROPERTY( QString marquee_item READ getTinyMarqueeText )
    Q_PROPERTY( HbIcon icon READ getIcon )
    Q_PROPERTY( HbIcon secondary_icon READ getSecondaryIcon )

public:
    CntContactCardHeadingItem(QGraphicsItem *parent = 0);
    ~CntContactCardHeadingItem();

public:
    void createPrimitives();
    void recreatePrimitives();
    void updatePrimitives();
    void setDetails(const QContact* contact);
    void setIcon(const HbIcon newIcon);
    void setGroupDetails(const QContact* contact);
    void setFavoriteStatus(bool favoriteContact);

signals:
    void clicked();
    void passLongPressed(const QPointF &point);
    void passShortPressed(const QPointF &point);
    
public slots:
    void processLongPress(const QPointF &point);
    void processShortPress(const QPointF &point);
    void setOnlineStatus(bool online);

protected:
    void gestureEvent(QGestureEvent* event);
    QVariant itemChange(GraphicsItemChange change, const QVariant &value);
    
private slots:
    void orientationChanged(Qt::Orientation);

private:
    void initGesture();
    
    void setSecondaryIcon();

    bool isNickName(const QContact* contact);
    bool isCompanyName(const QContact* contact);

    QString getFirstLineText() const { return firstLineText; }
    QString getPrimaryText() const { return primaryText; }
    QString getSecondLineText() const { return secondLineText; }
    QString getSecondaryText() const { return secondaryText; }
    QString getTinyMarqueeText() const { return tinyMarqueeText; }

    HbIcon getIcon() const { return icon; }
    HbIcon getSecondaryIcon() const { return secondaryIcon; }
    QString createNameText(const QContactName name);

private:
    HbIconItem              *mIcon;
    HbIconItem              *mSecondaryIcon;
    HbTextItem              *mFirstLineText;
    HbTextItem              *mPrimaryText;
    HbTextItem              *mSecondLineText;
    HbTextItem              *mSecondaryText;
    HbMarqueeItem           *mMarqueeItem;
    HbFrameItem             *mFrameItem;
    HbTouchArea             *mPictureArea;
    
    QString                 firstLineText;
    QString                 primaryText;
    QString                 secondLineText;
    QString                 secondaryText;
    QString                 tinyMarqueeText;
    HbIcon                  icon;
    HbIcon                  secondaryIcon;
    
    bool                    mIsFavorite;
    bool                    mIsOnline;
};

#endif // CNTHEADINGWIDGET_H