diff src/progress.cpp @ 6:1d82f6e04d7d

Update: add first parts to the settings dialog
author Paper <mrpapersonic@gmail.com>
date Wed, 16 Aug 2023 00:49:17 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/progress.cpp	Wed Aug 16 00:49:17 2023 -0400
@@ -0,0 +1,39 @@
+#include "progress.h"
+
+#include <QPainter>
+#include <QPalette>
+#include <QStyleOptionProgressBar>
+#include <QStyleOptionViewItem>
+#include <QProxyStyle>
+#include <QMessageBox>
+
+AnimeProgressBar::AnimeProgressBar() {
+#if (defined(WIN32) || defined(MACOSX))
+    auto *fusionStyle = new QProxyStyle {"fusion"};
+    fusionStyle->setParent(&dummy_progress);
+    dummy_progress.setStyle(fusionStyle);
+#endif
+}
+
+void AnimeProgressBar::paint(QPainter *painter, const QStyleOptionViewItem &option, const QString &text, const int progress, const int episodes) const {
+    QStyleOptionProgressBar styleOption;
+    styleOption.initFrom(&dummy_progress);
+
+    styleOption.maximum = episodes;
+    styleOption.minimum = 0;
+    styleOption.progress = progress;
+    styleOption.text = text;
+    styleOption.textVisible = true;
+
+    styleOption.rect = option.rect;
+    styleOption.state = option.state;
+
+    const bool enabled = option.state.testFlag(QStyle::State_Enabled);
+    styleOption.palette.setCurrentColorGroup(enabled ? QPalette::Active : QPalette::Disabled);
+
+    painter->save();
+    const QStyle *style = dummy_progress.style();
+    style->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter, option.widget);
+    style->drawControl(QStyle::CE_ProgressBar, &styleOption, painter, &dummy_progress);
+    painter->restore();
+}
\ No newline at end of file