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 /*! |