]> git.mxchange.org Git - flightgear.git/blob - src/Instrumentation/KLN89/kln89_page_set.cxx
Ignore generated files
[flightgear.git] / src / Instrumentation / KLN89 / kln89_page_set.cxx
1 // kln89_page_*.[ch]xx - this file is one of the "pages" that
2 //                       are used in the KLN89 GPS unit simulation. 
3 //
4 // Written by David Luff, started 2005.
5 //
6 // Copyright (C) 2005 - David C Luff - david.luff@nottingham.ac.uk
7 //
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.
12 //
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.
17 //
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., 675 Mass Ave, Cambridge, MA 02139, USA.
21 //
22 // $Id$
23
24 #include "kln89_page_set.hxx"
25
26 #include <iostream>
27 using namespace std;
28
29 KLN89SetPage::KLN89SetPage(KLN89* parent) 
30 : KLN89Page(parent) {
31         _nSubPages = 11;
32         _subPage = 0;
33         _name = "SET";
34 }
35
36 KLN89SetPage::~KLN89SetPage() {
37 }
38
39 void KLN89SetPage::Update(double dt) {
40         string sBaro, sAlt, sVel;
41         switch(_subPage+1) {
42         case 1:
43                 _kln89->DrawText("INIT POS:", 2, 0, 3);
44                 break;
45         case 2:
46                 _kln89->DrawText("DATE", 2, 0, 3);
47                 _kln89->DrawText("TIME", 2, 0, 2);
48                 _kln89->DrawText("Cord", 2, 0, 1);
49                 _kln89->DrawText("Mag Var:", 2, 0, 0);
50                 break;
51         case 3:
52                 _kln89->DrawText("Update DB on", 2, 1, 3);
53                 _kln89->DrawText("ground only", 2, 1, 2);
54                 _kln89->DrawText("Key", 2, 0, 1);
55                 _kln89->DrawText("Update pub DB?", 2, 0, 0);
56                 break;
57         case 4:
58                 //cout << "_uLinePos = " << _uLinePos << '\n';
59                 _kln89->DrawText("TURN", 2, 5, 3);
60                 _kln89->DrawText("ANTICIPATION", 2, 1, 2);
61                 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 1) {
62                         if(!_kln89->_blink) {
63                                 _kln89->DrawText((_kln89->GetTurnAnticipation() ? "ENABLED" : "DISABLED"), 2, 3, 1);
64                         }
65                         _kln89->Underline(2, 3, 1, 8);
66                 } else {
67                         _kln89->DrawText((_kln89->GetTurnAnticipation() ? "ENABLED" : "DISABLED"), 2, 3, 1);
68                 }
69                 break;
70         case 5:
71                 _kln89->DrawText("Default First", 2, 0, 3);
72                 _kln89->DrawText("Character of", 2, 1, 2);
73                 _kln89->DrawText("Wpt identifier", 2, 0, 1);
74                 _kln89->DrawText("Entry:", 2, 3, 0);
75                 break;
76         case 6:
77                 _kln89->DrawText("NEAREST APT", 2, 1, 3);
78                 _kln89->DrawText("CRITERIA", 2, 3, 2);
79                 _kln89->DrawText("Length:", 2, 0, 1);
80                 _kln89->DrawText("Surface:", 2, 0, 0);
81                 break;
82         case 7:
83                 _kln89->DrawText("SUA ALERT", 2, 3, 3);
84                 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 1) {
85                         if(!_kln89->_blink) {
86                                 _kln89->DrawText((_kln89->GetSuaAlertEnabled() ? "ENABLED" : "DISABLED"), 2, 4, 2);
87                         }
88                         _kln89->Underline(2, 4, 2, 8);
89                 } else {
90                         _kln89->DrawText((_kln89->GetSuaAlertEnabled() ? "ENABLED" : "DISABLED"), 2, 4, 2);
91                 }
92                 if(_kln89->GetSuaAlertEnabled()) {
93                         _kln89->DrawText("Buffer:", 2, 0, 1);
94                         _kln89->DrawSpecialChar(5, 2, 7, 1);    // +- sign.
95                         if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 2) {
96                                 if(!_kln89->_blink) {
97                                         _kln89->DrawText("00300", 2, 8, 1);             // TODO - fix this hardwiring!!!!
98                                 }
99                                 _kln89->Underline(2, 8, 1, 5);
100                         } else {
101                                 _kln89->DrawText("00300", 2, 8, 1);             // TODO - fix this hardwiring!!!!
102                         }
103                         _kln89->DrawText("ft", 2, 13, 1);       // TODO - fix this hardwiring!!!!
104                 }
105                 break;
106         case 8:
107                 _kln89->DrawText("SET UNITS:", 2, 3, 3);
108                 _kln89->DrawText("Baro    :", 2, 0, 2);
109                 _kln89->DrawText("Alt-APT :", 2, 0, 1);
110                 _kln89->DrawText("Dist-Vel:", 2, 0, 0);
111                 switch(_kln89->_baroUnits) {
112                 case GPS_PRES_UNITS_IN:
113                         sBaro = "\"";
114                         break;
115                 case GPS_PRES_UNITS_MB:
116                         sBaro = "mB";
117                         break;
118                 case GPS_PRES_UNITS_HP:
119                         sBaro = "hP";
120                         break;
121                 }
122                 if(_kln89->_altUnits == GPS_ALT_UNITS_FT) sAlt = "ft";
123                 else sAlt = "m";
124                 if(_kln89->_distUnits == GPS_DIST_UNITS_NM) sVel = "nm-kt";
125                 else sVel = "km-";
126                         
127                 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 1) {
128                         if(!_kln89->_blink) {
129                                 _kln89->DrawText(sBaro, 2, 10, 2);
130                         }
131                         _kln89->Underline(2, 10, 2, 2);
132                 } else {
133                         _kln89->DrawText(sBaro, 2, 10, 2);
134                 }
135                 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 2) {
136                         if(!_kln89->_blink) {
137                                 _kln89->DrawText(sAlt, 2, 10, 1);
138                         }
139                         _kln89->Underline(2, 10, 1, 2);
140                 } else {
141                         _kln89->DrawText(sAlt, 2, 10, 1);
142                 }
143                 if(_kln89->_mode == KLN89_MODE_CRSR && _uLinePos == 3) {
144                         if(!_kln89->_blink) {
145                                 _kln89->DrawText(sVel, 2, 10, 0);
146                                 if(_kln89->_distUnits != GPS_DIST_UNITS_NM) _kln89->DrawKPH(2, 13, 0);
147                         }
148                         _kln89->Underline(2, 10, 0, 5);
149                 } else {
150                         _kln89->DrawText(sVel, 2, 10, 0);
151                         if(_kln89->_distUnits != GPS_DIST_UNITS_NM) _kln89->DrawKPH(2, 13, 0);
152                 }
153                 break;
154         case 9:
155                 _kln89->DrawText("Altitude", 2, 3, 3);
156                 _kln89->DrawText("Alert:", 2, 1, 2);
157                 break;
158         case 10:
159                 _kln89->DrawText("BUS MONITOR", 2, 2, 3);
160                 _kln89->DrawText("Bus Volt", 2, 0, 2);
161                 _kln89->DrawText("Alert Volt", 2, 0, 1);
162                 _kln89->DrawText("Alert Delay", 2, 0, 0);
163                 break;
164         case 11:
165                 _kln89->DrawText("MIN DISPLAY", 2, 2, 3);
166                 _kln89->DrawText("BRIGHTNESS ADJ", 2, 1, 2);
167                 break;
168         }
169         
170         KLN89Page::Update(dt);
171 }
172
173 void KLN89SetPage::CrsrPressed() {
174         if(_kln89->_mode == KLN89_MODE_DISP) return;
175         if(_kln89->_obsMode) {
176                 _uLinePos = 0;
177         } else {
178                 _uLinePos = 1;
179         }
180         switch(_subPage+1) {
181         case 1:
182                 break;
183         case 2:
184                 break;
185         case 3:
186                 break;
187         case 4:
188                 _maxULinePos = 1;
189                 break;
190         case 5:
191                 break;
192         case 6:
193                 _maxULinePos = 2;
194                 break;
195         case 7:
196                 if(_kln89->GetSuaAlertEnabled()) _maxULinePos = 2;
197                 else _maxULinePos = 1;
198                 break;
199         case 8:
200                 _maxULinePos = 3;
201                 break;
202         case 9:
203                 break;
204         case 10:
205                 break;
206         case 11:
207                 break;
208         }
209 }
210
211 void KLN89SetPage::Knob2Left1() {
212         if(_kln89->_mode != KLN89_MODE_CRSR || _uLinePos == 0) {
213                 KLN89Page::Knob2Left1();
214         } else {
215                 switch(_subPage+1) {
216                 case 1:
217                         break;
218                 case 2:
219                         break;
220                 case 3:
221                         break;
222                 case 4:
223                         if(_uLinePos == 1) {
224                                 _kln89->SetTurnAnticipation(!_kln89->GetTurnAnticipation());
225                         }
226                         break;
227                 case 5:
228                         break;
229                 case 6:
230                         break;
231                 case 7:
232                         if(_uLinePos == 1) {
233                                 _kln89->SetSuaAlertEnabled(!_kln89->GetSuaAlertEnabled());
234                                 _maxULinePos = (_kln89->GetSuaAlertEnabled() ? 2 : 1);
235                         } else if(_uLinePos == 2) {
236                                 // TODO - implement variable sua alert buffer
237                         }
238                         break;
239                 case 8:
240                         if(_uLinePos == 1) {  // baro units
241                                 _kln89->SetBaroUnits(_kln89->GetBaroUnits() - 1, true);
242                         } else if(_uLinePos == 2) {
243                                 _kln89->SetAltUnitsSI(!_kln89->GetAltUnitsSI());
244                         } else if(_uLinePos == 3) {
245                                 _kln89->SetDistVelUnitsSI(!_kln89->GetDistVelUnitsSI());
246                         }
247                         break;
248                 }
249         }
250 }
251
252 void KLN89SetPage::Knob2Right1() {
253         if(_kln89->_mode != KLN89_MODE_CRSR || _uLinePos == 0) {
254                 KLN89Page::Knob2Right1();
255         } else {
256                 switch(_subPage+1) {
257                 case 1:
258                         break;
259                 case 2:
260                         break;
261                 case 3:
262                         break;
263                 case 4:
264                         if(_uLinePos == 1) {   // Which it should be!
265                                 _kln89->SetTurnAnticipation(!_kln89->GetTurnAnticipation());
266                         }
267                         break;
268                 case 5:
269                         break;
270                 case 6:
271                         break;
272                 case 7:
273                         if(_uLinePos == 1) {
274                                 _kln89->SetSuaAlertEnabled(!_kln89->GetSuaAlertEnabled());
275                                 _maxULinePos = (_kln89->GetSuaAlertEnabled() ? 2 : 1);
276                         } else if(_uLinePos == 2) {
277                                 // TODO - implement variable sua alert buffer
278                         }
279                         break;
280                 case 8:
281                         if(_uLinePos == 1) {  // baro units
282                                 _kln89->SetBaroUnits(_kln89->GetBaroUnits() + 1, true);
283                         } else if(_uLinePos == 2) {
284                                 _kln89->SetAltUnitsSI(!_kln89->GetAltUnitsSI());
285                         } else if(_uLinePos == 3) {
286                                 _kln89->SetDistVelUnitsSI(!_kln89->GetDistVelUnitsSI());
287                         }
288                         break;
289                 }
290         }
291 }