/*
*openPilotLog - A FOSS Pilot Logbook Application
*Copyright (C) 2020-2022 Felix Turowsky
*
*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 3 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, see .
*/
#ifndef DBCOMPLETIONDATA_H
#define DBCOMPLETIONDATA_H
#include "src/opl.h"
namespace OPL {
/*!
* \brief The DatabaseTarget enum lists database items that are
* used by completers, for content matching or need to be accessed programatically.
*/
enum class CompleterTarget
{
AirportIdentifierICAO,
AirportIdentifierIATA,
AirportIdentifier,
AirportNames,
Registrations,
Companies,
PilotNames,
AircraftTypes
};
/*!
* \brief Provides data for QCompleters and QHashs
*
* \details QCompleters and QHashes are used for mapping user input to database keys.
* The required data is retreived from the database and cached for fast access without the
* need to query the database. The DbCompletionData class holds the last state of the database
* (state of user-modifiable data) in order to intelligently refresh the completion data when needed.
*/
class DbCompletionData
{
public:
/*!
* \brief init Retrieves Data and populates Lists and Maps
*/
void init();
/*!
* \brief updates data from the user modifiable tables
*/
void update();
void updateTails();
void updatePilots();
void updateAirports();
// Maps for input mapping DB key - user input
QHash pilotsIdMap;
QHash tailsIdMap;
QHash airportIcaoIdMap;
QHash airportIataIdMap;
QHash airportNameIdMap;
// Lists for QCompleter
QStringList pilotList;
QStringList tailsList;
QStringList airportList;
/*!
* \brief getCompletionList returns a QStringList of values for a
* QCompleter based on database values
*/
static const QStringList getCompletionList(CompleterTarget target);
/*!
* \brief returns a QHash of a human-readable database value and
* its row id. Used in the Dialogs to map user input to unique database entries.
*/
static const QHash getIdMap(CompleterTarget target);
const QHash &getAirportsMapICAO() const;
const QHash &getAirportsMapIATA() const;
private:
QHash airportsMapICAO;
QHash airportsMapIATA;
};
} // namespace OPL
#endif // DBCOMPLETIONDATA_H