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

eikspmod.h

Go to the documentation of this file.
00001 // EIKSPMOD.H
00002 //
00003 // Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
00004 //
00005 
00006 #if !defined(__EIKSPMOD_H__)
00007 #define __EIKSPMOD_H__
00008 
00009 #if !defined(__E32BASE_H__)
00010 #include <e32base.h>
00011 #endif
00012 
00013 #if !defined(__EIKON_HRH__)
00014 #include <uikon.hrh>
00015 #endif
00016 
00017 #if !defined(__EIKSRVC_H__)
00018 #include <eiksrvc.h>
00019 #endif
00020 
00021 
00022 class TResourceReader;
00023 class CEikStatusPaneLayoutTree;
00024 class CEikonEnv;
00025 class CAknSgcClient;
00026 #start_since SINCE_3_1_SDK
00027 class CEikStatusPaneLayout;
00031 namespace AknLayout { class CInstance; }
00035 namespace AknLayoutScalable_Avkon { class CInstance; }
00036 #end_since SINCE_3_1_SDK
00037 
00038 // Extra bit flags not defined in hrh file.
00039 const TInt KEikStatusPaneDirectionBit           = 0x04;
00040 const TInt KEikStatusPaneHiddenBit                      = 0x08;
00041 const TInt KEikStatusPaneInitInitializedBit     = 0x80000000;
00042 
00043 
00044 typedef TUid TPaneId;
00045 
00052 class TEikStatusPaneInit
00053         {
00054 public:
00058         TEikStatusPaneInit();
00059 
00063         TEikStatusPaneInit(const TEikStatusPaneInit& aCopy);
00064 
00068         TEikStatusPaneInit& operator=(const TEikStatusPaneInit& aCopy);
00069         
00074         inline TPaneId Id() const;
00075 
00084         void LoadDefaults(TResourceReader& aResource);
00085 
00091         inline TBool AppOwned() const;
00092         
00097         inline TInt ControlTypeId() const;
00098 
00103         inline TInt ControlResourceId() const;
00104 
00108         inline void SetHidden();
00109 
00113         inline void ClearHidden();
00114 
00119         inline TBool IsHidden() const;
00120 
00121 private:
00126         inline TBool Initialized();
00127 
00131         inline void SetInitialized();
00132 
00133 private:
00134         TPaneId iId;
00135         TInt iControlId;
00136         TInt iControlResource;
00137         TInt iFlags;
00138         };
00139 
00140 
00146 NONSHARABLE_CLASS(CEikStatusPaneSetInit) : public CArrayFixFlat<TEikStatusPaneInit>
00147         {
00148 public:
00149  
00153         static CEikStatusPaneSetInit* NewL();
00154 
00158         ~CEikStatusPaneSetInit();
00159 
00167         void LoadDefaultsL(TResourceReader& aResource);
00168         
00174         TEikStatusPaneInit& FindL(const TPaneId& aPaneId);
00175 
00176 private:
00177  
00181         CEikStatusPaneSetInit();
00182         };
00183 
00184 
00190 class MEikStatusPaneLayoutTreeVisitor
00191         {
00192 public:
00199         virtual void VisitL(CEikStatusPaneLayoutTree* aNode) = 0;
00200         };
00201 
00202 
00203 
00210 NONSHARABLE_CLASS(CEikStatusPaneLayoutTree) : public CBase
00211         {
00212 public:
00213         enum TDirection
00214                 {
00216                 EHorizontal,
00218                 EVertical
00219                 };
00220 
00221 public:
00225         ~CEikStatusPaneLayoutTree();
00226 #start_since SINCE_3_1_SDK
00227 
00234         static CEikStatusPaneLayoutTree* NewL(CEikStatusPaneLayout* aLayout, TResourceReader& aResource, TDirection aDefaultDirection = EHorizontal);
00235 #end_since SINCE_3_1_SDK
00236 
00243         CEikStatusPaneLayoutTree* Find(const TPaneId& aPaneId);
00244         
00250         void AcceptL(MEikStatusPaneLayoutTreeVisitor* aVisitor);
00251 
00256         inline TPaneId Id() const;
00257 
00262         inline TRect Rect() const;
00263 
00264 #start_since SINCE_3_1_SDK
00265 
00276     TRect AknLayoutRect(TInt aLayoutResourceId, TPaneId aPaneId);
00277 #end_since SINCE_3_1_SDK
00278 
00279 private:
00280 
00286         CEikStatusPaneLayoutTree(CEikStatusPaneLayout* aLayout, TDirection aDefaultDirection);
00287 
00292         void ConstructL(TResourceReader& aResource);
00293 
00298         void SetRect(const TRect& aRect);
00299 
00304         inline TDirection Direction();
00305         
00310         void SetDirection(TDirection aDirection);
00311         
00316         inline TInt Size();
00317         
00322         inline TBool Stretchable();
00323 
00328         void SetStretchable(TBool aStretchable);
00329         
00334         void Layout();
00335 
00348         void Layout(TInt aLayoutResourceId);
00349 
00358     void SetAknLayoutUsed(TBool aAknLayoutUsed);
00359     
00368     TBool AknLayoutUsed();
00369 
00370 private:
00371         TPaneId iId;
00372         TInt iFlags;
00373         TRect iRect;
00374         TInt iSize;
00375 
00376         typedef CArrayPtrFlat<CEikStatusPaneLayoutTree> CSubPaneArray;
00377         CSubPaneArray* iSubPanes;
00378 
00379         CEikStatusPaneLayout* iLayout;
00380         
00381 private:
00382         friend class CEikStatusPaneLayout;
00383         };
00384 
00385 
00392 NONSHARABLE_CLASS(CEikStatusPaneLayout) : public CBase
00393         {
00394 public:
00400         static CEikStatusPaneLayout* NewL(TResourceReader& aResource, const TRect& aScreenRect);
00401 
00408         static CEikStatusPaneLayout* NewL(TResourceReader& aResource, const TRect& aScreenRect, TInt aLayoutId);
00409         
00413         ~CEikStatusPaneLayout();
00414 
00420         inline CEikStatusPaneLayoutTree* Find(const TPaneId& aPaneId) const;
00421 
00426         inline void AcceptL(MEikStatusPaneLayoutTreeVisitor* aVisitor);
00427         
00432         inline TRect Rect() const;
00433 
00442         void AknLayoutRefresh(TInt aLayoutResourceId);
00443 
00453     TBool AknLayoutUsed();
00454 
00455 #start_since SINCE_3_1_SDK
00456 
00467     TRect AknLayoutRect(TInt aLayoutResourceId, TPaneId aPaneId);
00468 #end_since SINCE_3_1_SDK
00469 
00470 private:
00471 
00475         CEikStatusPaneLayout();
00476 
00480         void ConstructL(TResourceReader& aResource, const TRect& aScreenRect, TInt aLayoutId);
00481 
00482 private:
00483         CEikStatusPaneLayoutTree* iRoot;
00484 
00485 private:
00486 
00491         void UpdateLayoutData(TInt aLayoutResId);
00492         
00493 private:        // layout data for all nodes in CEikStatusPaneLayoutTree
00494         friend class CEikStatusPaneLayoutTree;
00495         const AknLayout::CInstance& iAknLayout;
00496         const AknLayoutScalable_Avkon::CInstance& iAknLayoutScalable_Avkon;
00497     TRect iScreenRect; 
00498     TRect iMainPaneRect;
00499     TRect iUsualStatusPaneRect;
00500     TRect iApplicationWindowRect;
00501         TRect iStaconLayout1Rect;
00502         TRect iStaconLayout2Rect;
00503         TRect iSmallStatusPaneRect;
00504         };
00505 
00506 
00512 class CEikStatusPaneModelBase : public CBase
00513         {
00514 public:
00515 
00519         IMPORT_C ~CEikStatusPaneModelBase();
00520 
00525         inline CEikStatusPaneSetInit* PaneInits() const;
00526         
00532         IMPORT_C virtual void SetLayoutL(TInt aLayoutResId, TBool aChangeStatusPaneNow = ETrue);
00533         
00538         inline CEikStatusPaneLayout* CurrentLayout() const;
00539 
00544         IMPORT_C TInt CurrentLayoutResId() const;
00545 
00554         void AknLayoutRefresh();
00555 
00566         TBool AknLayoutUsed(TInt aLayoutId);
00567 
00568 protected:
00569 
00574         NONSHARABLE_CLASS(CIdLayoutPair) : public CBase
00575                 {
00576         public:
00582                 CIdLayoutPair(TInt aResId, CEikStatusPaneLayout* aLayout);
00586                 ~CIdLayoutPair();
00587         public:
00588                 TInt iResId;
00589                 CEikStatusPaneLayout* iLayout;
00590                 };
00591         typedef CArrayPtrFlat<CIdLayoutPair> CLayoutIdSet;
00592         typedef CArrayFixFlat<TInt> CIdSet;
00593 
00594 protected:
00595         
00600         IMPORT_C CEikStatusPaneModelBase(CEikonEnv& aEikEnv);
00601 
00606         IMPORT_C void BaseConstructL(TInt aCoreResId);
00607 
00612         IMPORT_C CEikStatusPaneLayout* LoadLayoutL(TInt aLayoutResId);
00613 
00618         inline CIdSet* LegalIds() const;
00619         
00625         TBool IsLegalId(TInt aLayoutResId) const;
00626 
00627 private:
00632         CEikStatusPaneLayout* Layout(TInt aLayoutResId);
00633 
00638         void CheckLayoutL(CEikStatusPaneLayout* aLayout);
00639 
00640 private:
00641         IMPORT_C virtual void Reserved_1();
00642 
00643 private:
00644         NONSHARABLE_CLASS(TLayoutChecker) : public MEikStatusPaneLayoutTreeVisitor
00645                 {
00646         public:
00647                 TLayoutChecker(CEikStatusPaneSetInit* aPanes);
00648                 void VisitL(CEikStatusPaneLayoutTree* aNode);
00649         private:
00650                 CEikStatusPaneSetInit* iPanes;  
00651                 };
00652 
00653 protected:
00654         CLayoutIdSet* iLayouts;
00655         TInt iCurrentResId;
00656         CEikonEnv& iEikEnv;
00657 
00658 private:
00659         CEikStatusPaneSetInit* iPanes;
00660         CEikStatusPaneLayout* iCurrentLayout;
00661         CIdSet* iLegalIds;
00662         };
00663 
00664 
00670 NONSHARABLE_CLASS(CEikAppStatusPaneModel) : public CEikStatusPaneModelBase
00671         {
00672 public:
00682         static CEikAppStatusPaneModel* NewL(CEikonEnv& aEikEnv, /*REikSrvSession,*/ TInt aCoreResId, TInt aAppResId = EEikStatusPaneUseDefaults, TBool aChangeStatusPaneNow = ETrue);
00683         
00687         ~CEikAppStatusPaneModel();
00688 
00692         void ApplyCurrentLayoutL();
00693 
00694 public: 
00698         void SetLayoutL(TInt aLayoutResId, TBool aChangeStatusPaneNow = ETrue);
00699 public: 
00703         void SetLayoutL(TInt aLayoutResId, TBool aChangeStatusPaneNow, TBool aNotfiyServerSide);
00704 
00705 private:
00706         CEikAppStatusPaneModel(CEikonEnv& aEikEnv);
00707         void ConstructL(TInt aCoreResId, TInt aAppResId, TBool aChangeStatusPaneNow = ETrue);
00708         };
00709 
00710 
00711 inline TPaneId TEikStatusPaneInit::Id() const { return iId; }
00712 inline TBool TEikStatusPaneInit::AppOwned() const { return iFlags & EEikStatusPaneAppOwned; }
00713 inline TInt TEikStatusPaneInit::ControlTypeId() const { return iControlId; }
00714 inline TInt TEikStatusPaneInit::ControlResourceId() const { return iControlResource; }
00715 inline void TEikStatusPaneInit::SetHidden() {iFlags|=KEikStatusPaneHiddenBit;}
00716 inline void TEikStatusPaneInit::ClearHidden() {iFlags&=~KEikStatusPaneHiddenBit;}
00717 inline TBool TEikStatusPaneInit::IsHidden() const {return iFlags&KEikStatusPaneHiddenBit;}
00718 
00719 inline CEikStatusPaneLayoutTree* CEikStatusPaneLayout::Find(const TPaneId& aPaneId) const { return iRoot->Find(aPaneId); }
00720 inline void CEikStatusPaneLayout::AcceptL(MEikStatusPaneLayoutTreeVisitor* aVisitor) { iRoot->AcceptL(aVisitor); }
00721 inline TRect CEikStatusPaneLayout::Rect() const { return iRoot->Rect(); }
00722 
00723 inline TPaneId CEikStatusPaneLayoutTree::Id() const { return iId; }
00724 inline TRect CEikStatusPaneLayoutTree::Rect() const { return iRect; }
00725 
00726 
00727 inline CEikStatusPaneSetInit* CEikStatusPaneModelBase::PaneInits() const { return iPanes; }
00728 inline CEikStatusPaneLayout* CEikStatusPaneModelBase::CurrentLayout() const { return iCurrentLayout; }
00729 inline CEikStatusPaneModelBase::CIdSet* CEikStatusPaneModelBase::LegalIds() const { return iLegalIds; }
00730 
00731 #endif

Copyright © Nokia Corporation 2001-2007
Back to top