--- 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 <mediaservant.rsg>
-#include <StringLoader.h>
-#include <aknlistquerydialog.h>
-#include <hlplch.h>
-#include <utf.h>
-
-#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<CMSFillList>* 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
-