-#include <locale>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <Main/globals.hxx>
#include <Airports/simple.hxx>
#include "AirportList.hxx"
-
AirportList::AirportList(int x, int y, int width, int height) :
puaList(x, y, width, height),
GUI_ID(FGCLASS_AIRPORTLIST),
- _airports(globals->get_airports()),
_content(0)
{
create_list();
void
AirportList::create_list()
{
- const std::ctype<char> &ct = std::use_facet<std::ctype<char> >(std::locale());
- int num_apt = _airports->size();
- char **content = new char *[num_apt + 1];
-
- int n = 0;
- for (int i = 0; i < num_apt; i++) {
- const FGAirport *apt = _airports->getAirport(i);
- std::string entry(' ' + apt->getName() + " (" + apt->getId() + ')');
-
- if (!_filter.empty()) {
- std::string upper(entry.data());
- ct.toupper((char *)upper.data(), (char *)upper.data() + upper.size());
-
- if (upper.find(_filter) == std::string::npos)
- continue;
- }
-
- content[n] = new char[entry.size() + 1];
- strcpy(content[n], entry.c_str());
- n++;
- }
- content[n] = 0;
+ char **content = FGAirport::searchNamesAndIdents(_filter);
+ int n = (content[0] != NULL) ? 1 : 0;
+
// work around plib 2006/04/18 bug: lists with no entries cause crash on arrow-up
newList(n > 0 ? content : 0);