diff options
Diffstat (limited to 'client/statusbar.cc')
-rw-r--r-- | client/statusbar.cc | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/client/statusbar.cc b/client/statusbar.cc new file mode 100644 index 0000000..1e25ebe --- /dev/null +++ b/client/statusbar.cc @@ -0,0 +1,109 @@ +/* -*- 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" + +StatusBar::StatusBar(QWidget *parent, Decoder *decoder): QStatusBar(parent) +{ + 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); +} + +void StatusBar::timerEvent(QTimerEvent *event) +{ + Status s = decoder->status(); + QString statusmsg; + + if(s.queue_sizes.size() > 0) { + for(int cnt = 0; cnt < s.queue_sizes.size(); cnt++) { + QString next; + next.sprintf("[%d]", s.queue_sizes[cnt]); + statusmsg.prepend(next); + } + statusmsg.prepend("Queue: "); + queuesizes->setText(statusmsg); + } else { + queuesizes->setText("Queue is empty"); + } + + QString dummy; + if(s.server_ping_ms != UNKNOWN) ping->setText(dummy.sprintf("ping %d ms", s.server_ping_ms)); + else ping->setText("ping N/A"); + + if(s.server_fps != -1) fps->setText(dummy.sprintf("fps %.2f", s.server_fps)); + else fps->setText("fps N/A"); + + if(s.server_diskspace_max != UNKNOWN) { + diskspace->setRange(0, s.server_diskspace_max); + diskspace->setValue(s.server_diskspace); + diskspace->setEnabled(true); + } else { + diskspace->setRange(0, 0); + diskspace->setEnabled(false); + } + + if(s.server_load_max != UNKNOWN) { + load->setRange(0, s.server_load_max); + load->setValue(s.server_load); + load->setEnabled(true); + } else { + load->setRange(0, 0); + load->setEnabled(false); + } +} + + +void StatusBar::message(QString message) +{ + messagefield->setText(message); +} |