/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /*************************************************************************** * statusbar.cc * * Fri May 26 12:06:41 CEST 2006 * Copyright 2006 Bent Bisballe Nyeng * deva@aasimon.org ****************************************************************************/ /* * This file is part of MIaV. * * MIaV is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * MIaV is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with MIaV; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include "statusbar.h" #include "configuration.h" #include "info.h" StatusBar::StatusBar(QWidget *parent, Decoder *decoder): QStatusBar(parent) { if(MIaV::config->get("server_addr", &ip)) MIaV::info->error("Could not read the symbol [server_addr] from the conf file!"); if(MIaV::config->get("server_port", &port)) MIaV::info->error("Could not read the symbol [server_port] from the conf file!"); // socket.setPort(port); // socket.setAddress(ip); this->decoder = decoder; diskspace = new QProgressBar(this); diskspace->setRange(0, 100); diskspace->setValue(0); load = new QProgressBar(this); load->setRange(0, 100); load->setValue(0); messagefield = new QLabel(this); fps = new QLabel(this); fps->setAlignment(Qt::AlignCenter); queuesizes = new QLabel(this); queuesizes->setAlignment(Qt::AlignCenter); ping = new QLabel(this); ping->setAlignment(Qt::AlignCenter); addWidget(messagefield, 40); addWidget(fps, 10); addWidget(queuesizes, 20); addWidget(ping, 10); addWidget(diskspace, 10); addWidget(load, 10); startTimer(100); } #define UNKNOWN 0 void StatusBar::timerEvent(QTimerEvent *event) { UDPSocket socket(port, ip); status_request_t request; status_t status; if(socket.write(&request, sizeof(request))==-1) fprintf(stderr, "ERROR! WRITE %s\n", socket.error().c_str()); if(socket.read(&status, sizeof(status))==-1) fprintf(stderr, "ERROR! READ %s\n", socket.error().c_str()); std::vector s = decoder->status(); QString statusmsg; if(s.size() > 0) { for(int cnt = 0; cnt < s.size(); cnt++) { QString next; next.sprintf("[%d]", s[cnt].queuelen); statusmsg.prepend(next); } statusmsg.prepend("Queue: "); queuesizes->setText(statusmsg); } else { queuesizes->setText("Queue is empty"); } QString dummy; if(s.size() && s[0].fps != -1) fps->setText(dummy.sprintf("fps %.2f", s[0].fps)); else fps->setText("fps N/A"); /* if(s.server_ping_ms != UNKNOWN) ping->setText(dummy.sprintf("ping %d ms", s.server_ping_ms)); else ping->setText("ping N/A"); */ if(status.diskspace_max != UNKNOWN) { diskspace->setRange(0, status.diskspace_max); diskspace->setValue(status.diskspace); diskspace->setEnabled(true); } else { diskspace->setRange(0, 0); diskspace->setEnabled(false); } if(status.load_max != UNKNOWN) { load->setRange(0, status.load_max); load->setValue(status.load); load->setEnabled(true); } else { load->setRange(0, 0); load->setEnabled(false); } } void StatusBar::message(QString message) { messagefield->setText(message); }