gsprofilesrv_plat/settings_framework_api/inc/GSParentContainer.h
author hgs
Thu, 04 Nov 2010 13:38:47 +0800
changeset 68 13e71d907dc3
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
68
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2005 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:   Container for GSParentPlugin.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef GSPARENTCONTAINER_H
hgs
parents:
diff changeset
    20
#define GSPARENTCONTAINER_H
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include    "gsparentplugin.h"
hgs
parents:
diff changeset
    23
#include    <bldvariant.hrh>
hgs
parents:
diff changeset
    24
#include    <AknIconArray.h>
hgs
parents:
diff changeset
    25
#include    <AknsUtils.h>     // For loading icons
hgs
parents:
diff changeset
    26
#include    <coecntrl.h>
hgs
parents:
diff changeset
    27
#include    <eiklbx.h>
hgs
parents:
diff changeset
    28
#include    <eiktxlbx.h>
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
// CLASS DECLARATION
hgs
parents:
diff changeset
    31
class CAknViewAppUi;
hgs
parents:
diff changeset
    32
class CGSPluginInterface;
hgs
parents:
diff changeset
    33
class CAknSingleLargeStyleListBox;
hgs
parents:
diff changeset
    34
class MGSWatchDog;
hgs
parents:
diff changeset
    35
class CGsContainerExt;
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
/**
hgs
parents:
diff changeset
    38
*  Container class for the GS Main view.
hgs
parents:
diff changeset
    39
*  @lib GSFramework.lib
hgs
parents:
diff changeset
    40
*  @since Series60_3.1
hgs
parents:
diff changeset
    41
*/
hgs
parents:
diff changeset
    42
class CGSParentContainer : public CCoeControl, public MEikListBoxObserver
hgs
parents:
diff changeset
    43
    {
hgs
parents:
diff changeset
    44
    public: // Constructors and destructor
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
        /**
hgs
parents:
diff changeset
    47
        * Symbian OS constructor.
hgs
parents:
diff changeset
    48
        * Required by the base class.
hgs
parents:
diff changeset
    49
        */
hgs
parents:
diff changeset
    50
        /*void ConstructL(
hgs
parents:
diff changeset
    51
            const TRect& aRect,
hgs
parents:
diff changeset
    52
            CAknViewAppUi* aAppUi,
hgs
parents:
diff changeset
    53
            CArrayPtrFlat<CGSPluginInterface>* aPluginArray,
hgs
parents:
diff changeset
    54
            TInt aTitleRscId );*/
hgs
parents:
diff changeset
    55
hgs
parents:
diff changeset
    56
        /**
hgs
parents:
diff changeset
    57
        * Symbian OS constructor.
hgs
parents:
diff changeset
    58
        * Required by the base class.
hgs
parents:
diff changeset
    59
        */
hgs
parents:
diff changeset
    60
        void ConstructL(
hgs
parents:
diff changeset
    61
            const TRect& aRect,
hgs
parents:
diff changeset
    62
            CAknViewAppUi* aAppUi,
hgs
parents:
diff changeset
    63
            CArrayPtrFlat<CGSPluginInterface>* aPluginArray,
hgs
parents:
diff changeset
    64
            TInt aTitleRscId,
hgs
parents:
diff changeset
    65
            CGSParentPlugin* aParentPlugin,
hgs
parents:
diff changeset
    66
            TGSListboxTypes aListBoxType =
hgs
parents:
diff changeset
    67
                EGSListBoxTypeSingleLarge );
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
	      /**
hgs
parents:
diff changeset
    70
        * Destructor.
hgs
parents:
diff changeset
    71
        */
hgs
parents:
diff changeset
    72
        ~CGSParentContainer();
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
    public: // New
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
        /**
hgs
parents:
diff changeset
    77
        * Updates iListBox. Listbox is updated depending on the type of the
hgs
parents:
diff changeset
    78
        * listbox. Plugins are inserted to listbox only if they are visible.
hgs
parents:
diff changeset
    79
        */
hgs
parents:
diff changeset
    80
        void UpdateListBoxL();
hgs
parents:
diff changeset
    81
hgs
parents:
diff changeset
    82
        /**
hgs
parents:
diff changeset
    83
        * @return Pointer to owned listbox
hgs
parents:
diff changeset
    84
        */
hgs
parents:
diff changeset
    85
        CEikListBox* ListBox();
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
        /**
hgs
parents:
diff changeset
    88
        * @return Plugin which is selected in the lbx or NULL if no plugins
hgs
parents:
diff changeset
    89
        *         exist.
hgs
parents:
diff changeset
    90
        */
hgs
parents:
diff changeset
    91
        CGSPluginInterface* SelectedPlugin();
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
        /**
hgs
parents:
diff changeset
    94
        * Sets selected lbx item using the UID of the item. If the item is not
hgs
parents:
diff changeset
    95
        * existing or visible anymore, selected item is the first item in the
hgs
parents:
diff changeset
    96
        * lbx.
hgs
parents:
diff changeset
    97
        */
hgs
parents:
diff changeset
    98
        void SetSelectedItem( TUid aSelectedItemUid );
hgs
parents:
diff changeset
    99
        
hgs
parents:
diff changeset
   100
        /**
hgs
parents:
diff changeset
   101
        * @return Plugin which is top in the lbx or NULL if no plugins
hgs
parents:
diff changeset
   102
        *         exist.
hgs
parents:
diff changeset
   103
        */
hgs
parents:
diff changeset
   104
        CGSPluginInterface* TopPlugin();
hgs
parents:
diff changeset
   105
        
hgs
parents:
diff changeset
   106
        /**
hgs
parents:
diff changeset
   107
        * Sets top lbx item using the UID of the item.
hgs
parents:
diff changeset
   108
        */
hgs
parents:
diff changeset
   109
        void SetTopItem( TUid aTopItemUid );
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
        /**
hgs
parents:
diff changeset
   112
         * Set the empty text of list box.
hgs
parents:
diff changeset
   113
         */
hgs
parents:
diff changeset
   114
        void SetListBoxEmptyTextL(const TDes& aEmpty );
hgs
parents:
diff changeset
   115
        
hgs
parents:
diff changeset
   116
        /**
hgs
parents:
diff changeset
   117
         * Store listbox's exact position.
hgs
parents:
diff changeset
   118
        * @param aPosition includes the exact position of the listbox.
hgs
parents:
diff changeset
   119
        */
hgs
parents:
diff changeset
   120
        void StoreListBoxPositionL( CGSParentPlugin::TListBoxPosition& aPosition );
hgs
parents:
diff changeset
   121
hgs
parents:
diff changeset
   122
        /**
hgs
parents:
diff changeset
   123
        * Restore listbox's exact position.
hgs
parents:
diff changeset
   124
        * @param aPosition includes the exact position of the listbox.
hgs
parents:
diff changeset
   125
        * @param aScreenModeChanged indicates whether the screen mode is changed.
hgs
parents:
diff changeset
   126
        */
hgs
parents:
diff changeset
   127
        void RestoreListBoxPositionL( const CGSParentPlugin::TListBoxPosition& aPosition, TBool aScreenModeChanged );                
hgs
parents:
diff changeset
   128
        
hgs
parents:
diff changeset
   129
    public: // From CCoeControl
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
        /**
hgs
parents:
diff changeset
   132
        * Set focus on the selected listbox. For animated skins feature.
hgs
parents:
diff changeset
   133
        */
hgs
parents:
diff changeset
   134
        IMPORT_C void FocusChanged( TDrawNow aDrawNow );
hgs
parents:
diff changeset
   135
hgs
parents:
diff changeset
   136
        /**
hgs
parents:
diff changeset
   137
        * See base class.
hgs
parents:
diff changeset
   138
        */
hgs
parents:
diff changeset
   139
        void HandleResourceChange( TInt aType );
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
        /**
hgs
parents:
diff changeset
   142
        * See base class.
hgs
parents:
diff changeset
   143
        */
hgs
parents:
diff changeset
   144
        void GetHelpContext( TCoeHelpContext& aContext ) const;
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
    public: //New
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
        void HandleSelectionKeyL();
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
    protected: // From MEikListBoxObserver
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
        /**
hgs
parents:
diff changeset
   153
        * Handles listbox events.
hgs
parents:
diff changeset
   154
        * @param aListBox Listbox where the event occurred.
hgs
parents:
diff changeset
   155
        * @param aEventType Event type.
hgs
parents:
diff changeset
   156
        */
hgs
parents:
diff changeset
   157
        void HandleListBoxEventL( CEikListBox* aListBox,
hgs
parents:
diff changeset
   158
            TListBoxEvent aEventType );
hgs
parents:
diff changeset
   159
hgs
parents:
diff changeset
   160
    private: // New
hgs
parents:
diff changeset
   161
hgs
parents:
diff changeset
   162
        /**
hgs
parents:
diff changeset
   163
        * Creates a listbox.
hgs
parents:
diff changeset
   164
        */
hgs
parents:
diff changeset
   165
        void CreateListBoxL( TGSListboxTypes aListBoxType );
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
        /**
hgs
parents:
diff changeset
   168
        * Adds plugin data to listbox.
hgs
parents:
diff changeset
   169
        * @param aPlugin A plugin whose data is to be used.
hgs
parents:
diff changeset
   170
        * @param aItemTextArray Array for plugin texts and format strings used
hgs
parents:
diff changeset
   171
        *        by lbx.
hgs
parents:
diff changeset
   172
        * @param aIconArray Array for icons used in lbx.
hgs
parents:
diff changeset
   173
        * @param aIconCounter Counter for inserted icons, will be updated.
hgs
parents:
diff changeset
   174
        */
hgs
parents:
diff changeset
   175
        void AddPluginDataToLbxL( CGSPluginInterface* aPlugin,
hgs
parents:
diff changeset
   176
                                  CDesCArray* aItemTextArray,
hgs
parents:
diff changeset
   177
                                  CAknIconArray* aIconArray,
hgs
parents:
diff changeset
   178
                                  TInt& aIconCounter );
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
    private: // From CCoeControl
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
        /**
hgs
parents:
diff changeset
   183
        * See base class.
hgs
parents:
diff changeset
   184
        */
hgs
parents:
diff changeset
   185
        void SizeChanged();
hgs
parents:
diff changeset
   186
hgs
parents:
diff changeset
   187
        /**
hgs
parents:
diff changeset
   188
        * See base class.
hgs
parents:
diff changeset
   189
        */
hgs
parents:
diff changeset
   190
        TInt CountComponentControls() const;
hgs
parents:
diff changeset
   191
hgs
parents:
diff changeset
   192
        /**
hgs
parents:
diff changeset
   193
        * See base class.
hgs
parents:
diff changeset
   194
        */
hgs
parents:
diff changeset
   195
        CCoeControl* ComponentControl(TInt /*aIndex*/) const;
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
        /**
hgs
parents:
diff changeset
   198
        * See base class.
hgs
parents:
diff changeset
   199
        */
hgs
parents:
diff changeset
   200
        TKeyResponse OfferKeyEventL(
hgs
parents:
diff changeset
   201
            const TKeyEvent& aKeyEvent,
hgs
parents:
diff changeset
   202
            TEventCode aType );
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
    private: // Data
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
        // Application UI. Not owned.
hgs
parents:
diff changeset
   207
        CAknViewAppUi* iAppUi;
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
        // Owned listbox.
hgs
parents:
diff changeset
   210
        CEikListBox* iListBox;
hgs
parents:
diff changeset
   211
hgs
parents:
diff changeset
   212
        // Type of iListBox.
hgs
parents:
diff changeset
   213
        TGSListboxTypes iListBoxType;
hgs
parents:
diff changeset
   214
hgs
parents:
diff changeset
   215
        // Pointer to listbox model's item texts. Note that the indexes of
hgs
parents:
diff changeset
   216
        // listbox items are mapped directly to the indexes in plugin array.
hgs
parents:
diff changeset
   217
        // Plugin which maps to selected listbox item index in plugin array is
hgs
parents:
diff changeset
   218
        // activated when item is selected in listbox.
hgs
parents:
diff changeset
   219
        //
hgs
parents:
diff changeset
   220
        // Owned by iListBox.
hgs
parents:
diff changeset
   221
        //
hgs
parents:
diff changeset
   222
        CDesCArray* iItemTextArray;
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
        // Array of the child plugins. Owned by CGSParentPlugin.
hgs
parents:
diff changeset
   225
        CArrayPtrFlat<CGSPluginInterface>* iPluginArray;
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
        // Array of pointers to iPluginArray plugins which are visible.
hgs
parents:
diff changeset
   228
        // This is the actual array which is displayed by the listbox.
hgs
parents:
diff changeset
   229
        // It is needed because iPluginArray also contains non-visible plugins
hgs
parents:
diff changeset
   230
        // and therefore the indexes do not match to lbx items.
hgs
parents:
diff changeset
   231
        CArrayPtrFlat<CGSPluginInterface>* iVisiblePlugins;
hgs
parents:
diff changeset
   232
hgs
parents:
diff changeset
   233
        // Pointer to parent plugin. Not owned.
hgs
parents:
diff changeset
   234
        CGSParentPlugin* iParentPlugin;
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
        // Pointer to GSWatchDog owned by GS Application document. Not owned.
hgs
parents:
diff changeset
   237
        CGsContainerExt* iExt;
hgs
parents:
diff changeset
   238
    };
hgs
parents:
diff changeset
   239
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
#endif // GSPARENTCONTAINER_H
hgs
parents:
diff changeset
   242
// End of File