Browse Source

Implemented status bar

Ivan Arkhipov 3 years ago
parent
commit
e04e3a572f

+ 0 - 3
Legacy_v2.pro

@@ -17,6 +17,3 @@ SUBDIRS += \
     src/Legacy \ 
 #    src/Legacy-advanced \
     src/LegacyLauncher
-
-CONFIG += qt \
-    qt

+ 2 - 0
src/Legacy/Legacy.pro

@@ -35,6 +35,7 @@ SOURCES += \
     widgets/dialogwindow.cpp \
     widgets/qsmoothscrollarea.cpp \
     widgets/tooltipbutton.cpp \
+    widgets/progressbar.cpp \
     fonts.cpp \
     legacyapplication.cpp \
     models/settings.cpp \
@@ -62,6 +63,7 @@ HEADERS += \
     widgets/dialogwindow.h \
     widgets/qsmoothscrollarea.h \
     widgets/tooltipbutton.h \
+    widgets/progressbar.h \
     constants.h \
     fonts.h \
     models/settings.h \

+ 44 - 0
src/Legacy/widgets/progressbar.cpp

@@ -0,0 +1,44 @@
+#include "progressbar.h"
+#include <QPixmap>
+#include <QPainter>
+
+ProgressBar::ProgressBar(QWidget *parent) : QWidget(parent), _progress(26)
+{
+}
+
+void ProgressBar::moveEvent(QMoveEvent*) {
+    repaint();
+}
+
+void ProgressBar::resizeEvent(QResizeEvent*) {
+    repaint();
+}
+
+void ProgressBar::paintEvent(QPaintEvent *pe)
+{
+    int widWidth = width();
+    int widHeight = height();
+
+    QPixmap pixmap_bar;
+    pixmap_bar.load(":/buttons/progressbar.png");
+    pixmap_bar = pixmap_bar.scaled(widWidth, widHeight, Qt::KeepAspectRatioByExpanding);
+
+    QPixmap pixmap_progress;
+    pixmap_progress.load(":/buttons/progressbar_chunk.png");
+    pixmap_progress = pixmap_progress.scaled(widWidth, widHeight, Qt::KeepAspectRatioByExpanding);
+
+    QPainter paint(this);
+    QRectF progress_position = QRectF(0, 0, widWidth * _progress / 100, widHeight);
+    paint.drawPixmap(0, 0, widWidth, widHeight, pixmap_bar);
+    paint.drawPixmap(progress_position, pixmap_progress, progress_position);
+    QWidget::paintEvent(pe);
+}
+
+
+void ProgressBar::setProgress(int progress) {
+    _progress= progress;
+}
+
+int ProgressBar::getProgress() const {
+    return _progress;
+}

+ 28 - 0
src/Legacy/widgets/progressbar.h

@@ -0,0 +1,28 @@
+#ifndef PROGRESSBAR_H
+#define PROGRESSBAR_H
+
+#include <QWidget>
+
+class ProgressBar : public QWidget
+{
+    Q_OBJECT
+public:
+    explicit ProgressBar(QWidget *parent = nullptr);
+
+    void moveEvent(QMoveEvent *) override;
+
+    void resizeEvent(QResizeEvent *) override;
+
+    void paintEvent(QPaintEvent *pe) override;
+
+    void setProgress(int progress);
+
+    int getProgress() const;
+
+signals:
+
+private:
+    int _progress;
+};
+
+#endif // PROGRESSBAR_H

+ 18 - 27
src/Legacy/widgets/statuswidget.ui

@@ -208,30 +208,15 @@ QPushButton#game_button:disabled {
     <bool>true</bool>
    </property>
   </widget>
-  <widget class="QWidget" name="widget" native="true">
+  <widget class="ProgressBar" name="c_progress_bar" native="true">
    <property name="geometry">
     <rect>
-     <x>290</x>
+     <x>310</x>
      <y>480</y>
-     <width>521</width>
-     <height>24</height>
+     <width>491</width>
+     <height>22</height>
     </rect>
    </property>
-   <property name="minimumSize">
-    <size>
-     <width>26</width>
-     <height>24</height>
-    </size>
-   </property>
-   <property name="maximumSize">
-    <size>
-     <width>16777215</width>
-     <height>24</height>
-    </size>
-   </property>
-   <property name="styleSheet">
-    <string notr="true">border-image: url(:/buttons/progressbar.png) 0 0 0 0 stretch stretch;</string>
-   </property>
   </widget>
   <widget class="QLabel" name="galadriel_tooltip_example">
    <property name="enabled">
@@ -265,7 +250,7 @@ QPushButton#game_button:disabled {
     <bool>true</bool>
    </property>
   </widget>
-  <widget class="QWidget" name="sub_entry_1" native="true">
+  <widget class="QWidget" name="a_game_parameters" native="true">
    <property name="geometry">
     <rect>
      <x>310</x>
@@ -281,7 +266,7 @@ QPushButton#game_button:disabled {
     </sizepolicy>
    </property>
    <property name="styleSheet">
-    <string notr="true">QWidget#sub_entry_1{
+    <string notr="true">QWidget#a_game_parameters {
 	background-color: rgba(31, 19, 7, 155);
 	border-radius: 5px;
 	border: 1px solid rgba(149, 149, 149, 155);
@@ -445,7 +430,7 @@ background-color: none;</string>
           </font>
          </property>
          <property name="text">
-          <string>Версия игры для перевода?</string>
+          <string>Версия игры для перевода:</string>
          </property>
         </widget>
        </item>
@@ -521,7 +506,7 @@ border-radius: 3px;</string>
     </item>
    </layout>
   </widget>
-  <widget class="QWidget" name="sub_entry_3" native="true">
+  <widget class="QWidget" name="b_components_status" native="true">
    <property name="geometry">
     <rect>
      <x>310</x>
@@ -531,7 +516,7 @@ border-radius: 3px;</string>
     </rect>
    </property>
    <property name="styleSheet">
-    <string notr="true">QWidget#sub_entry_3 {
+    <string notr="true">QWidget#b_components_status {
 	background-color: rgba(31, 19, 7, 155);
 	border-radius: 5px;
 	border: 1px solid rgba(149, 149, 149, 155);
@@ -939,10 +924,10 @@ border-radius: 3px;</string>
   <zorder>game_button</zorder>
   <zorder>server_status_widget</zorder>
   <zorder>weekly_code_widget</zorder>
-  <zorder>widget</zorder>
+  <zorder>c_progress_bar</zorder>
   <zorder>galadriel_tooltip_example</zorder>
-  <zorder>sub_entry_1</zorder>
-  <zorder>sub_entry_3</zorder>
+  <zorder>a_game_parameters</zorder>
+  <zorder>b_components_status</zorder>
  </widget>
  <customwidgets>
   <customwidget>
@@ -974,6 +959,12 @@ border-radius: 3px;</string>
    <extends>QLabel</extends>
    <header>widgets/tooltipbutton.h</header>
   </customwidget>
+  <customwidget>
+   <class>ProgressBar</class>
+   <extends>QWidget</extends>
+   <header>widgets/progressbar.h</header>
+   <container>1</container>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>

+ 7 - 0
src/Legacy/widgets/tooltipbutton.cpp

@@ -28,6 +28,13 @@ TooltipButton::TooltipButton(QWidget *parent) : QLabel(parent) {
     _tooltip_label_arrow->setGraphicsEffect(_tooltip_arrow_opacity_effect);
 }
 
+TooltipButton::~TooltipButton() {
+    _tooltip_label->deleteLater();
+    _tooltip_label_arrow->deleteLater();
+    _tooltip_opacity_effect->deleteLater();
+    _tooltip_arrow_opacity_effect->deleteLater();
+}
+
 void TooltipButton::enterEvent(QEvent*) {
    QPropertyAnimation *animation = new QPropertyAnimation(_tooltip_opacity_effect, "opacity");
    animation->setDuration(300);

+ 2 - 0
src/Legacy/widgets/tooltipbutton.h

@@ -10,6 +10,8 @@ class TooltipButton : public QLabel
 public:
     explicit TooltipButton(QWidget *parent = nullptr);
 
+    ~TooltipButton();
+
     void enterEvent(QEvent *) override;
 
     void leaveEvent(QEvent *) override;