phonebookui/cntcommonui/contactcard/cntcontactcardview_p.h
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
hgs
parents:
diff changeset
    18
#ifndef CNTCOMMLAUNCHERVIEW_H
hgs
parents:
diff changeset
    19
#define CNTCOMMLAUNCHERVIEW_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include "cntcontactcardview.h"
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <QObject>
hgs
parents:
diff changeset
    24
#include <QKeyEvent>
hgs
parents:
diff changeset
    25
#include <QGraphicsSceneResizeEvent>
hgs
parents:
diff changeset
    26
#include "cntglobal.h"
hgs
parents:
diff changeset
    27
#include <maptileservice.h>
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
class HbView;
hgs
parents:
diff changeset
    30
class HbScrollArea;
hgs
parents:
diff changeset
    31
class CntDocumentLoader;
hgs
parents:
diff changeset
    32
class HbAction;
hgs
parents:
diff changeset
    33
class HbIcon;
hgs
parents:
diff changeset
    34
class QGraphicsWidget;
hgs
parents:
diff changeset
    35
class QGraphicsLinearLayout;
hgs
parents:
diff changeset
    36
class CntThumbnailManager;
hgs
parents:
diff changeset
    37
class CntContactCardDataContainer;
hgs
parents:
diff changeset
    38
class CntContactCardHeadingItem;
hgs
parents:
diff changeset
    39
class CntContactCardDetailItem;
hgs
parents:
diff changeset
    40
class CntContactCardDataItem;
hgs
parents:
diff changeset
    41
class CntImageLabel;
hgs
parents:
diff changeset
    42
class CntActionLauncher;
hgs
parents:
diff changeset
    43
class XQServiceRequest;
hgs
parents:
diff changeset
    44
class ShareUi;
hgs
parents:
diff changeset
    45
class QStandardItemModel;
hgs
parents:
diff changeset
    46
class QModelIndex;
hgs
parents:
diff changeset
    47
class HbSelectionDialog;
hgs
parents:
diff changeset
    48
class CntPresenceListener;
hgs
parents:
diff changeset
    49
class HbLabel;
hgs
parents:
diff changeset
    50
class CntSaveManager;
hgs
parents:
diff changeset
    51
class QTimer;
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
QTM_BEGIN_NAMESPACE
hgs
parents:
diff changeset
    54
class QContact;
hgs
parents:
diff changeset
    55
class QContactManager;
hgs
parents:
diff changeset
    56
class QContactDetail;
hgs
parents:
diff changeset
    57
class QContactAction;
hgs
parents:
diff changeset
    58
QTM_END_NAMESPACE
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
QTM_USE_NAMESPACE
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
//To store the maptile request information
hgs
parents:
diff changeset
    63
class CntContactCardMapTileDetail 
hgs
parents:
diff changeset
    64
{
hgs
parents:
diff changeset
    65
public:
hgs
parents:
diff changeset
    66
    //Contact id 
hgs
parents:
diff changeset
    67
    int mContactId;
hgs
parents:
diff changeset
    68
    //Address type( preferred, home, work )
hgs
parents:
diff changeset
    69
    int mAddressType;
hgs
parents:
diff changeset
    70
    //Maptile status
hgs
parents:
diff changeset
    71
    int maptileStatus;
hgs
parents:
diff changeset
    72
    //Maptile progress icon animation count
hgs
parents:
diff changeset
    73
    int mProgressCount;
hgs
parents:
diff changeset
    74
    //Detial item containg contact address details
hgs
parents:
diff changeset
    75
    CntContactCardDetailItem* mDetailItem;
hgs
parents:
diff changeset
    76
};
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
class CntContactCardViewPrivate : public QObject
hgs
parents:
diff changeset
    79
{
hgs
parents:
diff changeset
    80
    Q_OBJECT
hgs
parents:
diff changeset
    81
    Q_DECLARE_PUBLIC(CntContactCardView)
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
public:
hgs
parents:
diff changeset
    84
    CntContactCardViewPrivate(bool isTemporary);
hgs
parents:
diff changeset
    85
    virtual ~CntContactCardViewPrivate();
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
#ifdef PBK_UNIT_TEST
hgs
parents:
diff changeset
    88
public:
hgs
parents:
diff changeset
    89
#else
hgs
parents:
diff changeset
    90
protected:
hgs
parents:
diff changeset
    91
#endif
hgs
parents:
diff changeset
    92
    bool eventFilter(QObject *obj, QEvent *event);
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
public slots:
hgs
parents:
diff changeset
    95
    void onItemActivated();
hgs
parents:
diff changeset
    96
    void editContact();
hgs
parents:
diff changeset
    97
	void viewHistory();
hgs
parents:
diff changeset
    98
    void onLongPressed(const QPointF &aCoords);
hgs
parents:
diff changeset
    99
    void setPreferredAction(const QString &aAction, const QContactDetail &aDetail, CntContactCardDetailItem *aDetailItem);
hgs
parents:
diff changeset
   100
    void thumbnailReady(const QPixmap& pixmap, void *data, int id, int error);
hgs
parents:
diff changeset
   101
    void drawMenu(const QPointF &aCoords);
hgs
parents:
diff changeset
   102
    void sendToHs();
hgs
parents:
diff changeset
   103
    void onAddedToContacts();
hgs
parents:
diff changeset
   104
    void mapTileStatusReceived(int contactid, int addressType, int status);
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
private slots:
hgs
parents:
diff changeset
   107
    void sendBusinessCard();
hgs
parents:
diff changeset
   108
    void addToGroup();
hgs
parents:
diff changeset
   109
    void deleteContact();
hgs
parents:
diff changeset
   110
    void handleDeleteContact(int action);
hgs
parents:
diff changeset
   111
    void setAsFavorite();
hgs
parents:
diff changeset
   112
    void removeFromFavorite();
hgs
parents:
diff changeset
   113
    void actionExecuted(CntActionLauncher* aAction);
hgs
parents:
diff changeset
   114
    void setOrientation(Qt::Orientation orientation);
hgs
parents:
diff changeset
   115
    void showPreviousView();
hgs
parents:
diff changeset
   116
    void doChangeImage();
hgs
parents:
diff changeset
   117
    void doRemoveImage();
hgs
parents:
diff changeset
   118
    void showRootView();
hgs
parents:
diff changeset
   119
    void handleExtensionAction();
hgs
parents:
diff changeset
   120
    
hgs
parents:
diff changeset
   121
    void handleMenuAction(HbAction* aAction);
hgs
parents:
diff changeset
   122
    void handleSendBusinessCard( HbAction* aAction );
hgs
parents:
diff changeset
   123
    void executeAction(QContact& aContact, const QContactDetail& aDetail, const QString& aAction);
hgs
parents:
diff changeset
   124
    void sendKeyCancelSlot();
hgs
parents:
diff changeset
   125
    void contactDeletedFromOtherSource(const QList<QContactLocalId>& contactIds);
hgs
parents:
diff changeset
   126
    void contactUpdatedFromOtherSource(const QList<QContactLocalId>& contactIds);
hgs
parents:
diff changeset
   127
    
hgs
parents:
diff changeset
   128
#ifdef PBK_UNIT_TEST
hgs
parents:
diff changeset
   129
public slots:
hgs
parents:
diff changeset
   130
#else
hgs
parents:
diff changeset
   131
private slots:
hgs
parents:
diff changeset
   132
#endif    
hgs
parents:
diff changeset
   133
    // Maptile related functions
hgs
parents:
diff changeset
   134
	void updateSpinningIndicator();
hgs
parents:
diff changeset
   135
	void setMaptileSearchStopIcon( int index );
hgs
parents:
diff changeset
   136
	void setMaptileLabel( HbLabel*& mapLabel, const HbIcon& icon );
hgs
parents:
diff changeset
   137
	void updateMaptileImage();
hgs
parents:
diff changeset
   138
	HbLabel* loadMaptileLabel( int addressType );
hgs
parents:
diff changeset
   139
    void populateListItems();
hgs
parents:
diff changeset
   140
	
hgs
parents:
diff changeset
   141
    // Presence related function
hgs
parents:
diff changeset
   142
    void updateItemPresence(const QString& accountUri, bool online);
hgs
parents:
diff changeset
   143
	    
hgs
parents:
diff changeset
   144
public:
hgs
parents:
diff changeset
   145
    CntContactCardView* q_ptr;    
hgs
parents:
diff changeset
   146
    void activate(const CntViewParameters aArgs);
hgs
parents:
diff changeset
   147
    void deactivate();
81
hgs
parents: 72
diff changeset
   148
    QString externalize(QDataStream &stream);
hgs
parents: 72
diff changeset
   149
    bool internalize(QDataStream &stream, CntViewParameters &viewParameters);
72
hgs
parents:
diff changeset
   150
    CntDocumentLoader* document();
hgs
parents:
diff changeset
   151
    QContactManager* contactManager();
hgs
parents:
diff changeset
   152
    
hgs
parents:
diff changeset
   153
signals:
hgs
parents:
diff changeset
   154
    void preferredUpdated();
hgs
parents:
diff changeset
   155
    void backPressed(int value);
hgs
parents:
diff changeset
   156
    void viewActivated(CntAbstractViewManager* aMgr, const CntViewParameters aArgs);
hgs
parents:
diff changeset
   157
    void addToContacts();
hgs
parents:
diff changeset
   158
    
hgs
parents:
diff changeset
   159
#ifdef PBK_UNIT_TEST
hgs
parents:
diff changeset
   160
public:
hgs
parents:
diff changeset
   161
#else
hgs
parents:
diff changeset
   162
private:
hgs
parents:
diff changeset
   163
#endif
hgs
parents:
diff changeset
   164
    void connectAction(QString actionName, const char* slot);
hgs
parents:
diff changeset
   165
    void executeAction(QContact& aContact, const QContactDetail& aDetail, const QString& aAction, CntContactCardDetailItem* aItem);
hgs
parents:
diff changeset
   166
    void executeDynamicAction(QContact& aContact, QContactDetail aDetail, QContactActionDescriptor aActionDescriptor);
hgs
parents:
diff changeset
   167
    bool sendKeyPressed();
hgs
parents:
diff changeset
   168
    void populateHeadingItem();
hgs
parents:
diff changeset
   169
    
hgs
parents:
diff changeset
   170
public:
hgs
parents:
diff changeset
   171
    CntAbstractViewManager*     mViewManager;   // not own
hgs
parents:
diff changeset
   172
    HbView*                     mView;
hgs
parents:
diff changeset
   173
    HbScrollArea                *mScrollArea;
hgs
parents:
diff changeset
   174
    QGraphicsLinearLayout       *mContainerLayout;
hgs
parents:
diff changeset
   175
    QGraphicsWidget*            mContainerWidget;
hgs
parents:
diff changeset
   176
    QContact                    *mContact;
hgs
parents:
diff changeset
   177
    CntContactCardDataContainer *mDataContainer;
hgs
parents:
diff changeset
   178
    CntContactCardHeadingItem   *mHeadingItem;
hgs
parents:
diff changeset
   179
    CntThumbnailManager         *mThumbnailManager;
hgs
parents:
diff changeset
   180
    QContactAvatar              *mAvatar;
hgs
parents:
diff changeset
   181
    QMap<QString, CntContactCardDetailItem*> mPreferredItems;
hgs
parents:
diff changeset
   182
    
hgs
parents:
diff changeset
   183
    /// maps a QContactOnlineAccount (for example "sip:sip@sip.com") to a detail item
hgs
parents:
diff changeset
   184
    QMap<QString, CntContactCardDetailItem*> mPresenceItems;
hgs
parents:
diff changeset
   185
    CntDocumentLoader           *mLoader;
hgs
parents:
diff changeset
   186
    HbAction                    *mBackKey;
hgs
parents:
diff changeset
   187
    CntImageLabel               *mImageLabel;
hgs
parents:
diff changeset
   188
    HbIcon                      *mVCardIcon;
hgs
parents:
diff changeset
   189
    CntViewParameters           mArgs;
hgs
parents:
diff changeset
   190
    ShareUi                     *mShareUi;
hgs
parents:
diff changeset
   191
    bool                        mAcceptSendKey;
hgs
parents:
diff changeset
   192
    CntPresenceListener*        mPresenceListener; // own
hgs
parents:
diff changeset
   193
    MapTileService              *mMaptile; //own
hgs
parents:
diff changeset
   194
    QList <CntContactCardMapTileDetail*> mAddressList;
hgs
parents:
diff changeset
   195
    QMap <int, HbLabel*>        mMaptileLabelList;
hgs
parents:
diff changeset
   196
    bool                        mIsTemporary;
hgs
parents:
diff changeset
   197
    bool                        mIsExecutingAction;
hgs
parents:
diff changeset
   198
    QMap<QString, bool>         mInitiialPrecenceData;
hgs
parents:
diff changeset
   199
    QContactLocalId             mMyCardId;
hgs
parents:
diff changeset
   200
    CntSaveManager* mSaveManager; // own
hgs
parents:
diff changeset
   201
    CntAbstractEngine* mEngine;
hgs
parents:
diff changeset
   202
    QTimer* mProgressTimer; // own
hgs
parents:
diff changeset
   203
    int                         mListPopulationProgress;
hgs
parents:
diff changeset
   204
    bool                        mStopListPopulation;
81
hgs
parents: 72
diff changeset
   205
    bool                        mFetchAvatar;
hgs
parents: 72
diff changeset
   206
    HbLabel*                    mSeparatorlabel;
hgs
parents: 72
diff changeset
   207
    
hgs
parents: 72
diff changeset
   208
    friend class TestCntContactCardView;
72
hgs
parents:
diff changeset
   209
};
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
#endif // CNTCOMMLAUNCHERVIEW_H
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
// EOF