| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | /* *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 <https://www.gnu.org/licenses/>. */#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<int, QString> pilotsIdMap;    QHash<int, QString> tailsIdMap;    QHash<int, QString> airportIcaoIdMap;    QHash<int, QString> airportIataIdMap;    QHash<int, QString> 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<int, QString> getIdMap(CompleterTarget target);    const QHash<int, QString> &getAirportsMapICAO() const;    const QHash<int, QString> &getAirportsMapIATA() const;private:    QHash<int, QString> airportsMapICAO;    QHash<int, QString> airportsMapIATA;};} // namespace OPL#endif // DBCOMPLETIONDATA_H
 |