epoc32/include/hswidgetpublisher.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
permissions -rw-r--r--
Final list of Symbian^2 public API header files
williamr@2
     1
/*
williamr@2
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
williamr@2
     3
* All rights reserved.
williamr@2
     4
* This component and the accompanying materials are made available
williamr@2
     5
* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2
     6
* which accompanies this distribution, and is available
williamr@2
     7
* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     8
*
williamr@2
     9
* Initial Contributors:
williamr@2
    10
* Nokia Corporation - initial contribution.
williamr@2
    11
*
williamr@2
    12
* Contributors:
williamr@2
    13
*
williamr@2
    14
* Description:  Updates applications and icons in Operator Tile.
williamr@2
    15
*
williamr@2
    16
*/
williamr@2
    17
williamr@2
    18
williamr@2
    19
// This file defines the API for hswidgetpublisher.dll
williamr@2
    20
williamr@2
    21
#ifndef __HSWIDGETPUBLISHER_H__
williamr@2
    22
#define __HSWIDGETPUBLISHER_H__
williamr@2
    23
williamr@2
    24
//  Include Files
williamr@2
    25
#include <cctype>
williamr@2
    26
#include <memory>
williamr@2
    27
#include <string>
williamr@2
    28
williamr@2
    29
namespace Hs {
williamr@2
    30
williamr@2
    31
//  Class Definitions
williamr@2
    32
class HsWidget;
williamr@2
    33
class IHsDataObserver;
williamr@2
    34
class HsWidgetPublisherImpl;
williamr@2
    35
williamr@2
    36
/**
williamr@2
    37
 * Class allowing access to the Homescreen Publishing Api. 
williamr@2
    38
 * Allows creation, update and deletion of widgets, as well as reception of
williamr@2
    39
 * information for the occuring events.
williamr@2
    40
 * 
williamr@2
    41
 * @code
williamr@2
    42
 * class ObserverClass : public IHsDataObserver
williamr@2
    43
 * {
williamr@2
    44
 *      void handleEvent( std::string aWidgetName, 
williamr@2
    45
 *			IHsDataObserver::EEvent aEvent)
williamr@2
    46
 *      {
williamr@2
    47
 *      }
williamr@2
    48
 * 
williamr@2
    49
 *      void handleItemEvent( std::string aWidgetName,
williamr@2
    50
 *        	std::string aWidgetItemName,
williamr@2
    51
 *       	IHsDataObserver::EItemEvent aEvent)
williamr@2
    52
 *      {
williamr@2
    53
 *      }
williamr@2
    54
 * }
williamr@2
    55
 * 
williamr@2
    56
 * ObserverClass* dataObserver = new ObserverClass();
williamr@2
    57
 * HsWidgetPublisher* hsPublisher = new HsWidgetPublisher( dataObserver );
williamr@2
    58
 * HsWidget& widget =  publisher->createHsWidget(
williamr@2
    59
 *     "templateName", "widgetName", "uniqueIdentifier" );
williamr@2
    60
 * // assuming count and values[] exists
williamr@2
    61
 * while (count)
williamr@2
    62
 * {
williamr@2
    63
 *    widget->setItem( "image", values[count] );
williamr@2
    64
 *    count--;
williamr@2
    65
 * }
williamr@2
    66
 * hsPublisher->publishHsWidget( widget ); 
williamr@2
    67
 * @endcode
williamr@2
    68
 */
williamr@2
    69
class HsWidgetPublisher
williamr@2
    70
    {
williamr@2
    71
public:
williamr@2
    72
    /**
williamr@2
    73
     * Constructor of the HsWidgetPublisher. Creates an instance of the 
williamr@2
    74
     * publisher, which is used to manage Widgets and Widget's Items. 
williamr@2
    75
     * Please note that attempt of usage, with aDataObserver = NULL 
williamr@2
    76
     * is asserted.
williamr@2
    77
     *
williamr@2
    78
     * @code
williamr@2
    79
	 * class ObserverClass : public IHsDataObserver
williamr@2
    80
	 * {
williamr@2
    81
	 *      void handleEvent( std::string aWidgetName, 
williamr@2
    82
	 *			IHsDataObserver::EEvent aEvent)
williamr@2
    83
	 *      {
williamr@2
    84
	 *      }
williamr@2
    85
	 * 
williamr@2
    86
	 *      void handleItemEvent( std::string aWidgetName,
williamr@2
    87
	 *        	std::string aWidgetItemName,
williamr@2
    88
	 *       	IHsDataObserver::EItemEvent aEvent)
williamr@2
    89
	 *      {
williamr@2
    90
	 *      }
williamr@2
    91
	 * }       
williamr@2
    92
     * 
williamr@2
    93
     * ObserverClass* dataObserver = new ObserverClass();
williamr@2
    94
     * HsWidgetPublisher* hsPublisher = new HsWidgetPublisher( dataObserver );
williamr@2
    95
     * @endcode
williamr@2
    96
     * 
williamr@2
    97
     * Client should not completely rely on exceptions while creating 
williamr@2
    98
     * the API. Except for exceptions thrown one should check if
williamr@2
    99
     * the memory was allocated properly.
williamr@2
   100
     * @code
williamr@2
   101
     * 
williamr@2
   102
     * ObserverClass* dataObserver = new ObserverClass();
williamr@2
   103
     * 
williamr@2
   104
     * try 
williamr@2
   105
     * {
williamr@2
   106
     *     HsWidgetPublisher* hsPublisher = new HsWidgetPublisher(dataObserver);
williamr@2
   107
     *     if (hsPublisher)
williamr@2
   108
     *     {
williamr@2
   109
     *     // do the operations on the API here
williamr@2
   110
     *     }
williamr@2
   111
     * }
williamr@2
   112
     * catch (HsException& exception)
williamr@2
   113
     * {
williamr@2
   114
     *     int errReason = exception.getReason();
williamr@2
   115
     * }
williamr@2
   116
     * @endcode
williamr@2
   117
     *
williamr@2
   118
     * @param aDataObserver Callback interface for handling actions.
williamr@2
   119
     * @exception HsPException
williamr@2
   120
     */
williamr@2
   121
    IMPORT_C HsWidgetPublisher( IHsDataObserver* aDataObserver );
williamr@2
   122
    
williamr@2
   123
    /**
williamr@2
   124
     * Destructor of the HsWidgetPublisher.
williamr@2
   125
     *
williamr@2
   126
     * @code
williamr@2
   127
     * HsWidgetPublisher* hsPublisher = new HsWidgetPublisher( dataObserver );
williamr@2
   128
     * delete hsPublisher;
williamr@2
   129
     * @endcode
williamr@2
   130
     * @exception HsException
williamr@2
   131
     */
williamr@2
   132
    IMPORT_C ~HsWidgetPublisher();
williamr@2
   133
    
williamr@2
   134
    /**
williamr@2
   135
     * Method creates a new widget.
williamr@2
   136
     * Attempt to create already existing widget will cause exception 
williamr@2
   137
     * with KErrAlreadyExists reason.
williamr@2
   138
     * Other exception reasons are possible and are caused by widget 
williamr@2
   139
     * registration.
williamr@2
   140
     * 
williamr@2
   141
     * @code
williamr@2
   142
     * HsWidgetPublisher* hsPublisher = new HsWidgetPublisher( dataObserver );
williamr@2
   143
     * HsWidget& widget =  hsPublisher->createHsWidget( 
williamr@2
   144
     *     "templateName", "widgetName", "uniqueIdentifier" );
williamr@2
   145
     * @endcode
williamr@2
   146
     * @param aTemplateName Name of the Template.
williamr@2
   147
     * @param aWidgetName Name of the Widget
williamr@2
   148
     * @param aIdentifier Unique identification of the content.
williamr@2
   149
     * @return A widget is returned. If no such widget existed a newly
williamr@2
   150
     * created one.
williamr@2
   151
     * @exception HsException Exception is thrown when with code 
williamr@2
   152
     * KErrAlreadyExists 
williamr@2
   153
     * when attempting to create a widget that already exists. Other cases 
williamr@2
   154
     * when excpetion is thrown include problems with widget registration. 
williamr@2
   155
     */
williamr@2
   156
    IMPORT_C HsWidget& createHsWidget( std::string aTemplateName, 
williamr@2
   157
        std::string aWidgetName,
williamr@2
   158
        std::string aIdentifier );
williamr@2
   159
williamr@2
   160
    /**
williamr@2
   161
     * Method publishes the provided widget. 
williamr@2
   162
     * Widget needs to be published in order for the content 
williamr@2
   163
     * to be seen by the HS.
williamr@2
   164
     *
williamr@2
   165
     * @code
williamr@2
   166
     * HsWidgetPublisher* hsPublisher = new HsWidgetPublisher( dataObserver );
williamr@2
   167
     * HsWidget& widget =  hsPublisher->createHsWidget( 
williamr@2
   168
     *     "templateName", "widgetName", "uniqueIdentifier" );
williamr@2
   169
     * hsPublisher->publishHsWidget( widget ); 
williamr@2
   170
     * @endcode
williamr@2
   171
     * @param aWidget Reference to a widget object.
williamr@2
   172
     * @exception HsException
williamr@2
   173
     */
williamr@2
   174
    IMPORT_C void publishHsWidget( HsWidget& aWidget );
williamr@2
   175
williamr@2
   176
    /**
williamr@2
   177
     * Method removes a widget.
williamr@2
   178
     *
williamr@2
   179
     * @code
williamr@2
   180
     * HsWidgetPublisher* hsPublisher = new HsWidgetPublisher( dataObserver );
williamr@2
   181
     * hsPublisher->createHsWidget( 
williamr@2
   182
     *     "templateName", "widgetName", "uniqueIdentifier" );
williamr@2
   183
     * publisher->removeHsWidget(
williamr@2
   184
     *     "templateName", "widgetName", "uniqueIdentifier" );
williamr@2
   185
     * @endcode
williamr@2
   186
     * @param aTemplateName Name of the Template.
williamr@2
   187
     * @param aWidgetName Name of the Widget
williamr@2
   188
     * @param aIdentifier Unique identification of the content.
williamr@2
   189
     * @exception HsException
williamr@2
   190
     */
williamr@2
   191
    IMPORT_C void removeHsWidget( std::string aTemplateName, 
williamr@2
   192
        std::string aWidgetName,
williamr@2
   193
        std::string aIdentifier );
williamr@2
   194
    
williamr@2
   195
    /**
williamr@2
   196
     * Obtains a Widget from Homescreen Publishing Api.
williamr@2
   197
     * Attempt of obtaining Widget that was not created cause exception 
williamr@2
   198
     * with KErrNotFound rason.
williamr@2
   199
     * 
williamr@2
   200
     *
williamr@2
   201
     * @code
williamr@2
   202
     * HsWidgetPublisher* hsPublisher = new HsWidgetPublisher( dataObserver );
williamr@2
   203
     * hsPublisher->createHsWidget( 
williamr@2
   204
     *     "templateName", "widgetName", "uniqueIdentifier" );
williamr@2
   205
     * HsWidget& widget = hsPublisher->getHsWidget(
williamr@2
   206
     *     "templateName", "widgetName", "uniqueIdentifier" );
williamr@2
   207
     * @endcode
williamr@2
   208
     * @param aTemplateName Name of the Template.
williamr@2
   209
     * @param aWidgetName Name of the Widget
williamr@2
   210
     * @param aIdentifier Unique identification of the content.
williamr@2
   211
     * @return Error code.
williamr@2
   212
     * @exception HsException
williamr@2
   213
     */
williamr@2
   214
    IMPORT_C HsWidget& getHsWidget( std::string aTemplateName, 
williamr@2
   215
        std::string aWidgetName,
williamr@2
   216
        std::string aIdentifier );
williamr@2
   217
williamr@2
   218
    
williamr@2
   219
private: //members
williamr@2
   220
williamr@2
   221
    std::auto_ptr<HsWidgetPublisherImpl> mImpl;
williamr@2
   222
williamr@2
   223
    };
williamr@2
   224
}
williamr@2
   225
williamr@2
   226
#endif  // __HSWIDGETPUBLISHER_H__
williamr@2
   227