gssettingsuis/Gs/GSApplication/Inc/GSMainContainer.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) 2002-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 class for main view.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef GSCONTAINER_H
hgs
parents:
diff changeset
    19
#define GSCONTAINER_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include    "gsbasecontainer.h"
hgs
parents:
diff changeset
    22
#include    <bldvariant.hrh>
hgs
parents:
diff changeset
    23
#include    <AknIconArray.h>
hgs
parents:
diff changeset
    24
#include    <AknsUtils.h>     // For loading icons
hgs
parents:
diff changeset
    25
#include    <gsmainview.h>
hgs
parents:
diff changeset
    26
// CLASS DECLARATION
hgs
parents:
diff changeset
    27
class CAknViewAppUi;
hgs
parents:
diff changeset
    28
class CAknSingleLargeStyleListBox;
hgs
parents:
diff changeset
    29
class CGSPluginInterface;
hgs
parents:
diff changeset
    30
class CGsContainerExt;
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
/**
hgs
parents:
diff changeset
    33
* Container class for the GS Main view.
hgs
parents:
diff changeset
    34
* @since Series60_3.1
hgs
parents:
diff changeset
    35
*/
hgs
parents:
diff changeset
    36
class CGSMainContainer : public CCoeControl, public MEikListBoxObserver
hgs
parents:
diff changeset
    37
{
hgs
parents:
diff changeset
    38
    public: // Constructors and destructor
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
        /**
hgs
parents:
diff changeset
    41
        * Symbian OS constructor.
hgs
parents:
diff changeset
    42
        * Required by the base class.
hgs
parents:
diff changeset
    43
        *
hgs
parents:
diff changeset
    44
        */
hgs
parents:
diff changeset
    45
        void ConstructL(
hgs
parents:
diff changeset
    46
            const TRect& aRect,
hgs
parents:
diff changeset
    47
            CAknViewAppUi* aAppUi,
hgs
parents:
diff changeset
    48
            CArrayPtrFlat<CGSPluginInterface>* aPluginArray );
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
        /**
hgs
parents:
diff changeset
    51
        * Destructor.
hgs
parents:
diff changeset
    52
        */
hgs
parents:
diff changeset
    53
        ~CGSMainContainer();
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
    public: // New
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
        /**
hgs
parents:
diff changeset
    58
        * Updates listbox.
hgs
parents:
diff changeset
    59
        */
hgs
parents:
diff changeset
    60
        void UpdateListBoxL();
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
        /**
hgs
parents:
diff changeset
    63
        * @return pointer to owned listbox.
hgs
parents:
diff changeset
    64
        */
hgs
parents:
diff changeset
    65
        CAknSingleLargeStyleListBox* ListBox();
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
        /**
hgs
parents:
diff changeset
    68
        * @return Plugin which is selected in the lbx.
hgs
parents:
diff changeset
    69
        */
hgs
parents:
diff changeset
    70
        CGSPluginInterface* SelectedPlugin();
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
        /**
hgs
parents:
diff changeset
    73
        * Sets selected lbx item using the UID of the item. If the item is not
hgs
parents:
diff changeset
    74
        * existing or visible anymore, selected item is the first item in the
hgs
parents:
diff changeset
    75
        * lbx.
hgs
parents:
diff changeset
    76
        */
hgs
parents:
diff changeset
    77
        void SetSelectedItem( TUid aSelectedItemUid );
hgs
parents:
diff changeset
    78
        
hgs
parents:
diff changeset
    79
        /**
hgs
parents:
diff changeset
    80
         * Set the empty text of list box.
hgs
parents:
diff changeset
    81
         */
hgs
parents:
diff changeset
    82
        void SetListBoxEmptyTextL(const TDes& aEmpty);
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
        /**
hgs
parents:
diff changeset
    85
         * Store listbox's exact position.
hgs
parents:
diff changeset
    86
         * @param aPosition includes the exact position of the listbox.
hgs
parents:
diff changeset
    87
         */
hgs
parents:
diff changeset
    88
        void StoreListBoxPositionL( CGSMainView::TListBoxPosition& aPosition );
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
        /**
hgs
parents:
diff changeset
    91
         * Restore listbox's exact position.
hgs
parents:
diff changeset
    92
         * @param aPosition includes the exact position of the listbox.
hgs
parents:
diff changeset
    93
         * @param aScreenModeChanged indicates whether the screen mode is changed.
hgs
parents:
diff changeset
    94
         */
hgs
parents:
diff changeset
    95
        void RestoreListBoxPositionL( const CGSMainView::TListBoxPosition& aPosition, TBool aScreenModeChanged );
hgs
parents:
diff changeset
    96
        
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
    public: // From CCoeControl
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
        /**
hgs
parents:
diff changeset
   101
        * See base class.
hgs
parents:
diff changeset
   102
        */
hgs
parents:
diff changeset
   103
        void HandleResourceChange( TInt aType );
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
        /**
hgs
parents:
diff changeset
   106
        * Set focus on the selected listbox. For animated skins feature.
hgs
parents:
diff changeset
   107
        */
hgs
parents:
diff changeset
   108
        void FocusChanged( TDrawNow aDrawNow );
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
    protected: // New
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
        /**
hgs
parents:
diff changeset
   113
        * Required for help.
hgs
parents:
diff changeset
   114
        */
hgs
parents:
diff changeset
   115
        void GetHelpContext( TCoeHelpContext& aContext ) const;
hgs
parents:
diff changeset
   116
hgs
parents:
diff changeset
   117
    protected: // From MEikListBoxObserver
hgs
parents:
diff changeset
   118
        /**
hgs
parents:
diff changeset
   119
        * Handles listbox events.
hgs
parents:
diff changeset
   120
        * @param aListBox Listbox where the event occurred.
hgs
parents:
diff changeset
   121
        * @param aEventType Event type.
hgs
parents:
diff changeset
   122
        */
hgs
parents:
diff changeset
   123
        void HandleListBoxEventL( CEikListBox* aListBox,
hgs
parents:
diff changeset
   124
                                  TListBoxEvent aEventType );
hgs
parents:
diff changeset
   125
    private: // New
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
        /**
hgs
parents:
diff changeset
   128
        * Adds plugin data to listbox.
hgs
parents:
diff changeset
   129
        * @param aPlugin A plugin whose data is to be used.
hgs
parents:
diff changeset
   130
        * @param aIndex Index of the plugin in the listbox.
hgs
parents:
diff changeset
   131
        * @param aItemTextArray Array for plugin texts and format strings used
hgs
parents:
diff changeset
   132
        *        by lbx.
hgs
parents:
diff changeset
   133
        * @param aIconArray Array for icons used in lbx.
hgs
parents:
diff changeset
   134
        */
hgs
parents:
diff changeset
   135
        void AddPluginDataToLbxL( CGSPluginInterface* aPlugin,
hgs
parents:
diff changeset
   136
                                  TInt aIndex,
hgs
parents:
diff changeset
   137
                                  CDesCArray* aItemTextArray,
hgs
parents:
diff changeset
   138
                                  CAknIconArray* aIconArray );
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
    private: // From CCoeControl
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
        /**
hgs
parents:
diff changeset
   143
        * See base class.
hgs
parents:
diff changeset
   144
        */
hgs
parents:
diff changeset
   145
        void SizeChanged();
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
        /**
hgs
parents:
diff changeset
   148
        * See base class.
hgs
parents:
diff changeset
   149
        */
hgs
parents:
diff changeset
   150
        TInt CountComponentControls() const;
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
        /**
hgs
parents:
diff changeset
   153
        * See base class.
hgs
parents:
diff changeset
   154
        */
hgs
parents:
diff changeset
   155
        CCoeControl* ComponentControl( TInt /*aIndex*/ ) const;
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
        /**
hgs
parents:
diff changeset
   158
        * See base class.
hgs
parents:
diff changeset
   159
        */
hgs
parents:
diff changeset
   160
        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
hgs
parents:
diff changeset
   161
                                     TEventCode aType );
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
    private: // Data
hgs
parents:
diff changeset
   164
hgs
parents:
diff changeset
   165
        // Owned listbox.
hgs
parents:
diff changeset
   166
        CAknSingleLargeStyleListBox* iListBox;
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
        // Pointer to Application UI. Not owned.
hgs
parents:
diff changeset
   169
        CAknViewAppUi* iAppUi;
hgs
parents:
diff changeset
   170
hgs
parents:
diff changeset
   171
        /**
hgs
parents:
diff changeset
   172
        * Pointer to listbox model's item texts. Note that the indexes of
hgs
parents:
diff changeset
   173
        * listbox items are mapped directly to the indexes in plugin array.
hgs
parents:
diff changeset
   174
        * Plugin which maps to selected listbox item index in plugin array is
hgs
parents:
diff changeset
   175
        * activated when item is selected in listbox.
hgs
parents:
diff changeset
   176
        *
hgs
parents:
diff changeset
   177
        * Owned by iListBox.
hgs
parents:
diff changeset
   178
        */
hgs
parents:
diff changeset
   179
        CDesCArray* iItemTextArray;
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
        // Given from CGSMainView - not owned
hgs
parents:
diff changeset
   182
        CArrayPtrFlat<CGSPluginInterface>* iPluginArray;
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
        // Array of pointers to iPluginArray plugins which are visible.
hgs
parents:
diff changeset
   185
        // This is the actual array which is displayed by the listbox.
hgs
parents:
diff changeset
   186
        // It is needed because iPluginArray also contains non-visible plugins
hgs
parents:
diff changeset
   187
        // and therefore the indexes do not match to lbx items.
hgs
parents:
diff changeset
   188
        CArrayPtrFlat<CGSPluginInterface>* iVisiblePlugins;
hgs
parents:
diff changeset
   189
        // Extension for main container.
hgs
parents:
diff changeset
   190
        CGsContainerExt* iExt;
hgs
parents:
diff changeset
   191
};
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
#endif // GSCONTAINER_H
hgs
parents:
diff changeset
   195
// End of File