/* progressbar.cpp - Progress Bar Copyright (C) 2006 Konrad Twardowski This program 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. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include #include #include #include #include #include #include #include "configuration.h" #include "progressbar.h" // static ProgressBar *ProgressBar::_instance = 0; // public ProgressBar::~ProgressBar() { } void ProgressBar::setPosition(const Position value) { // kdDebug() << "ProgressBar::setPosition: " << value << endl; kshutdownrc->progressBarPosition = value; _position = value; TQDesktopWidget *desktop = TQApplication::desktop(); resize(desktop->width() - 4, height()); switch (_position) { case TOP: move(2, 0); break; case BOTTOM: move(2, desktop->height() - height()); break; default: move(2, 0); break; } } void ProgressBar::setHeight(const int value) { int newHeight = (value < 2) ? 2 : value; resize(width(), newHeight); } void ProgressBar::setProgress(const int value) { // kdDebug() << "ProgressBar::setProgress: " << value << endl; int complete = _total - value; if (_complete == complete) return; _complete = complete; repaint(); } void ProgressBar::setValues(const int complete, const int total) { // kdDebug() << "ProgressBar::setValues: " << complete << ", " << total << endl; if ((_complete == complete) && (_total == total)) return; _complete = complete; _total = total; repaint(); } // protected void ProgressBar::mousePressEvent(TQMouseEvent *e) { // kdDebug() << "ProgressBar::mousePressEvent" << endl; if (e->button() == RightButton) { // TODO: 2.0: color configuration // TODO: 2.0: size configuration // show popup menu TDEPopupMenu *popup = new TDEPopupMenu(this); popup->insertTitle(kapp->miniIcon(), "KShutDown"); popup->insertItem(i18n("Hide"), this, TQ_SLOT(hide())); popup->insertTitle("Position"); int topPositionItem = popup->insertItem(i18n("Top"), this, TQ_SLOT(slotSetTopPosition())); popup->setItemChecked(topPositionItem, _position == TOP); int bottomPositionItem = popup->insertItem(i18n("Bottom"), this, TQ_SLOT(slotSetBottomPosition())); popup->setItemChecked(bottomPositionItem, _position == BOTTOM); popup->popup(e->globalPos()); e->accept(); } TQWidget::mousePressEvent(e); } void ProgressBar::paintEvent(TQPaintEvent *) { // kdDebug() << "ProgressBar::paintEvent" << endl; TQPainter g(this); int w = width(); int h = height(); g.fillRect(0, 0, w, h, TQBrush(backgroundColor())); if ((_complete <= 0) || (_total <= 0)) return; w = (int)((float)w * ((float)_complete * 100.0f / (float)_total) / 100.0f); g.fillRect(0, 0, w, h, TQBrush(foregroundColor())); } // private ProgressBar::ProgressBar() : TQWidget( 0, "ProgressBar", WStyle_NoBorder | WStyle_StaysOnTop | WType_TopLevel | WX11BypassWM ), _complete(0), _total(0) { // kdDebug() << "ProgressBar::ProgressBar()" << endl; setBackgroundColor(black); setPaletteForegroundColor(yellow); setHeight(3); setPosition((Position)kshutdownrc->progressBarPosition); } // private slots void ProgressBar::slotSetBottomPosition() { setPosition(BOTTOM); } void ProgressBar::slotSetTopPosition() { setPosition(TOP); } #include "progressbar.moc"