Stellarium 0.15.2
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 typedef QMap<QByteArray,QByteArray> TimezoneNameMap;
31 
34 class StelLocationMgr : public QObject
35 {
36  Q_OBJECT
37 
38 public:
41 
43  StelLocationMgr(const LocationList& locations);
44 
46  void setLocations(const LocationList& locations);
47 
49  LocationList getAll() const {return locations.values();}
50 
52  LocationMap getAllMap() const { return locations; }
53 
55  const StelLocation locationFromCLI() const;
56 
58  const StelLocation& getLastResortLocation() const {return lastResortLocation;}
59 
62  bool canSaveUserLocation(const StelLocation& loc) const;
63 
66  bool saveUserLocation(const StelLocation& loc);
67 
71  bool canDeleteUserLocation(const QString& id) const;
72 
76  bool deleteUserLocation(const QString& id);
77 
79  void locationFromIP();
80 
82  LocationMap pickLocationsNearby(const QString planetName, const float longitude, const float latitude, const float radiusDegrees);
84  LocationMap pickLocationsInCountry(const QString country);
85 
86 public slots:
89  const StelLocation locationForString(const QString& s) const;
90 
93 
97  static QString sanitizeTimezoneStringForLocationDB(QString tzString);
102  static QString sanitizeTimezoneStringFromLocationDB(QString dbString);
103 
104 signals:
107  void locationListChanged();
108 
109 private:
110  void generateBinaryLocationFile(const QString& txtFile, bool isUserLocation, const QString& binFile) const;
111 
113  static LocationMap loadCities(const QString& fileName, bool isUserLocation);
114  static LocationMap loadCitiesBin(const QString& fileName);
115 
117  LocationMap locations;
127  static TimezoneNameMap locationDBToIANAtranslations;
128 
129  StelLocation lastResortLocation;
130 };
131 
132 #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...
static QString sanitizeTimezoneStringFromLocationDB(QString dbString)
Attempt to translate a timezone name from those used in Stellarium&#39;s location database to a name whic...
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.
static QString sanitizeTimezoneStringForLocationDB(QString tzString)
Check timezone string and return either the same or one that we use in the Stellarium location databa...
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 ...