From e6aea6dcded9481ff5d464d0bf75687b04860d3b Mon Sep 17 00:00:00 2001 From: Dave Luff Date: Mon, 6 Dec 2010 22:50:37 +0000 Subject: [PATCH] KLN89: Allow user to set default first char of waypoint as per real life unit. --- src/Instrumentation/KLN89/kln89.cxx | 1 + src/Instrumentation/KLN89/kln89.hxx | 1 + src/Instrumentation/KLN89/kln89_page_fpl.cxx | 12 ++++++++++-- src/Instrumentation/KLN89/kln89_page_set.cxx | 15 +++++++++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/Instrumentation/KLN89/kln89.cxx b/src/Instrumentation/KLN89/kln89.cxx index 57985a729..7e0a1834e 100644 --- a/src/Instrumentation/KLN89/kln89.cxx +++ b/src/Instrumentation/KLN89/kln89.cxx @@ -228,6 +228,7 @@ KLN89::KLN89(RenderArea2D* instrument) _suaAlertEnabled = false; _altAlertEnabled = false; _minDisplayBrightness = 4; + _defaultFirstChar = 'A'; // Mega-hack - hardwire airport town and state names for the FG base area since we don't have any data for these at the moment // TODO - do this better one day! diff --git a/src/Instrumentation/KLN89/kln89.hxx b/src/Instrumentation/KLN89/kln89.hxx index 052d1b90c..f242b71b7 100644 --- a/src/Instrumentation/KLN89/kln89.hxx +++ b/src/Instrumentation/KLN89/kln89.hxx @@ -302,6 +302,7 @@ private: bool _suaAlertEnabled; // Alert user to potential SUA entry bool _altAlertEnabled; // Alert user to min safe alt violation int _minDisplayBrightness; // Minimum display brightness in low light. + char _defaultFirstChar; // Default first waypoint character. }; #endif // _KLN89_HXX diff --git a/src/Instrumentation/KLN89/kln89_page_fpl.cxx b/src/Instrumentation/KLN89/kln89_page_fpl.cxx index 0cb8d13b8..b48f957bc 100644 --- a/src/Instrumentation/KLN89/kln89_page_fpl.cxx +++ b/src/Instrumentation/KLN89/kln89_page_fpl.cxx @@ -1013,7 +1013,11 @@ void KLN89FplPage::Knob2Left1() { } else if(appWp) { ShowScratchpadMessage("Invald", " Add "); } else { - if((_wLinePos + 1) > _entWpStr.size()) { + if(!_entWpStr.size()) { + _entWpStr += _kln89->DecChar(_kln89->_defaultFirstChar, false, true); + } else if((_wLinePos + 1) > _entWpStr.size()) { + // I don't think we can ever reach this state since I think it only ever applies to the + // first char and gets caught by the line above, but it can stay for now just in case. _entWpStr += '9'; } else { _entWpStr[_wLinePos] = _kln89->DecChar(_entWpStr[_wLinePos], (_wLinePos == 0 ? false : true)); @@ -1093,7 +1097,11 @@ void KLN89FplPage::Knob2Right1() { } else if(appWp) { ShowScratchpadMessage("Invald", " Add "); } else { - if((_wLinePos + 1) > _entWpStr.size()) { + if(!_entWpStr.size()) { + _entWpStr += _kln89->_defaultFirstChar; + } else if((_wLinePos + 1) > _entWpStr.size()) { + // I don't think we can ever reach this state since I think it only ever applies to the + // first char and gets caught by the line above, but it can stay for now just in case. _entWpStr += 'A'; } else { _entWpStr[_wLinePos] = _kln89->IncChar(_entWpStr[_wLinePos], (_wLinePos == 0 ? false : true)); diff --git a/src/Instrumentation/KLN89/kln89_page_set.cxx b/src/Instrumentation/KLN89/kln89_page_set.cxx index 3ab3228d7..8ec82807b 100644 --- a/src/Instrumentation/KLN89/kln89_page_set.cxx +++ b/src/Instrumentation/KLN89/kln89_page_set.cxx @@ -76,6 +76,14 @@ void KLN89SetPage::Update(double dt) { _kln89->DrawText("Character of", 2, 1, 2); _kln89->DrawText("Wpt identifier", 2, 0, 1); _kln89->DrawText("Entry:", 2, 3, 0); + if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 1) { + if(!_kln89->_blink) { + _kln89->DrawChar(_kln89->_defaultFirstChar, 2, 10, 0); + } + _kln89->Underline(2, 10, 0, 1); + } else { + _kln89->DrawChar(_kln89->_defaultFirstChar, 2, 10, 0); + } break; case 6: _kln89->DrawText("NEAREST APT", 2, 1, 3); @@ -203,6 +211,7 @@ void KLN89SetPage::CrsrPressed() { _maxULinePos = 1; break; case 5: + _maxULinePos = 1; break; case 6: _maxULinePos = 2; @@ -241,6 +250,9 @@ void KLN89SetPage::Knob2Left1() { } break; case 5: + if(_uLinePos == 1) { + _kln89->_defaultFirstChar = _kln89->DecChar(_kln89->_defaultFirstChar, false, true); + } break; case 6: break; @@ -287,6 +299,9 @@ void KLN89SetPage::Knob2Right1() { } break; case 5: + if(_uLinePos == 1) { + _kln89->_defaultFirstChar = _kln89->IncChar(_kln89->_defaultFirstChar, false, true); + } break; case 6: break; -- 2.39.5