]> git.mxchange.org Git - flightgear.git/blobdiff - src/Instrumentation/clock.cxx
allow to trigger widgets via accelerator key, which is defined via "keynum"
[flightgear.git] / src / Instrumentation / clock.cxx
index 994c357c05f26e0d47e900ee0b9516e65e6d090a..736beff38e42d19d6908cabc977db757c8ca17d8 100644 (file)
 #include <Main/util.hxx>
 
 
+Clock::Clock ( SGPropertyNode *node )
+    : _is_serviceable(true),
+      _gmt_time_sec(0),
+      _offset_sec(0),
+      _indicated_sec(0),
+      _indicated_min(0),
+      _indicated_hour(0),
+      _standstill_offset(0),
+      name("clock"),
+      num(0)
+{
+    _indicated_string[0] = '\0';
+
+    int i;
+    for ( i = 0; i < node->nChildren(); ++i ) {
+        SGPropertyNode *child = node->getChild(i);
+        string cname = child->getName();
+        string cval = child->getStringValue();
+        if ( cname == "name" ) {
+            name = cval;
+        } else if ( cname == "number" ) {
+            num = child->getIntValue();
+        } else {
+            SG_LOG( SG_INSTR, SG_WARN, "Error in clock config logic" );
+            if ( name.length() ) {
+                SG_LOG( SG_INSTR, SG_WARN, "Section = " << name );
+            }
+        }
+    }
+}
+
 Clock::Clock ()
     : _is_serviceable(true),
       _gmt_time_sec(0),
@@ -20,6 +51,7 @@ Clock::Clock ()
       _standstill_offset(0)
 {
     _indicated_string[0] = '\0';
+    _indicated_short_string[0] = '\0';
 }
 
 Clock::~Clock ()
@@ -29,10 +61,17 @@ Clock::~Clock ()
 void
 Clock::init ()
 {
-    _serviceable_node = fgGetNode("/instrumentation/clock/serviceable", true);
-    _offset_node      = fgGetNode("/instrumentation/clock/offset-sec", true);
-    _sec_node         = fgGetNode("/instrumentation/clock/indicated-sec", true);
-    _string_node      = fgGetNode("/instrumentation/clock/indicated-string", true);
+    string branch;
+    branch = "/instrumentation/" + name;
+
+    SGPropertyNode *node = fgGetNode(branch.c_str(), num, true );
+    _serviceable_node = node->getChild("serviceable", 0, true);
+    _offset_node = node->getChild("offset-sec", 0, true);
+    _sec_node = node->getChild("indicated-sec", 0, true);
+    _min_node = node->getChild("indicated-min", 0, true);
+    _hour_node = node->getChild("indicated-hour", 0, true);
+    _string_node = node->getChild("indicated-string", 0, true);
+    _string_node1 = node->getChild("indicated-short-string", 0, true);
 }
 
 void
@@ -89,7 +128,14 @@ Clock::update (double delta_time_sec)
 
     sprintf(_indicated_string, "%02d:%02d:%02d", hour, min, sec);
     _string_node->setStringValue(_indicated_string);
+    sprintf(_indicated_short_string, "%02d:%02d", hour, min);
+    _string_node1->setStringValue(_indicated_short_string);
     _is_serviceable = true;
+
+   _indicated_min = min;
+    _min_node->setLongValue(_indicated_min);
+   _indicated_hour = hour;
+    _hour_node->setLongValue(_indicated_hour);
 }