Stellarium 0.14.0
StelLocaleMgr.hpp
1 /*
2  * Stellarium
3  * Copyright (C) 2006 Fabien Chereau
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA.
18  */
19 
20 #ifndef _STELLOCALEMGR_HPP_
21 #define _STELLOCALEMGR_HPP_
22 
23 #include "StelTranslator.hpp"
24 
29 {
30 public:
31  StelLocaleMgr();
32  ~StelLocaleMgr();
33 
38  void init();
39 
41  // MESSAGES TRANSLATIONS
47 
51  void setAppLanguage(const QString& newAppLangName, bool refreshAll=true);
52 
54  const StelTranslator& getAppStelTranslator() const;
55 
59  QString getSkyLanguage() const;
60 
65  void setSkyLanguage(const QString& newSkyLangName, bool refreshAll=true);
66 
68  const StelTranslator &getSkyTranslator() const;
69 
71  // DATE & TIME LOCALIZATION
80  QString getTimeFormatStr(void) const {return sTimeFormatToString(timeFormat);}
83  void setTimeFormatStr(const QString& tf) {timeFormat=stringToSTimeFormat(tf);}
92  QString getDateFormatStr(void) const {return sDateFormatToString(dateFormat);}
93  void setDateFormatStr(const QString& df) {dateFormat=stringToSDateFormat(df);}
94 
98  void setCustomTimezone(QString tZ) { setCustomTzName(tZ); }
99 
102  enum STimeFormat {
106  };
107 
110  enum SDateFormat {
115  };
116 
118  QString getPrintableDateLocal(double JD) const;
119 
121  QString getPrintableTimeLocal(double JD) const;
122 
124  QString getPrintableTimeZoneLocal(double JD) const;
125 
128  {
132  };
133 
135  void setGMTShift(int t)
136  {
137  GMTShift=t;
138  }
140  float getGMTShift(double JD = 0) const;
142  void setCustomTzName(const QString& tzname);
144  QString getCustomTzName(void) const
145  {
146  return customTzName;
147  }
149  STzFormat getTzFormat(void) const
150  {
151  return timeZoneMode;
152  }
153 
156  QString getISO8601TimeLocal(double JD) const;
157 
163  double getJdFromISO8601TimeLocal(const QString& str, bool* ok) const;
164 
166  static QString countryCodeToString(const QString& countryCode);
167 
169  static QStringList getAllCountryNames();
170 
171 private:
172  // The translator used for astronomical object naming
173  StelTranslator* skyTranslator;
174 
175  // Date and time variables
176  STimeFormat timeFormat;
177  SDateFormat dateFormat;
178  STzFormat timeZoneMode; // Can be the system default or a user defined value
179 
180  QString customTzName; // Something like "Europe/Paris"
181  float GMTShift; // Time shift between GMT time and local time in hour. (positive for Est of GMT)
182 
183  // Convert the time format enum to its associated string and reverse
184  STimeFormat stringToSTimeFormat(const QString&) const;
185  QString sTimeFormatToString(STimeFormat) const;
186 
187  // Convert the date format enum to its associated string and reverse
188  SDateFormat stringToSDateFormat(const QString& df) const;
189  QString sDateFormatToString(SDateFormat df) const;
190 
191  static QMap<QString, QString> countryCodeToStringMap;
192 
193  static void generateCountryList();
194 };
195 
196 #endif // _STELLOCALEMGR_HPP_
float getGMTShift(double JD=0) const
Get the current time shift in hours at observator time zone with respect to GMT time.
const StelTranslator & getSkyTranslator() const
Get a reference to the StelTranslator object currently used for sky objects.
const QString & getTrueLocaleName() const
Get true translator locale name.
e.g. "05-07-1998" for July 5th 1998
Class used to translate strings to any language.
void setGMTShift(int t)
Get the current time shift at observator time zone with respect to GMT time.
STzFormat getTzFormat(void) const
Get the current timezone format mode.
Use the system default date format.
e.g. "07-05-1998" for July 5th 1998
double getJdFromISO8601TimeLocal(const QString &str, bool *ok) const
Return the JD time for a local time ISO 8601 format that is: Y-m-dTH:M:S, but Y can be a large number...
void setCustomTzName(const QString &tzname)
Set the timezone by a TZ-style string (see tzset in the libc manual).
void setTimeFormatStr(const QString &tf)
Set the time format from a format string.
QString getDateFormatStr(void) const
Get the format string which describes the current date format.
Manage i18n operations such as message translation and date/time localization.
use the system default format.
SDateFormat
The date display format.
static StelTranslator * globalTranslator
Used as a global translator by the whole app.
const StelTranslator & getAppStelTranslator() const
Get the StelTranslator object currently used for global application.
static QString countryCodeToString(const QString &countryCode)
Convert a 2 letter country code to string.
void setCustomTimezone(QString tZ)
Set the time zone.
QString getCustomTzName(void) const
Get the timezone name (a TZ-style string - see tzset in the libc manual).
User-specified timezone.
12 hour clock, e.g. "06:22:00 pm"
void setAppLanguage(const QString &newAppLangName, bool refreshAll=true)
Set the application language.
Define some translation macros.
QString getPrintableTimeZoneLocal(double JD) const
Get a localized, formatted string representation of the time zone of a Julian date.
STimeFormat
The time display format.
QString getTimeFormatStr(void) const
Get the format string which describes the current time format.
QString getPrintableTimeLocal(double JD) const
Get a localized, formatted string representation of the time component of a Julian date...
QString getAppLanguage() const
Get the application language currently used for GUI etc.
void init()
Initialize object.
e.g. "1998-07-05" for July 5th 1998
static QStringList getAllCountryNames()
Return an alphabetically ordered list of all the known country names.
QString getPrintableDateLocal(double JD) const
Get a localized, formatted string representation of the date component of a Julian date...
QString getSkyLanguage() const
Get the language currently used for sky objects.
24 hour clock, e.g. "18:22:00"
void setSkyLanguage(const QString &newSkyLangName, bool refreshAll=true)
Set the sky language and reload the sky object names with the new translation.
QString getISO8601TimeLocal(double JD) const
Return the time in ISO 8601 format that is : Y-m-dTH:M:S.