xca/widgets/XcaProgressGui.h
Christian Hohnstaedt 82da759a4e XcaProgress: separate Cmdline progress from GUI progress
The generic XcaProgress object is used, which dynamically
creates a Cmdline progress object.
The Mainwindow replaces it by a GUI object, which integrates
into the status bar.
2021-06-01 17:48:37 +02:00

61 lines
1.0 KiB
C++

/* vi: set sw=4 ts=4:
*
* Copyright (C) 2018 - 2020 Christian Hohnstaedt.
*
* All rights reserved.
*/
#ifndef __XCAPROGRESSGUI_H
#define __XCAPROGRESSGUI_H
#include "lib/base.h"
#include "lib/main.h"
#include "lib/XcaProgress.h"
#include <QProgressBar>
#include <QStatusBar>
#include <QMainWindow>
class XcaProgressGui : public XcaProgress_i
{
private:
QMainWindow *mwin;
QProgressBar *bar;
public:
XcaProgressGui() = delete;
XcaProgressGui(QMainWindow *m) : XcaProgress_i(), mwin(m), bar()
{
bar = new QProgressBar();
bar->setMinimum(0);
bar->setTextVisible(true);
}
void start(const QString &what, int max)
{
bar->setValue(0);
bar->setMaximum(max);
bar->setFormat(what);
mwin->statusBar()->addPermanentWidget(bar, 1);
bar->show();
mwin->repaint();
}
void stop()
{
mwin->statusBar()->removeWidget(bar);
}
~XcaProgressGui()
{
delete bar;
}
void increment()
{
int value = bar->value();
if (value == bar->maximum()) {
bar->reset();
} else {
bar->setValue(value +1);
}
}
};
#endif