radioapp/radiouiengine/src/radioscannerengine.cpp
changeset 19 afea38384506
parent 16 f54ebcfc1b80
child 37 451b2e1545b2
--- a/radioapp/radiouiengine/src/radioscannerengine.cpp	Mon May 03 12:31:41 2010 +0300
+++ b/radioapp/radiouiengine/src/radioscannerengine.cpp	Fri May 14 15:52:32 2010 +0300
@@ -43,10 +43,6 @@
 RadioScannerEngine::~RadioScannerEngine()
 {
     cancel();
-    Q_D( RadioScannerEngine );
-    if ( d->mMutedByScanner ) {
-        d->mUiEngine.api().toggleMute();
-    }
     delete d_ptr;
 }
 
@@ -55,16 +51,28 @@
  */
 void RadioScannerEngine::startScanning()
 {
-    cancel();
     Q_D( RadioScannerEngine );
+    d->mUiEngine.cancelSeeking();
+
+    d->mIsScanning = true;
+
     if ( !d->mUiEngine.api().isMuted() ) {
-        d->mUiEngine.api().toggleMute();
+        d->mUiEngine.api().setMute( true );
         d->mMutedByScanner = true;
     }
 
-    d->mUiEngine.api().model().stationHandlerIf().removeLocalStations();
+    d->mUiEngine.api().emitSeekingStarted( Seeking::Up );
+
+    d->mUiEngine.api().stationModel().removeAll( RadioStationModel::RemoveLocalStations );
     d->mLastFoundFrequency = d->mUiEngine.api().minFrequency();
-    d->mUiEngine.wrapper().tuneFrequency( d->mLastFoundFrequency, TuneReason::StationScanInitialization );
+
+    if ( d->mUiEngine.wrapper().currentFrequency() == d->mLastFoundFrequency ) {
+        // Engine was already at the minimun frequency so start scanning
+        d->mUiEngine.wrapper().startSeeking( Seeking::Up, TuneReason::StationScan );
+    } else {
+        // Engine must be initialized to minimum frequency before scanning can start
+        d->mUiEngine.wrapper().tuneFrequency( d->mLastFoundFrequency, TuneReason::StationScanInitialization );
+    }
 }
 
 /*!
@@ -77,16 +85,27 @@
 }
 
 /*!
+ * Checks if the scanning is ongoing
+ */
+bool RadioScannerEngine::isScanning() const
+{
+    Q_D( const RadioScannerEngine );
+    return d->mIsScanning;
+}
+
+/*!
  * Cancels the scanning process
  */
 void RadioScannerEngine::cancel()
 {
     Q_D( RadioScannerEngine );
-    if ( d->mUiEngine.api().isScanning() ) {
+    if ( isScanning() ) {
+        d->mIsScanning = false;
         d->mUiEngine.cancelSeeking();
     }
+
     if ( d->mMutedByScanner ) {
-        d->mUiEngine.api().toggleMute();
+        d->mUiEngine.api().setMute( false );
         d->mMutedByScanner = false;
     }
 }