radioapp/radiouiengine/src/radioscannerengine.cpp
changeset 19 afea38384506
parent 16 f54ebcfc1b80
child 37 451b2e1545b2
equal deleted inserted replaced
16:f54ebcfc1b80 19:afea38384506
    41  *
    41  *
    42  */
    42  */
    43 RadioScannerEngine::~RadioScannerEngine()
    43 RadioScannerEngine::~RadioScannerEngine()
    44 {
    44 {
    45     cancel();
    45     cancel();
    46     Q_D( RadioScannerEngine );
       
    47     if ( d->mMutedByScanner ) {
       
    48         d->mUiEngine.api().toggleMute();
       
    49     }
       
    50     delete d_ptr;
    46     delete d_ptr;
    51 }
    47 }
    52 
    48 
    53 /*!
    49 /*!
    54  * Starts the scanning from minimum frequency
    50  * Starts the scanning from minimum frequency
    55  */
    51  */
    56 void RadioScannerEngine::startScanning()
    52 void RadioScannerEngine::startScanning()
    57 {
    53 {
    58     cancel();
       
    59     Q_D( RadioScannerEngine );
    54     Q_D( RadioScannerEngine );
       
    55     d->mUiEngine.cancelSeeking();
       
    56 
       
    57     d->mIsScanning = true;
       
    58 
    60     if ( !d->mUiEngine.api().isMuted() ) {
    59     if ( !d->mUiEngine.api().isMuted() ) {
    61         d->mUiEngine.api().toggleMute();
    60         d->mUiEngine.api().setMute( true );
    62         d->mMutedByScanner = true;
    61         d->mMutedByScanner = true;
    63     }
    62     }
    64 
    63 
    65     d->mUiEngine.api().model().stationHandlerIf().removeLocalStations();
    64     d->mUiEngine.api().emitSeekingStarted( Seeking::Up );
       
    65 
       
    66     d->mUiEngine.api().stationModel().removeAll( RadioStationModel::RemoveLocalStations );
    66     d->mLastFoundFrequency = d->mUiEngine.api().minFrequency();
    67     d->mLastFoundFrequency = d->mUiEngine.api().minFrequency();
    67     d->mUiEngine.wrapper().tuneFrequency( d->mLastFoundFrequency, TuneReason::StationScanInitialization );
    68 
       
    69     if ( d->mUiEngine.wrapper().currentFrequency() == d->mLastFoundFrequency ) {
       
    70         // Engine was already at the minimun frequency so start scanning
       
    71         d->mUiEngine.wrapper().startSeeking( Seeking::Up, TuneReason::StationScan );
       
    72     } else {
       
    73         // Engine must be initialized to minimum frequency before scanning can start
       
    74         d->mUiEngine.wrapper().tuneFrequency( d->mLastFoundFrequency, TuneReason::StationScanInitialization );
       
    75     }
    68 }
    76 }
    69 
    77 
    70 /*!
    78 /*!
    71  * Continues the scanning upwards from current frequency
    79  * Continues the scanning upwards from current frequency
    72  */
    80  */
    75     Q_D( RadioScannerEngine );
    83     Q_D( RadioScannerEngine );
    76     d->mUiEngine.wrapper().startSeeking( Seeking::Up, TuneReason::StationScan );
    84     d->mUiEngine.wrapper().startSeeking( Seeking::Up, TuneReason::StationScan );
    77 }
    85 }
    78 
    86 
    79 /*!
    87 /*!
       
    88  * Checks if the scanning is ongoing
       
    89  */
       
    90 bool RadioScannerEngine::isScanning() const
       
    91 {
       
    92     Q_D( const RadioScannerEngine );
       
    93     return d->mIsScanning;
       
    94 }
       
    95 
       
    96 /*!
    80  * Cancels the scanning process
    97  * Cancels the scanning process
    81  */
    98  */
    82 void RadioScannerEngine::cancel()
    99 void RadioScannerEngine::cancel()
    83 {
   100 {
    84     Q_D( RadioScannerEngine );
   101     Q_D( RadioScannerEngine );
    85     if ( d->mUiEngine.api().isScanning() ) {
   102     if ( isScanning() ) {
       
   103         d->mIsScanning = false;
    86         d->mUiEngine.cancelSeeking();
   104         d->mUiEngine.cancelSeeking();
    87     }
   105     }
       
   106 
    88     if ( d->mMutedByScanner ) {
   107     if ( d->mMutedByScanner ) {
    89         d->mUiEngine.api().toggleMute();
   108         d->mUiEngine.api().setMute( false );
    90         d->mMutedByScanner = false;
   109         d->mMutedByScanner = false;
    91     }
   110     }
    92 }
   111 }
    93 
   112 
    94 /*!
   113 /*!