mpxplugins/viewplugins/views/addtracksdialog/src/mpxaddtrackslbxarray.cpp
changeset 0 ff3acec5bc43
equal deleted inserted replaced
-1:000000000000 0:ff3acec5bc43
       
     1 /*
       
     2 * Copyright (c) 2006 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:  Listbox array for add tracks dialog
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include <AknsSkinInstance.h>
       
    21 #include <gulicon.h>
       
    22 #include <AknIconArray.h>
       
    23 #include <AknUtils.h>
       
    24 #include <AknsUtils.h>
       
    25 
       
    26 #include <data_caging_path_literals.hrh>
       
    27 #include <mpxaddtracksdialog.mbg>
       
    28 #include <mpxlog.h>
       
    29 #include <mpxmediageneraldefs.h>
       
    30 #include <mpxuser.h>
       
    31 
       
    32 #include "mpxaddtracksdialog.hrh"
       
    33 #include "mpxaddtracksdialogcommon.h"
       
    34 #include "mpxaddtrackslistmodel.h"
       
    35 #include "mpxaddtrackslbxarray.h"
       
    36 
       
    37 // CONSTANTS
       
    38 const TInt KMPXLbxIconsCount =
       
    39     CMPXAddTracksLbxArray::EMPXATLbxIconsCount;
       
    40 
       
    41 const TInt KMaxTitleLength = 261;  // 255 + 6 for tab
       
    42 _LIT( KMPXTab, "\t" );
       
    43 _LIT( KMPXIndent, "  " );
       
    44 
       
    45 // ============================ MEMBER FUNCTIONS ===============================
       
    46 
       
    47 // -----------------------------------------------------------------------------
       
    48 // CMPXAddTracksLbxArray::NewL
       
    49 // Two-phased constructor.
       
    50 // -----------------------------------------------------------------------------
       
    51 //
       
    52 CMPXAddTracksLbxArray* CMPXAddTracksLbxArray::NewL(
       
    53     CMPXAddTracksListModel* aModel )
       
    54     {
       
    55     MPX_FUNC( "CMPXAddTracksLbxArray::NewL" );
       
    56     CMPXAddTracksLbxArray* self =
       
    57         new (ELeave) CMPXAddTracksLbxArray( aModel );
       
    58     CleanupStack::PushL(self);
       
    59     self->ConstructL();
       
    60     CleanupStack::Pop();
       
    61 
       
    62     return self;
       
    63     }
       
    64 
       
    65 // -----------------------------------------------------------------------------
       
    66 // Destructor.
       
    67 // -----------------------------------------------------------------------------
       
    68 //
       
    69 CMPXAddTracksLbxArray::~CMPXAddTracksLbxArray()
       
    70     {
       
    71     MPX_DEBUG1( "CMPXAddTracksLbxArray::~CMPXAddTracksLbxArray START" );
       
    72     delete iItem;
       
    73     MPX_DEBUG1( "CMPXAddTracksLbxArray::~CMPXAddTracksLbxArray END" );
       
    74     }
       
    75 
       
    76 // -----------------------------------------------------------------------------
       
    77 // CMPXAddTracksLbxArray::CreateIconArrayL
       
    78 // Create listbox icons array.
       
    79 // (other items were commented in a header).
       
    80 // -----------------------------------------------------------------------------
       
    81 //
       
    82 CArrayPtr<CGulIcon>* CMPXAddTracksLbxArray::CreateIconArrayL()
       
    83     {
       
    84     MPX_FUNC( "CMPXAddTracksLbxArray::CreateIconArrayL" );
       
    85     TParse parse;
       
    86     parse.Set( KMPXAddTracksBmpFile, &KDC_APP_RESOURCE_DIR, NULL );
       
    87     TFileName iconFile( parse.FullName() );
       
    88     User::LeaveIfError( MPXUser::CompleteWithDllPath( iconFile ) );
       
    89 
       
    90     CAknIconArray* icons = new ( ELeave ) CAknIconArray( KMPXLbxIconsCount );
       
    91     CleanupStack::PushL(icons);
       
    92 
       
    93     // Create expand icon
       
    94     AppendColorIconToArrayL(
       
    95         icons,
       
    96         KAknsIIDNone,
       
    97         KAknsIIDNone,
       
    98         EAknsMinorNone,
       
    99         iconFile,
       
   100         EMbmMpxaddtracksdialogQgn_graf_mup_lst_expd_track,
       
   101         EMbmMpxaddtracksdialogQgn_graf_mup_lst_expd_track_mask );
       
   102 
       
   103     // Create collapse icon
       
   104     AppendColorIconToArrayL(
       
   105         icons,
       
   106         KAknsIIDNone,
       
   107         KAknsIIDNone,
       
   108         EAknsMinorNone,
       
   109         iconFile,
       
   110         EMbmMpxaddtracksdialogQgn_graf_mup_lst_colpsd_track,
       
   111         EMbmMpxaddtracksdialogQgn_graf_mup_lst_colpsd_track_mask );
       
   112 
       
   113     // Create expand icon
       
   114     AppendColorIconToArrayL(
       
   115         icons,
       
   116         KAknsIIDNone,
       
   117         KAknsIIDNone,
       
   118         EAknsMinorNone,
       
   119         iconFile,
       
   120         EMbmMpxaddtracksdialogQgn_graf_mup_lst_expd_artist,
       
   121         EMbmMpxaddtracksdialogQgn_graf_mup_lst_expd_artist_mask );
       
   122 
       
   123     // Create collapse icon
       
   124     AppendColorIconToArrayL(
       
   125         icons,
       
   126         KAknsIIDNone,
       
   127         KAknsIIDNone,
       
   128         EAknsMinorNone,
       
   129         iconFile,
       
   130         EMbmMpxaddtracksdialogQgn_graf_mup_lst_colpsd_artist,
       
   131         EMbmMpxaddtracksdialogQgn_graf_mup_lst_colpsd_artist_mask );
       
   132 
       
   133     // Create empty icon
       
   134     AppendColorIconToArrayL(
       
   135         icons,
       
   136         KAknsIIDNone,
       
   137         KAknsIIDNone,
       
   138         EAknsMinorNone,
       
   139         iconFile,
       
   140         EMbmMpxaddtracksdialogQgn_graf_mup_lst_empty,
       
   141         EMbmMpxaddtracksdialogQgn_graf_mup_lst_empty_mask );
       
   142 
       
   143     // Create selection confirm animation icon 1
       
   144     AppendColorIconToArrayL(
       
   145         icons,
       
   146         KAknsIIDQgnIndiMmcAdd,
       
   147         KAknsIIDQsnIconColors,
       
   148         EAknsCIQsnIconColorsCG13,
       
   149         iconFile,
       
   150         EMbmMpxaddtracksdialogQgn_graf_mup_adtl_chmrk_fr01,
       
   151         EMbmMpxaddtracksdialogQgn_graf_mup_adtl_chmrk_fr01_mask );
       
   152 
       
   153     // Create selection confirm animation icon 2
       
   154     AppendColorIconToArrayL(
       
   155         icons,
       
   156         KAknsIIDQgnIndiMmcAdd,
       
   157         KAknsIIDQsnIconColors,
       
   158         EAknsCIQsnIconColorsCG13,
       
   159         iconFile,
       
   160         EMbmMpxaddtracksdialogQgn_graf_mup_adtl_chmrk_fr02,
       
   161         EMbmMpxaddtracksdialogQgn_graf_mup_adtl_chmrk_fr02_mask );
       
   162 
       
   163     // Create selection confirm animation icon 3
       
   164     AppendColorIconToArrayL(
       
   165         icons,
       
   166         KAknsIIDQgnIndiMmcAdd,
       
   167         KAknsIIDQsnIconColors,
       
   168         EAknsCIQsnIconColorsCG13,
       
   169         iconFile,
       
   170         EMbmMpxaddtracksdialogQgn_graf_mup_adtl_chmrk_fr03,
       
   171         EMbmMpxaddtracksdialogQgn_graf_mup_adtl_chmrk_fr03_mask );
       
   172 
       
   173     // Create selection confirm animation icon 4
       
   174     AppendColorIconToArrayL(
       
   175         icons,
       
   176         KAknsIIDQgnIndiMmcAdd,
       
   177         KAknsIIDQsnIconColors,
       
   178         EAknsCIQsnIconColorsCG13,
       
   179         iconFile,
       
   180         EMbmMpxaddtracksdialogQgn_graf_mup_adtl_chmrk_fr04,
       
   181         EMbmMpxaddtracksdialogQgn_graf_mup_adtl_chmrk_fr04_mask );
       
   182 
       
   183     // Create icon for MMC
       
   184     AppendColorIconToArrayL(
       
   185         icons,
       
   186         KAknsIIDQgnIndiMmcAdd,
       
   187         KAknsIIDQsnIconColors,
       
   188         EAknsCIQsnIconColorsCG13,
       
   189         iconFile,
       
   190         EMbmMpxaddtracksdialogQgn_indi_mmc_add,
       
   191         EMbmMpxaddtracksdialogQgn_indi_mmc_add_mask );
       
   192 
       
   193     CleanupStack::Pop( icons );
       
   194 
       
   195     return icons;
       
   196     }
       
   197 
       
   198 // -----------------------------------------------------------------------------
       
   199 // CMPXAddTracksLbxArray::MdcaCount
       
   200 // Returns the number of descriptor elements in a descriptor.
       
   201 // (other items were commented in a header).
       
   202 // -----------------------------------------------------------------------------
       
   203 //
       
   204 TInt CMPXAddTracksLbxArray::MdcaCount() const
       
   205     {
       
   206     MPX_FUNC( "CMPXAddTracksLbxArray::MdcaCount" );
       
   207     return iModel->TracksListCount();
       
   208     }
       
   209 
       
   210 // -----------------------------------------------------------------------------
       
   211 // CMPXAddTracksLbxArray::MdcaPoint
       
   212 // Indexes into a descriptor array.
       
   213 // (other items were commented in a header).
       
   214 // -----------------------------------------------------------------------------
       
   215 //
       
   216 TPtrC CMPXAddTracksLbxArray::MdcaPoint( TInt aIndex ) const
       
   217     {
       
   218     //MPX_FUNC( "CMPXAddTracksLbxArray::MdcaPoint" );
       
   219     TPtrC item;
       
   220 
       
   221     TPtr ptr = iItem->Des();
       
   222     ptr.Zero();
       
   223 
       
   224     TInt iconIndex;
       
   225     TBool indent = EFalse;
       
   226     TInt trackType = EMPXNoType;
       
   227     MPX_TRAPD( error, trackType = iModel->TrackTypeL( aIndex ) );
       
   228 
       
   229     if ( error == KErrNone && trackType == EMPXGroup )
       
   230         {
       
   231         TInt category = EMPXSong;
       
   232         TRAP_IGNORE( category = iModel->TrackCategoryL(aIndex));
       
   233         if ( aIndex == 0 && category != EMPXArtist)
       
   234             {
       
   235             iconIndex = EMPXATLbxIconTrackExpand;
       
   236             if ( iModel->IsExpandedIndex( aIndex ) )
       
   237                 {
       
   238                 iconIndex = EMPXATLbxIconTrackCollapse;
       
   239                 }
       
   240             }
       
   241         else
       
   242             {
       
   243             iconIndex = EMPXATLbxIconArtistExpand;
       
   244             if ( iModel->IsExpandedIndex( aIndex ) )
       
   245                 {
       
   246                 iconIndex = EMPXATLbxIconArtistCollapse;
       
   247                 }
       
   248             }
       
   249         }
       
   250     else
       
   251         {
       
   252         // Indent if tracks
       
   253         iconIndex = EMPXATLbxIconEmpty;
       
   254         indent = ETrue;
       
   255         }
       
   256 
       
   257     ptr.AppendNum( iconIndex );
       
   258     ptr.Append( KMPXTab );
       
   259     if ( indent )
       
   260         {
       
   261         ptr.Append( KMPXIndent );
       
   262         }
       
   263     ptr.Append( iModel->TrackName( aIndex ) );
       
   264 
       
   265     TInt animIconIndex = iModel->AnimationIconNum( aIndex );
       
   266     if(animIconIndex != 0)
       
   267         {
       
   268         ptr.Append( KMPXTab );
       
   269         ptr.AppendNum( animIconIndex );
       
   270         }
       
   271 
       
   272     TBool isRemovable( EFalse );
       
   273     isRemovable = iModel->IsOnRemovableDrive( aIndex );
       
   274     if ( isRemovable )
       
   275         {
       
   276         ptr.Append( KMPXTab );
       
   277         ptr.AppendNum( EMPXATLbxIconMMC );
       
   278         }
       
   279 
       
   280     item.Set( *iItem );
       
   281     return item;
       
   282     }
       
   283 
       
   284 // -----------------------------------------------------------------------------
       
   285 // CMPXAddTracksLbxArray::CMPXAddTracksLbxArray
       
   286 // C++ default constructor can NOT contain any code, that
       
   287 // might leave.
       
   288 // -----------------------------------------------------------------------------
       
   289 //
       
   290 CMPXAddTracksLbxArray::CMPXAddTracksLbxArray(
       
   291     CMPXAddTracksListModel* aModel ) :
       
   292     iModel( aModel )
       
   293     {
       
   294     }
       
   295 
       
   296 // -----------------------------------------------------------------------------
       
   297 // CMPXAddTracksLbxArray::ConstructL
       
   298 // Symbian 2nd phase constructor can leave.
       
   299 // -----------------------------------------------------------------------------
       
   300 //
       
   301 void CMPXAddTracksLbxArray::ConstructL()
       
   302     {
       
   303     MPX_FUNC( "CMPXAddTracksLbxArray::ConstructL" );
       
   304     // iItem length cannot be defined dynamically as MdcaPoint is const function
       
   305     iItem = HBufC::NewL( KMaxTitleLength ) ;
       
   306     }
       
   307 
       
   308 // -----------------------------------------------------------------------------
       
   309 // CMPXAddTracksLbxArray::AppendIconToArrayL
       
   310 // Load icon (with mask) and append it to an icon array.
       
   311 // (other items were commented in a header).
       
   312 // -----------------------------------------------------------------------------
       
   313 //
       
   314 void CMPXAddTracksLbxArray::AppendColorIconToArrayL(
       
   315     CAknIconArray* aArray,
       
   316     const TAknsItemID& aID,
       
   317     const TAknsItemID& aColorId,
       
   318     TInt aColorIndex,
       
   319     const TDesC& aMbmFile,
       
   320     TInt aBitmapId,
       
   321     TInt aMaskId )
       
   322     {
       
   323     MPX_FUNC( "CMPXAddTracksLbxArray::AppendColorIconToArrayL" );
       
   324     __ASSERT_DEBUG( aArray != NULL,
       
   325         User::Panic( _L( "AppendColorIconToArrayL" ), KErrArgument ) );
       
   326 
       
   327     CFbsBitmap* bitmap = NULL;
       
   328     CFbsBitmap* mask = NULL;
       
   329 
       
   330     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   331 
       
   332     if ( aColorId == KAknsIIDNone )
       
   333         {
       
   334         // do not use theme color, use the default color from the file
       
   335         AknsUtils::CreateIconLC( skin, aID,
       
   336             bitmap, mask, aMbmFile, aBitmapId, aMaskId );
       
   337         }
       
   338     else
       
   339         {
       
   340         // use theme color
       
   341         AknsUtils::CreateColorIconLC( skin, aID, aColorId, aColorIndex,
       
   342             bitmap, mask, aMbmFile, aBitmapId, aMaskId, KRgbBlack );
       
   343         }
       
   344 
       
   345     CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
       
   346     icon->SetBitmapsOwnedExternally(EFalse);
       
   347     CleanupStack::Pop( 2 ); // bitmap, mask
       
   348     bitmap = NULL;
       
   349     mask = NULL;
       
   350 
       
   351     CleanupStack::PushL( icon );
       
   352     aArray->AppendL( icon );
       
   353     CleanupStack::Pop( icon );
       
   354     }
       
   355 
       
   356 //  End of File