smf/smfservermodule/smfclient/smfclient.h
author cgandhi
Tue, 12 Oct 2010 15:23:52 +0530
changeset 27 b3e1347ac96a
parent 26 83d6a149c755
permissions -rw-r--r--
Updating the information for test applications and results.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
     1
/**
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
     2
 * Copyright (c) 2010 Sasken Communication Technologies Ltd.
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
     3
 * All rights reserved.
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
     5
 * under the terms of the "Eclipse Public License v1.0" 
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
     6
 * which accompanies  this distribution, and is available
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html"
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
     8
 *
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
     9
 * Initial Contributors:
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    10
 * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    11
 *
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    12
 * Contributors:
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    13
 * Manasij Roy, Nalina Hariharan
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    14
 * 
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    15
 * Description:
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    16
 * The SmfClient class provides a set of APIs to get list of service provider
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    17
 * who implement the given interface. Calling GetServices of the instance of this
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    18
 * class is mandatory before using any other interface.
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    19
 *
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    20
 */
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    21
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    22
#ifndef SMFCLIENT_H
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    23
#define SMFCLIENT_H
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    24
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    25
#include <QObject>
26
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    26
#include <qprocess.h>
18
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    27
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    28
#include "smfclientglobal.h"
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    29
#include "smfglobal.h"
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    30
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    31
//Forward declarations
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    32
class SmfProvider;
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    33
class SmfClientPrivate;
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    34
26
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    35
enum SMFProviderAuthorizationStatus
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    36
	{
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    37
	SMFProviderAuthStatusUnknown,	 	//status unknown
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    38
	SMFProviderAuthStatusAuthorised, 	//user logged in
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    39
	SMFProviderAuthStatusUnauthorised, 	//user logged out/not logged in
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    40
	SMFProviderAuthStatusBlocked		//user chosen to block this service
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    41
	};
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    42
18
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    43
/**
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    44
 * @ingroup smf_client_group 
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    45
 * Interface for a base service provider. Other service provider classes contains 
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    46
 * implementation of this base class so that each has access to service provider 
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    47
 * information.
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    48
 * All of the functionality described here should be implemented by a service
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    49
 * specific plug-in object.
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    50
 */
26
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    51
class  SMFCLIENT_EXPORT SmfClient : public QObject
18
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    52
	{
26
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    53
	Q_OBJECT
18
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    54
public:
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    55
	/**
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    56
	 * Constructs SmfClient
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    57
	 */
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    58
	SmfClient();
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    59
	
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    60
	/**
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    61
	 * Destructor
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    62
	 */
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    63
	~SmfClient();
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    64
	
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    65
	/**
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    66
	 * Method to get the list of services for a given service (interface name)
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    67
	 * @param serviceName The name of the service 
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    68
	 * @return Service provider's list (ownership of memory is transferred 
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    69
	 * to the calling party)
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    70
	 */
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    71
	QList<SmfProvider>* GetServices(const QString& serviceName);
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
    72
	
26
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    73
	/**
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    74
	 * Checks the current status of the service. Application might want to 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    75
	 * launch authorization process by calling loginToService() for the 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    76
	 * service which is not authorised.
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    77
	 * @param provider The SmfProvider instance for the requested service
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    78
	 * @return Authorization status (loggedin, logged out, blocked, unknown etc)
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    79
	 */
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    80
	SMFProviderAuthorizationStatus checkAuthorization(const SmfProvider& provider);
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    81
	
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    82
	/**
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    83
	 * Method to launch the authentication application for this service.
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    84
	 * This would pop-up service specific login window. Till user logs in 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    85
	 * successfully, any call to SMF APIs for this service Provider would 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    86
	 * return SmfServiceAuthFailed. Symbian application should have 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    87
	 * UserData capability.
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    88
	 * @param provider The SmfProvider instance for the requested service
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    89
	 * @return SmfError value 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    90
	 */
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    91
	SmfError loginToService(SmfProvider* provider);
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    92
	
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    93
	/**
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    94
	 * Method to log-out of (unauthorise) this service. Please note that 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    95
	 * this might not immediately log-out of the service if there are other 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    96
	 * applications using this service. Application need not use this function 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    97
	 * for normal operations - being logged in doesn't cost data charges and would 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    98
	 * avoid disturbing log-in pop-ups. Please note that there is no notification 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
    99
	 * when user has logged out of service. Please use checkAuthorization() to 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   100
	 * determine the current status
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   101
	 * @param provider The SmfProvider instance for the requested service
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   102
	 * @return SmfError value  
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   103
	 */
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   104
	SmfError logoutOfService(SmfProvider* provider); 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   105
	
18
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   106
	// ToDo :- More overloaded APIs will be provided later
26
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   107
	/**
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   108
	 * Get provider details for a particular service provider for a particular service interface
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   109
	 * The provider name is always English lowercase with the domain separator 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   110
	 * e.g. "facebook.com", "last.fm","linkedin.com"
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   111
	 * for updated list of service provider names please refer SMF wiki in SF
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   112
	 * TODO: provide url here.
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   113
	 */
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   114
	//SmfProvider* GetServices(const QString& serviceName, const QString& providerName);
18
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   115
	//QList<SmfProvider>* GetServices(const QString& serviceName, const SmfProvider& provider);
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   116
  
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   117
	/**
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   118
	 * This method returns the error message for the mentioned argument error code
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   119
	 * @param aErrorCode The SmfError code for which the error string is required
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   120
	 * @returns a QString object containing the required error message
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   121
	 */
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   122
	QString errorString ( const SmfError &aErrorCode ) const;
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   123
26
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   124
private slots:
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   125
	/**
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   126
	 * Slot that connects to the started() signal of QProcess
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   127
	 */
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   128
    void started();
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   129
    
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   130
	/**
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   131
	 * Slot that connects to the stateChanged() signal of QProcess
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   132
	 * @param newState The newState of the started Process
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   133
	 */
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   134
    void stateChanged(QProcess::ProcessState newState);
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   135
    
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   136
	/**
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   137
	 * Slot that connects to the error() signal of QProcess
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   138
	 * @param error The error that occured in the started process
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   139
	 */
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   140
    void error(QProcess::ProcessError error);
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   141
    
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   142
	/**
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   143
	 * Slot that connects to the finished() signal of QProcess. This signal 
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   144
	 * is emitted when the process finishes
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   145
	 * @param exitCode The exit code of the process
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   146
	 * @param exitStatus The exit status of the process
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   147
	 */
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   148
    void finished(int exitCode, QProcess::ExitStatus exitStatus);
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   149
    
18
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   150
private:
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   151
	/**
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   152
	 * Private impl wrapper.
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   153
	 */
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   154
	SmfClientPrivate* m_private;
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   155
	
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   156
	/**
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   157
	 * List of SmfProvider to be returned to the requested code
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   158
	 */
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   159
	QList<SmfProvider>* m_providerList;
26
83d6a149c755 Submitting following changes -
cgandhi
parents: 18
diff changeset
   160
	QProcess *m_authAppProcess;
18
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   161
  
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   162
	};
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   163
013a02bf2bb0 pushing changes for common libs and trace messages
cgandhi
parents:
diff changeset
   164
#endif // SMFCLIENT_H