Index: trunk/FACT++/gui/FactGui.h
===================================================================
--- trunk/FACT++/gui/FactGui.h	(revision 10535)
+++ trunk/FACT++/gui/FactGui.h	(revision 10536)
@@ -683,9 +683,11 @@
             return;
 
-        const vector<boost::any> any = d.any();
-
-        const size_t rate    = boost::any_cast<int>(any[2]);
-        const size_t space   = boost::any_cast<long long>(any[1]);
-        const size_t written = boost::any_cast<long long>(any[0]);
+        const uint64_t *vals = reinterpret_cast<const uint64_t*>(d.ptr());
+
+        const size_t written = vals[0];
+        const size_t space   = vals[1];
+        const size_t rate    = vals[2];
+
+        cout << written << " " << space << " " << rate << endl;
 
         fLoggerFreeSpace->setSuffix(" MB");
@@ -762,20 +764,22 @@
         fLoggerFilenameNight->setEnabled(connected);
         if (connected)
-            fLoggerFilenameNight->setText(d.c_str());
-
-        if (d.qos&1)
+            fLoggerFilenameNight->setText(d.c_str()+4);
+
+        const uint32_t files = d.get<uint32_t>();
+
+        if (files&1)
+            fLoggerLedLog->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
+        else
             fLoggerLedLog->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
+
+        if (files&2)
+            fLoggerLedRep->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
         else
-            fLoggerLedLog->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
-
-        if (d.qos&2)
             fLoggerLedRep->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
+
+        if (files&4)
+            fLoggerLedFits->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
         else
-            fLoggerLedRep->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
-
-        if (d.qos&4)
             fLoggerLedFits->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
-        else
-            fLoggerLedFits->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
     }
 
@@ -786,20 +790,22 @@
         fLoggerFilenameRun->setEnabled(connected);
         if (connected)
-            fLoggerFilenameRun->setText(d.c_str());
-
-        if (d.qos&1)
+            fLoggerFilenameRun->setText(d.c_str()+4);
+
+        const uint32_t files = d.get<uint32_t>();
+
+        if (files&1)
+            fLoggerLedLog->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
+        else
             fLoggerLedLog->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
+
+        if (files&2)
+            fLoggerLedRep->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
         else
-            fLoggerLedLog->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
-
-        if (d.qos&2)
             fLoggerLedRep->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
+
+        if (files&4)
+            fLoggerLedFits->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
         else
-            fLoggerLedRep->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
-
-        if (d.qos&4)
             fLoggerLedFits->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
-        else
-            fLoggerLedFits->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
     }
 
@@ -813,8 +819,8 @@
             return;
 
-        const vector<boost::any> any = d.any();
-
-        fLoggerSubscriptions->setValue(boost::any_cast<int>(any[0]));
-        fLoggerOpenFiles->setValue(boost::any_cast<int>(any[1]));
+        const uint32_t *vals = reinterpret_cast<const uint32_t*>(d.ptr());
+
+        fLoggerSubscriptions->setValue(vals[0]);
+        fLoggerOpenFiles->setValue(vals[1]);
     }
 
@@ -896,4 +902,21 @@
 
     FTM::DimStaticData fFtmStaticData;
+
+    void SetFtuLed(int idx, int counter)
+    {
+        if (counter<0)
+            fFtuLED[idx]->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
+
+        if (counter==0)
+            fFtuLED[idx]->setIcon(QIcon(":/Resources/icons/red circle 1.png"));
+
+        if (counter==1)
+            fFtuLED[idx]->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
+
+        if (counter>1)
+            fFtuLED[idx]->setIcon(QIcon(":/Resources/icons/orange circle 1.png"));
+
+    }
+
 
     void handleFtmStaticData(const DimData &d)
@@ -946,5 +969,5 @@
             if (!sdata.IsActive(i))
             {
-                fFtuLED[i]->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
+                SetFtuLed(i, -1);
                 fFtuDisabled[i] = true;
             }
@@ -953,5 +976,5 @@
                 if (fFtuDisabled[i])
                 {
-                    fFtuLED[i]->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
+                    SetFtuLed(i, 1);
                     fFtuDisabled[i] = false;
                 }
@@ -1035,23 +1058,10 @@
         for (int i=0; i<40; i++)
         {
-            if (sdata.IsActive(i))
-            {
-                if (sdata.fPing[i]==0)
-                    fFtuLED[i]->setIcon(QIcon(":/Resources/icons/red circle 1.png"));
-
-                if (sdata.fPing[i]==1)
-                    fFtuLED[i]->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
-
-                if (sdata.fPing[i]>1)
-                    fFtuLED[i]->setIcon(QIcon(":/Resources/icons/orange circle 1.png"));
-
-                fFtuDisabled[i] = false;
-            }
-            else
-            {
-                fFtuLED[i]->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
-                fFtuDisabled[i] = true;
-            }
-
+            const bool active = sdata.IsActive(i);
+
+            cout << i << ": " << active << " " << (int)sdata.fPing[i] << endl;
+
+            SetFtuLed(i, active ? sdata.fPing[i] : -1);
+            fFtuDisabled[i] = !active;
         }
     }
@@ -1062,7 +1072,11 @@
             return;
 
-        const Converter conv(d.format);
-        cout << "Error:" << endl;
-        cout << conv.GetString(&d.data[0], d.size()) << endl;
+        const FTM::DimError &sdata = *reinterpret_cast<const FTM::DimError*>(d.ptr());
+
+        SetFtuLed(sdata.fError.fDestAddress , sdata.fError.fNumCalls);
+
+        // Write to special window!
+        Out() << "Error:" << endl;
+        Out() << sdata.fError << endl;
     }
 
@@ -1142,4 +1156,7 @@
             else
                 fStatusChatLed->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
+
+            fChatSend->setEnabled(fChatOnline);
+            fChatMessage->setEnabled(fChatOnline);
         }
     }
@@ -1522,7 +1539,7 @@
 
         fDimLoggerStats        ("DATA_LOGGER/STATS", (void*)NULL, 0, this),
-        fDimLoggerFilenameNight("DATA_LOGGER/FILENAME_NIGHT", const_cast<char*>(""), 0, this),
-        fDimLoggerFilenameRun  ("DATA_LOGGER/FILENAME_RUN",   const_cast<char*>(""), 0, this),
-        fDimLoggerNumSubs      ("DATA_LOGGER/NUM_SUBS",       const_cast<char*>(""), 0, this),
+        fDimLoggerFilenameNight("DATA_LOGGER/FILENAME_NIGHTLY", const_cast<char*>(""), 0, this),
+        fDimLoggerFilenameRun  ("DATA_LOGGER/FILENAME_RUN",     const_cast<char*>(""), 0, this),
+        fDimLoggerNumSubs      ("DATA_LOGGER/NUM_SUBS",         const_cast<char*>(""), 0, this),
 
         fDimFtmPassport      ("FTM_CONTROL/PASSPORT",        (void*)NULL, 0, this),
