107 lines
2.8 KiB
C++
107 lines
2.8 KiB
C++
// kln89_page_*.[ch]xx - this file is one of the "pages" that
|
|
// are used in the KLN89 GPS unit simulation.
|
|
//
|
|
// Written by David Luff, started 2005.
|
|
//
|
|
// Copyright (C) 2005 - David C Luff - david.luff@nottingham.ac.uk
|
|
//
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU General Public License as
|
|
// published by the Free Software Foundation; either version 2 of the
|
|
// License, or (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful, but
|
|
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
// General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, write to the Free Software
|
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
//
|
|
// $Id$
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
# include "config.h"
|
|
#endif
|
|
|
|
#include "kln89_page_dir.hxx"
|
|
|
|
KLN89DirPage::KLN89DirPage(KLN89* parent)
|
|
: KLN89Page(parent) {
|
|
_nSubPages = 1;
|
|
_subPage = 0;
|
|
_name = "DIR";
|
|
_DToWpDispMode = 2;
|
|
}
|
|
|
|
KLN89DirPage::~KLN89DirPage() {
|
|
}
|
|
|
|
void KLN89DirPage::Update(double dt) {
|
|
// TODO - this can apparently be "ACTIVATE:" under some circumstances
|
|
_kln89->DrawText("DIRECT TO:", 2, 2, 3);
|
|
|
|
if(_kln89->_mode == KLN89_MODE_CRSR) {
|
|
if(_DToWpDispMode == 0) {
|
|
string s = _id;
|
|
while(s.size() < 5) s += ' ';
|
|
if(!_kln89->_blink) {
|
|
_kln89->DrawText(s, 2, 4, 1, false, 99);
|
|
_kln89->DrawEnt(1, 0, 1);
|
|
}
|
|
} else if(_DToWpDispMode == 1) {
|
|
if(!_kln89->_blink) {
|
|
// TODO
|
|
_kln89->DrawEnt(1, 0, 1);
|
|
}
|
|
_kln89->Underline(2, 4, 1, 5);
|
|
} else {
|
|
if(!_kln89->_blink) _kln89->DrawText("_____", 2, 4, 1);
|
|
_kln89->Underline(2, 4, 1, 5);
|
|
}
|
|
} else {
|
|
_kln89->DrawText("_____", 2, 4, 1);
|
|
}
|
|
|
|
KLN89Page::Update(dt);
|
|
}
|
|
|
|
void KLN89DirPage::SetId(const string& s) {
|
|
if(s.size()) {
|
|
_id = s;
|
|
// TODO - fill in lat, lon, type
|
|
// or just pass in waypoints (probably better!)
|
|
_DToWpDispMode = 0;
|
|
// TODO - this (above) should probably be dependent on whether s is a *valid* waypoint!
|
|
} else {
|
|
_DToWpDispMode = 2;
|
|
}
|
|
_saveMasterMode = _kln89->_mode;
|
|
_uLinePos = 1; // Needed to stop Leg flashing
|
|
}
|
|
|
|
void KLN89DirPage::ClrPressed() {
|
|
if(_kln89->_mode == KLN89_MODE_CRSR) {
|
|
if(_DToWpDispMode <= 1) {
|
|
_DToWpDispMode = 2;
|
|
_id.clear();
|
|
} else {
|
|
// Restore the original master mode
|
|
_kln89->_mode = _saveMasterMode;
|
|
// Stop displaying dir page
|
|
_kln89->_activePage = _kln89->_pages[_kln89->_curPage];
|
|
}
|
|
} else {
|
|
// TODO
|
|
}
|
|
}
|
|
|
|
void KLN89DirPage::EntPressed() {
|
|
//cout << "DTO ENT Pressed()\n";
|
|
if(_id.empty()) {
|
|
_kln89->DtoCancel();
|
|
} else {
|
|
_kln89->DtoInitiate(_id);
|
|
}
|
|
}
|