--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/controllers/fetcher/src/glxfetcher.cpp Wed Sep 01 12:33:26 2010 +0100
@@ -0,0 +1,263 @@
+/*
+* Copyright (c) 2008-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: provide synchronized access to file systema and metadata source
+*
+*/
+
+
+
+
+#include <aknViewAppUi.h> // CAknViewAppUi
+#include <avkon.rsg>
+#include <data_caging_path_literals.hrh> // KDC_APP_RESOURCE_DIR
+#include <eikapp.h> // CEikApplication
+#include <glxfetcherdialog.rsg> // FOR GETTING VIEW ID AND RESOURCE ID
+#include <glxcollectionpluginall.hrh> // All item collection plugin id
+#include <glxlog.h> // Logging macros
+#include <glxresourceutilities.h> // for CGlxResourceUtilities
+#include <glxcommandhandlerhelp.h>
+#include <mglxmedialist.h> // MGlxMediaList, CMPXCollectionPath
+
+#include "glxfetcher.hrh" // For implementation id
+#include "glxfetcherdialog.h" // CGlxFetcherDialog
+#include "glxfetcher.h" // CGlxFetcher
+#include "glxtracer.h"
+#include "glxlog.h"
+
+_LIT(KFetcherGridViewResource,"glxfetcherdialog.rsc"); //FetcherGridDialog Resource File
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CGlxFetcher* CGlxFetcher::NewL()
+ {
+ TRACER("CGlxFetcher::NewL");
+ CGlxFetcher* self = new( ELeave ) CGlxFetcher();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
+void CGlxFetcher::ConstructL()
+ {
+ TRACER("CGlxFetcher::ConstructL");
+ // No implementation required
+ }
+
+// ---------------------------------------------------------------------------
+// C++ default constructor can NOT contain any code, that might leave.
+// ---------------------------------------------------------------------------
+//
+CGlxFetcher::CGlxFetcher()
+ {
+ TRACER("CGlxFetcher::CGlxFetcher");
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CGlxFetcher::~CGlxFetcher()
+ {
+ TRACER("CGlxFetcher::~CGlxFetcher");
+
+ if ( iResourceOffset )
+ {
+ CCoeEnv::Static()->DeleteResourceFile(iResourceOffset);
+ }
+ if(iDialog)
+ {
+ iDialog = NULL;
+ }
+ delete iSelectionSoftkey;
+ delete iTitle;
+
+ }
+
+// ---------------------------------------------------------------------------
+// SetMultiSelectionL
+// ---------------------------------------------------------------------------
+//
+void CGlxFetcher::SetMultiSelectionL( TBool aMultiSelect )
+ {
+ TRACER("CGlxFetcher::SetMultiSelectionL");
+ iIsMultiSelection = aMultiSelect;
+ }
+
+// ---------------------------------------------------------------------------
+// SetMimeTypesL
+// ---------------------------------------------------------------------------
+//
+void CGlxFetcher::SetMimeTypesL( const MDesCArray& /*aMimeTypes*/ )
+ {
+ TRACER("CGlxFetcher::SetMimeTypesL (not supported)");
+ // No implementation required (not supported)
+ }
+
+// ---------------------------------------------------------------------------
+// SetSelectionSoftkeyL
+// ---------------------------------------------------------------------------
+//
+void CGlxFetcher::SetSelectionSoftkeyL( const TDesC& aSelectionSoftkey )
+ {
+ TRACER("CGlxFetcher::SetSelectionSoftkeyL");
+
+ HBufC* tmp = aSelectionSoftkey.AllocL();
+ delete iSelectionSoftkey;
+ iSelectionSoftkey = tmp;
+ }
+
+// ---------------------------------------------------------------------------
+// SetHeadingL
+// ---------------------------------------------------------------------------
+//
+void CGlxFetcher::SetHeadingL( const TDesC& aTitle )
+ {
+ TRACER("CGlxFetcher::SetHeadingL");
+
+ HBufC* tmp = aTitle.AllocL();
+ delete iTitle;
+ iTitle = tmp;
+ }
+
+// ---------------------------------------------------------------------------
+// SetVerifierL
+// ---------------------------------------------------------------------------
+//
+void CGlxFetcher::SetVerifierL( MMGFetchVerifier& aVerifier )
+ {
+ TRACER("CGlxFetcher::SetVerifierL");
+
+ iVerifier = &aVerifier;
+ }
+
+// ---------------------------------------------------------------------------
+// GetCancelerL
+// ---------------------------------------------------------------------------
+//
+void CGlxFetcher::GetCancelerL( MMGFetchCanceler*& aCanceler )
+ {
+ TRACER("CGlxFetcher::GetCancelerL");
+
+ aCanceler = this;
+ }
+
+
+// ---------------------------------------------------------------------------
+// LaunchL
+// ---------------------------------------------------------------------------
+//
+TBool CGlxFetcher::LaunchL( CDesCArray& aSelectedFiles,
+ TMediaFileType aMediaType )
+ {
+ TRACER("CGlxFetcher::LaunchL");
+ TInt buttonId;
+ TFileName resFile;
+ TParse parse;
+ parse.Set(KFetcherGridViewResource, &KDC_APP_RESOURCE_DIR, NULL);
+
+ resFile.Append(parse.FullName());
+ CGlxResourceUtilities::GetResourceFilenameL(resFile);
+ iResourceOffset = CCoeEnv::Static()->AddResourceFileL(resFile);
+
+ // Configure heading and filter type
+ switch ( aMediaType )
+ {
+ case EImageFile:
+ {
+ iTitle = TitleForImageFetcherL();
+ iFilterType = EGlxFilterImage;
+ break;
+ }
+ case EVideoFile:
+ {
+ iTitle = TitleForVideoFetcherL();
+ iFilterType = EGlxFilterVideo;
+ break;
+ }
+ default:
+ {
+ GLX_LOG_INFO("CGlxFetcher::LaunchL - Error: Unsupported media type, Leaving");
+ User::Leave( KErrNotSupported );
+ }
+ }
+ // create the dialog first
+ iDialog = CGlxFetcherDialog::NewL(aSelectedFiles, iVerifier, iFilterType,
+ *iTitle, iIsMultiSelection);
+ // Returns zero when Fetcher is cancelled by User.
+
+ buttonId = iDialog->ExecuteLD( R_GLX_FETCHER_DIALOG );
+ // Return false if the fetcher was canceled by user
+ return ( 0 != buttonId && aSelectedFiles.Count()!=0);
+ }
+
+// ---------------------------------------------------------------------------
+// Return Dialog title
+// ---------------------------------------------------------------------------
+//
+HBufC* CGlxFetcher::TitleForImageFetcherL() const
+ {
+ TRACER("CGlxFetcher::TitleForImageFetcherL()");
+ return TitleL( R_FETCHER_DIALOG_TITLE_IMAGE, R_FETCHER_DIALOG_TITLE_IMAGES );
+ }
+
+// ---------------------------------------------------------------------------
+// Return Dialog title
+// ---------------------------------------------------------------------------
+//
+HBufC* CGlxFetcher::TitleForVideoFetcherL() const
+ {
+ TRACER("CGlxFetcher::TitleForVideoFetcherL()");
+ return TitleL( R_FETCHER_DIALOG_TITLE_VIDEO, R_FETCHER_DIALOG_TITLE_VIDEOS );
+ }
+
+// ---------------------------------------------------------------------------
+// Return Dialog title
+// ---------------------------------------------------------------------------
+//
+HBufC* CGlxFetcher::TitleL( TInt aSingleSelectionTitleResourceId,
+ TInt aMultiSelectionTitleResourceId ) const
+ {
+ TRACER("CGlxFetcher::TitleL()");
+ if( !iTitle )
+ {
+ TInt resourceId = aSingleSelectionTitleResourceId;
+ if ( iIsMultiSelection )
+ {
+ resourceId = aMultiSelectionTitleResourceId;
+ }
+ return CCoeEnv::Static()->AllocReadResourceL( resourceId );
+ }
+ return iTitle;
+ }
+
+// -----------------------------------------------------------------------------
+// From MMGFetchCanceler
+// -----------------------------------------------------------------------------
+//
+void CGlxFetcher::CancelFetcherL()
+ {
+ TRACER("CGlxFetcher::CancelFetcherL");
+ //pass EAknCmdExit as parameter to exit the fetcher dialog
+ if(iDialog)
+ {
+ iDialog->CallCancelFetcherL(EAknCmdExit );
+ }
+ }