--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homesync/contentmanager/mediaservant/src/msbasecontainer.cpp Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,323 @@
+/*
+* Copyright (c) 2007 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: CMSBaseContainer class implementation
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <eikclbd.h>
+
+#include <aknlists.h>
+#include <barsread.h>
+#include <AknIconArray.h>
+#include <AknQueryDialog.h>
+#include <aknnotewrappers.h>
+#include <akncontext.h>
+
+#include "msbasecontainer.h"
+#include "msconstants.h"
+#include "msdebug.h"
+
+// ================= MEMBER FUNCTIONS =======================================
+
+// --------------------------------------------------------------------------
+// CMSBaseContainer::CMSBaseContainer()
+// Default constructor.
+// --------------------------------------------------------------------------
+//
+CMSBaseContainer::CMSBaseContainer()
+ {
+ LOG(_L("[MediaServant]\t CMSBaseContainer::CMSBaseContainer"));
+
+ iCoeEnv = CEikonEnv::Static();
+ }
+
+// --------------------------------------------------------------------------
+// CMSBaseContainer::~CMSBaseContainer()
+// Destructor.
+// --------------------------------------------------------------------------
+//
+CMSBaseContainer::~CMSBaseContainer()
+ {
+ LOG(_L("[MediaServant]\t CMSBaseContainer::~CMSBaseContainer"));
+ }
+
+// --------------------------------------------------------------------------
+// CMSBaseContainer::SetListBoxFromResourceL()
+// Sets listbox from resource using ConstructFromResourceL() of
+// CEikColumnListBox class.
+// --------------------------------------------------------------------------
+//
+void CMSBaseContainer::SetListBoxFromResourceL(
+ CEikColumnListBox* aListBox, const TInt aResourceId )
+ {
+ LOG(_L("[MediaServant]\t CMSBaseContainer::SetListBoxFromResourceL \
+ column listbox"));
+
+ if ( aListBox && aResourceId )
+ {
+ aListBox->SetContainerWindowL( *this );
+
+ TResourceReader reader;
+ iCoeEnv->CreateResourceReaderLC( reader, aResourceId );
+ aListBox->ConstructFromResourceL( reader );
+ CleanupStack::PopAndDestroy(); // resource stuffs.
+
+ // Creates scrollbar.
+ CreateScrollbarL( aListBox );
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CMSBaseContainer::SetListBoxFromResourceL()
+// Sets listbox from resource using ConstructFromResourceL() of
+// CEikFormattedCellListBox class.
+// --------------------------------------------------------------------------
+//
+void CMSBaseContainer::SetListBoxFromResourceL(
+ CEikFormattedCellListBox* aListBox,
+ const TInt aResourceId )
+ {
+ LOG(_L("[MediaServant]\t CMSBaseContainer::SetListBoxFromResourceL \
+ formatted cell listbox"));
+
+ if ( aListBox && aResourceId )
+ {
+ aListBox->SetContainerWindowL( *this );
+
+ TResourceReader reader;
+ iCoeEnv->CreateResourceReaderLC( reader, aResourceId );
+ aListBox->ConstructFromResourceL( reader );
+ CleanupStack::PopAndDestroy(); // resource stuffs.
+
+ // Creates scrollbar.
+ CreateScrollbarL( aListBox );
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CMSBaseContainer::AppendItemToListBoxArrayL()
+// Appends item to the list
+// --------------------------------------------------------------------------
+//
+void CMSBaseContainer::AppendItemToListBoxArrayL( CEikListBox* aListBox,
+ CTextListBoxModel* aModel,
+ TInt aIconIndex,
+ TDesC& aPrimaryText,
+ TDesC& aSecondaryText )
+ {
+ LOG(_L("[MediaServant]\t CMSBaseContainer::AppendItemToListBoxArrayL"));
+
+
+ if ( aListBox && aModel )
+ {
+ MDesCArray *itemList = aModel->ItemTextArray();
+ CDesCArray *itemArray = static_cast<CDesCArray*>( itemList );
+
+ TBuf<2> iconIndex; // magic: maximum icon count is 99
+ iconIndex.AppendNum( aIconIndex );
+
+ TInt newLen = iconIndex.Length() +
+ KSlashT().Length() +
+ (&aPrimaryText ? aPrimaryText.Length() : 0) +
+ KSlashT().Length() +
+ (&aSecondaryText ? aSecondaryText.Length() : 0);
+
+ HBufC* newText = HBufC::NewMaxLC( newLen );
+
+ // Create new item string
+ TPtr newTPtr = newText->Des();
+
+ newTPtr.Copy( iconIndex );
+ newTPtr.Append( KSlashT );
+
+ if ( &aPrimaryText )
+ {
+ newTPtr.Append( aPrimaryText );
+ }
+ newTPtr.Append( KSlashT );
+
+ if ( &aSecondaryText )
+ {
+ newTPtr.Append( aSecondaryText );
+ }
+
+ itemArray->AppendL(newTPtr);
+ CleanupStack::PopAndDestroy( newText );
+
+ aListBox->HandleItemAdditionL();
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CMSBaseContainer::AppendItemToListBoxArrayL()
+// Appends item to the list
+// --------------------------------------------------------------------------
+//
+void CMSBaseContainer::AppendItemToListBoxArrayL( CEikListBox* aListBox,
+ CTextListBoxModel* aModel,
+ TInt aIconIndex,
+ TDesC& aItemText )
+ {
+ LOG(_L("[MediaServant]\t CMSBaseContainer::AppendItemToListBoxArrayL"));
+
+
+ if ( aListBox && aModel )
+ {
+ MDesCArray *itemList = aModel->ItemTextArray();
+ CDesCArray *itemArray = static_cast<CDesCArray*>( itemList );
+
+ TBuf<2> iconIndex; // maximum icon count is 99
+ iconIndex.AppendNum( aIconIndex );
+
+ TInt newLen = iconIndex.Length() +
+ KSlashT().Length() +
+ (&aItemText ? aItemText.Length() : 0) +
+ KSlashT().Length() +
+ iconIndex.Length();
+
+ HBufC* newText = HBufC::NewMaxLC( newLen );
+
+ // Create new item string
+ TPtr newTPtr = newText->Des();
+
+ newTPtr.Copy( iconIndex );
+ newTPtr.Append( KSlashT );
+
+ if ( &aItemText )
+ {
+ newTPtr.Append( aItemText );
+ }
+ newTPtr.Append( KSlashT );
+
+ itemArray->AppendL(newTPtr);
+ CleanupStack::PopAndDestroy( newText );
+
+ aListBox->HandleItemAdditionL();
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CMSBaseContainer::AppendIconToArrayL()
+// Adds icon to iconarray
+// --------------------------------------------------------------------------
+//
+void CMSBaseContainer::AppendIconToArrayL(CAknIconArray* aArray,
+ MAknsSkinInstance* aSkin,
+ const TDesC& aMbmFile,
+ const TAknsItemID& aID,
+ TInt aBitmapId,
+ TInt aMaskId)
+ {
+ LOG(_L("[MediaServant]\t CMSBaseContainer::AppendIconToArrayL"));
+
+ __ASSERT_DEBUG( aArray, User::Leave(KErrArgument) );
+
+ CFbsBitmap* bitmap = NULL;
+ CFbsBitmap* mask = NULL;
+
+ AknsUtils::CreateIconLC(aSkin, aID,
+ bitmap, mask, aMbmFile, aBitmapId, aMaskId);
+
+ CGulIcon* icon = CGulIcon::NewL(bitmap, mask);
+ icon->SetBitmapsOwnedExternally(EFalse);
+
+ // icon now owns the bitmaps, no need to keep on cleanup stack.
+ CleanupStack::Pop(mask);
+ CleanupStack::Pop(bitmap);
+ bitmap = NULL;
+ mask = NULL;
+
+ CleanupStack::PushL(icon);
+
+ aArray->AppendL(icon);
+
+ // aArray now owns the icon, no need to delete.
+ CleanupStack::Pop(icon);
+
+ }
+
+// --------------------------------------------------------------------------
+// CMSBaseContainer::CreateScrollbarL()
+// Creates scrollbar.
+// --------------------------------------------------------------------------
+//
+void CMSBaseContainer::CreateScrollbarL( CEikListBox* aListBox )
+ {
+ LOG(_L("[MediaServant]\t CMSBaseContainer::CreateScrollbarL"));
+
+ if ( aListBox )
+ {
+ // Creates scrollbar.
+ aListBox->CreateScrollBarFrameL( ETrue );
+ aListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
+ CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CMSBaseContainer::UpdateScrollBar()
+// Update scroll bar.
+// --------------------------------------------------------------------------
+//
+void CMSBaseContainer::ShowNoteL ( TInt aResource, TInt aError )
+ {
+ LOG(_L("[MediaServant]\t CMSBaseContainer::ShowNoteL"));
+
+ // Show error note
+ CAknInformationNote* dlg = new(ELeave)CAknInformationNote();
+ TBuf<KMaxFileName> errorText;
+ iCoeEnv->ReadResourceL(errorText, aResource );
+ errorText.AppendNum( aError );
+ dlg->ExecuteLD(errorText);
+ }
+
+// --------------------------------------------------------------------------
+// CMSBaseContainer::SetContextPaneIconL()
+// Sets context pane icon.
+// --------------------------------------------------------------------------
+//
+void CMSBaseContainer::SetContextPaneIconL( const CFbsBitmap* aIconBitmap,
+ const CFbsBitmap* aIconMask )
+ {
+ LOG(_L("[MediaServant]\t CMSBaseContainer::SetContextPaneIconL"));
+
+ CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
+ CleanupStack::PushL( statusPane );
+ CAknContextPane* contextPane = ( CAknContextPane * )statusPane->
+ ControlL( TUid::Uid( EEikStatusPaneUidContext ) );
+ CleanupStack::Pop( statusPane );
+ contextPane->SetPicture( aIconBitmap, aIconMask );
+ }
+
+// --------------------------------------------------------------------------
+// CMSBaseContainer::SetDefaultContextPaneIconL()
+// Sets default context pane icon.
+// --------------------------------------------------------------------------
+//
+void CMSBaseContainer::SetDefaultContextPaneIconL()
+ {
+ LOG(_L("[MediaServant]\t CMSBaseContainer::SetDefaultContextPaneIconL"));
+
+ CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
+ CleanupStack::PushL( statusPane );
+ CAknContextPane* contextPane = ( CAknContextPane * )statusPane->
+ ControlL( TUid::Uid( EEikStatusPaneUidContext ) );
+ CleanupStack::Pop( statusPane );
+ contextPane->SetPictureToDefaultL();
+ }
+
+// End of File