Changeset 10650


Ignore:
Timestamp:
05/10/11 14:11:36 (14 years ago)
Author:
tbretz
Message:
Moved setting of color of LEDs to a common function which will also set the time of the last color change automatically.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/gui/FactGui.h

    r10633 r10650  
    342342    map<string, DimInfo*> fServices;
    343343
     344    // ========================== LED Colors ================================
     345
     346    enum LedColor_t
     347    {
     348        kLedRed,
     349        kLedGreen,
     350        kLedYellow,
     351        kLedOrange,
     352        kLedGray
     353    };
     354
     355    void SetLedColor(QPushButton *button, LedColor_t col)
     356    {
     357        switch (col)
     358        {
     359        case kLedRed:
     360            button->setIcon(QIcon(":/Resources/icons/red circle 1.png"));
     361            break;
     362
     363        case kLedGreen:
     364            button->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
     365            break;
     366
     367        case kLedYellow:
     368            button->setIcon(QIcon(":/Resources/icons/yellow circle 1.png"));
     369            break;
     370
     371        case kLedOrange:
     372            button->setIcon(QIcon(":/Resources/icons/orange circle 1.png"));
     373            break;
     374
     375        case kLedGray:
     376            button->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
     377            break;
     378        }
     379
     380        button->setToolTip("Last change: "+QDateTime::currentDateTimeUtc().toString()+" UTC");
     381    }
     382
    344383    // ===================== Services and Commands ==========================
    345384
     
    663702        str << "V" << version/100 << 'r' << version%100;
    664703
    665         if (version==0)
    666             fStatusDNSLed->setIcon(QIcon(":/Resources/icons/red circle 1.png"));
    667         else
    668             fStatusDNSLed->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
     704        SetLedColor(fStatusDNSLed, version==0 ? kLedRed : kLedGreen);
    669705
    670706        fStatusDNSLabel->setText(version==0?"Offline":str.str().c_str());
     
    773809        const uint32_t files = d.get<uint32_t>();
    774810
    775         if (files&1)
    776             fLoggerLedLog->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
    777         else
    778             fLoggerLedLog->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
    779 
    780         if (files&2)
    781             fLoggerLedRep->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
    782         else
    783             fLoggerLedRep->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
    784 
    785         if (files&4)
    786             fLoggerLedFits->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
    787         else
    788             fLoggerLedFits->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
     811        SetLedColor(fLoggerLedLog,  files&1 ? kLedGreen : kLedGray);
     812        SetLedColor(fLoggerLedRep,  files&2 ? kLedGreen : kLedGray);
     813        SetLedColor(fLoggerLedFits, files&4 ? kLedGreen : kLedGray);
    789814    }
    790815
     
    801826        const uint32_t files = d.get<uint32_t>();
    802827
    803         if (files&1)
    804             fLoggerLedLog->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
    805         else
    806             fLoggerLedLog->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
    807 
    808         if (files&2)
    809             fLoggerLedRep->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
    810         else
    811             fLoggerLedRep->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
    812 
    813         if (files&4)
    814             fLoggerLedFits->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
    815         else
    816             fLoggerLedFits->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
     828        SetLedColor(fLoggerLedLog,  files&1 ? kLedGreen : kLedGray);
     829        SetLedColor(fLoggerLedRep,  files&2 ? kLedGreen : kLedGray);
     830        SetLedColor(fLoggerLedFits, files&4 ? kLedGreen : kLedGray);
    817831    }
    818832
     
    933947    void SetFtuLed(int idx, int counter)
    934948    {
    935         if (counter==0)
     949        if (counter==0 || counter>3)
    936950            counter = 3;
    937951
    938         if (counter==-1)
     952        if (counter<0)
    939953            counter = 0;
    940954
    941         switch (counter)
     955        const LedColor_t col[4] = { kLedGray, kLedGreen, kLedOrange, kLedRed };
     956
     957        SetLedColor(fFtuLED[idx], col[counter]);
     958
     959        fFtuStatus[idx] = counter;
     960    }
     961
     962    void SetFtuStatusLed()
     963    {
     964        const int max = fFtuStatus.max();
     965
     966        switch (max)
    942967        {
    943968        case 0:
    944             fFtuLED[idx]->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
    945             break;
    946 
    947         case 1:
    948             fFtuLED[idx]->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
    949             break;
    950 
    951         case 2:
    952             fFtuLED[idx]->setIcon(QIcon(":/Resources/icons/orange circle 1.png"));
    953             break;
    954 
    955         case 3:
    956             fFtuLED[idx]->setIcon(QIcon(":/Resources/icons/red circle 1.png"));
    957             break;
    958         }
    959 
    960         fFtuStatus[idx] = counter;
    961     }
    962 
    963     void SetFtuStatusLed()
    964     {
    965         const int max = fFtuStatus.max();
    966 
    967         switch (max)
    968         {
    969         case 0:
    970             fStatusFTULed->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
     969            SetLedColor(fStatusFTULed, kLedGray);
    971970            fStatusFTULabel->setText("All disabled");
    972971            fStatusFTULabel->setToolTip("All FTUs are disabled");
     
    974973
    975974        case 1:
    976             fStatusFTULed->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
     975            SetLedColor(fStatusFTULed, kLedGreen);
    977976            fStatusFTULabel->setToolTip("Communication with FTU is smooth.");
    978             fStatusFTULabel->setText("Ok");
     977            fStatusFTULabel->setText("ok");
    979978            break;
    980979
    981980        case 2:
    982             fStatusFTULed->setIcon(QIcon(":/Resources/icons/orange circle 1.png"));
     981            SetLedColor(fStatusFTULed, kLedOrange);
    983982            fStatusFTULabel->setText("Warning");
    984983            fStatusFTULabel->setToolTip("At least one FTU didn't answer immediately");
     
    986985
    987986        case 3:
    988             fStatusFTULed->setIcon(QIcon(":/Resources/icons/red circle 1.png"));
     987            SetLedColor(fStatusFTULed, kLedRed);
    989988            fStatusFTULabel->setToolTip("At least one FTU didn't answer!");
    990989            fStatusFTULabel->setText("ERROR");
     
    11581157
    11591158            if (s.index<FTM::kDisconnected) // No Dim connection
    1160                 fStatusFTMLed->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
     1159                SetLedColor(fStatusFTMLed, kLedGray);
    11611160            if (s.index==FTM::kDisconnected) // Dim connection / FTM disconnected
    1162                 fStatusFTMLed->setIcon(QIcon(":/Resources/icons/yellow circle 1.png"));
     1161                SetLedColor(fStatusFTMLed, kLedYellow);
    11631162            if (s.index==FTM::kConnected || s.index==FTM::kIdle) // Dim connection / FTM connected
    11641163            {
    1165                 fStatusFTMLed->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
     1164                SetLedColor(fStatusFTMLed, kLedGreen);
    11661165                enable = true;
    11671166            }
     
    11731172            if (!enable)
    11741173            {
    1175                 fStatusFTULed->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
     1174                SetLedColor(fStatusFTULed, kLedGray);
    11761175                fStatusFTULabel->setText("Offline");
    11771176                fStatusFTULabel->setToolTip("FTM is not online.");
     
    11851184
    11861185            if (s.index<FTM::kDisconnected) // No Dim connection
    1187                 fStatusFADLed->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
     1186                SetLedColor(fStatusFADLed, kLedGray);
    11881187            if (s.index==FTM::kDisconnected) // Dim connection / FTM disconnected
    1189                 fStatusFADLed->setIcon(QIcon(":/Resources/icons/yellow circle 1.png"));
     1188                SetLedColor(fStatusFADLed, kLedYellow);
    11901189            if (s.index==FTM::kConnected) // Dim connection / FTM connected
    1191                 fStatusFADLed->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
     1190                SetLedColor(fStatusFADLed, kLedGreen);
    11921191        }
    11931192
     
    12001199
    12011200            if (s.index<=30)   // Ready/Waiting
    1202                 fStatusLoggerLed->setIcon(QIcon(":/Resources/icons/yellow circle 1.png"));
     1201                SetLedColor(fStatusLoggerLed, kLedYellow);
    12031202            if (s.index<-1)     // Offline
    12041203            {
    1205                 fStatusLoggerLed->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
     1204                SetLedColor(fStatusLoggerLed, kLedGray);
    12061205                enable = false;
    12071206            }
    12081207            if (s.index>=0x100) // Error
    1209                 fStatusLoggerLed->setIcon(QIcon(":/Resources/icons/red circle 1.png"));
     1208                SetLedColor(fStatusLoggerLed, kLedRed);
    12101209            if (s.index==40)   // Logging
    1211                 fStatusLoggerLed->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
     1210                SetLedColor(fStatusLoggerLed, kLedGreen);
    12121211
    12131212            fLoggerWidget->setEnabled(enable);
     
    12201219            fChatOnline = s.index==0;
    12211220
    1222             if (fChatOnline) // Dim connection / FTM connected
    1223                 fStatusChatLed->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
    1224             else
    1225                 fStatusChatLed->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
     1221            SetLedColor(fStatusChatLed, fChatOnline ? kLedGreen : kLedRed);
    12261222
    12271223            fChatSend->setEnabled(fChatOnline);
     
    12331229            fStatusSchedulerLabel->setText(s.name.c_str());
    12341230
    1235             if (s.index>=0) // Dim connection / FTM connected
    1236                 fStatusSchedulerLed->setIcon(QIcon(":/Resources/icons/green circle 1.png"));
    1237             else
    1238                 fStatusSchedulerLed->setIcon(QIcon(":/Resources/icons/gray circle 1.png"));
     1231            SetLedColor(fStatusSchedulerLed, s.index>=0 ? kLedGreen : kLedRed);
    12391232        }
    12401233    }
Note: See TracChangeset for help on using the changeset viewer.