25 #include <QStyleFactory>
26 #include <QStylePainter>
27 #include <QStyleOptionFocusRect>
30 #include "../core/messages/messagefinalkey.h"
31 #include "../core/messages/messagekeyselectionchanged.h"
38 QProgressBar(parent) {
40 setFormat(tr(
"Quality"));
41 setWhatsThis(tr(
"This bar displays the quality of the recording. All of the recorded keys should have an almost equal quality before starting the calculation."));
42 setTextVisible(
false);
46 setStyle(QStyleFactory::create(
"fusion"));
48 setOrientation(Qt::Vertical);
49 setTextDirection(BottomToTop);
51 setSizePolicy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding);
61 QFontMetrics fm(fontMetrics());
62 QRect br(fm.boundingRect(text()));
63 return QSize(QProgressBar::minimumSizeHint().width(), br.width());
67 QFontMetrics fm(fontMetrics());
68 QRect br(fm.boundingRect(text()));
69 return QSize(QProgressBar::sizeHint().width(), br.width() + 10);
88 if (value() == v * 10000) {
92 QPalette p = this->palette();
94 int red =
static_cast<int>(255*std::pow(1-v,0.3));
95 int green =
static_cast<int>(255*std::pow(v,0.5));
96 p.setColor(QPalette::Highlight, QColor(red,green,0));
110 switch (m->getType())
114 auto message(std::static_pointer_cast<MessageFinalKey>(m));
115 double quality = message->getFinalKey()->getRecognitionQuality();
120 auto message(std::static_pointer_cast<MessageKeySelectionChanged>(m));
121 const Key *key = message->getKey();
143 QProgressBar::paintEvent(event);
145 QPainter painter(
this);
147 const QRect cr(contentsRect());
150 painter.translate(contentsRect().center());
151 if (orientation() == Qt::Vertical) {
153 painter.drawText(QRect(-cr.height() / 2, -cr.width() / 2, cr.height(), cr.width()), Qt::AlignHCenter | Qt::AlignVCenter, text());
155 painter.drawText(QRect(-cr.width() / 2, -cr.height() / 2, cr.width(), cr.height()), Qt::AlignCenter, text());
virtual void handleMessage(MessagePtr m) overridefinal
Message handling.
std::shared_ptr< Message > MessagePtr
Global type of a shared message pointer.
virtual QSize minimumSizeHint() const overridefinal
Hint for the minimal widget size.
Class describing a single piano key.
Message that a key has been selected.
virtual QSize sizeHint() const overridefinal
Hint for the optimal widget size.
double getRecognitionQuality() const
Get quality of recognition.
void paintEvent(QPaintEvent *event) overridefinal
Reimplemented paint function that will draw the vertical text.
final key information after recording
RecordingQualityBar(QWidget *parent=nullptr)
Default constructor.
void updateValue(float v)
Function to update the current value.
keystroke recognized and recording started