phoneuis/BubbleManager/Inc/BMBubbleImageManager.h
changeset 0 5f000ab63145
equal deleted inserted replaced
-1:000000000000 0:5f000ab63145
       
     1 /*
       
     2 * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  This class handles all bitmaps
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #ifndef BUBBLEIMAGEMANAGER_H
       
    21 #define BUBBLEIMAGEMANAGER_H
       
    22 
       
    23 // INCLUDES
       
    24 
       
    25 #include    <e32base.h>
       
    26 #include    <bldvariant.hrh>
       
    27 #include    <AknsItemID.h>
       
    28 #include    <AknsConstants.h>
       
    29 #include    <AknsItemData.h>
       
    30 
       
    31 // CONSTANTS
       
    32 const TInt KBMMaxFileNameLength = 100;
       
    33 
       
    34 // FORWARD DECLARATIONS
       
    35 class CBubbleSkinBitmap;
       
    36 class CEikImage;
       
    37 class CFbsBitmap;
       
    38 
       
    39 // DATA TYPES
       
    40 
       
    41 // Do NOT change order or numbering!!
       
    42 enum TBMIcons
       
    43     {
       
    44     ///////////////////////////////////////////////////////////////////////////
       
    45     // Cached icons
       
    46     ///////////////////////////////////////////////////////////////////////////
       
    47     EQgn_indi_call_active = 0,
       
    48     EQgn_indi_call_active_mask,
       
    49     EQgn_indi_call_active_2,
       
    50     EQgn_indi_call_active_2_mask,
       
    51     EQgn_indi_call_disconn,
       
    52     EQgn_indi_call_disconn_mask,
       
    53     EQgn_indi_call_held,
       
    54     EQgn_indi_call_held_mask,
       
    55     EQgn_indi_call_video_callsta_1,
       
    56     EQgn_indi_call_video_callsta_1_mask,
       
    57     EQgn_indi_call_video_callsta_2,
       
    58     EQgn_indi_call_video_callsta_2_mask,
       
    59     EQgn_indi_call_video_callsta_disconn,
       
    60     EQgn_indi_call_video_callsta_disconn_mask,
       
    61     EQgn_indi_call_voip_active,
       
    62     EQgn_indi_call_voip_active_mask,
       
    63     EQgn_indi_call_voip_active_2,
       
    64     EQgn_indi_call_voip_active_2_mask,
       
    65     EQgn_indi_call_voip_held,
       
    66     EQgn_indi_call_voip_held_mask,
       
    67     EQgn_indi_call_voip_callsta_disconn,
       
    68     EQgn_indi_call_voip_callsta_disconn_mask,
       
    69     // Animated call icons
       
    70     EQgn_indi_call_waiting_1,
       
    71     EQgn_indi_call_waiting_1_mask,
       
    72     EQgn_indi_call_waiting_2,
       
    73     EQgn_indi_call_waiting_2_mask,
       
    74     EQgn_indi_call_waiting_disconn,
       
    75     EQgn_indi_call_waiting_disconn_mask,
       
    76     EQgn_indi_call_video_1,
       
    77     EQgn_indi_call_video_1_mask,
       
    78     EQgn_indi_call_video_2,
       
    79     EQgn_indi_call_video_2_mask,
       
    80     EQgn_indi_call_video_disconn,
       
    81     EQgn_indi_call_video_disconn_mask,
       
    82     EQgn_indi_call_voip_waiting_1,
       
    83     EQgn_indi_call_voip_waiting_1_mask,
       
    84     EQgn_indi_call_voip_waiting_2,
       
    85     EQgn_indi_call_voip_waiting_2_mask,
       
    86     EQgn_indi_call_voip_disconn,
       
    87     EQgn_indi_call_voip_disconn_mask,    
       
    88     // Background for NE + single call (not cached, if frame icons in use)
       
    89     EQgn_graf_call_rec_big,
       
    90     EQgn_graf_call_rec_big_mask, 
       
    91     EQgn_graf_call_rec_big_disconn,
       
    92     EQgn_graf_call_rec_big_disconn_mask,
       
    93     EQgn_graf_call_first_one_active,
       
    94     EQgn_graf_call_first_one_active_mask,
       
    95     EQgn_graf_call_first_one_disconn,
       
    96     EQgn_graf_call_first_one_disconn_mask,
       
    97     ///////////////////////////////////////////////////////////////////////////
       
    98     // Non-cached icons
       
    99     ///////////////////////////////////////////////////////////////////////////
       
   100     EQgn_graf_call_first_one_held,
       
   101     EQgn_graf_call_first_one_held_mask,
       
   102     EQgn_indi_call_active_cyph_off,
       
   103     EQgn_indi_call_active_cyph_off_mask,
       
   104     EQgn_indi_call_disconn_cyph_off,
       
   105     EQgn_indi_call_disconn_cyph_off_mask,
       
   106     EQgn_indi_call_held_cyph_off,
       
   107     EQgn_indi_call_held_cyph_off_mask,
       
   108     EQgn_indi_call_cyphering_off,
       
   109     EQgn_indi_call_cyphering_off_mask,
       
   110     EQgn_indi_call_line2,
       
   111     EQgn_indi_call_line2_mask,
       
   112     EQgn_indi_call_active_emergency,
       
   113     EQgn_indi_call_active_emergency_mask,
       
   114     EQgn_indi_call_waiting_cyph_off_1,
       
   115     EQgn_indi_call_waiting_cyph_off_1_mask,
       
   116     EQgn_indi_call_waiting_disconn_cyph_off,
       
   117     EQgn_indi_call_waiting_disconn_cyph_off_mask,
       
   118     EQgn_graf_call_first_one_active_emergency,
       
   119     EQgn_graf_call_first_one_active_emergency_mask,
       
   120     EQgn_graf_call_two_active_emergency,
       
   121     EQgn_graf_call_two_active_emergency_mask,
       
   122     EQgn_graf_call_rec_big_right,
       
   123     EQgn_graf_call_rec_big_right_mask,
       
   124     EQgn_graf_call_rec_big_right_disconn,
       
   125     EQgn_graf_call_rec_big_right_disconn_mask,
       
   126     EQgn_graf_call_conf_five,
       
   127     EQgn_graf_call_conf_five_mask,
       
   128     EQgn_graf_call_conf_four,
       
   129     EQgn_graf_call_conf_four_mask,
       
   130     EQgn_graf_call_conf_three,
       
   131     EQgn_graf_call_conf_three_mask,
       
   132     EQgn_graf_call_conf_two,
       
   133     EQgn_graf_call_conf_two_mask,
       
   134     EQgn_graf_call_first_three_active,
       
   135     EQgn_graf_call_first_three_active_mask,
       
   136     EQgn_graf_call_first_three_disconn,
       
   137     EQgn_graf_call_first_three_disconn_mask,
       
   138     EQgn_graf_call_first_three_held,
       
   139     EQgn_graf_call_first_three_held_mask,
       
   140     EQgn_graf_call_first_two_active,
       
   141     EQgn_graf_call_first_two_active_mask,
       
   142     EQgn_graf_call_first_two_disconn,
       
   143     EQgn_graf_call_first_two_disconn_mask,
       
   144     EQgn_graf_call_first_two_held,
       
   145     EQgn_graf_call_first_two_held_mask,
       
   146     EQgn_graf_call_first_wait_active,
       
   147     EQgn_graf_call_first_wait_active_mask,
       
   148     EQgn_graf_call_first_wait_disconn,
       
   149     EQgn_graf_call_first_wait_disconn_mask,
       
   150     EQgn_graf_call_hidden_held,
       
   151     EQgn_graf_call_hidden_held_mask,
       
   152     EQgn_graf_call_rec_big_left,
       
   153     EQgn_graf_call_rec_big_left_mask,
       
   154     EQgn_graf_call_rec_big_left_disconn,
       
   155     EQgn_graf_call_rec_big_left_disconn_mask,
       
   156     EQgn_graf_call_rec_small_left,
       
   157     EQgn_graf_call_rec_small_left_mask,
       
   158     EQgn_graf_call_rec_small_right,
       
   159     EQgn_graf_call_rec_small_right_mask,
       
   160     EQgn_graf_call_rec_small_right_disconn,
       
   161     EQgn_graf_call_rec_small_right_disconn_mask,
       
   162     EQgn_graf_call_rec_bigger,
       
   163     EQgn_graf_call_rec_bigger_mask,
       
   164     EQgn_graf_call_second_three_active,
       
   165     EQgn_graf_call_second_three_active_mask,
       
   166     EQgn_graf_call_second_three_disconn,
       
   167     EQgn_graf_call_second_three_disconn_mask,
       
   168     EQgn_graf_call_second_three_held,
       
   169     EQgn_graf_call_second_three_held_mask,
       
   170     EQgn_graf_call_second_two_active,
       
   171     EQgn_graf_call_second_two_active_mask,
       
   172     EQgn_graf_call_second_two_disconn,
       
   173     EQgn_graf_call_second_two_disconn_mask,
       
   174     EQgn_graf_call_second_two_held,
       
   175     EQgn_graf_call_second_two_held_mask,
       
   176     EQgn_indi_call_active_conf,
       
   177     EQgn_indi_call_active_conf_mask,
       
   178     EQgn_indi_call_disconn_conf,
       
   179     EQgn_indi_call_disconn_conf_mask,
       
   180     EQgn_indi_call_diverted,
       
   181     EQgn_indi_call_diverted_mask,
       
   182     EQgn_indi_call_held_conf,
       
   183     EQgn_indi_call_held_conf_mask,
       
   184     EQgn_indi_call_muted,
       
   185     EQgn_indi_call_muted_mask,
       
   186     EQgn_prop_nrtyp_mobile_div,
       
   187     EQgn_prop_nrtyp_mobile_div_mask,
       
   188     EQgn_prop_nrtyp_phone_div,
       
   189     EQgn_prop_nrtyp_phone_div_mask,
       
   190     EQgn_indi_call_active_conf_cyph_off,
       
   191     EQgn_indi_call_active_conf_cyph_off_mask,
       
   192     EQgn_indi_call_active_cyph_off_2,
       
   193     EQgn_indi_call_active_cyph_off_2_mask,
       
   194     EQgn_indi_call_disconn_conf_cyph_off,
       
   195     EQgn_indi_call_disconn_conf_cyph_off_mask,
       
   196     EQgn_indi_call_held_conf_cyph_off,
       
   197     EQgn_indi_call_held_conf_cyph_off_mask,
       
   198     EQgn_indi_call_waiting_cyph_off_2,
       
   199     EQgn_indi_call_waiting_cyph_off_2_mask,
       
   200     EQgn_prop_nrtyp_home_div,
       
   201     EQgn_prop_nrtyp_home_div_mask,
       
   202     EQgn_prop_nrtyp_work_div,
       
   203     EQgn_prop_nrtyp_work_div_mask,
       
   204     EQgn_graf_call_image_1,
       
   205     EQgn_graf_call_image_1_mask,
       
   206     EQgn_indi_call4_image_mask_prt, 
       
   207     EQgn_indi_call4_image_mask_lsc, 
       
   208     // From avkon.mbm
       
   209     EQgn_prop_nrtyp_fax,
       
   210     EQgn_prop_nrtyp_fax_mask,
       
   211     EQgn_prop_nrtyp_home,
       
   212     EQgn_prop_nrtyp_home_mask,
       
   213     EQgn_prop_nrtyp_mobile,
       
   214     EQgn_prop_nrtyp_mobile_mask,
       
   215     EQgn_prop_nrtyp_pager,
       
   216     EQgn_prop_nrtyp_pager_mask,
       
   217     EQgn_prop_nrtyp_phone,
       
   218     EQgn_prop_nrtyp_phone_mask,
       
   219     EQgn_prop_nrtyp_work,
       
   220     EQgn_prop_nrtyp_work_mask,
       
   221     EQgn_prop_nrtyp_voip,
       
   222     EQgn_prop_nrtyp_voip_mask,
       
   223     EQgn_prop_nrtyp_car,
       
   224     EQgn_prop_nrtyp_car_mask,
       
   225     EQgn_prop_nrtyp_assistant,
       
   226     EQgn_prop_nrtyp_assistant_mask
       
   227     };
       
   228 
       
   229 
       
   230 
       
   231 // CLASS DECLARATION
       
   232 
       
   233 /**
       
   234 *  CBubbleImageManager class
       
   235 *  This class handles all bitmaps
       
   236 *
       
   237 *  @lib bubblemanager
       
   238 *  @since Series60_1.0
       
   239 */
       
   240 class CBubbleImageManager : public CBase
       
   241     {
       
   242 
       
   243     public: // Constructors and destructor
       
   244 
       
   245         /**
       
   246         * Two phase constructor
       
   247         * @param aFrameIcons ETrue if 9-piece bubbles are used.
       
   248         * @return New instance
       
   249         */
       
   250         static CBubbleImageManager* NewL( TBool aFrameIcons );
       
   251 
       
   252         /**
       
   253         * Destructor.
       
   254         */
       
   255         ~CBubbleImageManager();
       
   256 
       
   257     public: // New functions
       
   258 
       
   259         /**
       
   260         * Set given bitmap to CEikImage object.
       
   261         * @param aImage Image which the bitmap is set to.
       
   262         * @param aPicture Bitmap enum.
       
   263         */
       
   264         void SetBitmapToImage( CEikImage*& aImage , 
       
   265                                const TBMIcons& aPicture );
       
   266 
       
   267         /**
       
   268         * Set given bitmap to CEikImage object.
       
   269         * @param aImage Image which the bitmap is set to.
       
   270         * @param aPicture Bitmap enum.
       
   271         * @param aPictureMask Bitmap mask enum.
       
   272         */
       
   273         void SetBitmapToImage( CEikImage*& aImage , 
       
   274                                const TBMIcons& aPicture, 
       
   275                                const TBMIcons& aPictureMask );
       
   276 
       
   277         /**
       
   278         * Clears skinned bitmaps. Call only between StartChanges() and
       
   279         * EndChanges()!!!
       
   280         * @since 2.0
       
   281         */
       
   282         void ClearSkinsCache();
       
   283         
       
   284         /**
       
   285         * This method prepares cached bitmaps. SVG icons cannot be
       
   286         * used before they are initialized. Using this method ensures 
       
   287         * validity of most essentials icons in OOM situation.  
       
   288         * @since 3.1
       
   289         */
       
   290         void PrepareCachedBitmaps();
       
   291 
       
   292     protected:
       
   293         /**
       
   294         * Constructor.
       
   295         */
       
   296         CBubbleImageManager( TBool aFrameIcons );
       
   297 
       
   298         // From CTimer
       
   299         void RunL();
       
   300 
       
   301         // Set bitmap+mask to given image
       
   302         void SetBitmapToImage( CEikImage& aImage , 
       
   303                                const TBMIcons& aPicture, 
       
   304                                const TBMIcons& aPictureMask );
       
   305 
       
   306         // Maps enumeration to mbm file
       
   307         void MapEnumToMbmFile( const TBMIcons aBmIcon,
       
   308                                TInt& aMbm,
       
   309                                TDes& aFileName ) const;
       
   310 
       
   311         // Maps emumeration to skin id
       
   312         void MapEnumToSkin( const TBMIcons aBmIcon, 
       
   313                             TAknsItemID& aItemId, 
       
   314                             TInt& aColorGroupId ) const;
       
   315 
       
   316         // Finds skin for given enumeration
       
   317         TBool GetSkin( CEikImage&     aImage, 
       
   318                        const TBMIcons aBmIcon, 
       
   319                        const TBMIcons aBmIconMask );
       
   320 
       
   321         // Loads new skin image into cache
       
   322         void LoadAndAppendSkinL( const TBMIcons aBmIcon,
       
   323                                  const TBMIcons aBmIconMask,
       
   324                                  CFbsBitmap*&   aBitmap, 
       
   325                                  CFbsBitmap*&   aMask );
       
   326                                  
       
   327         // Initialize bitmaps
       
   328         TBool DoInitializeBitmaps();
       
   329         
       
   330         // Callback function for CIdle
       
   331         static TInt InitializeBitmaps( TAny* aThis );
       
   332         
       
   333         // Load cached bitmaps
       
   334         void LoadCachedBitmapsL();
       
   335     
       
   336     private:
       
   337         // Returns id for last icon kept in cache
       
   338         inline TInt LastCachedIcon();
       
   339 
       
   340     private: // private functions
       
   341         /**
       
   342         * Symbian OS 2nd phase constructor.
       
   343         */
       
   344         void ConstructL();
       
   345 
       
   346     private: //data
       
   347 
       
   348         // MBM file name
       
   349         TBuf<KBMMaxFileNameLength> iMbmFileBuffer;
       
   350 
       
   351         // Cached skin bitmaps
       
   352         RPointerArray<CBubbleSkinBitmap> iSkinnedBitmaps;
       
   353         // Ordering function pointer.
       
   354         TLinearOrder<CBubbleSkinBitmap> iOrder;
       
   355 
       
   356         // Compares two different skin images
       
   357         static TInt CompareSkinnedData(
       
   358             const CBubbleSkinBitmap& aSkinnedBitmap1, 
       
   359             const CBubbleSkinBitmap& aSkinnedBitmap2 );
       
   360             
       
   361         // Bitmap initialization
       
   362         CIdle* iBitmapInitializer;
       
   363         TInt   iBitmapInitIndex;
       
   364         
       
   365         // 9-piece background icons used 
       
   366         TBool iFrameIcons;
       
   367 
       
   368     private:
       
   369         friend class CT_CBubbleImageManager;
       
   370     };
       
   371 
       
   372 #endif //BUBBLEIMAGEMANAGER_H
       
   373 
       
   374 // End of File