00001 /* 00002 * ============================================================================ 00003 * Name : aknnavi.h 00004 * Part of : AVKON 00005 * 00006 * Description: 00007 * A default control in the status pane's navigation pane. 00008 * 00009 * 00010 * Version: 00011 * 00012 * Copyright © 2002 Nokia Corporation. 00013 * This material, including documentation and any related 00014 * computer programs, is protected by copyright controlled by 00015 * Nokia Corporation. All rights are reserved. Copying, 00016 * including reproducing, storing, adapting or translating, any 00017 * or all of this material requires the prior written consent of 00018 * Nokia Corporation. This material also contains confidential 00019 * information which may not be disclosed to others without the 00020 * prior written consent of Nokia Corporation. 00021 * ============================================================================ 00022 */ 00023 00024 #ifndef AKNNAVI_H 00025 #define AKNNAVI_H 00026 00027 #include <AknControl.h> 00028 #include <coeccntx.h> 00029 #include <aknvolumecontrol.h> 00030 00031 class CAknNavigationDecorator; 00032 class CEikStatusPaneBase; 00033 class CFbsBitmap; 00034 class MAknTabObserver; 00035 class CAknNavigationControlContainerExtension; 00036 class MAknsControlContext; 00037 00038 class MAknNavigationDecoratorInterface 00039 { 00040 public: 00041 virtual ~MAknNavigationDecoratorInterface() { } 00042 virtual CCoeControl* DecoratedControl()=0; 00043 }; 00044 00045 class MAknNavigationContainerInterface 00046 { 00047 public: 00048 virtual ~MAknNavigationContainerInterface() { } 00049 virtual CAknNavigationDecorator* CreateMessageLabelL(const TDesC& aText)=0; 00050 virtual CAknNavigationDecorator* CreateTabGroupL()=0; 00051 virtual void PushL(CAknNavigationDecorator&)=0; 00052 virtual void Pop()=0; 00053 }; 00054 00055 00056 00060 class CAknNavigationControlContainer : public CAknControl, 00061 public MCoeControlContext, 00062 public MCoeControlObserver, 00063 public MAknNavigationContainerInterface 00064 { 00065 00066 public: 00067 00068 DECLARE_TYPE_ID(0x101F8740) 00069 00070 public: 00071 00077 IMPORT_C CAknNavigationControlContainer(); 00078 00084 IMPORT_C ~CAknNavigationControlContainer(); 00085 00089 IMPORT_C void ConstructL(); 00090 00098 IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); 00099 00107 IMPORT_C CAknNavigationDecorator* 00108 ConstructNavigationDecoratorFromResourceL( 00109 TResourceReader& aReader); 00110 00118 IMPORT_C CAknNavigationDecorator* CreateTabGroupL(); 00119 00127 IMPORT_C CAknNavigationDecorator* CreateTabGroupL( 00128 MAknTabObserver* aObserver); 00129 00138 IMPORT_C CAknNavigationDecorator* CreateTabGroupL( 00139 TResourceReader& aReader); 00140 00150 IMPORT_C CAknNavigationDecorator* CreateTabGroupL( 00151 TResourceReader& aReader, 00152 MAknTabObserver* aObserver); 00153 00162 IMPORT_C CAknNavigationDecorator* CreateNavigationLabelL( 00163 const TDesC& aText = KNullDesC); 00164 00173 IMPORT_C CAknNavigationDecorator* CreateNavigationLabelL( 00174 TResourceReader& aReader); 00175 00188 IMPORT_C CAknNavigationDecorator* CreateNavigationImageL( 00189 const CFbsBitmap* aBitmap = NULL, 00190 const CFbsBitmap* aMaskBitmap = NULL); 00191 00201 IMPORT_C CAknNavigationDecorator* CreateNavigationImageL( 00202 TResourceReader& aReader); 00203 00213 IMPORT_C CAknNavigationDecorator* CreateMessageLabelL( 00214 const TDesC& aText = KNullDesC); 00215 00225 IMPORT_C CAknNavigationDecorator* CreateMessageLabelL( 00226 TResourceReader& aReader); 00227 00235 IMPORT_C CAknNavigationDecorator* CreateVolumeIndicatorL(TInt aResourceId); 00236 00244 IMPORT_C CAknNavigationDecorator* CreateEditorIndicatorContainerL(); 00245 00254 IMPORT_C void PushDefaultL( TBool aAllowDuplicates = EFalse ); 00255 00268 IMPORT_C void PushL(CAknNavigationDecorator& aNaviPaneControl); 00269 00278 IMPORT_C void Pop(); 00279 00286 IMPORT_C void Pop(CAknNavigationDecorator* aControl); 00287 00296 IMPORT_C CAknNavigationDecorator* Top(); 00297 00298 #start_since SINCE_3_1_SDK 00299 00312 IMPORT_C CAknNavigationDecorator* Top(TBool aIgnoreFepEditorIndicator) const; 00313 #end_since SINCE_3_1_SDK 00314 00328 IMPORT_C TInt ReplaceL(CAknNavigationDecorator& aToBeReplaced, 00329 CAknNavigationDecorator& aReplacement); 00330 00339 IMPORT_C CAknNavigationDecorator* ResourceDecorator(); 00340 00347 CFbsBitmap& NaviArrowBitmap(TInt aId); 00348 00349 public: 00350 00351 #start_since SINCE_3_1_SDK 00352 00364 IMPORT_C void SetPreferredNaviDecoratorLayoutStyle(TInt aLayoutStyle); 00365 #end_since SINCE_3_1_SDK 00366 00371 IMPORT_C static TInt ColorScheme(); 00372 00378 void NotifyNaviWipeStatusL(); 00379 00385 static TInt CurrentNaviWipeBitmap(); 00386 00394 IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 00395 00396 protected: // from CCoeControl 00397 00403 IMPORT_C virtual void SizeChanged(); 00404 00413 IMPORT_C virtual void HandleResourceChange(TInt aType); 00414 00422 IMPORT_C virtual TInt CountComponentControls() const; 00423 00432 IMPORT_C virtual CCoeControl* ComponentControl(TInt aIndex) const; 00433 00434 protected: // from MCoeControlObserver 00435 00444 IMPORT_C void HandleControlEventL(CCoeControl* aControl, 00445 TCoeEvent aEventType); 00446 00447 private: // from CCoeControl 00448 00449 IMPORT_C virtual void Draw(const TRect& aRect) const; 00450 00451 private: 00452 00456 IMPORT_C void* ExtensionInterface( TUid aInterface ); 00457 00458 public: 00459 00467 TBool NaviWipeUsed() const; 00468 00474 CFbsBitmap* NaviColorBitmap() const; 00475 00482 static void SetBackgroundContextAttributes(CCoeControl* aControl, 00483 TBool aNaviWipeUsed); 00484 00485 private: 00486 TBool IsFepOwnedEditorIndicatorControl(CAknNavigationDecorator* aDecorator) const; 00487 void HandleVisibilityOfNonFepOwnedIndicatorControl( 00488 CAknNavigationDecorator* aDecorator, TBool aVisible); 00489 00500 TBool DrawDefaultNaviWipe(CWindowGc& aGc, const TRect& aRect) const; 00501 00512 TBool DrawDefaultNaviSolid(CWindowGc& aGc, const TRect& aRect) const; 00513 00525 TBool DrawSkinnedNaviWipe(CWindowGc& aGc, const TRect& aRect, MAknsSkinInstance* aSkin, MAknsControlContext* aCc) const; 00526 00538 TBool DrawSkinnedNaviSolid(CWindowGc& aGc, const TRect& aRect, MAknsSkinInstance* aSkin, MAknsControlContext* aCc) const; 00539 00540 00545 void LoadNaviColorBitmapL(); 00546 00547 void SetContainerWindowNonFading(TBool aNonFading); 00548 00549 protected: // from CCoeControl 00550 00568 TTypeUid::Ptr MopSupplyObject(TTypeUid aId); 00569 00570 private: 00571 CEikStatusPaneBase* iStatusPane; 00572 00573 CAknNavigationDecorator* iNaviDecoratorFromResource; 00574 00575 typedef CArrayPtrFlat<CAknNavigationDecorator> CAknNaviPaneStack; 00576 CAknNaviPaneStack* iNaviPaneControls; 00577 00578 CFbsBitmap* iNaviArrowBitmap[4]; 00579 00580 TInt iSpare; 00581 CAknNavigationControlContainerExtension* iExtension; 00582 }; 00583 00584 00585 // AKNNAVI_H 00586 #endif