helpwidget.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #include "ui_HelpWidget.h"
  2. #include "models/patchlist.h"
  3. #include "widgets/helpwidget.h"
  4. #include <QDebug>
  5. #include <QScrollBar>
  6. HelpWidget::HelpWidget(PatchList* legacy_patches, QWidget *parent)
  7. : QWidget(parent)
  8. , ui(new Ui::HelpWidget)
  9. , legacy_patches_(legacy_patches)
  10. {
  11. ui->setupUi(this);
  12. currently_active_entry = ui->menuentry_1;
  13. // moveMenuHoverWidget(ui->menuentry_1);
  14. qDebug() << ui->hover_button_widget->geometry();
  15. connect(ui->content_scroll_area->verticalScrollBar(), &QScrollBar::valueChanged, this, &HelpWidget::handleContentScrolling);
  16. }
  17. HelpWidget::~HelpWidget()
  18. {
  19. delete ui;
  20. }
  21. void HelpWidget::updateFontsSizes()
  22. {
  23. }
  24. void HelpWidget::resizeEvent(QResizeEvent *event)
  25. {
  26. }
  27. void HelpWidget::handleContentScrolling(int value)
  28. {
  29. if (scrollAreaContentsAnimation && scrollAreaContentsAnimation->state() == QAbstractAnimation::Running)
  30. return;
  31. // qDebug() << "VALUE CHANGED: " << value << ui->content_scroll_area->verticalScrollBar()->maximum();
  32. QPushButton* new_active_entry = ui->menuentry_1;
  33. if (value >= ui->sub_entry_1->y() + ui->sub_entry_1->height() * 2 / 3)
  34. new_active_entry = ui->menuentry_2;
  35. if (value >= ui->sub_entry_2->y() + ui->sub_entry_2->height() * 2 / 3)
  36. new_active_entry = ui->menuentry_3;
  37. if (value >= ui->sub_entry_3->y() + ui->sub_entry_3->height() * 2 / 3)
  38. new_active_entry = ui->menuentry_4;
  39. if (value >= ui->sub_entry_4->y() + ui->sub_entry_4->height() * 2 / 3 || value == ui->content_scroll_area->verticalScrollBar()->maximum())
  40. new_active_entry = ui->menuentry_5;
  41. if (value == 0)
  42. new_active_entry = ui->menuentry_1;
  43. moveMenuHoverWidget(new_active_entry);
  44. }
  45. void HelpWidget::moveMenuHoverWidget(QPushButton *target)
  46. {
  47. if (ui->hover_button_widget->size() == QSize(0, 0)) {
  48. ui->hover_button_widget->resize(target->size() + QSize(10, 0));
  49. ui->hover_button_widget->move(ui->checkpoints_list->pos() + target->pos() + QPoint(-5, 0));
  50. } else {
  51. if (menuHoverWidgetAnimation == nullptr)
  52. menuHoverWidgetAnimation = new QPropertyAnimation(ui->hover_button_widget, "geometry");
  53. else
  54. menuHoverWidgetAnimation->stop();
  55. menuHoverWidgetAnimation->setDuration(200);
  56. menuHoverWidgetAnimation->setStartValue(QRect(ui->hover_button_widget->pos(), ui->hover_button_widget->size()));
  57. menuHoverWidgetAnimation->setEndValue(QRect(ui->checkpoints_list->pos() + target->pos() + QPoint(-5, 0), target->size() + QSize(10, 0)));
  58. menuHoverWidgetAnimation->start();
  59. }
  60. ui->menuentry_1->raise();
  61. ui->menuentry_2->raise();
  62. ui->menuentry_3->raise();
  63. ui->menuentry_4->raise();
  64. }
  65. void HelpWidget::scrollContentToWidget(QWidget *widget)
  66. {
  67. if (scrollAreaContentsAnimation == nullptr)
  68. scrollAreaContentsAnimation = new QPropertyAnimation(ui->content_scroll_area->verticalScrollBar(), "value");
  69. else
  70. scrollAreaContentsAnimation->stop();
  71. scrollAreaContentsAnimation->setDuration(200);
  72. scrollAreaContentsAnimation->setStartValue(ui->content_scroll_area->verticalScrollBar()->value());
  73. scrollAreaContentsAnimation->setEndValue(widget->y());
  74. scrollAreaContentsAnimation->start();
  75. }
  76. void HelpWidget::on_menuentry_1_clicked()
  77. {
  78. if (currently_active_entry != ui->menuentry_1) {
  79. currently_active_entry = ui->menuentry_1;
  80. moveMenuHoverWidget(ui->menuentry_1);
  81. }
  82. scrollContentToWidget(ui->sub_entry_1);
  83. }
  84. void HelpWidget::on_menuentry_2_clicked()
  85. {
  86. if (currently_active_entry != ui->menuentry_2) {
  87. currently_active_entry = ui->menuentry_2;
  88. moveMenuHoverWidget(ui->menuentry_2);
  89. }
  90. scrollContentToWidget(ui->sub_entry_2);
  91. }
  92. void HelpWidget::on_menuentry_3_clicked()
  93. {
  94. if (currently_active_entry != ui->menuentry_3) {
  95. currently_active_entry = ui->menuentry_3;
  96. moveMenuHoverWidget(ui->menuentry_3);
  97. }
  98. scrollContentToWidget(ui->sub_entry_3);
  99. }
  100. void HelpWidget::on_menuentry_4_clicked()
  101. {
  102. if (currently_active_entry != ui->menuentry_4) {
  103. currently_active_entry = ui->menuentry_4;
  104. moveMenuHoverWidget(ui->menuentry_4);
  105. }
  106. scrollContentToWidget(ui->sub_entry_4);
  107. }
  108. void HelpWidget::on_menuentry_5_clicked()
  109. {
  110. if (currently_active_entry != ui->menuentry_5) {
  111. currently_active_entry = ui->menuentry_5;
  112. moveMenuHoverWidget(ui->menuentry_5);
  113. }
  114. scrollContentToWidget(ui->sub_entry_5);
  115. }