mpviewplugins/mpcollectionviewplugin/src/mpcollectionsongscanner.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Mar 2010 09:28:13 +0200
changeset 19 4e84c994a771
permissions -rw-r--r--
Revision: 201007 Kit: 201011

/*
* 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 collection song scanner.
*
*/

#include <hbprogressnote.h>

#include "mpcollectionsongscanner.h"
#include "mpmpxframeworkwrapper.h"
#include "mptrace.h"

/*!
    \class MpCollectionSongScanner
    \brief Music Player collection song scanner.

    Song scanner interfaces with MPX Harvesting Framework to harvest
    music files in the device.
*/

/*!
 \fn void scanEnd()

 This signal is emitted when scanning is ended.

 \sa scan()
*/

/*!
 Constructs the collection song scanner.
 */
MpCollectionSongScanner::MpCollectionSongScanner( MpMpxFrameworkWrapper *wrapper, QObject *parent )
    : QObject(parent),
      mMpxWrapper(wrapper),
      mScanning(false),
      mScanProgressNote(0)
{
    TX_ENTRY
    connect( mMpxWrapper, SIGNAL(scanStarted()), this, SLOT(handleScanStarted()) );
    connect( mMpxWrapper, SIGNAL(scanEnded()), this, SLOT(handleScanEnded()) );
    connect( mMpxWrapper, SIGNAL(scanCountChanged(int)), this, SLOT(handleScanCountChanged(int)) );
    TX_EXIT
}

/*!
 Destructs the collection song scanner.
 */
MpCollectionSongScanner::~MpCollectionSongScanner()
{
    TX_ENTRY
    if ( mScanProgressNote ) {
        delete mScanProgressNote;
    }
    TX_EXIT
}

/*!
 Initiates song scanning.
 */
void MpCollectionSongScanner::scan()
{
    mScanning = true;
    mMpxWrapper->scan();
}

/*!
 Returns true if scanning is ongoing.
 */
bool MpCollectionSongScanner::isScanning()
{
    return mScanning;
}

/*!
 Cancels ongoing song scanning, if any.

 \sa scan()
 */
void MpCollectionSongScanner::cancelScan()
{
    if ( mScanning ) {
        mScanning = false;
        mMpxWrapper->cancelScan();
    }
}

/*!
 Slot called upon notification from MPX Harvesting FW indicating start of
 scanning process.
 */
void MpCollectionSongScanner::handleScanStarted()
{
    if ( !mScanProgressNote ) {
        mScanProgressNote = new HbProgressNote(HbProgressNote::WaitNote);
        connect(mScanProgressNote, SIGNAL(cancelled()), this, SLOT(cancelScan()));
    }
    mScanProgressNote->setText( QString("Scanning...") );
    mScanProgressNote->show();
}

/*!
 Slot called upon notification from MPX Harvesting FW indicating end of
 scanning process.
 */
void MpCollectionSongScanner::handleScanEnded()
{
    if ( mScanning ) {
        mScanning = false;
        mScanProgressNote->cancel();
    }
    emit scanEnded();
}

/*!
 Slot called upon notification from MPX Harvesting FW indicating the number of
 songs scanned so far.
 */
void MpCollectionSongScanner::handleScanCountChanged(int count)
{
    QString added;
    added.setNum(count);
    added.append(" file(s) added.");
    mScanProgressNote->setText(added);
}