Stellarium 0.13.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 
125  {
129  };
130 
132  void setGMTShift(int t)
133  {
134  GMTShift=t;
135  }
137  float getGMTShift(double JD = 0) const;
139  void setCustomTzName(const QString& tzname);
141  QString getCustomTzName(void) const
142  {
143  return customTzName;
144  }
146  STzFormat getTzFormat(void) const
147  {
148  return timeZoneMode;
149  }
150 
153  QString getISO8601TimeLocal(double JD) const;
154 
160  double getJdFromISO8601TimeLocal(const QString& str, bool* ok) const;
161 
163  static QString countryCodeToString(const QString& countryCode);
164 
166  static QStringList getAllCountryNames();
167 
168 private:
169  // The translator used for astronomical object naming
170  StelTranslator* skyTranslator;
171 
172  // Date and time variables
173  STimeFormat timeFormat;
174  SDateFormat dateFormat;
175  STzFormat timeZoneMode; // Can be the system default or a user defined value
176 
177  QString customTzName; // Something like "Europe/Paris"
178  float GMTShift; // Time shift between GMT time and local time in hour. (positive for Est of GMT)
179 
180  // Convert the time format enum to its associated string and reverse
181  STimeFormat stringToSTimeFormat(const QString&) const;
182  QString sTimeFormatToString(STimeFormat) const;
183 
184  // Convert the date format enum to its associated string and reverse
185  SDateFormat stringToSDateFormat(const QString& df) const;
186  QString sDateFormatToString(SDateFormat df) const;
187 
188  static QMap<QString, QString> countryCodeToStringMap;
189 
190  static void generateCountryList();
191 };
192 
193 #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.
Definition: StelTranslator.hpp:74
e.g. "05-07-1998" for July 5th 1998
Definition: StelLocaleMgr.hpp:112
Class used to translate strings to any language.
Definition: StelTranslator.hpp:51
void setGMTShift(int t)
Get the current time shift at observator time zone with respect to GMT time.
Definition: StelLocaleMgr.hpp:132
STzFormat getTzFormat(void) const
Get the current timezone format mode.
Definition: StelLocaleMgr.hpp:146
Use the system default date format.
Definition: StelLocaleMgr.hpp:113
e.g. "07-05-1998" for July 5th 1998
Definition: StelLocaleMgr.hpp:111
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.
Definition: StelLocaleMgr.hpp:83
QString getDateFormatStr(void) const
Get the format string which describes the current date format.
Definition: StelLocaleMgr.hpp:92
Manage i18n operations such as message translation and date/time localization.
Definition: StelLocaleMgr.hpp:28
use the system default format.
Definition: StelLocaleMgr.hpp:105
SDateFormat
The date display format.
Definition: StelLocaleMgr.hpp:110
static StelTranslator * globalTranslator
Used as a global translator by the whole app.
Definition: StelTranslator.hpp:83
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.
Definition: StelLocaleMgr.hpp:98
QString getCustomTzName(void) const
Get the timezone name (a TZ-style string - see tzset in the libc manual).
Definition: StelLocaleMgr.hpp:141
System default.
Definition: StelLocaleMgr.hpp:128
User-specified timezone.
Definition: StelLocaleMgr.hpp:126
12 hour clock, e.g. "06:22:00 pm"
Definition: StelLocaleMgr.hpp:104
void setAppLanguage(const QString &newAppLangName, bool refreshAll=true)
Set the application language.
Define some translation macros.
STzFormat
Definition: StelLocaleMgr.hpp:124
STimeFormat
The time display format.
Definition: StelLocaleMgr.hpp:102
QString getTimeFormatStr(void) const
Get the format string which describes the current time format.
Definition: StelLocaleMgr.hpp:80
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.
Definition: StelLocaleMgr.hpp:46
void init()
Initialize object.
e.g. "1998-07-05" for July 5th 1998
Definition: StelLocaleMgr.hpp:114
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"
Definition: StelLocaleMgr.hpp:103
void setSkyLanguage(const QString &newSkyLangName, bool refreshAll=true)
Set the sky language and reload the sky object names with the new translation.
GMT + offset.
Definition: StelLocaleMgr.hpp:127
QString getISO8601TimeLocal(double JD) const
Return the time in ISO 8601 format that is : Y-m-dTH:M:S.