void RenderWindow::slotUpdateProgressAndStatus(const QString &text, const QString &progressText, double progress, cProgressText::enumProgressType progressType) { ui->statusbar->showMessage(text, 0); QProgressBar *progressBar = NULL; bool isQueue = this->sender() && this->sender()->objectName() == "Queue"; switch (progressType) { case cProgressText::progress_IMAGE: if (isQueue) progressBar = gMainInterface->progressBarQueueImage; else progressBar = gMainInterface->progressBar; break; case cProgressText::progress_ANIMATION: if (isQueue) progressBar = gMainInterface->progressBarQueueAnimation; else progressBar = gMainInterface->progressBarAnimation; break; case cProgressText::progress_QUEUE: // nothing to be done, no progress bar for queue in GUI break; } if (progressBar) { if (!progressBar->isVisible()) { progressBar->setVisible(true); } progressBar->setValue(progress * 1000.0); progressBar->setTextVisible(true); progressBar->setFormat(progressText); } }
void RenderWindow::slotUpdateProgressHide(cProgressText::enumProgressType progressType) { QProgressBar *progressBar = NULL; switch (progressType) { case cProgressText::progress_IMAGE: progressBar = gMainInterface->progressBar; break; case cProgressText::progress_ANIMATION: progressBar = gMainInterface->progressBarAnimation; break; case cProgressText::progress_QUEUE: // nothing to be done, no progress bar for queue in GUI break; } if (progressBar) { if (progressBar->isVisible()) progressBar->setVisible(false); } }
void Progress::timerEvent(QTimerEvent * event) { if (event->timerId() != timer.timerId() || noAnimations()) return; //Update the registered progressbars. Items::iterator iter; QProgressBar *pb; bool mkProper = false; animationUpdate = true; for (iter = items.begin(); iter != items.end(); iter++) { QWidget *w = const_cast<QWidget*>(iter.key().data()); if (!w) // not a progressbar - shouldn't be in items, btw... { mkProper = true; continue; } pb = qobject_cast<QProgressBar*>(w); if (!pb) continue; // not a progressbar - shouldn't be in items, btw... if (pb->maximum() != 0 || pb->minimum() != 0 || pb->paintingActive() || !pb->isVisible()) { pb->setAttribute(Qt::WA_OpaquePaintEvent, false); continue; // no paint necessary } pb->setAttribute(Qt::WA_OpaquePaintEvent); ++iter.value(); // dump pb geometry int x,y,l,t, *step = &iter.value()._step; if ( pb->orientation() == Qt::Vertical ) // swapped values pb->rect().getRect(&y,&x,&t,&l); else pb->rect().getRect(&x,&y,&l,&t); if (*step > l/_speed) *step = l/36-(int)(l/_speed); else if (*step == -1) *step = l/36-1; int s = qMin(qMax(l / 10, 16), qMin(t, 20)); int ss = (3*s)/4; int n = l/s; if ( pb->orientation() == Qt::Vertical) { x = pb->rect().bottom(); x -= (l - n*s)/2 + ss; /*s = -s;*/ } else { x += (l - n*s)/2; /*s = qAbs(s);*/ } x += qMax((int)(_speed*qAbs(*step)*n*s/l) - s, 0); if ( pb->orientation() == Qt::Vertical ) pb->repaint(y,x-s,s,3*s); else pb->repaint(x-s,y,3*s,s); } animationUpdate = false; if (mkProper) _release(NULL); }