From: Torsten Dreyer Date: Fri, 14 Mar 2014 14:19:23 +0000 (+0100) Subject: add min/max freq to the frequencyformatter X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=75933d3e1e20144138ffb02df9fddf1369370379;p=flightgear.git add min/max freq to the frequencyformatter --- diff --git a/src/Instrumentation/commradio.cxx b/src/Instrumentation/commradio.cxx index de9c9f035..341488671 100644 --- a/src/Instrumentation/commradio.cxx +++ b/src/Instrumentation/commradio.cxx @@ -81,6 +81,7 @@ double SimpleDistanceSquareSignalQualityComputer::computeSignalQuality( double d class OnExitHandler { public: virtual void onExit() = 0; + virtual ~OnExitHandler() {} }; class OnExit { @@ -113,6 +114,7 @@ class OutputProperties : public OnExitHandler { _PO_trackDistance_m( rootNode->getNode("track-distance-m",true) ), _PO_heightAboveStation_ft( rootNode->getNode("height-above-station-ft",true) ) {} + virtual ~OutputProperties() {} protected: SGPropertyNode_ptr _rootNode; @@ -282,9 +284,9 @@ CommRadioImpl::CommRadioImpl( SGPropertyNode_ptr node ) : _num( node->getIntValue("number",0)), _metarBridge( new MetarBridge() ), _useFrequencyFormatter( _rootNode->getNode("frequencies/selected-mhz",true), - _rootNode->getNode("frequencies/selected-mhz-fmt",true), 0.025 ), + _rootNode->getNode("frequencies/selected-mhz-fmt",true), 0.025, 118.0, 136.0 ), _stbyFrequencyFormatter( _rootNode->getNode("frequencies/standby-mhz",true), - _rootNode->getNode("frequencies/standby-mhz-fmt",true), 0.025 ), + _rootNode->getNode("frequencies/standby-mhz-fmt",true), 0.025, 118.0, 136.0 ), _signalQualityComputer( new SimpleDistanceSquareSignalQualityComputer(10*SG_NM_TO_METER) ), _stationTTL(0.0), diff --git a/src/Instrumentation/frequencyformatter.hxx b/src/Instrumentation/frequencyformatter.hxx index d231eb0a1..f36c78504 100644 --- a/src/Instrumentation/frequencyformatter.hxx +++ b/src/Instrumentation/frequencyformatter.hxx @@ -5,10 +5,12 @@ class FrequencyFormatter : public SGPropertyChangeListener { public: - FrequencyFormatter( SGPropertyNode_ptr freqNode, SGPropertyNode_ptr fmtFreqNode, double channelSpacing ) : + FrequencyFormatter( SGPropertyNode_ptr freqNode, SGPropertyNode_ptr fmtFreqNode, double channelSpacing, double min, double max ) : _freqNode( freqNode ), _fmtFreqNode( fmtFreqNode ), - _channelSpacing(channelSpacing) + _channelSpacing(channelSpacing), + _min(min), + _max(max) { _freqNode->addChangeListener( this ); valueChanged(_freqNode); @@ -34,13 +36,18 @@ public: { double d = SGMiscd::roundToInt(_freqNode->getDoubleValue() / _channelSpacing) * _channelSpacing; // strip last digit, do not round - return ((int)(d*100))/100.0; + double f = ((int)(d*100))/100.0; + if( f < _min ) return _min; + if( f >= _max ) return _max; + return f; } private: SGPropertyNode_ptr _freqNode; SGPropertyNode_ptr _fmtFreqNode; double _channelSpacing; + double _min; + double _max; }; diff --git a/src/Instrumentation/newnavradio.cxx b/src/Instrumentation/newnavradio.cxx index 0c97a7c6d..a932a0e2a 100644 --- a/src/Instrumentation/newnavradio.cxx +++ b/src/Instrumentation/newnavradio.cxx @@ -843,8 +843,8 @@ NavRadioImpl::NavRadioImpl( SGPropertyNode_ptr node ) : _name(node->getStringValue("name", "nav")), _num(node->getIntValue("number", 0)), _rootNode(fgGetNode( std::string("/instrumentation/") + _name, _num, true)), - _useFrequencyFormatter( _rootNode->getNode("frequencies/selected-mhz",true), _rootNode->getNode("frequencies/selected-mhz-fmt",true), 0.05 ), - _stbyFrequencyFormatter( _rootNode->getNode("frequencies/standby-mhz",true), _rootNode->getNode("frequencies/standby-mhz-fmt",true), 0.05 ), + _useFrequencyFormatter( _rootNode->getNode("frequencies/selected-mhz",true), _rootNode->getNode("frequencies/selected-mhz-fmt",true), 0.05, 108.0, 118.0 ), + _stbyFrequencyFormatter( _rootNode->getNode("frequencies/standby-mhz",true), _rootNode->getNode("frequencies/standby-mhz-fmt",true), 0.05, 108.0, 118.0 ), _navIndicator(_rootNode), _stationTTL(0.0), _frequency(-1.0),