00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include "scanmonitor.h"
00032 #include "signalmonitorvalue.h"
00033 #include "channelscanner.h"
00034
00035
00036 #include <QCoreApplication>
00037
00038 QEvent::Type ScannerEvent::ScanComplete =
00039 (QEvent::Type) QEvent::registerEventType();
00040 QEvent::Type ScannerEvent::ScanShutdown =
00041 (QEvent::Type) QEvent::registerEventType();
00042 QEvent::Type ScannerEvent::AppendTextToLog =
00043 (QEvent::Type) QEvent::registerEventType();
00044 QEvent::Type ScannerEvent::SetStatusText =
00045 (QEvent::Type) QEvent::registerEventType();
00046 QEvent::Type ScannerEvent::SetStatusTitleText =
00047 (QEvent::Type) QEvent::registerEventType();
00048 QEvent::Type ScannerEvent::SetPercentComplete =
00049 (QEvent::Type) QEvent::registerEventType();
00050 QEvent::Type ScannerEvent::SetStatusRotorPosition =
00051 (QEvent::Type) QEvent::registerEventType();
00052 QEvent::Type ScannerEvent::SetStatusSignalToNoise =
00053 (QEvent::Type) QEvent::registerEventType();
00054 QEvent::Type ScannerEvent::SetStatusSignalStrength =
00055 (QEvent::Type) QEvent::registerEventType();
00056 QEvent::Type ScannerEvent::SetStatusSignalLock =
00057 (QEvent::Type) QEvent::registerEventType();
00058 QEvent::Type ScannerEvent::SetStatusChannelTuned =
00059 (QEvent::Type) QEvent::registerEventType();
00060
00062 #define TRANSPORT_PCT 6
00063
00064 #define TUNED_PCT 3
00065
00066 void post_event(QObject *dest, QEvent::Type type, int val)
00067 {
00068 ScannerEvent *e = new ScannerEvent(type);
00069 e->intValue(val);
00070 QCoreApplication::postEvent(dest, e);
00071 }
00072
00073 void post_event(QObject *dest, QEvent::Type type, const QString &val)
00074 {
00075 ScannerEvent *e = new ScannerEvent(type);
00076 QString tmp = val; tmp.detach();
00077 e->strValue(tmp);
00078 QCoreApplication::postEvent(dest, e);
00079 }
00080
00081 void post_event(QObject *dest, QEvent::Type type, int val,
00082 Configurable *spp)
00083 {
00084 ScannerEvent *e = new ScannerEvent(type);
00085 e->intValue(val);
00086 e->ConfigurableValue(spp);
00087 QCoreApplication::postEvent(dest, e);
00088 }
00089
00090 void ScanMonitor::deleteLater(void)
00091 {
00092 channelScanner = NULL;
00093
00094 QObject::deleteLater();
00095 }
00096
00097 void ScanMonitor::ScanComplete(void)
00098 {
00099 post_event(this, ScannerEvent::ScanComplete, 0);
00100 }
00101
00102 void ScanMonitor::ScanPercentComplete(int pct)
00103 {
00104 int tmp = TRANSPORT_PCT + ((100 - TRANSPORT_PCT) * pct)/100;
00105 post_event(this, ScannerEvent::SetPercentComplete, tmp);
00106 }
00107
00108 void ScanMonitor::ScanAppendTextToLog(const QString &str)
00109 {
00110 post_event(this, ScannerEvent::AppendTextToLog, str);
00111 }
00112
00113 void ScanMonitor::ScanUpdateStatusText(const QString &str)
00114 {
00115 QString msg = tr("Scanning");
00116 if (!str.isEmpty())
00117 msg = QString("%1 %2").arg(msg).arg(str);
00118
00119 post_event(this, ScannerEvent::SetStatusText, msg);
00120 }
00121
00122 void ScanMonitor::ScanUpdateStatusTitleText(const QString &str)
00123 {
00124 post_event(this, ScannerEvent::SetStatusTitleText, str);
00125 }
00126
00127 void ScanMonitor::StatusRotorPosition(const SignalMonitorValue &val)
00128 {
00129 post_event(this, ScannerEvent::SetStatusRotorPosition,
00130 val.GetNormalizedValue(0, 65535));
00131 }
00132
00133 void ScanMonitor::StatusSignalLock(const SignalMonitorValue &val)
00134 {
00135 post_event(this, ScannerEvent::SetStatusSignalLock, val.GetValue());
00136 }
00137
00138 void ScanMonitor::StatusChannelTuned(const SignalMonitorValue &val)
00139 {
00140 post_event(this, ScannerEvent::SetStatusChannelTuned, val.GetValue());
00141 }
00142
00143 void ScanMonitor::StatusSignalToNoise(const SignalMonitorValue &val)
00144 {
00145 post_event(this, ScannerEvent::SetStatusSignalToNoise,
00146 val.GetNormalizedValue(0, 65535));
00147 }
00148
00149 void ScanMonitor::StatusSignalStrength(const SignalMonitorValue &val)
00150 {
00151 post_event(this, ScannerEvent::SetStatusSignalStrength,
00152 val.GetNormalizedValue(0, 65535));
00153 }
00154
00155 void ScanMonitor::customEvent(QEvent *e)
00156 {
00157 if (channelScanner)
00158 {
00159 ScannerEvent *scanEvent = (ScannerEvent*) e;
00160 channelScanner->HandleEvent(scanEvent);
00161 }
00162 }