#include "channelFeedback.h" ChannelFeedback::ChannelFeedback() { // Create the grid layout and the overall layout. QGridLayout* layoutNum = new QGridLayout; layout = new QVBoxLayout; // Create the labels for the fields. statusLabels[0] = new QLabel( tr( "UTC Time: " ) ); statusLabels[1] = new QLabel( tr( "Fraction PPS Time: " ) ); statusLabels[2] = new QLabel( tr( "EPRI Count: " ) ); statusLabels[3] = new QLabel( tr( "Refresh Time (ms): " ) ); statusLabelLEDs[0] = new QLabel( tr( "Fraction PPS OK: " ) ); statusLabelLEDs[1] = new QLabel( tr( "EPRI Count OK: " ) ); // Create the status fields and set to read only. for( int i = 0; i < numStatus; ++i ) { statusLines[i] = new QLineEdit( "-1" ); statusLines[i]->setReadOnly( true ); statusLines[i]->setAlignment( Qt::AlignRight | Qt::AlignVCenter ); } // Create the LEDs. for( int j = 0; j < numStatusLEDs; ++j ) { statusLED[j] = new QFrame(); QPalette palette = statusLED[j]->palette(); palette.setColor( QPalette::Window, Qt::red ); statusLED[j]->setPalette( palette ); statusLED[j]->setAutoFillBackground( true ); statusLED[j]->setFrameStyle( QFrame::Panel | QFrame::Sunken ); statusLED[j]->setMaximumSize( 20, 20 ); statusLED[j]->setMinimumSize( 20, 20 ); } // Add the number elements to the layout. layoutNum->addWidget( statusLabels[0], 1, 0 ); layoutNum->addWidget( statusLines[0], 1, 1 ); layoutNum->addWidget( statusLabels[1], 2, 0 ); layoutNum->addWidget( statusLines[1], 2, 1 ); layoutNum->addWidget( statusLED[0], 2, 2 ); layoutNum->addWidget( statusLabels[2], 3, 0 ); layoutNum->addWidget( statusLines[2], 3, 1 ); layoutNum->addWidget( statusLED[1], 3, 2 ); layoutNum->addWidget( statusLabels[3], 4, 0 ); layoutNum->addWidget( statusLines[3], 4, 1 ); layoutNum->addWidget( statusLED[2], 4, 2 ); // Set the layout. layout->addLayout( layoutNum ); // Initialize member variable. maxPPS = 0; currentEPRI = 0; } ChannelFeedback::~ChannelFeedback() { } QGroupBox* ChannelFeedback::getGroupBox( QString title ) { // Create the group box, title it, and set the layout. chBox = new QGroupBox( tr( title.toStdString().c_str() ) ); chBox->setLayout( layout ); chBox->setFixedHeight( 220 ); // Will comment out later when more status fields are added. return chBox; } void ChannelFeedback::setEPRILED( QColor color ) { QPalette palette = statusLED[EPRI]->palette(); palette.setColor( QPalette::Window, color ); statusLED[EPRI]->setPalette( palette ); statusLED[EPRI]->setAutoFillBackground( true ); } void ChannelFeedback::setPPSLED( QColor color ) { QPalette palette = statusLED[PPS]->palette(); palette.setColor( QPalette::Window, color ); statusLED[PPS]->setPalette( palette ); statusLED[PPS]->setAutoFillBackground( true ); } void ChannelFeedback::setRefreshLED( QColor color ) { QPalette palette = statusLED[REFRESH]->palette(); palette.setColor( QPalette::Window, color ); statusLED[REFRESH]->setPalette( palette ); statusLED[REFRESH]->setAutoFillBackground( true ); } void ChannelFeedback::setAllLED( QColor color ) { for( int i = 0; i < numStatusLEDs; ++i ) { QPalette palette = statusLED[i]->palette(); palette.setColor( QPalette::Window, color ); statusLED[i]->setPalette( palette ); statusLED[i]->setAutoFillBackground( true ); } } void ChannelFeedback::setUTC( QString value ) { statusLines[0]->setText( value ); } void ChannelFeedback::setPPS( QString value ) { statusLines[1]->setText( value ); if( value.toDouble() > maxPPS ) { setPPSLED( Qt::red ); } else { setPPSLED( Qt::green ); } } void ChannelFeedback::setEPRI( QString value ) { statusLines[2]->setText( value ); if( value.toInt() > currentEPRI ) { setEPRILED( Qt::green ); } else { setEPRILED( Qt::red ); } currentEPRI = value.toInt(); } void ChannelFeedback::setRefresh( QString value ) { statusLines[3]->setText( value ); if( value.toInt() > 500 ) { setRefreshLED( Qt::red ); } else if( value.toInt() > 400 ) { setRefreshLED( Qt::yellow ); } else { setRefreshLED( Qt::green ); } } void ChannelFeedback::setMaxPPS( long int pps ) { maxPPS = pps; }