helpwidget.cpp 4.3 KB

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