/* * Title: StatusWin.cpp * Author: M.Thomas BEAM Ltd * Date: 2007-02-13 * * Contents: Status Display * * Mod Rec: * */ #include <StatusWin.h> #include <qlayout.h> #include <qpushbutton.h> #include <qvgroupbox.h> #include <qmessagebox.h> const int REFRESH_MS = 1000; StatusWin::StatusWin(QWidget* w,Control& c) : ocontrol(c) { QVGroupBox* t = new QVGroupBox("Status",this,"Status"); QPushButton* refreshButton; ostatus = new QTextEdit(t); refreshButton = new QPushButton("Refresh",t); refreshButton->setMaximumWidth(200); owarningActive = false; oticker = new QTimer(); QFont f("courier"); f.setPointSize(10); ostatus->setFont(f); connect(refreshButton,SIGNAL(clicked()),this,SLOT(updateForced())); connect(&ocontrol,SIGNAL(newConnection()),this,SLOT(updateForced())); connect(oticker, SIGNAL(timeout()), this, SLOT(updateTimed())); } StatusWin::~StatusWin() {} void StatusWin::updateTimed() { if (isVisible()) getStatus(); } void StatusWin::updateForced() { owarningActive = false; getStatus(); } void StatusWin::show() { owarningActive = false; update(); oticker->start( REFRESH_MS, FALSE ); QWidget::show(); } void StatusWin::hide() { oticker->stop(); QWidget::hide(); } void StatusWin::getStatus() { BError err; BIter i; BList<Tms::NameValue> l; BString name; BString value; if (err = ocontrol.getStatus(l)) { warningDialog("Reading Status",err); return; } ostatus->clear(); for (l.start(i);! l.isEnd(i);l.next(i)) { BString s; name = l[i].name.pad(30); value = l[i].value; s.printf("%s %s\n",name.retStr(),value.retStr()); ostatus->append(s.retStr()); } } void StatusWin::warningDialog(BString title, BError err){ BString m; if (owarningActive) return; owarningActive = true; m = BString("<h5>") + title + "</h5><p>" + err.getString() + "</p>"; QMessageBox::warning(this, "Warning", m.retStr()); }