VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
timeZoneManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include <vrfGuiCore/vrfGuiCore.h>
12 
14 #include <vlutil/vlFilename.h>
15 #include <matrix/vlVector.h>
16 #include <time.h>
17 #include <boost/signals2.hpp>
18 
19 #include <QtCore/QString>
20 
21 namespace makVrv
22 {
23  class DtDe;
24 }
25 
26 class DtGeodeticCoord;
27 
28 const char DtTimeDateFormatsSetStandard[] = "Standard";
29 const char DtTimeDateFormatsSetMilitary[] = "Military";
30 
31 namespace makVrf
32 {
37  {
38  public:
39 
40  struct TimezoneData
41  {
42  std::string abbrev;
43  std::string title;
44  double offset;
45  std::string location;
46  };
47 
49  typedef std::map<std::string, TimezoneData> Timezones;
51  {
52  IlluminationIconData() : lowVal(0), highVal(0) {};
53 
54  IlluminationIconData(double l, double h, const std::string& i)
55  : lowVal(l), highVal(h), iconFile(i)
56  {
57  }
58 
60  : lowVal(orig.lowVal), highVal(orig.highVal), iconFile(orig.iconFile)
61  {
62  }
63 
64  double lowVal;
65  double highVal;
66  std::string iconFile;
67  };
68 
69  typedef std::map<int, std::vector<IlluminationIconData> > IlluminationIcon;
70 
71  typedef std::vector<std::string> DateTimeFormats;
72 
73  struct FormatsSet
74  {
77  };
78 
79  typedef std::map<std::string, FormatsSet> FormatsSetsMap;
80 
81  public:
84 
86  virtual ~DtTimeZoneManager() override;
87 
89  static DtTimeZoneManager& instance(makVrv::DtDe& de);
90 
92  static void registerInstance(makVrv::DtDe&, DtTimeZoneManager*);
93 
94  virtual const Timezones& timezones() const;
95 
98  virtual void setUseLocalTimezone(bool);
99  virtual bool useLocalTimezone() const;
100 
102  virtual void setBlockLocalTimeZoneUsage(bool);
103  virtual bool blockLocalTimeZoneUsage() const;
104 
109  virtual void setDateAndTimeOfDayFormat(const std::string&);
110  virtual std::string dateAndTimeOfDayFormat() const;
111 
115  virtual const DateTimeFormats& dateTimeFormats() const;
116  virtual DateTimeFormats& dateTimeFormats();
118 
120  virtual time_t offsetForTimezone(const std::string& key) const;
121 
124  virtual time_t modifyTimeBasedOnTimezoneSelection(time_t);
125 
127  virtual void setCurrentTimezone(const std::string&);
128 
130  virtual std::string currentTimezone() const;
131 
133  virtual void setCurrentFormatsSet(const std::string&);
134 
136  virtual std::string currentFormatsSet() const;
137 
139  virtual std::string currentTimezoneAbbreviation() const;
140 
142  virtual std::string timezoneTitle() const;
143 
145  virtual time_t offsetForTimezone() const;
146 
148  virtual time_t convertFromLocalTimeToUtcTime(time_t) const;
149 
151  virtual time_t currentUtcDateTime() const;
152 
154  virtual time_t currentLocalDateTime() const;
155 
157  virtual time_t convertFromUtcTimeToLocalTime(time_t) const;
158  virtual void convertFromUtcTimeToLocalTime(int y, int m, int d, int h, int mm, int sec,
159  int& year, int& month, int& day, int& hours, int& minutes, int& seconds) const;
160  virtual time_t convertToUtcTime(int y, int m, int d, int h, int mm, int sec) const;
161 
163  virtual time_t convert(const std::string& source, time_t, const std::string& dest);
164 
166  virtual void load(const DtFilename&, bool merge = false);
167 
169  virtual std::string dateTimeFormatString(time_t);
170 
182  virtual double illuminationValue(const DtGeodeticCoord& position, time_t time,
183  double nighttimeMaximum = 0.1, double illuminationMinimum = 0.001, bool useGMTPosition = false, int* sunstate = 0) const;
184 
186  virtual double maximumNighttimeValue() const;
187  virtual void setMaximumNighttimeValue(double);
188 
190  virtual double minimumIlluminationValue();
191  virtual void setMinimumIlluminationValue(double);
192 
194  virtual std::string illuminationIcon(double illumination, int sunState) const;
195 
197  virtual void addIlluminationIcon(int sunState, double lowIllumination, double highIllumination, const std::string&);
198 
200  {
201  return myIlluminationIcons;
202  }
203 
205  {
206  return myIlluminationIcons;
207  }
208 
210  virtual void resetSystemDateTime();
211 
212  virtual time_t utcTime(struct tm* tod) const;
213 
216  virtual time_t offsetTimeByObserverPosition(time_t curTime) const;
217 
219  virtual time_t unoffsetTimeByObserverPosition(time_t curTime) const;
220 
222  virtual time_t timeZoneOffsetForPosition(const DtVector&) const;
223 
225  virtual time_t timeZoneOffsetForCurrentObserver() const;
226 
229  virtual time_t utcOffsetHours() const;
230 
232  virtual QString utcLabel() const;
233 
235  virtual time_t currentSimulationUtcTime() const;
236 
237  protected:
238  virtual void tick();
239 
240  public:
242  boost::signals2::signal<void (std::string, std::string)> signal_timezoneChanged;
243 
244  boost::signals2::signal<void (std::string)> signal_dateAndTimeFormatChanged;
245 
246  boost::signals2::signal<void(std::string)> signal_formatsSetChanged;
247 
249  boost::signals2::signal<void (time_t old, time_t newTime)> signal_utcTimeChangedWithObserverPosition;
250 
251  protected:
256 
259 
261 
263  boost::signals2::scoped_connection myObserverTrackConnection;
265  };
266 }
Definition: timeZoneManager.h:73
IlluminationIconData(const IlluminationIconData &orig)
Definition: timeZoneManager.h:59
boost::signals2::signal< void(time_t old, time_t newTime)> signal_utcTimeChangedWithObserverPosition
Signal sent when tracking observer position and the utc time changes because of that.
Definition: timeZoneManager.h:249
const char DtTimeDateFormatsSetStandard[]
Definition: timeZoneManager.h:28
FormatsSetsMap myFormatsSetsMap
Definition: timeZoneManager.h:260
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
const IlluminationIcon & illuminationIcons() const
Definition: timeZoneManager.h:199
boost::signals2::signal< void(std::string)> signal_dateAndTimeFormatChanged
Definition: timeZoneManager.h:244
boost::signals2::signal< void(std::string)> signal_formatsSetChanged
Definition: timeZoneManager.h:246
IlluminationIcon myIlluminationIcons
Definition: timeZoneManager.h:257
std::string title
Definition: timeZoneManager.h:43
DateTimeFormats dateTimeFormats
Definition: timeZoneManager.h:76
DateTimeFormats myDateTimeFormats
Definition: timeZoneManager.h:258
Definition: timeZoneManager.h:40
std::map< int, std::vector< IlluminationIconData > > IlluminationIcon
Definition: timeZoneManager.h:69
std::vector< std::string > DateTimeFormats
Definition: timeZoneManager.h:71
Timezones timezones
Definition: timeZoneManager.h:75
IlluminationIconData(double l, double h, const std::string &i)
Definition: timeZoneManager.h:54
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
std::map< std::string, TimezoneData > Timezones
Key is abbreviation.
Definition: timeZoneManager.h:49
bool myBlockLocalTimeZoneUsage
Definition: timeZoneManager.h:264
IlluminationIconData()
Definition: timeZoneManager.h:52
std::string location
Hours.
Definition: timeZoneManager.h:45
double lowVal
Definition: timeZoneManager.h:64
Contains makVrv::DtVirtualBaseClass class.
std::string abbrev
Definition: timeZoneManager.h:42
boost::signals2::signal< void(std::string, std::string)> signal_timezoneChanged
Signal of old and new timezone.
Definition: timeZoneManager.h:242
Definition: timeZoneManager.h:50
std::map< std::string, FormatsSet > FormatsSetsMap
Definition: timeZoneManager.h:79
double myMinimumIlluminationValue
Definition: timeZoneManager.h:255
IlluminationIcon & illuminationIcons()
Definition: timeZoneManager.h:204
const char * source
Definition: lz4.h:442
double myNighttimeMaximumValue
Definition: timeZoneManager.h:254
const char DtTimeDateFormatsSetMilitary[]
Definition: timeZoneManager.h:29
std::string iconFile
Definition: timeZoneManager.h:66
Timezones myTimezones
Definition: timeZoneManager.h:252
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
time_t myCurrentObserverUTCOffsetTime
Definition: timeZoneManager.h:262
makVrv::DtDe & myDe
Definition: timeZoneManager.h:253
char * dest
Definition: lz4.h:440
boost::signals2::scoped_connection myObserverTrackConnection
Definition: timeZoneManager.h:263
double offset
Definition: timeZoneManager.h:44
The timezone manager keeps track of all timezones available for the user to select from in the system...
Definition: timeZoneManager.h:36
double highVal
Definition: timeZoneManager.h:65

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)