progressoverlay.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /*
  2. * progressoverlay.cpp, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #include "progressoverlay.h"
  11. #include "../helper.h"
  12. #include <QVBoxLayout>
  13. #include <QPalette>
  14. ProgressOverlay::ProgressOverlay(QWidget *parent, int topOffsetPx)
  15. : QWidget(parent)
  16. {
  17. setAutoFillBackground(true);
  18. QPalette pal = palette();
  19. pal.setColor(QPalette::Window, parent->palette().color(QPalette::Window));
  20. setPalette(pal);
  21. setGeometry(parent->rect().adjusted(0, topOffsetPx, 0, 0));
  22. auto *layout = new QVBoxLayout(this);
  23. layout->setContentsMargins(24, 24, 24, 24);
  24. layout->setSpacing(12);
  25. titleLabel = new QLabel(this);
  26. titleLabel->setAlignment(Qt::AlignCenter);
  27. titleLabel->setStyleSheet("font-size: 16px; font-weight: 600;");
  28. fileLabel = new QLabel(this);
  29. fileLabel->setAlignment(Qt::AlignCenter);
  30. fileLabel->setWordWrap(true);
  31. progressBar = new QProgressBar(this);
  32. progressBar->setMinimumHeight(18);
  33. setIndeterminate(true);
  34. layout->addStretch();
  35. layout->addWidget(titleLabel);
  36. layout->addWidget(fileLabel);
  37. layout->addWidget(progressBar);
  38. layout->addStretch();
  39. Helper::keepScreenOn(true);
  40. }
  41. ProgressOverlay::~ProgressOverlay()
  42. {
  43. Helper::keepScreenOn(false);
  44. }
  45. void ProgressOverlay::setTitle(const QString &title)
  46. {
  47. titleLabel->setText(title);
  48. }
  49. void ProgressOverlay::setFileName(const QString &name)
  50. {
  51. fileLabel->setText(name);
  52. }
  53. void ProgressOverlay::setIndeterminate(bool on)
  54. {
  55. progressBar->setRange(0, on ? 0 : 100);
  56. }
  57. void ProgressOverlay::setRange(int max)
  58. {
  59. progressBar->setRange(0, qMax(1, max));
  60. progressBar->setValue(0);
  61. }
  62. void ProgressOverlay::setValue(int val)
  63. {
  64. progressBar->setValue(val);
  65. }