calendarui/controller/src/calenattalistitemarray.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 27 Apr 2010 16:36:22 +0300
branchRCL_3
changeset 21 9711e452b5e9
parent 0 f979ecb2b13e
permissions -rw-r--r--
Revision: 201015 Kit: 201017

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/

// ========== INCLUDE FILES ================================
#include <msvapi.h>
#include <eikspane.h>
#include <eikmenup.h>
#include <AknDef.h>
#include <aknappui.h>
#include <akntitle.h>
#include <aknnavi.h>
#include <aknlists.h>
#include <gulicon.h>
#include <coeutils.h>               // for ConeUtils::FileExists
#include <bautils.h>
#include <aknnotewrappers.h>
#include <AknWaitDialog.h>          // CAknWaitDialog
#include <DocumentHandler.h>
#include <StringLoader.h>           // StringLoader
#include <AiwCommon.h>
#include <NpdApi.h>
#include <avkon.hrh>
#include <aknlayout.cdl.h>
#include <aknlayoutscalable_avkon.cdl.h>
#include <AknUtils.h>
#include <AknsUtils.h>          // skinned icons
#include <AknsConstants.h>      // skinned icon ids

#include "calenattachmentinfo.h"
#include "calenattachmentmodel.h"
#include "calenviewattachmentsdialog.h"
#include "calenattachmentutils.h"
#include "calenattalistitemarray.h"
#include "calendarui_debug.h"

#include <calendar.mbg>
#include "calendar.hrh"
#include <Calendar.rsg>       // resouce identifiers
#include <calencommonui.rsg>

#include <aknlistloadertfx.h>
#include <aknlistboxtfxinternal.h>

// ========== CONSTANTS ====================================

_LIT( KStripList, "\x000A\x000D\x2029\x2028\x0085" );

// ================= MEMBER FUNCTIONS =======================


// ----------------------------------------------------------------------------
// CCalenAttaListItemArray::NewL
// Two-phased constructor.
// (other items were commented in a header).
// ----------------------------------------------------------------------------
//
CCalenAttaListItemArray* CCalenAttaListItemArray::NewL(
                                        CCalenAttachmentModel& aAttachmentModel,
                                                CArrayPtr<CGulIcon>* aIconArray )
    {
    TRACE_ENTRY_POINT;
    
    CCalenAttaListItemArray* self = new ( ELeave ) CCalenAttaListItemArray(
                                                                aAttachmentModel,
                                                                    aIconArray );

    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop(); // self
    
    TRACE_EXIT_POINT;
    return self;
    }

// ----------------------------------------------------------------------------
// CCalenAttaListItemArray::~CCalenAttaListItemArray
// Destructor.
// (other items were commented in a header).
// ----------------------------------------------------------------------------
//
CCalenAttaListItemArray::~CCalenAttaListItemArray()
    {
    TRACE_ENTRY_POINT;
    
    delete iListItemText;    
    TRACE_EXIT_POINT;
    }

// ----------------------------------------------------------------------------
// CCalenAttaListItemArray::ConstructL
// (other items were commented in a header).
// ----------------------------------------------------------------------------
//
void CCalenAttaListItemArray::ConstructL()
    {
    TRACE_ENTRY_POINT;
    
    iListItemText = new ( ELeave ) TBuf<100>;   
    TRACE_EXIT_POINT;
    }

// ----------------------------------------------------------------------------
// CCalenAttaListItemArray::MdcaCount
// returns the count of the items in attachment model.
// ----------------------------------------------------------------------------
//
TInt CCalenAttaListItemArray::MdcaCount() const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    
    return iAttachmentModel.NumberOfItems();
    }

// ----------------------------------------------------------------------------
// CCalenAttaListItemArray::MdcaPoint
// ----------------------------------------------------------------------------
//
TPtrC CCalenAttaListItemArray::MdcaPoint(TInt aIndex) const
    {
    TRACE_ENTRY_POINT;
    
    CCalenAttachmentInfo& attInfo = iAttachmentModel.AttachmentInfoAt( aIndex );

    // if application icon has been inserted previously, delete it from index 0
    // and insert new app icon to index 0.
    iIconArray->Reset();
    TRAP_IGNORE( iIconArray->AppendL( attInfo.Icon() ) );

    // then get the file name from atta info full path name.
    TParsePtrC parser( attInfo.FileName() );
    TFileName filename( parser.NameAndExt() );
    
    HBufC* convertedFilename = NULL;

    if ( filename.Length() == 0 )
        {
        CEikonEnv::Static()->ReadResource( filename, R_QTN_CALEN_NO_NAME_FOR_FILE );
        }
    else
        {
        TRAP_IGNORE( convertedFilename = AknTextUtils::ConvertFileNameL( filename ) );
        
        TPtr convertedFileNamePtr = convertedFilename->Des();
        AknTextUtils::StripCharacters( convertedFileNamePtr, KStripList );
        }
        
    // generate item text for list item by combining
    // icon index (always zero), file name and file size.
    iListItemText->Zero();

    iListItemText->AppendNum( 0 );
    iListItemText->Append( KColumnListSeparator );
    
    if ( convertedFilename )
        {
        iListItemText->Append( *convertedFilename );
        delete convertedFilename;
        }
    else
        {
        iListItemText->Append( filename );
        }
    
    iListItemText->Append( KColumnListSeparator ); 
    
    // Get the size of the attachment in string format
    HBufC* sizeString = attInfo.SizeString();
    
    // Cobvert the string to buff with proper length
    TBuf<KCalenAttaSizeStringLength> sizeStringBuf;
    sizeStringBuf.Zero();
    sizeStringBuf.Append( *sizeString );
    
    // Append the size string of the attachment
    iListItemText->Append(sizeStringBuf);
    
    // delete the size string
    delete sizeString;
    
    TRACE_EXIT_POINT;
    return *iListItemText;
    }

// ----------------------------------------------------------------------------
// CCalenAttaListItemArray::CCalenAttaListItemArray
// Constructor
// (other items were commented in a header).
// ----------------------------------------------------------------------------
//
CCalenAttaListItemArray::CCalenAttaListItemArray(CCalenAttachmentModel& aAttachmentModel,
      CArrayPtr<CGulIcon>* aIconArray ):
      iAttachmentModel( aAttachmentModel ),
      iIconArray( aIconArray )
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    }

// End of File