--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homesync/contentmanager/mediaservant/src/msitembrowser.cpp Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,316 @@
+/*
+* 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: CMSItemBrowser class implementation
+*
+*/
+
+
+
+#include <AknIconArray.h>
+#include <mediaservant.rsg>
+#include <mediaservant.mbg>
+#include <avkon.mbg>
+#include <aknnotedialog.h>
+#include <StringLoader.h>
+#include <e32math.h>
+
+#include "cmbaselistitem.h"
+#include "msappui.h"
+#include "msitembrowser.h"
+#include "msengine.h"
+#include "msconstants.h"
+#include "msdebug.h"
+
+
+// --------------------------------------------------------------------------
+// CMSItemBrowser::ConstructL()
+// --------------------------------------------------------------------------
+//
+void CMSItemBrowser::ConstructL( TRect aRect )
+ {
+ LOG(_L("[MediaServant]\t CMSItemBrowser::ConstructL"));
+
+ GetBrowseDataL();
+
+ CreateWindowL();
+
+ iListBox = new (ELeave) CAknDoubleGraphicStyleListBox;
+
+ SetListBoxFromResourceL(iListBox, R_BROWSE_VIEW_LISTBOX);
+
+ // Create icons
+ CAknIconArray* icons = new (ELeave) CAknIconArray( EIconCount );
+ CleanupStack::PushL( icons );
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+
+ // mark icon
+ AppendIconToArrayL( icons, skin,
+ KAvkonMifFileName,
+ KAknsIIDDefault,
+ EMbmAvkonQgn_indi_marked_add,
+ EMbmAvkonQgn_indi_marked_add_mask );
+
+ // image icon
+ AppendIconToArrayL( icons, skin,
+ KMSMifFileName,
+ KAknsIIDDefault,
+ EMbmMediaservantQgn_prop_file_image,
+ EMbmMediaservantQgn_prop_file_image_mask );
+ // audio icon
+ AppendIconToArrayL( icons, skin,
+ KMSMifFileName,
+ KAknsIIDDefault,
+ EMbmMediaservantQgn_prop_file_audio,
+ EMbmMediaservantQgn_prop_file_audio_mask );
+ // video icon
+ AppendIconToArrayL( icons, skin,
+ KMSMifFileName,
+ KAknsIIDDefault,
+ EMbmMediaservantQgn_prop_file_video,
+ EMbmMediaservantQgn_prop_file_video_mask );
+
+
+ iListBox->ItemDrawer()->FormattedCellData()->SetIconArray(icons);
+ CleanupStack::Pop(icons);
+
+ // Container is listbox observer
+ iListBox->SetListBoxObserver( this );
+
+ SetRect(aRect);
+
+ // Add data to listbox
+ UpdateListBoxDataL();
+
+ ActivateL(); // Activates window. ( Ready to draw )
+ }
+
+// --------------------------------------------------------------------------
+// CMSItemBrowser::~CMSItemBrowser
+// --------------------------------------------------------------------------
+CMSItemBrowser::~CMSItemBrowser()
+ {
+ if ( iItemArray )
+ {
+ iItemArray->ResetAndDestroy();
+ iItemArray->Close();
+ delete iItemArray;
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CMSItemBrowser::CountComponentControls()
+// Returns number of components.
+// --------------------------------------------------------------------------
+//
+TInt CMSItemBrowser::CountComponentControls() const
+ {
+ return 1; // return number of controls inside this container
+ }
+
+// --------------------------------------------------------------------------
+// CMSItemBrowser::ComponentControl()
+// Returns pointer to particular component.
+// --------------------------------------------------------------------------
+//
+CCoeControl* CMSItemBrowser::ComponentControl( TInt /*aIndex*/) const
+
+ {
+ return iListBox; // return a pointer to the listbox
+ }
+
+// --------------------------------------------------------------------------
+// CMSItemBrowser::OfferKeyEventL()
+// Handles the key events.
+// --------------------------------------------------------------------------
+//
+TKeyResponse CMSItemBrowser::OfferKeyEventL(
+ const TKeyEvent& aKeyEvent,
+ TEventCode aType )
+ {
+ LOG(_L("[MediaServant]\t CMSItemBrowser::OfferKeyEventL"));
+
+ TKeyResponse response = EKeyWasNotConsumed;
+
+ if ( aType != EEventKey )
+ {
+ response = EKeyWasNotConsumed;
+ }
+
+ if ( iListBox )
+ {
+ response = iListBox->OfferKeyEventL( aKeyEvent, aType );
+ }
+
+ return response;
+ }
+
+// --------------------------------------------------------------------------
+// CMSItemBrowser::HandleListBoxEventL()
+// Handles listbox event.
+// --------------------------------------------------------------------------
+void CMSItemBrowser::HandleListBoxEventL(
+ CEikListBox* /*aListBox*/,
+ TListBoxEvent /*aEventType*/ )
+ {
+ LOG(_L("[MediaServant]\t CMSItemBrowser::HandleListBoxEventL"));
+ }
+
+// --------------------------------------------------------------------------
+// CMSItemBrowser::ReadDataFromEngineL()
+// Reads data items from engine
+// --------------------------------------------------------------------------
+//
+void CMSItemBrowser::UpdateListBoxDataL()
+ {
+ LOG(_L("[MediaServant]\t CMSItemBrowser::UpdateListBoxDataL"));
+
+ // Listbox items
+ CDesCArray* itemArray = static_cast<CDesCArray*>
+ (iListBox->Model()->ItemTextArray());
+ // Clear list
+ itemArray->Reset();
+
+ TInt count = iItemArray->Count();
+
+ for (TInt index = 0; index < count; index++)
+ {
+ TInt iconType;
+ CCmBaseListItem* item = (*iItemArray)[index];
+ TUint32 fileSize = item->Size();
+ HBufC* fileSizeStr = NULL;
+ HBufC* primaryText = HBufC::NewLC( KMaxDataTypeLength );
+ HBufC* secondaryText = HBufC::NewLC( KMaxDataTypeLength );
+
+ switch ( iMediaType )
+ {
+ case ECmVideo:
+ // fall through
+ case ECmOtherVideo:
+ {
+ iconType = EIconVideo;
+ break;
+ }
+ case ECmImage:
+ // fall through
+ case ECmOtherImage:
+ {
+ iconType = EIconImage;
+ break;
+ }
+ case ECmAudio:
+ {
+ iconType = EIconAudio;
+
+ secondaryText->Des().Copy( item->SecondaryText() );
+ break;
+ }
+ default:
+ {
+ iconType = EIconVideo;
+ break;
+ }
+ }
+
+ // Set item secondary text
+ if ( fileSize < KMega )
+ {
+ if ( secondaryText->Length() )
+ {
+ secondaryText->Des().Append( KDelimiter);
+ }
+
+ fileSizeStr = StringLoader::LoadLC(
+ R_MS_FILE_SIZE_KB, fileSize / KKilo );
+ }
+ else
+ {
+ if ( secondaryText->Length() )
+ {
+ secondaryText->Des().Append( KDelimiter );
+ }
+
+ TReal size( 0 );
+ Math::Round( size, TReal( fileSize ) / KMega, 0 );
+ fileSizeStr = StringLoader::LoadLC(
+ R_MS_FILE_SIZE_MB, size );
+ }
+
+ secondaryText->Des().Append( *fileSizeStr );
+ if ( fileSizeStr )
+ {
+ CleanupStack::PopAndDestroy( fileSizeStr );
+ }
+
+ // do number conversion
+ TPtr ptr = secondaryText->Des();
+ AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr );
+
+ // add item
+ AppendItemToListBoxArrayL(
+ iListBox,
+ iListBox->Model(),
+ iconType, // default icon
+ (*iItemArray)[index]->PrimaryText(),
+ *secondaryText );
+ CleanupStack::PopAndDestroy( secondaryText );
+ CleanupStack::PopAndDestroy( primaryText );
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CMSItemBrowser::SetCurrentFileStatus
+// --------------------------------------------------------------------------
+//
+void CMSItemBrowser::SetFileStatus( TInt aIndex,
+ TCmListItemStatus aStatus )
+ {
+ LOG(_L("[MediaServant]\t CMSItemBrowser::SetFileStatus"));
+
+ (*iItemArray)[aIndex]->SetStatus( aStatus );
+ }
+
+// --------------------------------------------------------------------------
+// CMSItemBrowser::GetCurrentFileStatus
+// --------------------------------------------------------------------------
+//
+TCmListItemStatus CMSItemBrowser::FileStatus( TInt aIndex )
+ {
+ LOG(_L("[MediaServant]\t CMSItemBrowser::FileStatus"));
+
+ return (*iItemArray)[ aIndex ]->Status();
+ }
+
+// --------------------------------------------------------------------------
+// CMSItemBrowser::ListBox()
+// Returns listbox
+// --------------------------------------------------------------------------
+//
+CEikListBox* CMSItemBrowser::ListBox()
+ {
+ return iListBox;
+ }
+
+// --------------------------------------------------------------------------
+// CMSItemBrowser::SizeChanged()
+// Called by framework when the view size is changed.
+// --------------------------------------------------------------------------
+//
+void CMSItemBrowser::SizeChanged()
+ {
+ // container control resize code.
+ if ( iListBox )
+ {
+ iListBox->SetRect( Rect() ); // Set rectangle of listbox.
+ }
+ }