Rivendellaudio/lib/rdbusybar.cpp
Fred Gleason fef77fae91 2020-02-25 Fred Gleason <fredg@paravelsystems.com>
* Removed the 'Q3Frame' dependency from 'RDBusyBar'.
	* Add stylesheet support for color rendering in RDBusyBar.
2020-02-25 15:02:27 -05:00

76 lines
1.9 KiB
C++

// rdbusybar.cpp
//
// A 'progress bar' widget that shows busy state.
//
// (C) Copyright 2010-2020 Fred Gleason <fredg@paravelsystems.com>
//
// it under the terms of the GNU Library General Public License
// version 2 as published by the Free Software Foundation.
//
// This program 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 this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
//
#include "rdbusybar.h"
RDBusyBar::RDBusyBar(QWidget *parent,Qt::WFlags f)
: QFrame(parent,f)
{
bar_pos=0;
setFrameStyle(QFrame::StyledPanel|QFrame::Sunken);
QPalette p=palette();
p.setColor(QPalette::Active,QColorGroup::Background,
p.color(QPalette::Active,QColorGroup::Base));
setPalette(p);
bar_label=new QLabel(this);
p.setColor(QPalette::Active,QColorGroup::Background,
p.color(QPalette::Active,QColorGroup::Highlight));
bar_label->setPalette(p);
bar_label->setStyleSheet("background-color:"+
p.color(QPalette::Active,QColorGroup::Highlight).name());
bar_label->hide();
bar_timer=new QTimer(this);
connect(bar_timer,SIGNAL(timeout()),this,SLOT(strobe()));
}
void RDBusyBar::activate(bool state)
{
if(state) {
Update();
bar_label->show();
bar_timer->start(200);
}
else {
bar_label->hide();
bar_timer->stop();
}
}
void RDBusyBar::strobe()
{
bar_pos++;
bar_pos=bar_pos%5;
if(bar_label->isVisible()) {
Update();
}
}
void RDBusyBar::Update()
{
int w=rect().width();
int h=rect().height();
int fw=frameWidth();
bar_label->setGeometry(bar_pos*w/5+fw,fw,(w-2*fw)/5,h-2*fw);
}