Stellarium 0.15.0
StelLocationMgr.hpp
1 /*
2  * Copyright (C) 2008 Fabien Chereau
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA.
17  */
18 
19 #ifndef _STELLOCATIONMGR_HPP_
20 #define _STELLOCATIONMGR_HPP_
21 
22 #include "StelLocation.hpp"
23 #include <QString>
24 #include <QObject>
25 #include <QMetaType>
26 #include <QMap>
27 
28 typedef QList<StelLocation> LocationList;
29 typedef QMap<QString,StelLocation> LocationMap;
30 
33 class StelLocationMgr : public QObject
34 {
35  Q_OBJECT
36 
37 public:
40 
42  StelLocationMgr(const LocationList& locations);
43 
45  void setLocations(const LocationList& locations);
46 
48  LocationList getAll() const {return locations.values();}
49 
51  LocationMap getAllMap() const { return locations; }
52 
54  const StelLocation locationFromCLI() const;
55 
57  const StelLocation& getLastResortLocation() const {return lastResortLocation;}
58 
61  bool canSaveUserLocation(const StelLocation& loc) const;
62 
65  bool saveUserLocation(const StelLocation& loc);
66 
70  bool canDeleteUserLocation(const QString& id) const;
71 
75  bool deleteUserLocation(const QString& id);
76 
78  void locationFromIP();
79 
81  LocationMap pickLocationsNearby(const QString planetName, const float longitude, const float latitude, const float radiusDegrees);
83  LocationMap pickLocationsInCountry(const QString country);
84 
85 public slots:
88  const StelLocation locationForString(const QString& s) const;
89 
92 
93 signals:
96  void locationListChanged();
97 
98 private:
99  void generateBinaryLocationFile(const QString& txtFile, bool isUserLocation, const QString& binFile) const;
100 
102  static LocationMap loadCities(const QString& fileName, bool isUserLocation);
103  static LocationMap loadCitiesBin(const QString& fileName);
104 
106  LocationMap locations;
107 
108  StelLocation lastResortLocation;
109 };
110 
111 #endif // _STELLOCATIONMGR_HPP_
const StelLocation locationForString(const QString &s) const
Return the StelLocation for a given string Can match location name, or coordinates.
Store the informations for a location on a planet.
StelLocationMgr()
Default constructor which loads the list of locations from the base and user location files...
LocationMap getAllMap() const
Returns a map of all loaded locations. The key is the location ID, suitable for a list view...
Manage the list of available location.
const StelLocation locationFromCLI() const
Return the StelLocation from a CLI.
bool saveUserLocation(const StelLocation &loc)
Add permanently a location to the list of user locations It is later identified by its small string...
void locationListChanged()
Can be used to detect changes to the full location list i.e.
void setLocations(const LocationList &locations)
Replaces the loaded location list.
LocationMap pickLocationsInCountry(const QString country)
Find list of locations in a particular country only.
void changeLocationFromNetworkLookup()
Process answer from online lookup of IP address.
LocationMap pickLocationsNearby(const QString planetName, const float longitude, const float latitude, const float radiusDegrees)
Find list of locations within.
const StelLocation & getLastResortLocation() const
Return a valid location when no valid one was found.
bool deleteUserLocation(const QString &id)
Delete permanently the given location from the list of user locations If the location comes from the ...
bool canDeleteUserLocation(const QString &id) const
Get whether a location can be deleted from the list of user locations If the location comes from the ...
LocationList getAll() const
Return the list of all loaded locations.
void locationFromIP()
Find location via online lookup of IP address.
bool canSaveUserLocation(const StelLocation &loc) const
Get whether a location can be permanently added to the list of user locations The main constraint is ...