File indexing completed on 2025-01-26 04:25:02

0001 //
0002 // Created by gabridc on 5/6/21.
0003 //
0004 #pragma once
0005 #include <QDebug>
0006 
0007 #include <QObject>
0008 #include <QThread>
0009 
0010 #include "kdtree.hpp"
0011 
0012 #include "imagetools_export.h"
0013 
0014 class City;
0015 class CitiesDB;
0016 class KDTree_Cities
0017 {
0018 
0019 public:
0020     KDTree_Cities *instance()
0021     {
0022         static KDTree_Cities instance;
0023         return &instance;
0024     }
0025 
0026 private:
0027     KDTree_Cities();
0028 };
0029 
0030 /**
0031  * @brief A wrapper to give access to al the cities information in the data base
0032  */
0033 class IMAGETOOLS_EXPORT Cities : public QObject
0034 {
0035     Q_OBJECT
0036     
0037 public:
0038 
0039     static Cities *getInstance()
0040     {
0041         qWarning() << "GETTIG CITIES INSTANCE" << QThread::currentThread();
0042 
0043         if (m_instance)
0044             return m_instance;
0045 
0046         m_instance = new Cities;
0047         return m_instance;
0048     }
0049 
0050     City *findCity(double latitude, double longitude);
0051     City *city(const QString&);
0052     
0053 private:
0054     static Cities *m_instance;
0055 
0056     Cities(QObject * parent = nullptr);
0057 
0058     ~Cities();
0059     Cities(const Cities &) = delete;
0060     Cities &operator=(const Cities &) = delete;
0061     Cities(Cities &&) = delete;
0062     Cities &operator=(Cities &&) = delete;
0063 
0064     static KDTree *m_citiesTree;
0065 
0066     void parseCities();
0067 
0068     CitiesDB *db();
0069     QHash<Qt::HANDLE, CitiesDB*> m_dbs;
0070     
0071 Q_SIGNALS:
0072     void citiesReady();
0073 };