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 };