⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kprogress.cpp

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 CPP
字号:
/* * KProgress -- a progress indicator widget for KDE.  * (c) 1996 Martynas Kunigelis */ #include "kprogress.h"#include "kprogress.h"#include <qpainter.h>#include <qstring.h>#include <qpixmap.h>#include <kapp.h>KProgress::KProgress(QWidget *parent, const char *name)	: QFrame(parent, name),	QRangeControl(0, 100, 1, 10, 0),	orient(Horizontal){	initialize();}KProgress::KProgress(Orientation orientation, QWidget *parent, const char *name)	: QFrame(parent, name),	QRangeControl(0, 100, 1, 10, 0),	orient(orientation){	initialize();}KProgress::KProgress(int minValue, int maxValue, int value, 					Orientation orientation, QWidget *parent, const char *name)	: QFrame(parent, name),	QRangeControl(minValue, maxValue, 1, 10, value),	orient(orientation){	initialize();}KProgress::~KProgress(){}void KProgress::advance(int offset){	setValue(value() + offset);}void KProgress::initialize(){	//setFrameStyle(QFrame::Panel | QFrame::Sunken);	//setLineWidth(2);	//setMidLineWidth(2);	bar_pixmap = 0;	bar_style = Solid;	bar_color = kapp->selectColor;	bar_text_color = kapp->selectTextColor;	text_color = kapp->textColor;	setBackgroundColor( kapp->windowColor );	setFont(QFont("helvetica", 12, QFont::Bold));	text_enabled = TRUE;	adjustStyle();}void KProgress::setBarPixmap(const QPixmap &pixmap){	if (pixmap.isNull())		return;	if (bar_pixmap)		delete bar_pixmap;			bar_pixmap = new QPixmap(pixmap);}void KProgress::setBarColor(const QColor &color){	bar_color = color;	if (bar_pixmap) {		delete bar_pixmap;		bar_pixmap = 0;	}}void KProgress::setBarStyle(BarStyle style){	if (bar_style != style) {		bar_style = style;		update();	}}void KProgress::setOrientation(Orientation orientation){	if (orient != orientation) {		orient = orientation;		update();	}} void KProgress::setValue(int value){	QRangeControl::setValue(value);}void KProgress::setTextEnabled(bool enable){	text_enabled = enable;}const QColor & KProgress::barColor() const{	return bar_color;}const QPixmap * KProgress::barPixmap() const{	return bar_pixmap;}bool KProgress::textEnabled() const{	return text_enabled;}QSize KProgress::sizeHint() const{  QSize s( size() );  if(orientation() == KProgress::Vertical) {    s.setWidth(24);  } else {    s.setHeight(24);  }  return s;}KProgress::Orientation KProgress::orientation() const{	return orient;}KProgress::BarStyle KProgress::barStyle() const{	return bar_style;}int KProgress::recalcValue(int range){	int abs_value = value() - minValue();	int abs_range = maxValue() - minValue();	return range * abs_value / abs_range;}void KProgress::valueChange(){	repaint(contentsRect(), FALSE);	emit percentageChanged(recalcValue(100));}void KProgress::rangeChange(){	repaint(contentsRect(), FALSE);	emit percentageChanged(recalcValue(100));}void KProgress::styleChange(GUIStyle){	adjustStyle();}void KProgress::adjustStyle(){	switch (style()) {		case WindowsStyle:			setFrameStyle(QFrame::WinPanel | QFrame::Sunken);			break;		case MotifStyle:		default:			setFrameStyle(QFrame::Panel | QFrame::Sunken);			setLineWidth( 2 );			break;	}	update();}void KProgress::paletteChange( const QPalette & ){	bar_color = kapp->selectColor;	bar_text_color = kapp->selectTextColor;	text_color = kapp->textColor;	setBackgroundColor( kapp->windowColor );}		void KProgress::drawText(QPainter *p){	QRect r(contentsRect());	//QColor c(bar_color.rgb() ^ backgroundColor().rgb());	QString s;		s.sprintf("%i%%", recalcValue(100));	p->setPen(text_color);	//p->setRasterOp(XorROP);	p->drawText(r, AlignCenter, s);	p->setClipRegion( fr );	p->setPen(bar_text_color);	p->drawText(r, AlignCenter, s);	}void KProgress::drawContents(QPainter *p){	QRect cr = contentsRect(), er = cr;	fr = cr;	QBrush fb(bar_color), eb(backgroundColor());	if (bar_pixmap)		fb.setPixmap(*bar_pixmap);	if (backgroundPixmap())		eb.setPixmap(*backgroundPixmap());	switch (bar_style) {		case Solid:			if (orient == Horizontal) {				fr.setWidth(recalcValue(cr.width()));				er.setLeft(fr.right() + 1);			} else {				fr.setTop(cr.bottom() - recalcValue(cr.height()));				er.setBottom(fr.top() - 1);			}							p->setBrushOrigin(cr.topLeft());			p->fillRect(fr, fb);			p->fillRect(er, eb);						break;					case Blocked:			const int margin = 2;			int max, num, dx, dy;			if (orient == Horizontal) {				fr.setHeight(cr.height() - 2 * margin);				fr.setWidth((int)(0.67 * fr.height()));				fr.moveTopLeft(QPoint(cr.left() + margin, cr.top() + margin));				dx = fr.width() + margin;				dy = 0;				max = (cr.width() - margin) / (fr.width() + margin) + 1;				num = recalcValue(max);			} else {				fr.setWidth(cr.width() - 2 * margin);				fr.setHeight((int)(0.67 * fr.width()));				fr.moveBottomLeft(QPoint(cr.left() + margin, cr.bottom() - margin));				dx = 0;				dy = - (fr.height() + margin);				max = (cr.height() - margin) / (fr.height() + margin) + 1;				num = recalcValue(max);			}			p->setClipRect(cr.x() + margin, cr.y() + margin, 						   cr.width() - margin, cr.height() - margin);			for (int i = 0; i < num; i++) {				p->setBrushOrigin(fr.topLeft());				p->fillRect(fr, fb);				fr.moveBy(dx, dy);			}						if (num != max) {				if (orient == Horizontal) 					er.setLeft(fr.right() + 1);				else					er.setBottom(fr.bottom() + 1);				if (!er.isNull()) {					p->setBrushOrigin(cr.topLeft());					p->fillRect(er, eb);				}			}						break;	}						if (text_enabled && bar_style != Blocked)		drawText(p);		}			#include "kprogress.moc"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -