mpengine/src/mpsongscanner.cpp
changeset 37 eb79a7c355bf
child 43 0f32e550d9d8
child 44 eff9df3d9c98
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpengine/src/mpsongscanner.cpp	Fri Jun 11 19:36:32 2010 -0500
@@ -0,0 +1,157 @@
+/*
+* 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: Music Player song scanner.
+*
+*/
+
+#include "mpsongscanner.h"
+#include "mpmpxharvesterframeworkwrapper.h"
+#include "mptrace.h"
+
+/*!
+    \class MpSongScanner
+    \brief Music Player song scanner.
+
+    Song scanner interfaces with MPX Harvesting Framework to harvest
+    music files in the device.
+*/
+
+/*!
+ \fn void scanStarted()
+
+ This signal is emitted when scanning has started.
+
+ */
+
+/*!
+ \fn void scanCountChanged( int count )
+
+ This signal is emitted to notify that scan count has changed.
+
+ */
+
+/*!
+ \fn void scanFinished( int error, int itemsAdded )
+
+ Emitted when scanning has finished.
+
+ */
+
+/*!
+ Constructs the song scanner.
+ */
+MpSongScanner::MpSongScanner( MpMpxHarvesterFrameworkWrapper *wrapper, QObject *parent )
+    : QObject( parent ),
+      mMpxHarvesterWrapper(wrapper),
+      mScanning( false ),
+      mAutomaticScan( true )
+{
+    TX_ENTRY
+    connect( mMpxHarvesterWrapper, SIGNAL( scanStarted() ),
+            this, SIGNAL( scanStarted() ), Qt::QueuedConnection );
+    connect( mMpxHarvesterWrapper, SIGNAL( scanEnded( int, int ) ),
+            this, SLOT( handleScanEnded( int, int ) ), Qt::QueuedConnection );
+    connect( mMpxHarvesterWrapper, SIGNAL( scanCountChanged( int ) ), 
+            this, SIGNAL( scanCountChanged( int ) ), Qt::QueuedConnection );
+    connect( mMpxHarvesterWrapper, SIGNAL( diskEvent( MpxDiskEvents ) ),
+            this, SLOT( handleDiskEvent(MpxDiskEvents) ), Qt::QueuedConnection );
+    TX_EXIT
+}
+
+/*!
+ Destructs the song scanner.
+ */
+MpSongScanner::~MpSongScanner()
+{
+    TX_LOG
+}
+
+/*!
+ Initiates song scanning.
+ */
+void MpSongScanner::scan( bool automaticScan )
+{
+    TX_ENTRY
+    if ( !mScanning ) {
+        mScanning = true;
+        mAutomaticScan = automaticScan;
+        mMpxHarvesterWrapper->scan();
+    }
+    TX_EXIT
+}
+
+/*!
+ Returns mAutomaticScan value.
+ */
+bool MpSongScanner::isAutomaticScan()
+{
+    return mAutomaticScan;
+}
+
+/*!
+ Cancels ongoing song scanning, if any.
+
+ \sa scan()
+ */
+void MpSongScanner::cancelScan()
+{
+    TX_ENTRY
+    if ( mScanning ) {
+        mScanning = false;
+        mMpxHarvesterWrapper->cancelScan();
+    }
+    TX_EXIT
+}
+
+/*!
+ Slot called upon notification from MPX Harvesting FW indicating end of
+ scanning process.
+ */
+void MpSongScanner::handleScanEnded( int numItemsAdded, int error )
+{
+    TX_ENTRY
+    if (error == KErrDiskFull) {
+        emit scanFinished( ScanErrorDiskFull, 0 );
+        mScanning = false;
+    }
+    else{
+        if( error < 0) {
+            emit scanFinished( ScanGeneralError, numItemsAdded );
+        }
+        else if ( mScanning ) {
+            emit scanFinished( ScanErrorNone, numItemsAdded );
+        }
+        else {
+            // Scan canceled
+            emit scanFinished( ScanGeneralError, numItemsAdded );
+        }
+        mScanning = false;
+    }
+    TX_EXIT
+}
+
+/*!
+ Slot to be called when disk event is received from MPX framework.
+ */
+void MpSongScanner::handleDiskEvent( MpxDiskEvents event )
+{
+    TX_ENTRY
+    Q_UNUSED( event );
+    if ( mScanning ) {
+        emit scanFinished( ScanInterrupted, 0 );
+        mScanning = false;
+    }
+    TX_EXIT
+}
+