diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpframework/upnpcommonui/src/upnpadvfindlist.cpp --- a/upnpframework/upnpcommonui/src/upnpadvfindlist.cpp Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1039 +0,0 @@ -/* -* 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: List in advanced find results dialog -* -*/ - - -// INCLUDE FILES -// System -#include -#include -#include -#include -#include //for text editor flags -#include - -// upnp stack api's -#include - -// upnpframework / avcontroller api -#include "upnpavbrowsingsession.h" - -// upnpramework / avcontroller helper api -#include "upnpconstantdefs.h" // upnp definitions - -// upnpframework / xml parser api -#include "upnpxmlparser.h" - -// common ui internal -#include "upnpcommonui.hrh" -#include -#include "upnpadvfindresultwindow.h" -#include "upnpadvfindlist.h" -#include "upnpadvfinddialog.h" - - -_LIT( KComponentLogfile, "commonui.txt"); -#include "upnplog.h" - -//CONSTANTS -_LIT( KDate, "%d0000:" ); //Initial value for date elements -_LIT8( KAttributeRefID, "@refID" ); -_LIT8( KTimeFormat8, "%d-%02d-%02d" ); -const TInt KMaxRequestCount = 50; -const TInt KTmpDateFormatLength = 12; -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::CUPnPAdvancedFindList -// C++ default constructor can NOT contain any code, that -// might leave. -// -------------------------------------------------------------------------- -// -CUPnPAdvancedFindList::CUPnPAdvancedFindList( - MUPnPAVController& aAVControl, - MUPnPAVBrowsingSession& aBrowsingSession, - CUPnPAdvancedFindDialog& aParent, - CUPnPCommonUI& aCommonUI ): - iAVControl(aAVControl), - iCommonUI(aCommonUI), - iAdvancedFindDialog(aParent), - iBrowseSession(aBrowsingSession), - iShowingErrorNote(EFalse) - { - - // Set date to January first of current year - iDateFrom.HomeTime(); - TInt year = iDateFrom.DateTime().Year(); - TBuf<10> tempBuf; - tempBuf.Format( KDate(), year ); - iDateFrom.Set( tempBuf ); - - iDateUntil.HomeTime(); - - iDateInitial.Set( tempBuf ); - - - - // backup existing browsesession observer and set this as current observer - iBrowseObserver = iBrowseSession.Observer(); - iBrowseSession.RemoveObserver(); - iBrowseSession.SetObserver( *this ); - - iSearchResponseReceived = EFalse; - - iAction = CUPnPCommonUI::EUPnPNone; - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::ConstructL -// Symbian 2nd phase constructor can leave. -// -------------------------------------------------------------------------- -// -void CUPnPAdvancedFindList::ConstructL() - { - } -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::NewL -// Two-phased constructor. -// -------------------------------------------------------------------------- -// -CUPnPAdvancedFindList* CUPnPAdvancedFindList::NewL( - MUPnPAVController& aAVControl, - MUPnPAVBrowsingSession& aBrowsingSession, - CUPnPAdvancedFindDialog& aParent, - CUPnPCommonUI& aCommonUI ) - { - __LOG( "CUPnPAdvancedFindList newL" ) ; - CUPnPAdvancedFindList* self = new (ELeave) CUPnPAdvancedFindList( - aAVControl, - aBrowsingSession, - aParent, - aCommonUI ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::NewL -// Destructor -// -------------------------------------------------------------------------- -// -CUPnPAdvancedFindList::~CUPnPAdvancedFindList() - { - __LOG( "CUPnPAdvancedFindList::~CUPnPAdvancedFindList" ); - if ( iWaitNoteDialog ) - { - // Stop showing wait note - TRAP_IGNORE( iWaitNoteDialog->ProcessFinishedL() ); - delete iWaitNoteDialog; - iWaitNoteDialog = NULL; - } - - iBrowseSession.RemoveObserver(); - if( iBrowseObserver ) - { - iBrowseSession.SetObserver( *iBrowseObserver ); - } - - iResultArray.ResetAndDestroy(); - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::MediaServerDisappeared -// -------------------------------------------------------------------------- -// -void CUPnPAdvancedFindList::MediaServerDisappeared( - TUPnPDeviceDisconnectedReason aReason ) - { - iClose = ETrue; - iCloseReason = aReason; - TRAP_IGNORE( MediaServerDisappearedL( aReason ) ); - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::MediaServerDisappearedL -// -------------------------------------------------------------------------- -// -void CUPnPAdvancedFindList::MediaServerDisappearedL( - TUPnPDeviceDisconnectedReason aReason ) - { - __LOG( "CUPnPAdvancedFindList::MediaServerDisappearedL" ); - - if( aReason == EDisconnected ) - { - iExitCode = KErrSessionClosed; - } - else if( aReason == EWLANLost) - { - iExitCode = KErrDisconnected; - } - else - { - __PANICD( __FILE__, __LINE__); - } - - if( iWaitNoteDialog ) //if it is on searching - { - __LOG( "CUPnPAdvancedFindList::iWaitNoteDialog ETrue" ); - DialogDismissedL( EEikBidCancel ); - iWaitNoteDialog->ProcessFinishedL(); - //no need to call DialogDismissedL; - delete iWaitNoteDialog; - iWaitNoteDialog = NULL; - } - else - { - if( iFindResultWindow ) - { - __LOG( "CUPnPAdvancedFindList::iFindResultWindow->DismissItselfL" ); - iFindResultWindow->DismissItselfL( iExitCode ); - iFindResultWindow = NULL; - } - else //notify AdvancedFindDialog to close itself - { - if ( !iShowingErrorNote ) - { - iAdvancedFindDialog.DismissItselfL( iExitCode ); - } - else - { - __LOG( "CUPnPAdvancedFindList::iShowingErrorNote ETrue" ); - } - } - } - __LOG( "CUPnPAdvancedFindList::MediaServerDisappearedL End" ); - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::DialogDismissedL -// -------------------------------------------------------------------------- -// -void CUPnPAdvancedFindList::DialogDismissedL( TInt aButtonId ) - { - __LOG( "CUPnPBrowseDialog::DialogDismissedL" ); - - // If button is cancel, inform observer parent class - // that cancel has been made - if( aButtonId == EEikBidCancel ) - { - __LOG( "CUPnPBrowseDialog::DialogDismissedL: \ - Cancel was pressed." ); - - iAction = CUPnPCommonUI::EUPnPNone; - iBrowseSession.CancelSearch(); - } - - __LOG( "CUPnPBrowseDialog::DialogDismissedL end" ); - //Do nothing - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::SearchResponse -// -------------------------------------------------------------------------- -// -void CUPnPAdvancedFindList::SearchResponse( const TDesC8& aSearchResponse, - TInt aError, TInt /*aMatches*/, TInt /*aTotalCount*/, const TDesC8& - /*aUpdateId*/ ) - { - __LOG( "CUPnPBrowseDialog::SearchResponse" ); - RPointerArray array; - - if( aError == KErrNone ) - { - CUPnPXMLParser* parser = NULL; - TRAP( aError, parser = CUPnPXMLParser::NewL(); - parser->ParseResultDataL( array, - aSearchResponse ) ); - - delete parser; - } - - TRAP_IGNORE( SearchResponseL( aError, array ) ); - - array.ResetAndDestroy(); - - __LOG( "CUPnPBrowseDialog::SearchResponse -end" ); - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::SearchResponseL -// Response to FindMetadataL function. -// -------------------------------------------------------------------------- -void CUPnPAdvancedFindList::SearchResponseL( - TInt aError, - const RPointerArray& aResultArray ) - { - - __LOG( "CUPnPBrowseDialog::SearchResponseL" ); - iExitCode = aError; - if( KErrNone == aError ) - { - iSearchResponseReceived = ETrue; - TBuf previousTitleName; - previousTitleName.Zero(); - //Go through the search result and add data to database - - - for( TInt count = 0; count < aResultArray.Count(); count++ ) - { - //If an Item is found - CUpnpObject* tmpObject = aResultArray[count]; - - //If it is right type and name is longer than zero - if ( tmpObject->ObjectType() == EUPnPItem ) - { - CUpnpItem* item = static_cast( tmpObject ); - - if ( item->Title().Length() > 0 ) - { - - //Copy the item - item = CUpnpItem::NewL(); - CleanupStack::PushL( item ); - item->CopyL( *aResultArray[count] ); - //And if item is correct type - iResultArray.AppendL( item ); // item ownership transferred - CleanupStack::Pop( item ); - } - } - } - } - else - { - iCommonUI.GetUpnpAction( iAction ); - iCommonUI.HandleCommonErrorL( aError, NULL ); - __LOG( "CUPnPAdvancedFindList: \ - SearchResponse operation failed!" ); - } - if ( iWaitNoteDialog ) - { - TRAP_IGNORE( iWaitNoteDialog->ProcessFinishedL() ); - } - __LOG( "CUPnPBrowseDialog::SearchResponseL -end" ); - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::CreateSettingItemL -// Creates list items -// -------------------------------------------------------------------------- -// -CAknSettingItem* CUPnPAdvancedFindList::CreateSettingItemL( - TInt aIdentifier ) - { - CAknSettingItem* settingItem = NULL; - switch (aIdentifier) - { - case EAdvancedFindMediaType: - { - iMediatype = 0; - settingItem = new (ELeave) CAknEnumeratedTextPopupSettingItem( - aIdentifier, iMediatype ); - break; - } - case EAdvancedFindFileName: - { - settingItem = new (ELeave) CAknTextSettingItem( aIdentifier, - iFileName ); - settingItem->SetSettingPageFlags( - CAknTextSettingPage::EZeroLengthAllowed ); - break; - } - case EAdvancedFindArtist: - { - settingItem = new (ELeave) CAknTextSettingItem( aIdentifier, - iArtistText ); - settingItem->SetSettingPageFlags( - CAknTextSettingPage::EZeroLengthAllowed ); - settingItem->SetHidden( ETrue ); - break; - } - case EAdvancedFindAlbum: - { - settingItem = new (ELeave) CAknTextSettingItem( aIdentifier, - iAlbumText ); - settingItem->SetSettingPageFlags( - CAknTextSettingPage::EZeroLengthAllowed ); - settingItem->SetHidden( ETrue ); - break; - } - case EAdvancedFindGenre: - { - settingItem = new (ELeave) CAknTextSettingItem( aIdentifier, - iGenreText ); - settingItem->SetSettingPageFlags( - CAknTextSettingPage::EZeroLengthAllowed ); - settingItem->SetHidden( ETrue ); - break; - } - case EAdvancedFindDateFrom: - { - settingItem = new (ELeave) CAknTimeOrDateSettingItem( - aIdentifier, - CAknTimeOrDateSettingItem::EDate, - iDateFrom ); - break; - } - case EAdvancedFindDateUntil: - { - settingItem = new (ELeave) CAknTimeOrDateSettingItem( - aIdentifier, - CAknTimeOrDateSettingItem::EDate, - iDateUntil ); - break; - } - default: - break; - } - return settingItem; - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::EditItemL -// -------------------------------------------------------------------------- -// -void CUPnPAdvancedFindList::EditItemL ( TInt aIndex, TBool aCalledFromMenu ) - { - CAknSettingItemArray* arrayForTrueIndex = - CAknSettingItemList::SettingItemArray(); - TInt indexForEditing = arrayForTrueIndex-> - ItemIndexFromVisibleIndex( aIndex ); - arrayForTrueIndex = NULL; - switch ( indexForEditing ) - { - case EAdvancedFindMediaType: - { - iSettingPageOpen = ETrue; - CAknSettingItemList::EditItemL( indexForEditing, - aCalledFromMenu ); - CAknSettingItemArray* arrayForHideCommands = - CAknSettingItemList::SettingItemArray(); - StoreSettingsL(); - if ( iMediatype == EAdvancedFindMusic ) - { - CAknSettingItem* settingItem = - arrayForHideCommands->At( EAdvancedFindArtist ); - settingItem->SetHidden( EFalse ); - settingItem = NULL; - CAknSettingItem* settingItem2 = - arrayForHideCommands->At( EAdvancedFindAlbum ); - settingItem2->SetHidden( EFalse ); - settingItem2 = NULL; - CAknSettingItem* settingItem3 = - arrayForHideCommands->At( EAdvancedFindGenre ); - settingItem3->SetHidden( EFalse ); - settingItem3 = NULL; - } - else - { - CAknSettingItem* settingItem = - arrayForHideCommands->At( EAdvancedFindArtist ); - settingItem->SetHidden( ETrue ); - settingItem = NULL; - CAknSettingItem* settingItem2 = - arrayForHideCommands->At( EAdvancedFindAlbum ); - settingItem2->SetHidden(ETrue); - settingItem2 = NULL; - CAknSettingItem* settingItem3 = - arrayForHideCommands->At( EAdvancedFindGenre ); - settingItem3->SetHidden( ETrue ); - settingItem3 = NULL; - } - arrayForHideCommands = NULL; - } - break; - case EAdvancedFindFileName: - { - iSettingPageOpen = ETrue; - CAknSettingItemList::EditItemL( indexForEditing, - aCalledFromMenu ); - StoreSettingsL(); - } - break; - case EAdvancedFindArtist: - { - iSettingPageOpen = ETrue; - CAknSettingItemList::EditItemL( indexForEditing, - aCalledFromMenu ); - StoreSettingsL(); - } - break; - case EAdvancedFindAlbum: - { - iSettingPageOpen = ETrue; - CAknSettingItemList::EditItemL( indexForEditing, - aCalledFromMenu ); - StoreSettingsL(); - } - break; - case EAdvancedFindGenre: - { - iSettingPageOpen = ETrue; - CAknSettingItemList::EditItemL( indexForEditing, - aCalledFromMenu ); - StoreSettingsL(); - } - break; - case EAdvancedFindDateFrom: - { - iSettingPageOpen = ETrue; - CAknSettingItemList::EditItemL( indexForEditing, - aCalledFromMenu ); - StoreSettingsL(); - } - break; - case EAdvancedFindDateUntil: - { - iSettingPageOpen = ETrue; - CAknSettingItemList::EditItemL( indexForEditing, - aCalledFromMenu ); - StoreSettingsL(); - - } - break; - default: - break; - } - - iSettingPageOpen = EFalse; - //load settings to screen - CAknSettingItemList::LoadSettingsL(); - CAknSettingItemList::DrawDeferred(); - - - if( iClose ) - { - MediaServerDisappearedL(iCloseReason); - } - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::MakeQueryL -// -------------------------------------------------------------------------- -// -TInt CUPnPAdvancedFindList::MakeQueryL() - { - //Search criteria string - HBufC8* searchCriteria = BuildSearchCriteriaL(); - CleanupStack::PushL( searchCriteria ); - - HBufC8* sortCriteria = KSortCriteria().AllocL(); - CleanupStack::PushL( sortCriteria ); - - iAction = CUPnPCommonUI::EUPnPSearch; - // Make the search request - iBrowseSession.SearchL( - KContainerIdRoot, /* object id of the container */ - *searchCriteria, /* criteria */ - KFilterCommon, /* filter */ - 0, /* start index */ - KMaxRequestCount + 1, /* request count + 1 */ - *sortCriteria ); /* sort criteria */ - CleanupStack::PopAndDestroy( sortCriteria ); - CleanupStack::PopAndDestroy( searchCriteria ); - - TInt ret = KErrNone; - iWaitNoteDialog = new(ELeave) CAknWaitDialog( ( - REINTERPRET_CAST( CEikDialog**, - &iWaitNoteDialog ) ), - ETrue ); - iWaitNoteDialog->SetCallback( this ); - - ret = iWaitNoteDialog->ExecuteLD( - R_UPNPCOMMONUI_ADVANCEDFIND_WAIT_NOTE_DIALOG ); - - //Make result window - //ret is KErrNone only when the DialogDismissedL by the FW. - // ( not canceling) - if( ret != KErrNone && iExitCode == KErrNone ) - { - //If there was more than request count received - if( iResultArray.Count() > KMaxRequestCount ) - { - //Delete Item from array - delete iResultArray[KMaxRequestCount]; - //Remove from array - iResultArray.Remove( KMaxRequestCount ); - - iShowingErrorNote = ETrue; - //Display error note - iCommonUI.DisplayErrorTextL( - R_UPNPCOMMONUI_ADVANCED_FIND_TOO_MANY_RESULTS_ERROR, - KMaxRequestCount ); - iShowingErrorNote = EFalse; - } - - // During running DisplayErrorTextL() - // We also need to care about whether iExitCode been changed or not. - if ( iExitCode != KErrNone ) - { - iResultArray.ResetAndDestroy(); - return iExitCode; - } - else - { - iFindResultWindow = CAdvancedFindResultWindow::NewL( - R_UPNPCOMMONUI_RESULT_WINDOW_MENUBAR, - iResultArray, - iAVControl, - iBrowseSession, - iCommonUI ); - - iFindResultWindow->SetMopParent( this ); - - iShowingErrorNote = ETrue; - - iExitCode = iFindResultWindow->ExecuteLD( - R_UPNPCOMMONUI_ADVANCED_FIND_RESULT_DIALOG ); - iShowingErrorNote = EFalse; - - iFindResultWindow = NULL; - } - } - CAknSettingItemList::LoadSettingsL(); - CAknSettingItemList::DrawDeferred(); - - //Delete result array - iResultArray.ResetAndDestroy(); - iSearchResponseReceived = EFalse; - - if( iExitCode != KErrSessionClosed && - iExitCode != KErrDisconnected && - iExitCode != EAknCmdExit && - iExitCode != EEikCmdExit ) - { - iExitCode = KErrNone; - } - __LOG( "CUPnPAdvancedFindList::MakeQueryL End" ); - return iExitCode; - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::HandleResourceChange -// -------------------------------------------------------------------------- -// -void CUPnPAdvancedFindList::HandleResourceChange( TInt aType ) - { - __LOG( "CUPnPAdvancedFindList::HandleResourceChange" ); - - if ( aType == KEikDynamicLayoutVariantSwitch ) - { - TRect mainPaneRect; - AknLayoutUtils::LayoutMetricsRect( - AknLayoutUtils::EMainPane, mainPaneRect ); - - TAknLayoutRect layoutRect; - layoutRect.LayoutRect( - TRect( TPoint( 0, 0 ), mainPaneRect.Size() ), - AKN_LAYOUT_WINDOW_list_gen_pane( 0 ) ); - - ListBox()->SetRect( layoutRect.Rect() ); - } - - // Base call - CAknSettingItemList::HandleResourceChange( aType ); - } - - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::BuildSearchCriteriaL -// -------------------------------------------------------------------------- -// -HBufC8* CUPnPAdvancedFindList::BuildSearchCriteriaL() const - { - __LOG( "CUPnPAdvancedFindList::BuildSearchCriteriaL" ); - //Search criteria string - HBufC8* searchCriteria = NULL; - HBufC8* tmpStr = NULL; - - //Date variables for handling date search - TBuf8 tmpDateFormat; - TDateTime tmpDate; - - searchCriteria = HBufC8::NewL( - KElementClass().Length() + - KCriteriaSpace().Length() + - KCriteriaDerivedFrom().Length() + - KCriteriaSpace().Length() + - KCriteriaQuot().Length() + - KClassVideo().Length() + - KCriteriaQuot().Length() + - KCriteriaSpace().Length() + - KCriteriaAnd().Length() + - KCriteriaSpace().Length() + - KAttributeRefID().Length() + - KCriteriaSpace().Length() + - KCriteriaExists().Length() + - KCriteriaSpace().Length() + - KCriteriaFalse().Length() ); - TPtr8 strPtr = searchCriteria->Des(); - - strPtr.Copy( KElementClass() ); - strPtr.Append( KCriteriaSpace ); - strPtr.Append( KCriteriaDerivedFrom ); - strPtr.Append( KCriteriaSpace ); - strPtr.Append( KCriteriaQuot ); - - //Set search for the mediatype - __LOG1( "iMediatype: %d", iMediatype ); - switch( iMediatype ) - { - case EAdvancedFindAll: - { - strPtr.Append( KClassItem() ); - break; - } - case EAdvancedFindImages: - { - strPtr.Append( KClassImage() ); - break; - } - case EAdvancedFindVideo: - { - strPtr.Append( KClassVideo() ); - break; - } - case EAdvancedFindMusic: - { - strPtr.Append( KClassAudio() ); - break; - } - default: - { - __PANICD( __FILE__, __LINE__ ); - break; - } - } - - strPtr.Append( KCriteriaQuot ); - strPtr.Append( KCriteriaSpace ); - strPtr.Append( KCriteriaAnd ); - strPtr.Append( KCriteriaSpace ); - strPtr.Append( KAttributeRefID ); - strPtr.Append( KCriteriaSpace ); - strPtr.Append( KCriteriaExists ); - strPtr.Append( KCriteriaSpace ); - strPtr.Append( KCriteriaFalse ); - CleanupStack::PushL( searchCriteria ); - - //Check if filename has been entered to search criteria - __LOG1( "iFileName.Length: %d", iFileName.Length() ); - if( iFileName.Length() > 0 ) - { - __LOG( "add name condition" ); - tmpStr = UpnpString::FromUnicodeL( iFileName ); - - //If inserted, add to search string - searchCriteria = searchCriteria->ReAllocL( - searchCriteria->Length() + - KCriteriaSpace().Length() + - KCriteriaAnd().Length() + - KCriteriaSpace().Length() + - KElementTitle().Length() + - KCriteriaSpace().Length() + - KCriteriaContains().Length() + - KCriteriaSpace().Length() + - KCriteriaQuot().Length() + - tmpStr->Length() + - KCriteriaQuot().Length() - ); - - //pop out the old searchCriteria - CleanupStack::Pop(); - //push the new searchCriteria which is created by ReAllocL - CleanupStack::PushL( searchCriteria ); - - strPtr.Set( searchCriteria->Des() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaAnd() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KElementTitle() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaContains() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaQuot() ); - strPtr.Append( *tmpStr ); - strPtr.Append( KCriteriaQuot() ); - delete tmpStr; - tmpStr = NULL; - - } - - //Add possibly artists to search criteria - if( iArtistText.Length() > 0 && iMediatype == EAdvancedFindMusic ) - { - __LOG( "add artists condition" ); - tmpStr = UpnpString::FromUnicodeL( iArtistText ); - searchCriteria = searchCriteria->ReAllocL( - searchCriteria->Length() + - KCriteriaSpace().Length() + - KCriteriaAnd().Length() + - KCriteriaSpace().Length() + - KCriteriaOB().Length() + - KElementArtist().Length() + - KCriteriaSpace().Length() + - KCriteriaContains().Length() + - KCriteriaSpace().Length() + - KCriteriaQuot().Length() + - tmpStr->Length() + - KCriteriaQuot().Length() + - KCriteriaSpace().Length() + - KCriteriaCB().Length() - ); - - //pop out the old searchCriteria - CleanupStack::Pop(); - //push the new searchCriteria which is created by ReAllocL - CleanupStack::PushL( searchCriteria ); - - strPtr.Set( searchCriteria->Des() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaAnd() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaOB() ); - strPtr.Append( KElementArtist() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaContains() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaQuot() ); - strPtr.Append( *tmpStr ); //Artist name - strPtr.Append( KCriteriaQuot() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaCB() ); - delete tmpStr; - tmpStr = NULL; - } - - //Add possibly albums to search criteria - if( iAlbumText.Length() > 0 && iMediatype == EAdvancedFindMusic ) - { - __LOG( "add albums condition" ); - tmpStr = UpnpString::FromUnicodeL( iAlbumText ); - searchCriteria = searchCriteria->ReAllocL( - searchCriteria->Length() + - KCriteriaSpace().Length() + - KCriteriaAnd().Length() + - KCriteriaSpace().Length() + - KCriteriaOB().Length() + - KElementAlbum().Length() + - KCriteriaSpace().Length() + - KCriteriaContains().Length() + - KCriteriaSpace().Length() + - KCriteriaQuot().Length() + - tmpStr->Length() + - KCriteriaQuot().Length() + - KCriteriaSpace().Length() + - KCriteriaCB().Length() - ); - - //pop out the old searchCriteria - CleanupStack::Pop(); - //push the new searchCriteria which is created by ReAllocL - CleanupStack::PushL( searchCriteria ); - - strPtr.Set( searchCriteria->Des() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaAnd() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaOB() ); - strPtr.Append( KElementAlbum() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaContains() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaQuot() ); - strPtr.Append( *tmpStr ); //Artist name - strPtr.Append( KCriteriaQuot() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaCB() ); - delete tmpStr; - tmpStr = NULL; - } - - //Add possibly genres to search criteria - if( iGenreText.Length() > 0 && iMediatype == EAdvancedFindMusic ) - { - __LOG( "add genres condition" ); - tmpStr = UpnpString::FromUnicodeL( iGenreText ); - - searchCriteria = searchCriteria->ReAllocL( - searchCriteria->Length() + - KCriteriaSpace().Length() + - KCriteriaAnd().Length() + - KCriteriaSpace().Length() + - KCriteriaOB().Length() + - KElementGenre().Length() + - KCriteriaSpace().Length() + - KCriteriaContains().Length() + - KCriteriaSpace().Length() + - KCriteriaQuot().Length() + - tmpStr->Length() + - KCriteriaQuot().Length() + - KCriteriaSpace().Length() + - KCriteriaCB().Length() - ); - - //pop out the old searchCriteria - CleanupStack::Pop(); - //push the new searchCriteria which is created by ReAllocL - CleanupStack::PushL( searchCriteria ); - - strPtr.Set( searchCriteria->Des() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaAnd() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaOB() ); - strPtr.Append( KElementGenre() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaContains() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaQuot() ); - strPtr.Append( *tmpStr ); //Genre name - strPtr.Append( KCriteriaQuot() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaCB() ); - delete tmpStr; - tmpStr = NULL; - } - - // To check whether need to add time condition - TBool addTimeCondition = ETrue; - - if( iFileName.Length() > 0 ) - { - __LOG( "iFileName > 0" ); - - // Make temp TDateTime item with current home time to compare with date - // until. - TTime tempTTimeforCurrent; - tempTTimeforCurrent.HomeTime(); - TDateTime tempTDateTimeforCurrent = tempTTimeforCurrent.DateTime(); - TDateTime tempTDateTimeforUntil = iDateUntil.DateTime(); - TBuf8 tempDateFormatCurrent; - TBuf8 tempDateFormatUntil; - tempDateFormatCurrent.Format( KTimeFormat8(), - tempTDateTimeforCurrent.Year(), - tempTDateTimeforCurrent.Month() + 1, - tempTDateTimeforCurrent.Day() + 1 ); - tempDateFormatUntil.Format( KTimeFormat8(), - tempTDateTimeforUntil.Year(), - tempTDateTimeforUntil.Month() + 1, - tempTDateTimeforUntil.Day() +1 ); - - if( ( iDateFrom == iDateInitial ) && - ( tempDateFormatCurrent == tempDateFormatUntil ) ) - { - // Time criterias are not included into the find query - // if they are not altered when Title search - __LOG( "time criterias are not altered" ); - addTimeCondition = EFalse; - } - } - - if ( addTimeCondition ) - { - __LOG( "add time conditions" ); - - // Add time from - tmpDate = iDateFrom.DateTime(); - //Format the date according to UPnP - tmpDateFormat.Format( KTimeFormat8, - tmpDate.Year(), - tmpDate.Month() + 1, - tmpDate.Day() + 1 ); - - searchCriteria = searchCriteria->ReAllocL( - searchCriteria->Length() + - KCriteriaSpace().Length() + - KCriteriaAnd().Length() + - KCriteriaSpace().Length() + - KElementDate().Length() + - KCriteriaSpace().Length() + - KCriteriaGTE().Length() + - KCriteriaSpace().Length() + - KCriteriaQuot().Length() + - tmpDateFormat.Length() + - KCriteriaQuot().Length() - ); - CleanupStack::Pop(); - CleanupStack::PushL( searchCriteria ); - - strPtr.Set( searchCriteria->Des() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaAnd() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KElementDate() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaGTE() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaQuot() ); - strPtr.Append( tmpDateFormat ); - strPtr.Append( KCriteriaQuot() ); - - // Add time until - tmpDate = iDateUntil.DateTime(); - tmpDateFormat.Format( KTimeFormat8, - tmpDate.Year(), - tmpDate.Month() + 1, - tmpDate.Day() + 1 ); - - searchCriteria = searchCriteria->ReAllocL( - searchCriteria->Length() + - KCriteriaSpace().Length() + - KCriteriaAnd().Length() + - KCriteriaSpace().Length() + - KElementDate().Length() + - KCriteriaSpace().Length() + - KCriteriaLTE().Length() + - KCriteriaSpace().Length() + - KCriteriaQuot().Length() + - tmpDateFormat.Length() + - KCriteriaQuot().Length() - ); - CleanupStack::Pop(); - CleanupStack::PushL( searchCriteria ); - - strPtr.Set( searchCriteria->Des() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaAnd() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KElementDate() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaLTE() ); - strPtr.Append( KCriteriaSpace() ); - strPtr.Append( KCriteriaQuot() ); - strPtr.Append( tmpDateFormat ); - strPtr.Append( KCriteriaQuot() ); - } - - //Encode the searchcriteria for xml compatibility - HBufC8* xmlEncodedSearchCriteria = - UpnpString::EncodeXmlStringL( searchCriteria ); - - CleanupStack::PopAndDestroy( searchCriteria ); //searchCriteria - - __LOG( "CUPnPAdvancedFindList::BuildSearchCriteriaL - end" ); - return xmlEncodedSearchCriteria; - } - -// -------------------------------------------------------------------------- -// CUPnPAdvancedFindList::IsSettingPageOpen -// -------------------------------------------------------------------------- -// -TBool CUPnPAdvancedFindList::IsSettingPageOpen() const - { - return iSettingPageOpen; - } - -// End of file