//
// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "kln89_page_apt.hxx"
#include <ATC/commlist.hxx>
#include <Main/globals.hxx>
}
void KLN89AptPage::SetId(const string& s) {
+ if(s != _apt_id || s != _last_apt_id) {
+ UpdateAirport(s); // If we don't do this here we break things if s is the same as the current ID since the update wouldn't get called then.
+ /*
+ DCL: Hmmm - I wrote the comment above, but I don't quite understand it!
+ I'm not quite sure why I don't simply set _apt_id here (and NOT _last_apt_id)
+ and let the logic in Update(...) handle the airport details cache update.
+ */
+ }
_last_apt_id = _apt_id;
_save_apt_id = _apt_id;
_apt_id = s;
- UpdateAirport(s); // If we don't do this here we break things if s is the same as the current ID since the update wouldn't get called then.
}
// Update the cached airport details
if(itr != _kln89->_np_iap.end()) {
_iaps = itr->second;
}
- if(_subPage == 7) _maxULinePos = 4 + _iaps.size(); // We shouldn't need to check the crsr for out-of-bounds here since we only update the airport details when the airport code is changed - ie. _uLinePos <= 4!
+ if(_subPage == 7) {
+ if(_iafDialog || _addDialog || _replaceDialog) {
+ // Eek - major logic error if an airport details cache update occurs
+ // with one of these dialogs active.
+ // TODO - output a warning.
+ //cout << "HELP!!!!!!!!!!\n";
+ } else {
+ _maxULinePos = 4 + _iaps.size(); // We shouldn't need to check the crsr for out-of-bounds here since we only update the airport details when the airport code is changed - ie. _uLinePos <= 4!
+ }
+ }
}
void KLN89AptPage::CrsrPressed() {
}
void KLN89AptPage::EntPressed() {
- //cout << "A\n"
if(_entInvert) {
_entInvert = false;
_last_apt_id = _apt_id;
_apt_id = _save_apt_id;
} else if(_subPage == 7 && _kln89->_mode == KLN89_MODE_CRSR && _uLinePos > 0) {
- //cout << "B\n";
// We are selecting an approach
if(_iafDialog) {
- //cout << "C\n";
if(_uLinePos > 0) {
// Record the IAF that was picked
if(_uLinePos == 3) {