calendarui/organizerplugin/aiagendaplugin2/src/aicalendarplugin2constantdata.cpp
author andy simpson <andrews@symbian.org>
Thu, 02 Sep 2010 15:47:07 +0100
branchRCL_3
changeset 67 1539a383d7b6
parent 5 42814f902fe6
parent 66 bd7edf625bdd
permissions -rw-r--r--
Merge after removal of incorrect RCL_3 drop

/*
* Copyright (c) 2005-2006 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 "aicalendarplugin2constantdata.h"
#include "aicalendarplugin2contentmodel.h"
#include <aicalendarplugin2res.rsg>
#include <avkon.rsg>
#include <StringLoader.h>
#include <aicontentmodel.h>
#include <aiutility.h>
#include <AknUtils.h>

// CONSTANTS
#include "aicalendarplugin2constants.hrh"

_LIT( KAI2CalShortDayName, "%*E" );

template<class Array>
void CleanupReset(TAny* aObj)
    {
    static_cast<Array*>(aObj)->Reset();
    delete aObj;
    }

template<class Array>
void CleanupResetPushL(Array& aPointerArray)
    {
    CleanupStack::PushL( TCleanupItem(&CleanupReset<Array>, &aPointerArray) );
    }
// ============================ MEMBER FUNCTIONS ===============================

CAICalendarPlugin2ConstantData* CAICalendarPlugin2ConstantData::NewL()
    {
    CAICalendarPlugin2ConstantData* self = new( ELeave )CAICalendarPlugin2ConstantData;
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
    }

CAICalendarPlugin2ConstantData::CAICalendarPlugin2ConstantData()
  : iDaysToHandleAsNotToday( KAIRangeTomorrowOnly ) // platform defaults to "tomorrow only"
    {
    }

void CAICalendarPlugin2ConstantData::ConstructL()
    {
    // load time format strings
    iTimeFormatUsual = StringLoader::LoadL( R_QTN_TIME_USUAL );
    iDateFormatWithoutYearWithZero = StringLoader::LoadL( R_QTN_DATE_WITHOUT_YEAR_WITH_ZERO );
    iDateFormatShortWithZero = StringLoader::LoadL( R_QTN_DATE_SHORT_WITH_ZERO );    
    iContent = AiUtility::CreateContentItemArrayIteratorL( KAICalendarPlugin2Content );
    iResources = AiUtility::CreateContentItemArrayIteratorL( KAICalendarPlugin2Resources );
    iEvents = AiUtility::CreateContentItemArrayIteratorL( KAICalendarPlugin2Events );
    }

CAICalendarPlugin2ConstantData::~CAICalendarPlugin2ConstantData()
    {
    Release( iEvents );
    Release( iResources );
    Release( iContent );    
    delete iDateFormatShortWithZero;
    delete iDateFormatWithoutYearWithZero;
    delete iTimeFormatUsual;
    delete iNextEventOnCombined;
    }
    
const TDesC& CAICalendarPlugin2ConstantData::TimeFormatUsual()
    {
    return *iTimeFormatUsual;
    }

const TDesC& CAICalendarPlugin2ConstantData::DateFormatWithoutYearWithZero()
    {
    return *iDateFormatWithoutYearWithZero;
    }

const TDesC& CAICalendarPlugin2ConstantData::MakeEventOnL( const TTime& aTime )
    {
    delete iNextEventOnCombined;
    iNextEventOnCombined = NULL;
    
    CDesC16ArrayFlat* desArray = new(ELeave) CDesC16ArrayFlat( 2 );
    CleanupStack::PushL( desArray );

    
    // Format day name short (Mon, Tue etc.)
    HBufC* day = HBufC::NewLC( KAICal2SizeDayShort );
    TPtr bufPtr2 = day->Des();
    aTime.FormatL( bufPtr2, KAI2CalShortDayName );
    desArray->AppendL( *day );
    CleanupStack::PopAndDestroy( day );
    
    
    // Format date (8/11  31/1/08 etc)
    TTime today;
    today.HomeTime();
    TDateTime todayDate = today.DateTime();
    TDateTime time = aTime.DateTime();
    HBufC* date = HBufC::NewLC( KAICal2SizeDateShort );
    TPtr bufPtr = date->Des();
    if( todayDate.Year() == time.Year() )
        {
        aTime.FormatL( bufPtr, *iDateFormatWithoutYearWithZero );
        }
    else
        {
        aTime.FormatL( bufPtr, *iDateFormatShortWithZero );
        }
    AknTextUtils::LanguageSpecificNumberConversion( bufPtr );
    desArray->AppendL( *date );
    CleanupStack::PopAndDestroy( date );
    
    
    // Load the string with formatters
    iNextEventOnCombined = StringLoader::LoadL( R_QTN_AI_CALE_NEXT_LATER, *desArray );

    // Destroy the formatters
    CleanupStack::PopAndDestroy(); // desArray
    
    return *iNextEventOnCombined;
    }

TAny* CAICalendarPlugin2ConstantData::GetPropertyL( CHsContentPublisher::TProperty aProperty )
    {
    if( aProperty == CHsContentPublisher::EPublisherContent )
        {
        return iContent;
        }
    else if( aProperty == CHsContentPublisher::EPublisherResources )
        {
        return iResources;
        }
    else if( aProperty == CHsContentPublisher::EPublisherEvents )
        {
        return iEvents;
        }
    else if( aProperty == CHsContentPublisher::EPluginName )
        {
        return StringLoader::LoadL( R_QTN_AI_CALE_PLUGIN_NAME );
        }
		
    return NULL;
    }