1 // kln89_page_*.[ch]xx - this file is one of the "pages" that
2 // are used in the KLN89 GPS unit simulation.
4 // Written by David Luff, started 2005.
6 // Copyright (C) 2005 - David C Luff - daveluff AT ntlworld.com
8 // This program is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU General Public License as
10 // published by the Free Software Foundation; either version 2 of the
11 // License, or (at your option) any later version.
13 // This program is distributed in the hope that it will be useful, but
14 // WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the Free Software
20 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
28 #include "kln89_page_set.hxx"
33 KLN89SetPage::KLN89SetPage(KLN89* parent)
40 KLN89SetPage::~KLN89SetPage() {
43 void KLN89SetPage::Update(double dt) {
44 string sBaro, sAlt, sVel;
47 _kln89->DrawText("INIT POS:", 2, 0, 3);
50 _kln89->DrawText("DATE", 2, 0, 3);
51 _kln89->DrawText("TIME", 2, 0, 2);
52 _kln89->DrawText("Cord", 2, 0, 1);
53 _kln89->DrawText("Mag Var:", 2, 0, 0);
56 _kln89->DrawText("Update DB on", 2, 1, 3);
57 _kln89->DrawText("ground only", 2, 1, 2);
58 _kln89->DrawText("Key", 2, 0, 1);
59 _kln89->DrawText("Update pub DB?", 2, 0, 0);
62 //cout << "_uLinePos = " << _uLinePos << '\n';
63 _kln89->DrawText("TURN", 2, 5, 3);
64 _kln89->DrawText("ANTICIPATION", 2, 1, 2);
65 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 1) {
67 _kln89->DrawText((_kln89->GetTurnAnticipation() ? "ENABLED" : "DISABLED"), 2, 3, 1);
69 _kln89->Underline(2, 3, 1, 8);
71 _kln89->DrawText((_kln89->GetTurnAnticipation() ? "ENABLED" : "DISABLED"), 2, 3, 1);
75 _kln89->DrawText("Default First", 2, 0, 3);
76 _kln89->DrawText("Character of", 2, 1, 2);
77 _kln89->DrawText("Wpt identifier", 2, 0, 1);
78 _kln89->DrawText("Entry:", 2, 3, 0);
79 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 1) {
81 _kln89->DrawChar(_kln89->_defaultFirstChar, 2, 10, 0);
83 _kln89->Underline(2, 10, 0, 1);
85 _kln89->DrawChar(_kln89->_defaultFirstChar, 2, 10, 0);
89 _kln89->DrawText("NEAREST APT", 2, 1, 3);
90 _kln89->DrawText("CRITERIA", 2, 3, 2);
91 _kln89->DrawText("Length:", 2, 0, 1);
92 _kln89->DrawText("Surface:", 2, 0, 0);
95 _kln89->DrawText("SUA ALERT", 2, 3, 3);
96 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 1) {
98 _kln89->DrawText((_kln89->GetSuaAlertEnabled() ? "ENABLED" : "DISABLED"), 2, 4, 2);
100 _kln89->Underline(2, 4, 2, 8);
102 _kln89->DrawText((_kln89->GetSuaAlertEnabled() ? "ENABLED" : "DISABLED"), 2, 4, 2);
104 if(_kln89->GetSuaAlertEnabled()) {
105 _kln89->DrawText("Buffer:", 2, 0, 1);
106 _kln89->DrawSpecialChar(5, 2, 7, 1); // +- sign.
107 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 2) {
108 if(!_kln89->_blink) {
109 _kln89->DrawText("00300", 2, 8, 1); // TODO - fix this hardwiring!!!!
111 _kln89->Underline(2, 8, 1, 5);
113 _kln89->DrawText("00300", 2, 8, 1); // TODO - fix this hardwiring!!!!
115 _kln89->DrawText("ft", 2, 13, 1); // TODO - fix this hardwiring!!!!
119 _kln89->DrawText("SET UNITS:", 2, 3, 3);
120 _kln89->DrawText("Baro :", 2, 0, 2);
121 _kln89->DrawText("Alt-APT :", 2, 0, 1);
122 _kln89->DrawText("Dist-Vel:", 2, 0, 0);
123 switch(_kln89->_baroUnits) {
124 case GPS_PRES_UNITS_IN:
127 case GPS_PRES_UNITS_MB:
130 case GPS_PRES_UNITS_HP:
134 if(_kln89->_altUnits == GPS_ALT_UNITS_FT) sAlt = "ft";
136 if(_kln89->_distUnits == GPS_DIST_UNITS_NM) sVel = "nm-kt";
139 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 1) {
140 if(!_kln89->_blink) {
141 _kln89->DrawText(sBaro, 2, 10, 2);
143 _kln89->Underline(2, 10, 2, 2);
145 _kln89->DrawText(sBaro, 2, 10, 2);
147 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 2) {
148 if(!_kln89->_blink) {
149 _kln89->DrawText(sAlt, 2, 10, 1);
151 _kln89->Underline(2, 10, 1, 2);
153 _kln89->DrawText(sAlt, 2, 10, 1);
155 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 3) {
156 if(!_kln89->_blink) {
157 _kln89->DrawText(sVel, 2, 10, 0);
158 if(_kln89->_distUnits != GPS_DIST_UNITS_NM) _kln89->DrawKPH(2, 13, 0);
160 _kln89->Underline(2, 10, 0, 5);
162 _kln89->DrawText(sVel, 2, 10, 0);
163 if(_kln89->_distUnits != GPS_DIST_UNITS_NM) _kln89->DrawKPH(2, 13, 0);
167 _kln89->DrawText("Altitude", 2, 3, 3);
168 _kln89->DrawText("Alert:", 2, 1, 2);
171 _kln89->DrawText("BUS MONITOR", 2, 2, 3);
172 _kln89->DrawText("Bus Volt", 2, 0, 2);
173 _kln89->DrawText("Alert Volt", 2, 0, 1);
174 _kln89->DrawText("Alert Delay", 2, 0, 0);
177 _kln89->DrawText("MIN DISPLAY", 2, 2, 3);
178 _kln89->DrawText("BRIGHTNESS ADJ", 2, 1, 2);
179 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 1) {
180 if(!_kln89->_blink) {
181 _kln89->DrawChar('0' + _kln89->GetMinDisplayBrightness(), 2, 6, 0);
183 _kln89->Underline(2, 6, 0, 1);
185 _kln89->DrawChar('0' + _kln89->GetMinDisplayBrightness(), 2, 6, 0);
187 if(_kln89->GetMinDisplayBrightness() == 4) {
188 _kln89->DrawText("Default", 2, 8, 0);
193 KLN89Page::Update(dt);
196 void KLN89SetPage::CrsrPressed() {
197 if(_kln89->_mode == KLN89_MODE_DISP) return;
198 if(_kln89->_obsMode) {
220 if(_kln89->GetSuaAlertEnabled()) _maxULinePos = 2;
221 else _maxULinePos = 1;
236 void KLN89SetPage::Knob2Left1() {
237 if(_kln89->_mode != KLN89_MODE_CRSR || _uLinePos == 0) {
238 KLN89Page::Knob2Left1();
249 _kln89->SetTurnAnticipation(!_kln89->GetTurnAnticipation());
254 _kln89->_defaultFirstChar = _kln89->DecChar(_kln89->_defaultFirstChar, false, true);
261 _kln89->SetSuaAlertEnabled(!_kln89->GetSuaAlertEnabled());
262 _maxULinePos = (_kln89->GetSuaAlertEnabled() ? 2 : 1);
263 } else if(_uLinePos == 2) {
264 // TODO - implement variable sua alert buffer
268 if(_uLinePos == 1) { // baro units
269 _kln89->SetBaroUnits(_kln89->GetBaroUnits() - 1, true);
270 } else if(_uLinePos == 2) {
271 _kln89->SetAltUnitsSI(!_kln89->GetAltUnitsSI());
272 } else if(_uLinePos == 3) {
273 _kln89->SetDistVelUnitsSI(!_kln89->GetDistVelUnitsSI());
278 _kln89->DecrementMinDisplayBrightness();
285 void KLN89SetPage::Knob2Right1() {
286 if(_kln89->_mode != KLN89_MODE_CRSR || _uLinePos == 0) {
287 KLN89Page::Knob2Right1();
297 if(_uLinePos == 1) { // Which it should be!
298 _kln89->SetTurnAnticipation(!_kln89->GetTurnAnticipation());
303 _kln89->_defaultFirstChar = _kln89->IncChar(_kln89->_defaultFirstChar, false, true);
310 _kln89->SetSuaAlertEnabled(!_kln89->GetSuaAlertEnabled());
311 _maxULinePos = (_kln89->GetSuaAlertEnabled() ? 2 : 1);
312 } else if(_uLinePos == 2) {
313 // TODO - implement variable sua alert buffer
317 if(_uLinePos == 1) { // baro units
318 _kln89->SetBaroUnits(_kln89->GetBaroUnits() + 1, true);
319 } else if(_uLinePos == 2) {
320 _kln89->SetAltUnitsSI(!_kln89->GetAltUnitsSI());
321 } else if(_uLinePos == 3) {
322 _kln89->SetDistVelUnitsSI(!_kln89->GetDistVelUnitsSI());
327 _kln89->IncrementMinDisplayBrightness();