S60 3rd Edition API Reference: eikbtgpc.h Source File

eikbtgpc.h

Go to the documentation of this file.
00001 // EIKBTGPC.H
00002 //
00003 // Copyright (c) 1998 Symbian Ltd.  All rights reserved.
00004 //
00005 
00006 #if !defined(__EIKBTGPC_H__)
00007 #define __EIKBTGPC_H__
00008 
00009 #if !defined(__COECNTRL_H__)
00010 #include <coecntrl.h>
00011 #endif
00012 
00013 #if !defined(__EIKBTGRP_H__)
00014 #include <eikbtgrp.h>
00015 #endif
00016 
00017 #if !defined(__EIKCMOBS_H__)
00018 #include <eikcmobs.h>
00019 #endif
00020 
00021 #if !defined(__LAFCCTEN_H__)
00022 #include <lafpublc.h>
00023 #endif
00024 
00025 #if !defined(__UIKON_HRH__)
00026 #include <uikon.hrh>
00027 #endif
00028 
00029 #include <AknControl.h>
00030 
00031 class MEikCommandObserver;
00032 class CEikButtonGroupStack;
00033 class CEikCommandButton;
00034 
00043 NONSHARABLE_CLASS(CEikButtonGroupContainer) : public CAknControl, public MEikCommandObserver
00044         {
00045 public:
00046         DECLARE_TYPE_ID(0x101F4107)
00047 
00048         enum TUse
00049                 {
00050                 EView                   =SLafButtonGroupContainer::EView,
00051                 EDialog                 =SLafButtonGroupContainer::EDialog,
00052                 EToolbar                =SLafButtonGroupContainer::EToolbar,            // deprecated (App-framework_6.1)
00053                 ECba                    =SLafButtonGroupContainer::ECba,                        // deprecated (App-framework_6.1)
00054                 EDialogButtons  =SLafButtonGroupContainer::EDialogButtons       // deprecated (App-framework_6.1)
00055                 };
00056         enum TOrientation
00057                 {
00058                 EVertical       =SLafButtonGroupContainer::EVertical,
00059                 EHorizontal =SLafButtonGroupContainer::EHorizontal
00060                 };
00061         enum TLocation
00062                 {
00063                 EInternal       =SLafButtonGroupContainer::EInternal,   // E.g. dialog buttons.
00064                 EExternal       =SLafButtonGroupContainer::EExternal// E.g. toolbar or cba.
00065                 };
00066         enum THotKeyFlags
00067                 {
00068                 EShowHotKey                     =0x01,
00069                 EPlainHotKey            =0x02
00070                 };
00071         enum TFlags
00072                 {
00073                 EAddToStack                     =0x01,
00074                 EDelayActivation        =0x02,
00075                 EUseMaxSize                     =0x04,
00076                 };
00077                 
00078 public:
00079         IMPORT_C static CEikButtonGroupContainer* NewL(TUse aUse,TOrientation aOrientation,
00080                                                                                                         MEikCommandObserver* aCommandObserver,TInt aResourceId,
00081                                                                                                         TUint aFlags=EAddToStack);
00082         IMPORT_C static CEikButtonGroupContainer* NewL(TUse aUse,TOrientation aOrientation,
00083                                                                                                         MEikCommandObserver* aCommandObserver,TInt aResourceId,
00084                                                                                                         const CCoeControl& aParent,TUint aFlags=EAddToStack);
00085         IMPORT_C static CEikButtonGroupContainer* NewL(TUse aUse,TOrientation aOrientation,
00086                                                                                                         MEikCommandObserver* aCommandObserver,TInt aResourceId,
00087                                                                                                         RWindowGroup& aParentWg,TUint aFlags=EAddToStack);
00088         IMPORT_C ~CEikButtonGroupContainer();
00089         IMPORT_C static CEikButtonGroupContainer* Current();
00090 public:
00091         inline void SetCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText);
00092         inline void SetCommandL(TInt aPosition,TInt aCommandId,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask);
00093         inline void SetCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask);
00094         inline void SetCommandL(TInt aPosition,TInt aCommandId,const TDesC& aFile,TInt aBitmapId,TInt aMaskId);
00095         inline void SetCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText,const TDesC& aFile,TInt aBitmapId,TInt aMaskId);
00096         inline void SetCommandL(TInt aPosition,TInt aResourceId);
00097         inline void SetCommandL(TInt aCommandId,const TDesC& aText);
00098         inline void SetCommandL(TInt aCommandId,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask);
00099         inline void SetCommandL(TInt aCommandId,const TDesC& aText,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask);
00100         inline void SetCommandL(TInt aCommandId,const TDesC& aFile,TInt aBitmapId,TInt aMaskId);
00101         inline void SetCommandL(TInt aCommandId,const TDesC& aText,const TDesC& aFile,TInt aBitmapId,TInt aMaskId);
00102         IMPORT_C void SetCommandSetL(TInt aResourceId);
00103         inline void AddCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText);
00104         inline void AddCommandL(TInt aPosition,TInt aCommandId,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask);
00105         inline void AddCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask);
00106         inline void AddCommandL(TInt aPosition,TInt aCommandId,const TDesC& aFile,TInt aBitmapId,TInt aMaskId);
00107         inline void AddCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText,const TDesC& aFile,TInt aBitmapId,TInt aMaskId);
00108         inline void AddCommandToStackL(TInt aPosition,TInt aCommandId,const TDesC& aText);
00109         inline void AddCommandToStackL(TInt aPosition,TInt aCommandId,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask);
00110         inline void AddCommandToStackL(TInt aPosition,TInt aCommandId,const TDesC& aText,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask);
00111         inline void AddCommandToStackL(TInt aPosition,TInt aCommandId,const TDesC& aFile,TInt aBitmapId,TInt aMaskId);
00112         inline void AddCommandToStackL(TInt aPosition,TInt aCommandId,const TDesC& aText,const TDesC& aFile,TInt aBitmapId,TInt aMaskId);
00113         inline void AddCommandToStackL(TInt aPosition,TInt aResourceId);
00114         IMPORT_C void AddCommandSetToStackL(TInt aResourceId);
00115         IMPORT_C void RemoveCommandFromStack(TInt aPosition,TInt aCommandId);
00116         IMPORT_C void SetDefaultCommand(TInt aCommandId); 
00117         IMPORT_C TSize CalcMinimumSizeL(TInt aResourceId) const;
00118         IMPORT_C void CleanupCommandPushL(TInt aPosition);
00119         inline void CleanupCommandPop();
00120         IMPORT_C void CleanupCommandPop(TInt aCount);
00121         inline void CleanupCommandPopAndDestroy();
00122         inline void CleanupCommandPopAndDestroy(TInt aCount);
00123         IMPORT_C TInt MaxCommands() const;
00124         IMPORT_C TInt ButtonCount() const;
00125     
00134         IMPORT_C void DimCommand(TInt aCommandId, TBool aDimmed);
00135         
00144         IMPORT_C TBool IsCommandDimmed(TInt aCommandId) const;
00145         
00154         IMPORT_C void MakeCommandVisible(TInt aCommandId, TBool aVisible);
00155 
00164         IMPORT_C TBool IsCommandVisible(TInt aCommandId) const;
00165 
00173         IMPORT_C void AnimateCommand(TInt aCommandId);
00174         
00175     
00176     
00177     
00178     
00179 
00180         IMPORT_C TLocation Location() const;
00181         IMPORT_C CEikCommandButton* CommandButtonOrNull(TInt aCommandId) const;
00182         // For use by EExternal button groups only.
00183         IMPORT_C void SetBoundingRect(const TRect& aRect);
00184         IMPORT_C void ReduceRect(TRect& aBoundingRect) const;
00185         //
00186         IMPORT_C CCoeControl* ControlOrNull(TInt aCommandId) const;
00187         IMPORT_C CEikCommandButton* ButtonById(TInt aCommandId) const;
00188         IMPORT_C TInt PositionById(TInt aCommandId) const;
00189         IMPORT_C void UpdateHotKey(TInt aCommandId,THotKeyFlags aFlags,TInt aKeyId);
00190         IMPORT_C void UpdateCommandObserverL(TInt aPos,MEikCommandObserver& aCommandObserver);
00191         IMPORT_C void RemoveCommandObserver(TInt aPos);
00192         IMPORT_C TBool DelayActivation() const;
00193         //
00194         inline MEikButtonGroup* ButtonGroup();
00195         inline TUse ButtonGroupType();
00196         
00197     
00198 public: // from CCoeControl
00199         IMPORT_C TSize MinimumSize();
00200         IMPORT_C TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
00201         void MakeVisible(TBool aVisible);
00202         IMPORT_C void WriteInternalStateL(RWriteStream& aWriteStream) const;
00203 public: // formerly from MTopSetMember<CEikButtonGroupContainer>, now reserved
00204         IMPORT_C virtual void Reserved_MtsmPosition();
00205         IMPORT_C virtual void Reserved_MtsmObject();
00206 
00207 public: // new functions for enhanced cba support
00213         IMPORT_C void OfferCommandListL(const RArray<TInt>&  aCommandList);
00214         
00220         IMPORT_C void OfferCommandListL(const TInt aResourceId);
00221 
00228         IMPORT_C TBool IsCommandInGroup(const TInt aCommandId) const;
00229         
00236         IMPORT_C void ReplaceCommand(const TInt aCommandId, const TInt aResourceId);
00237 
00238 private:
00239         enum TCommandOp {ESet, EAdd, EPush};
00240 private:
00241         class TCmdPos
00242                 {
00243         public:
00244                 inline TCmdPos();
00245                 inline TCmdPos(TInt aPos,TInt aCmd);
00246         public:
00247                 TInt iPos;
00248                 TInt iCmd;
00249                 };
00250         class TCmdObserver
00251                 {
00252         public:
00253                 inline TCmdObserver(TInt aPos,MEikCommandObserver& aObserver);
00254         public:
00255                 TInt iPos;
00256                 MEikCommandObserver& iObserver;
00257                 };
00258         class CCmdObserverArray : public CArrayFixFlat<TCmdObserver>
00259                 {
00260         public:
00261                 inline CCmdObserverArray();
00262                 TInt FindIndex(TInt aPos);
00263                 };
00264 private:
00265         CEikButtonGroupContainer(TUse aUse);
00266         void ConstructL(TOrientation aOrientation,MEikCommandObserver* aCommandObserver,TInt aResourceId,RWindowGroup* aParentWg,TUint aFlags);
00267         IMPORT_C void DoSetCommandL(TInt aPosition,TInt aCommandId,const TDesC* aText,const CFbsBitmap* aBitmap,const CFbsBitmap* aMask,TCommandOp aOp);
00268         IMPORT_C void DoSetCommandL(TInt aPosition,TInt aCommandId,const TDesC* aText,const TDesC& aFile,TInt aBitmapId,TInt aMaskId,TCommandOp aOp);
00269         IMPORT_C void DoSetCommandL(TInt aCommandId,const TDesC* aText,const CFbsBitmap* aBitmap,const CFbsBitmap* aMask,TCommandOp aOp);
00270         IMPORT_C void DoSetCommandL(TInt aCommandId,const TDesC* aText,const TDesC& aFile,TInt aBitmapId,TInt aMaskId,TCommandOp aOp);
00271         IMPORT_C void DoSetCommandL(TInt aPosition,TInt aResourceId,TCommandOp aOp);
00272         inline CCoeControl* ButtonGroupAsControl() const;
00273         void UpdateRect();
00274         static void CleanupCommandDestroy(TAny* aPtr);
00275         TCmdPos DoCleanupCommandPop();
00276         void DoCleanupCommandPopAndDestroy();
00277 private: // from CCoeControl
00278         TInt CountComponentControls() const;
00279         CCoeControl* ComponentControl(TInt aIndex) const;
00280         void SizeChanged();
00281 private: // from MEikCommandObserver
00282         void ProcessCommandL(TInt aCommandId);
00283         CCoeControl* CreateCustomCommandControlL(TInt aControlType);
00284 private:
00285         MEikButtonGroup* iButtonGroup;
00286         TUse iUse;
00287         CArrayFix<TCmdPos>* iCommandsCleanup;
00288         MEikCommandObserver* iCommandObserver;
00289         CCmdObserverArray* iObserverArray;
00290         TDblQueLink iBtLink;
00291         
00292         CEikListBox* iMSKObserverOwner;
00293 
00294     TInt iSpare;
00295 
00296 private:
00297         friend class CCmdObserverArray;
00298         friend class CEikButtonGroupStack;
00299         };
00300 
00301 
00308 inline void CEikButtonGroupContainer::SetCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText)
00309         {DoSetCommandL(aPosition,aCommandId,&aText,NULL,NULL,ESet);}
00318 inline void CEikButtonGroupContainer::SetCommandL(TInt aPosition,TInt aCommandId,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask)
00319         {DoSetCommandL(aPosition,aCommandId,NULL,&aBitmap,&aMask,ESet);}
00328 inline void CEikButtonGroupContainer::SetCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask)
00329         {DoSetCommandL(aPosition,aCommandId,&aText,&aBitmap,&aMask,ESet);}
00337 inline void CEikButtonGroupContainer::SetCommandL(TInt aPosition,TInt aCommandId,const TDesC& aFile,TInt aBitmapId,TInt aMaskId)
00338         {DoSetCommandL(aPosition,aCommandId,NULL,aFile,aBitmapId,aMaskId,ESet);}
00346 inline void CEikButtonGroupContainer::SetCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText,const TDesC& aFile,TInt aBitmapId,TInt aMaskId)
00347         {DoSetCommandL(aPosition,aCommandId,&aText,aFile,aBitmapId,aMaskId,ESet);}
00354 inline void CEikButtonGroupContainer::SetCommandL(TInt aPosition,TInt aResourceId)
00355         {DoSetCommandL(aPosition,aResourceId,ESet);}
00364 inline void CEikButtonGroupContainer::SetCommandL(TInt aCommandId,const TDesC& aText)
00365         {DoSetCommandL(aCommandId,&aText,NULL,NULL,ESet);}
00376 inline void CEikButtonGroupContainer::SetCommandL(TInt aCommandId,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask)
00377         {DoSetCommandL(aCommandId,NULL,&aBitmap,&aMask,ESet);}
00387 inline void CEikButtonGroupContainer::SetCommandL(TInt aCommandId,const TDesC& aText,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask)
00388         {DoSetCommandL(aCommandId,&aText,&aBitmap,&aMask,ESet);}
00399 inline void CEikButtonGroupContainer::SetCommandL(TInt aCommandId,const TDesC& aFile,TInt aBitmapId,TInt aMaskId)
00400         {DoSetCommandL(aCommandId,NULL,aFile,aBitmapId,aMaskId,ESet);}
00411 inline void CEikButtonGroupContainer::SetCommandL(TInt aCommandId,const TDesC& aText,const TDesC& aFile,TInt aBitmapId,TInt aMaskId)
00412         {DoSetCommandL(aCommandId,&aText,aFile,aBitmapId,aMaskId,ESet);}
00419 inline void CEikButtonGroupContainer::AddCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText)
00420         {DoSetCommandL(aPosition,aCommandId,&aText,NULL,NULL,EAdd);}
00427 inline void CEikButtonGroupContainer::AddCommandL(TInt aPosition,TInt aCommandId,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask)
00428         {DoSetCommandL(aPosition,aCommandId,NULL,&aBitmap,&aMask,EAdd);}
00435 inline void CEikButtonGroupContainer::AddCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask)
00436         {DoSetCommandL(aPosition,aCommandId,&aText,&aBitmap,&aMask,EAdd);}
00443 inline void CEikButtonGroupContainer::AddCommandL(TInt aPosition,TInt aCommandId,const TDesC& aFile,TInt aBitmapId,TInt aMaskId)
00444         {DoSetCommandL(aPosition,aCommandId,NULL,aFile,aBitmapId,aMaskId,EAdd);}
00451 inline void CEikButtonGroupContainer::AddCommandL(TInt aPosition,TInt aCommandId,const TDesC& aText,const TDesC& aFile,TInt aBitmapId,TInt aMaskId)
00452         {DoSetCommandL(aPosition,aCommandId,&aText,aFile,aBitmapId,aMaskId,EAdd);}
00459 inline void CEikButtonGroupContainer::AddCommandToStackL(TInt aPosition,TInt aCommandId,const TDesC& aText)
00460         {DoSetCommandL(aPosition,aCommandId,&aText,NULL,NULL,EPush);}
00467 inline void CEikButtonGroupContainer::AddCommandToStackL(TInt aPosition,TInt aCommandId,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask)
00468         {DoSetCommandL(aPosition,aCommandId,NULL,&aBitmap,&aMask,EPush);}
00475 inline void CEikButtonGroupContainer::AddCommandToStackL(TInt aPosition,TInt aCommandId,const TDesC& aText,const CFbsBitmap& aBitmap,const CFbsBitmap& aMask)
00476         {DoSetCommandL(aPosition,aCommandId,&aText,&aBitmap,&aMask,EPush);}
00483 inline void CEikButtonGroupContainer::AddCommandToStackL(TInt aPosition,TInt aCommandId,const TDesC& aFile,TInt aBitmapId,TInt aMaskId)
00484         {DoSetCommandL(aPosition,aCommandId,NULL,aFile,aBitmapId,aMaskId,EPush);}
00491 inline void CEikButtonGroupContainer::AddCommandToStackL(TInt aPosition,TInt aCommandId,const TDesC& aText,const TDesC& aFile,TInt aBitmapId,TInt aMaskId)
00492         {DoSetCommandL(aPosition,aCommandId,&aText,aFile,aBitmapId,aMaskId,EPush);}
00499 inline void CEikButtonGroupContainer::AddCommandToStackL(TInt aPosition,TInt aResourceId)
00500         {DoSetCommandL(aPosition,aResourceId,EPush);}
00506 inline void CEikButtonGroupContainer::CleanupCommandPop()
00507         {CleanupCommandPop(1);}
00514 inline void CEikButtonGroupContainer::CleanupCommandPopAndDestroy()
00515         {CleanupStack::PopAndDestroy();}
00522 inline void CEikButtonGroupContainer::CleanupCommandPopAndDestroy(TInt aCount)
00523         {CleanupStack::PopAndDestroy(aCount);}
00524 
00525 inline MEikButtonGroup* CEikButtonGroupContainer::ButtonGroup()
00526         {return iButtonGroup;}
00527 
00528 inline CEikButtonGroupContainer::TUse CEikButtonGroupContainer::ButtonGroupType()
00529         {return iUse;}
00530 
00531 #endif

Copyright © Nokia Corporation 2001-2007
Back to top