diff -r 6369bfd1b60d -r 08b5eae9f9ff homesync/contentmanager/mediaservant/src/msfillview.cpp --- a/homesync/contentmanager/mediaservant/src/msfillview.cpp Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,603 +0,0 @@ -/* -* Copyright (c) 2008 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: CMSFillView class implementation -* -*/ - - -#include -#include -#include -#include -#include - -#include "cmfillrule.h" -#include "msfillview.h" -#include "msengine.h" -#include "msfillcontainer.h" -#include "msappui.h" -#include "msconstants.h" -#include "mediaservant.hrh" -#include "msparameteragent.h" -#include "msdebug.h" - - -// CONSTANTS -_LIT( KWildCard, "*" ); -_LIT( KSpace, " "); - -const TInt KImageListTemplate = 1; -const TInt KVideoListTemplate = 2; -const TInt KMusicListTemplate = 3; - - -// -------------------------------------------------------------------------- -// CMSFillView::CMSFillView() -// -------------------------------------------------------------------------- -// -CMSFillView::CMSFillView( CMSAppUi& aAppUi ) - { - LOG(_L("[MediaServant]\t CMSFillView::CMSFillView")); - - iAppUi = &aAppUi; - } - -// -------------------------------------------------------------------------- -// CMSFillView::ConstructL() -// -------------------------------------------------------------------------- -// -void CMSFillView::ConstructL() - { - LOG(_L("[MediaServant]\t CMSFillView::ConstructL")); - - BaseConstructL( R_MS_FILL_VIEW ); - } - -// -------------------------------------------------------------------------- -// CMSFillView::~CMSFillView() -// -------------------------------------------------------------------------- -// -CMSFillView::~CMSFillView() - { - LOG(_L("[MediaServant]\t CMSFillView::~CMSFillView")); - DoDeactivate(); - } - -// -------------------------------------------------------------------------- -// TUid CMSFillView::Id() -// -------------------------------------------------------------------------- -// -TUid CMSFillView::Id() const - { - LOG(_L("[MediaServant]\t CMSFillView::Id")); - - return KMSFillViewId; - } - - -// -------------------------------------------------------------------------- -// CMSFillView::HandleCommandL(TInt aCommand) -// -------------------------------------------------------------------------- -// -void CMSFillView::HandleCommandL(TInt aCommand) - { - LOG(_L("[MediaServant]\t CMSFillView::HandleCommandL")); - - CEikButtonGroupContainer* cba = Cba(); - - switch (aCommand) - { - case EAknSoftkeyBack: - { - CancelAsyncOperation( iAppUi ); - iNextView = KMSMainViewId; - - CheckAndHandleChangesL(); - - break; - } - - case EAknSoftkeyDone: - { - CancelAsyncOperation( iAppUi ); - iContainer->SetReorderStateL( EMSFillNormal ); - cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK ); - cba->DrawNow(); - - // Set title pane text - SetTitlePaneTextL( R_MS_FILL_VIEW_TITLE ); - break; - } - - case EMSCmdActivate: // fall through - case EMSCmdDeActivate: - { - iContainer->ChangeListActivityL(); - SetListUnselected(); - break; - } - // Edit fill rule - case EMSCmdEditRule: - { - CancelAsyncOperation( iAppUi ); - TMSTemplate ruleTemplate; - ruleTemplate.templateType = aCommand; - ruleTemplate.selectedTemplate = EMSNoTemplate; - iAppUi->ParameterAgent()->SetRuleTemplate( ruleTemplate ); - - iNextView = KMSFillEditViewId; - CheckAndHandleChangesL(); - - break; - } - - case EMSCmdBrowse: - { - CancelAsyncOperation( iAppUi ); - iNextView = KMSFillBrowseViewId; - CheckAndHandleChangesL(); - - break; - } - - case EMSCmdNewImageList: // fall through - case EMSCmdNewVideoList: // fall through - case EMSCmdNewMusicList: - { - CancelAsyncOperation( iAppUi ); - ShowTemplateQueryL( aCommand ); - iNextView = KMSFillEditViewId; - CheckAndHandleChangesL(); - break; - } - - // Reorder fill rule - case EMSCmdReorder: - { - iContainer->SetReorderStateL( EMSFillReorderActive ); - cba->SetCommandSetL( R_SOFTKEYS_DROP_EMPTY ); - cba->DrawNow(); - // Set title pane text - SetTitlePaneTextL( R_MS_FILL_VIEW_TITLE_REORDER_MODE ); - break; - } - - // Drop rule to new location - case EMSCmdDrop: - { - iContainer->SetReorderStateL( EMSFillGrabActive ); - cba->SetCommandSetL( R_SOFTKEYS_GRAB_DONE ); - cba->DrawNow(); - break; - } - // Reorder mode active - grab item - case EMSCmdGrab: - { - iContainer->SetReorderStateL( EMSFillReorderActive ); - cba->SetCommandSetL( R_SOFTKEYS_DROP_EMPTY ); - cba->DrawNow(); - break; - } - // Delete fill rule - case EMSCmdDelete: - { - iContainer->DeleteRuleL(); - break; - } - case EAknCmdHelp : - { - TRAP_IGNORE( HlpLauncher::LaunchHelpApplicationL( - iEikonEnv->WsSession(), - iEikonEnv->EikAppUi()->AppHelpContextL() )); - break; - } - default: - { - CancelAsyncOperation( iAppUi ); - AppUi()->HandleCommandL(aCommand); - break; - } - } - } - - -// -------------------------------------------------------------------------- -// CMSFillView::DoActivateL() -// -------------------------------------------------------------------------- -// -void CMSFillView::DoActivateL( - const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/) - { - LOG(_L("[MediaServant]\t CMSFillView::DoActivateL")); - - // Set engine observer - iAppUi->MSEngine()->SetObserver( this ); - - // Set title pane text - SetTitlePaneTextL( R_MS_FILL_VIEW_TITLE ); - - if ( !iContainer ) - { - iContainer = new (ELeave) CMSFillContainer( *iAppUi, *this ); - iContainer->ConstructL( ClientRect() ); - iContainer->SetMopParent( this ); - AppUi()->AddToViewStackL( *this, iContainer ); - } - SetListUnselected(); - } - -// -------------------------------------------------------------------------- -// CMSFillView::DoDeactivate() -// -------------------------------------------------------------------------- -// -void CMSFillView::DoDeactivate() - { - LOG(_L("[MediaServant]\t CMSFillView::DoDeactivate")); - - if ( iContainer ) - { - AppUi()->RemoveFromStack( iContainer ); - } - - delete iContainer; // Deletes the container class object. - iContainer = NULL; - SetListUnselected(); - } - -// -------------------------------------------------------------------------- -// CMSFillView::FocusIndex() -// -------------------------------------------------------------------------- -// -TInt CMSFillView::FocusIndex() const - { - return iContainer->SelectedItemIndex(); - } - -// -------------------------------------------------------------------------- -// CMSFillView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) -// -------------------------------------------------------------------------- -// -void CMSFillView::DynInitMenuPaneL( TInt aResourceId, - CEikMenuPane* aMenuPane ) - { - LOG(_L("[MediaServant]\t CMSFillView::DynInitMenuPaneL")); - - if ( aResourceId == R_FILL_VIEW_MENU && iContainer ) - { - // check if the list is empty - if ( iContainer->ListItemCount() <= 0 ) - { - // Hide commands - aMenuPane->SetItemDimmed(EMSCmdEditRule, ETrue); - aMenuPane->SetItemDimmed(EMSCmdReorder, ETrue); - aMenuPane->SetItemDimmed(EMSCmdDelete, ETrue); - aMenuPane->SetItemDimmed(EMSCmdBrowse, ETrue); - aMenuPane->SetItemDimmed(EMSCmdActivate, ETrue); - aMenuPane->SetItemDimmed(EMSCmdDeActivate, ETrue); - } - - if ( iContainer->IsCurrentListItemActive() ) - { - aMenuPane->SetItemDimmed(EMSCmdActivate, ETrue); - } - else - { - aMenuPane->SetItemDimmed(EMSCmdDeActivate, ETrue); - } - } - } - -// -------------------------------------------------------------------------- -// CMSFillView::ShowTemplateQueryL -// shows template query -// -------------------------------------------------------------------------- -// -void CMSFillView::ShowTemplateQueryL( TInt aCommand ) - { - LOG(_L("[MediaServant]\t CMSFillView::ShowTemplateQueryL")); - - HBufC* defaultListName = NULL;; - - TMSTemplate ruleTemplate; - // set template info - ruleTemplate.templateType = aCommand; - - switch ( aCommand ) - { - case EMSCmdNewImageList: - { - defaultListName = StringLoader::LoadLC( - R_MS_CUSTOM_LIST_IMAGE_NAME ); - ruleTemplate.selectedTemplate = KImageListTemplate; - break; - } - case EMSCmdNewVideoList: - { - defaultListName = StringLoader::LoadLC( - R_MS_CUSTOM_LIST_VIDEO_NAME ); - ruleTemplate.selectedTemplate = KVideoListTemplate; - break; - } - case EMSCmdNewMusicList: - { - defaultListName = StringLoader::LoadLC( - R_MS_CUSTOM_LIST_MUSIC_NAME ); - ruleTemplate.selectedTemplate = KMusicListTemplate; - break; - } - default: - { - defaultListName = StringLoader::LoadLC( - R_MS_CUSTOM_LIST_IMAGE_NAME ); - ruleTemplate.selectedTemplate = KImageListTemplate; - // command not found - break; - } - } - - // Create search string with wildcards - HBufC* searchStr = HBufC::NewLC( KMaxFileName ); - searchStr->Des().Copy( KWildCard ); - searchStr->Des().Append( defaultListName->Des() ); - searchStr->Des().Append( KWildCard ); - - // Check if fill list have dublicate names - TInt count = iContainer->CheckIfDublicateNames( *searchStr ); - - CleanupStack::PopAndDestroy( searchStr ); - // keep template name safe - ruleTemplate.templateName.Copy( defaultListName->Des() ); - - // if existing items... - searchStr = HBufC::NewLC( KMaxFileName ); - searchStr->Des().Append( defaultListName->Des() ); - - TBool same = EFalse; - - RPointerArray* iFillListArray = - iAppUi->FillRuleController()->FillListArray(); - - // if there are same name items - for ( TInt index = 0; index < iFillListArray->Count(); ++index ) - { - CCmFillRule* rule = (*iFillListArray)[index]->List(); - HBufC* listName = - CnvUtfConverter::ConvertToUnicodeFromUtf8L( rule->Name() ); - CleanupStack::PushL( listName ); - if ( *searchStr == *listName ) - { - same = ETrue; - } - CleanupStack::PopAndDestroy( listName ); - } - - CleanupStack::PopAndDestroy( searchStr ); - // exist same name items - if ( count > 0 && same ) - { - TInt postfix; - // calculate a postfix number to add the end of the name - for ( postfix = 1; ; ++postfix ) - { - HBufC* sameStr = HBufC::NewL( KMaxFileName ); - CleanupStack::PushL( sameStr ); - sameStr->Des().Copy( KWildCard ); - sameStr->Des().Append( defaultListName->Des() ); - sameStr->Des().Append( KSpace ); - sameStr->Des().AppendNum( postfix ); - sameStr->Des().Append( KWildCard ); - - // do number conversion - TPtr ptr = sameStr->Des(); - AknTextUtils:: - DisplayTextLanguageSpecificNumberConversion( ptr ); - - if ( 0 == iContainer->CheckIfDublicateNames( *sameStr ) ) - { - // after append the current number, there are not - //same name items, so jump out the code block - CleanupStack::PopAndDestroy( sameStr ); - break; - } - CleanupStack::PopAndDestroy( sameStr ); - } - - // append order number to name - ruleTemplate.templateName.Append( KSpace ); - ruleTemplate.templateName.AppendNum( postfix ); - - // do number conversion - AknTextUtils:: - DisplayTextLanguageSpecificNumberConversion( - ruleTemplate.templateName ); - } - - // store template info to parameter agent - iAppUi->ParameterAgent()->SetRuleTemplate( ruleTemplate ); - - CleanupStack::PopAndDestroy( defaultListName ); - } - -// --------------------------------------------------------------------------- -// CMSFillView::ShowNaviTextL -// --------------------------------------------------------------------------- -// -void CMSFillView::ShowNaviTextL() - { - LOG(_L("[MediaServant]\t CMSFillView::ShowNaviTextL")); - - HBufC* naviText = StringLoader::LoadLC( R_MS_PREPROCESSING_TEXT ); - SetNavigationPaneTextL( *naviText ); - CleanupStack::PopAndDestroy( naviText ); - } - -// --------------------------------------------------------------------------- -// CMSFillView::SetListUnselected -// --------------------------------------------------------------------------- -// -void CMSFillView::SetListUnselected( ) - { - LOG(_L("[MediaServant]\t CMSFillView::SetListUnselected")); - - iListUnSelected = iAppUi->FillRuleController()-> - HasSelectionsChanged( ECmUnSelected ); - } - -// --------------------------------------------------------------------------- -// CMSFillView::CheckAndHandleChangesL -// --------------------------------------------------------------------------- -// -void CMSFillView::CheckAndHandleChangesL() - { - LOG(_L("[MediaServant]\t CMSFillView::CheckAndHandleChangesL")); - - TBool priorityChanged( EFalse ); - - // Check if priorities has been changed - priorityChanged = iAppUi->FillRuleController()-> - HasPriorityChangedL(); - - iNewListSelected = iAppUi->FillRuleController()-> - HasSelectionsChanged( ECmSelected ); - // check if there is deleted lists - TBool listDeleted = iContainer->IsListDeleted(); - - // set activity for all rules - iContainer->SetFillRules(); - - if ( iListUnSelected ) - { - // unselected list(s) - show query - DoDeleteQueryL(); - } - - // send rules to server - iAppUi->FillRuleController()->SaveRulesL(); - - // update lists if list(s) have been deleted, created or their selection - // statuses or priorities have been changed - if ( listDeleted || - priorityChanged || - iListUnSelected || - iNewListSelected ) - { - // disable right softkey - CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current(); - cba->SetCommandSetL( R_MS_SOFTKEYS_OPTIONS_EMPTY ); - cba->DrawDeferred(); - - ShowNaviTextL(); - iAppUi->MSEngine()->UpdateFillListsL(); - } - else // no list update needed - { - // retrieve new information - iAppUi->FillRuleController()->UpdateArrayL(); - iAppUi->ChangeViewL( KMSFillViewId, iNextView ); - } - } - -// --------------------------------------------------------------------------- -// CMSFillView::DoDeleteQueryL -// --------------------------------------------------------------------------- -// -void CMSFillView::DoDeleteQueryL() - { - LOG(_L("[MediaServant]\t CMSFillView::DoDeleteQueryL")); - - // Show delete files query - CAknQueryDialog* query= CAknQueryDialog::NewL( - CAknQueryDialog::ENoTone ); - - if ( query->ExecuteLD( R_MSERV_DELETE_FILES_QUERY ) ) - { - // do nothing - } - else // canceled - { - iAppUi->FillRuleController()->RestoreOriginalSelections(); - } - } - -// -------------------------------------------------------------------------- -// CMSFillView::ReadyL() -// engine observer callback -// -------------------------------------------------------------------------- -// -void CMSFillView::ReadyL( TCmService aService, TInt /*aError*/ ) - { - LOG(_L("[MediaServant]\t CMSFillView::ReadyL")); - - switch ( aService ) - { - case ECmServiceUpdateFillLists: - { - // set original softkeys back - CEikButtonGroupContainer* cba = - CEikButtonGroupContainer::Current(); - cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK ); - cba->DrawDeferred(); - - // retrieve new information - iAppUi->FillRuleController()->UpdateArrayL(); - - ClearCurrentNaviPaneText(); - iAppUi->ChangeViewL( KMSFillViewId, iNextView ); - break; - } - case ECmServiceDeleteFilledFiles: - { - LOG(_L("[MediaServant]\t CMSFillView::ReadyL delete complete")); - ClearCurrentNaviPaneText(); - // Set context pane icon - iContainer->SetDefaultContextPaneIconL(); - - iContainer->UpdateListBoxDataL(); - break; - } - - default: - { - LOG(_L("[MediaServant]\t CMSFillView::ReadyL \ - service not found")); - } - - } - } - -// -------------------------------------------------------------------------- -// CMSFillView::SetCbaL() -// Changes softkeys -// -------------------------------------------------------------------------- -// -void CMSFillView::SetCbaL( TBool aSelected ) - { - LOG(_L("[MediaServant]\t CMSFillView::SetCbaL")); - - CEikButtonGroupContainer* cba = Cba(); - - if ( aSelected ) - { - cba->SetCommandSetL( R_MS_SOFTKEYS_OPTIONS_BACK__DEACTIVATE ); - } - else - { - cba->SetCommandSetL( R_MS_SOFTKEYS_OPTIONS_BACK__ACTIVATE ); - } - cba->DrawDeferred(); - } - -// End of File -