phonebookui/phonebookservices/inc/cntservices.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:
50
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 CNTSERVICES_H
hgs
parents:
diff changeset
    19
#define CNTSERVICES_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <cntviewparams.h>
hgs
parents:
diff changeset
    22
#include <qtcontacts.h>
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
#include "cntabstractserviceprovider.h"
hgs
parents:
diff changeset
    25
61
hgs
parents: 54
diff changeset
    26
class CntAbstractEngine;
50
hgs
parents:
diff changeset
    27
class CntAbstractViewManager;
hgs
parents:
diff changeset
    28
class XQServiceProvider;
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
QTM_USE_NAMESPACE
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
class CntServices : public QObject, public CntAbstractServiceProvider
hgs
parents:
diff changeset
    33
{
hgs
parents:
diff changeset
    34
    Q_OBJECT
hgs
parents:
diff changeset
    35
    
hgs
parents:
diff changeset
    36
public:
hgs
parents:
diff changeset
    37
    CntServices();
hgs
parents:
diff changeset
    38
    ~CntServices();
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
public:
hgs
parents:
diff changeset
    41
61
hgs
parents: 54
diff changeset
    42
    //void setViewManager( CntAbstractViewManager& aViewManager );
hgs
parents: 54
diff changeset
    43
    void setEngine( CntAbstractEngine& aEngine );
50
hgs
parents:
diff changeset
    44
    
hgs
parents:
diff changeset
    45
    /**
hgs
parents:
diff changeset
    46
     * Opens contact selection view where multiple contacts can be selected.
hgs
parents:
diff changeset
    47
     * @param title The view title
hgs
parents:
diff changeset
    48
     * @param action Filter definition for filtering contacts based on supported action. Can be left empty.
hgs
parents:
diff changeset
    49
     * @param aServiceProvider The service provider
hgs
parents:
diff changeset
    50
     */
hgs
parents:
diff changeset
    51
    void singleFetch(const QString &title,
hgs
parents:
diff changeset
    52
                const QString &action,
hgs
parents:
diff changeset
    53
                CntAbstractServiceProvider& aServiceProvider  );
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
    /**
hgs
parents:
diff changeset
    56
     * Opens contact selection view where multiple contacts can be selected.
hgs
parents:
diff changeset
    57
     * @param title The view title
hgs
parents:
diff changeset
    58
     * @param action Filter definition for filtering contacts based on supported action. Can be left empty.
hgs
parents:
diff changeset
    59
     * @param aServiceProvider The service provider
hgs
parents:
diff changeset
    60
     */
hgs
parents:
diff changeset
    61
    void multiFetch(const QString &title,
hgs
parents:
diff changeset
    62
                const QString &action,
hgs
parents:
diff changeset
    63
                CntAbstractServiceProvider& aServiceProvider  );
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
    /**
hgs
parents:
diff changeset
    66
     * Launch editor for creating a new contact with a given detail.
hgs
parents:
diff changeset
    67
     * @param definitionName The field type
hgs
parents:
diff changeset
    68
     * @param value The value for the field.
hgs
parents:
diff changeset
    69
     * @param aServiceProvider The service provider
53
hgs
parents: 50
diff changeset
    70
     * @param defaultForOnlineAccountIsImpp If no subtype is given, default
hgs
parents: 50
diff changeset
    71
     *          for QContactOnlineAccount is QContactOnlineAccount::SubTypeImpp. If false, then
hgs
parents: 50
diff changeset
    72
     *          the default is QContactOnlineAccount::SubTypeSipVoip.
50
hgs
parents:
diff changeset
    73
     */
hgs
parents:
diff changeset
    74
    void editCreateNew(const QString &definitionName, const QString &value,
53
hgs
parents: 50
diff changeset
    75
        CntAbstractServiceProvider& aServiceProvider, bool defaultForOnlineAccountIsImpp = true );
hgs
parents: 50
diff changeset
    76
hgs
parents: 50
diff changeset
    77
    /**
hgs
parents: 50
diff changeset
    78
     * Launch editor for creating a new contact with a given detail and subtype.
hgs
parents: 50
diff changeset
    79
     * If the given subtype string is empty, then QContactPhoneNumber::SubTypeMobile is used.
hgs
parents: 50
diff changeset
    80
     * @param definitionName The field type
hgs
parents: 50
diff changeset
    81
     * @param value The value for the field.
hgs
parents: 50
diff changeset
    82
     * @param subType The subtype for the field. (for eg. QContactPhoneNumber::SubTypeLandline)
hgs
parents: 50
diff changeset
    83
     * @param aServiceProvider The service provider
hgs
parents: 50
diff changeset
    84
     * @param defaultForOnlineAccountIsImpp If no subtype is given, default
hgs
parents: 50
diff changeset
    85
     *          for QContactOnlineAccount is QContactOnlineAccount::SubTypeImpp. If false, then
hgs
parents: 50
diff changeset
    86
     *          the default is QContactOnlineAccount::SubTypeSipVoip.
hgs
parents: 50
diff changeset
    87
     */
hgs
parents: 50
diff changeset
    88
    void editCreateNew(const QString &definitionName, const QString &value, const QString& subType,
hgs
parents: 50
diff changeset
    89
        CntAbstractServiceProvider& aServiceProvider, bool defaultForOnlineAccountIsImpp = true );
50
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
    /**
hgs
parents:
diff changeset
    92
     * Launch editor for creating a new contact based on vCard file indicated in arg.
hgs
parents:
diff changeset
    93
     * @param vCardFile The vCard file name and path.
hgs
parents:
diff changeset
    94
     * @param aServiceProvider The service provider
hgs
parents:
diff changeset
    95
     */
hgs
parents:
diff changeset
    96
    void editCreateNewFromVCard(const QString &vCardFile,
hgs
parents:
diff changeset
    97
        CntAbstractServiceProvider& aServiceProvider );
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
    /**
hgs
parents:
diff changeset
   100
     * User can first choose a contact, and then an editor is opened.
hgs
parents:
diff changeset
   101
     * A new detail is provided by caller and it will be prefilled in the editor.
hgs
parents:
diff changeset
   102
     * @param definitionName The field type
hgs
parents:
diff changeset
   103
     * @param value The value for the field.
hgs
parents:
diff changeset
   104
     * @param aServiceProvider The service provider
hgs
parents:
diff changeset
   105
     */
hgs
parents:
diff changeset
   106
    void editUpdateExisting(const QString &definitionName, const QString &value,
53
hgs
parents: 50
diff changeset
   107
        CntAbstractServiceProvider& aServiceProvider, bool defaultForOnlineAccountIsImpp = true );
hgs
parents: 50
diff changeset
   108
hgs
parents: 50
diff changeset
   109
    /**
hgs
parents: 50
diff changeset
   110
     * User can first choose a contact, and then an editor is opened.
hgs
parents: 50
diff changeset
   111
     * A new detail is provided by caller and it will be prefilled in the editor.
hgs
parents: 50
diff changeset
   112
     * @param definitionName The field type
hgs
parents: 50
diff changeset
   113
     * @param value The value for the field.
hgs
parents: 50
diff changeset
   114
     * @param subType The subtype for the field. (for eg. QContactPhoneNumber::SubTypeLandline)
hgs
parents: 50
diff changeset
   115
     * @param aServiceProvider The service provider
hgs
parents: 50
diff changeset
   116
     * @param defaultForOnlineAccountIsImpp If no subtype is given, default
hgs
parents: 50
diff changeset
   117
     *          for QContactOnlineAccount is QContactOnlineAccount::SubTypeImpp. If false, then
hgs
parents: 50
diff changeset
   118
     *          the default is QContactOnlineAccount::SubTypeSipVoip.
hgs
parents: 50
diff changeset
   119
     */
hgs
parents: 50
diff changeset
   120
    void editUpdateExisting(const QString &definitionName, const QString &value, const QString& subType,
hgs
parents: 50
diff changeset
   121
        CntAbstractServiceProvider& aServiceProvider, bool defaultForOnlineAccountIsImpp = true );
50
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
    /**
hgs
parents:
diff changeset
   124
     * Open the editor for an existing contact.'
hgs
parents:
diff changeset
   125
     * @param contactId
hgs
parents:
diff changeset
   126
     * @param aServiceProvider The service provider
hgs
parents:
diff changeset
   127
     */
hgs
parents:
diff changeset
   128
    void editExisting(int contactId,
hgs
parents:
diff changeset
   129
        CntAbstractServiceProvider& aServiceProvider);
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
    /**
hgs
parents:
diff changeset
   132
     * Opens Contact Card.
hgs
parents:
diff changeset
   133
     * @param contactId The contact ID
hgs
parents:
diff changeset
   134
     * @param aServiceProvider The service provider
hgs
parents:
diff changeset
   135
     */
hgs
parents:
diff changeset
   136
    void launchContactCard(int contactId,
hgs
parents:
diff changeset
   137
        CntAbstractServiceProvider& aServiceProvider );
54
hgs
parents: 53
diff changeset
   138
    
hgs
parents: 53
diff changeset
   139
    /**
hgs
parents: 53
diff changeset
   140
     * Opens Group member view.
hgs
parents: 53
diff changeset
   141
     * @param contactId The contact ID
hgs
parents: 53
diff changeset
   142
     * @param aServiceProvider The service provider
hgs
parents: 53
diff changeset
   143
     */
hgs
parents: 53
diff changeset
   144
    void launchGroupMemberView(int contactId,
hgs
parents: 53
diff changeset
   145
        CntAbstractServiceProvider& aServiceProvider );
50
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
    /**
hgs
parents:
diff changeset
   148
     * Opens Contact Card for non-saved contact.
hgs
parents:
diff changeset
   149
     * @param definitionName Field name.
hgs
parents:
diff changeset
   150
     * @param value The field value.
hgs
parents:
diff changeset
   151
     * @param aServiceProvider The service provider
hgs
parents:
diff changeset
   152
     */
hgs
parents:
diff changeset
   153
    void launchTemporaryContactCard(const QString &definitionName, const QString &value,
hgs
parents:
diff changeset
   154
        CntAbstractServiceProvider& aServiceProvider );
hgs
parents:
diff changeset
   155
        
hgs
parents:
diff changeset
   156
public slots:
hgs
parents:
diff changeset
   157
    /**
hgs
parents:
diff changeset
   158
     * Quit the application
hgs
parents:
diff changeset
   159
     */
hgs
parents:
diff changeset
   160
    void quitApp();
53
hgs
parents: 50
diff changeset
   161
    /**
hgs
parents: 50
diff changeset
   162
     * Terminate a service
hgs
parents: 50
diff changeset
   163
     */
hgs
parents: 50
diff changeset
   164
    void terminateService();
50
hgs
parents:
diff changeset
   165
    
hgs
parents:
diff changeset
   166
private:
hgs
parents:
diff changeset
   167
    void removeNotSupportedFields(QContact& contact);
hgs
parents:
diff changeset
   168
    void removeNotSupportedDetails(QContact& contact);
53
hgs
parents: 50
diff changeset
   169
    void fillOnlineAccount( QContactOnlineAccount& account, const QString& value, const QString& subType, bool defaultForOnlineAccountIsImpp);
54
hgs
parents: 53
diff changeset
   170
    QContactManager* contactManager();
66
hgs
parents: 61
diff changeset
   171
    
50
hgs
parents:
diff changeset
   172
private: // from CntAbstractServiceProvider
hgs
parents:
diff changeset
   173
    void CompleteServiceAndCloseApp(const QVariant& retValue);
61
hgs
parents: 54
diff changeset
   174
    void overrideReturnValue(const QVariant& retValue);
hgs
parents: 54
diff changeset
   175
    bool allowSubViewsExit();
50
hgs
parents:
diff changeset
   176
private:
hgs
parents:
diff changeset
   177
    CntAbstractViewManager* mViewManager; // not owned
61
hgs
parents: 54
diff changeset
   178
    CntAbstractEngine* mEngine;
50
hgs
parents:
diff changeset
   179
    QStringList m_definitionNames;
hgs
parents:
diff changeset
   180
    CntAbstractServiceProvider* mCurrentProvider; // not owned
81
hgs
parents: 72
diff changeset
   181
    friend class UT_CntServices;
50
hgs
parents:
diff changeset
   182
};
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
#endif /* CNTSERVICES_H */