Browse Source

Made smooth progressbar and added style improvements

Ivan Arkhipov 3 years ago
parent
commit
913e1c705b

+ 1 - 1
src/Legacy/models/downloader.cpp

@@ -214,7 +214,7 @@ void Downloader::onDownloadProgressChanged(qint64 bytesReceived, qint64 bytesTot
     bytes_downloaded_ = bytesReceived;
     bytes_total_ = bytesTotal;
 
-    if (last_tick_time_.elapsed() >= 300) {
+    if (last_tick_time_.elapsed() >= 100) {
         download_speed_ = (bytes_downloaded_ - bytes_downloaded_before_tick_) * 1000.0 / (last_tick_time_.elapsed());
 
         average_speed_ = (average_speed_ * update_ticks_counter_ + download_speed_) / (update_ticks_counter_ + 1);

+ 10 - 7
src/Legacy/widgets/progressbar.cpp

@@ -14,18 +14,20 @@ void ProgressBar::resizeEvent(QResizeEvent*) {
     repaint();
 }
 
+#include <QDebug>
+
 void ProgressBar::paintEvent(QPaintEvent *pe)
 {
-    int widWidth = width();
-    int widHeight = height();
+    double widWidth = width();
+    double widHeight = height();
 
     QPixmap pixmap_bar;
     pixmap_bar.load(":/buttons/progressbar.png");
-    pixmap_bar = pixmap_bar.scaled(widWidth, widHeight, Qt::KeepAspectRatioByExpanding);
+    pixmap_bar = pixmap_bar.scaled(widWidth, widHeight, Qt::IgnoreAspectRatio);
 
     QPixmap pixmap_progress;
     pixmap_progress.load(":/buttons/progressbar_chunk.png");
-    pixmap_progress = pixmap_progress.scaled(widWidth, widHeight, Qt::KeepAspectRatioByExpanding);
+    pixmap_progress = pixmap_progress.scaled(widWidth, widHeight, Qt::IgnoreAspectRatio);
 
     QPainter paint(this);
     QRectF progress_position = QRectF(0, 0, widWidth * _progress / 100, widHeight);
@@ -35,10 +37,11 @@ void ProgressBar::paintEvent(QPaintEvent *pe)
 }
 
 
-void ProgressBar::setProgress(int progress) {
-    _progress= progress;
+void ProgressBar::setProgress(double progress) {
+    _progress = progress;
+    repaint();
 }
 
-int ProgressBar::getProgress() const {
+double ProgressBar::getProgress() const {
     return _progress;
 }

+ 3 - 3
src/Legacy/widgets/progressbar.h

@@ -15,14 +15,14 @@ public:
 
     void paintEvent(QPaintEvent *pe) override;
 
-    void setProgress(int progress);
+    void setProgress(double progress);
 
-    int getProgress() const;
+    double getProgress() const;
 
 signals:
 
 private:
-    int _progress;
+    double _progress;
 };
 
 #endif // PROGRESSBAR_H

+ 6 - 3
src/Legacy/widgets/statuswidget.cpp

@@ -20,6 +20,7 @@ StatusWidget::StatusWidget(QWidget *parent)
     ui->setupUi(this);
     last_statusbar_update_time_.start();
     ui->galadriel_tooltip_example->hide();
+    ui->c_progress_bar->setProgress(100);
 
     connect(ui->weekly_code_widget, &WeeklyCodeWidget::showCompletedTooltip, this, [this](){setToolTipMessage("Еженедельный код скопирован в буфер обмена.", E_INFO);});
     connect(ui->weekly_code_widget, &WeeklyCodeWidget::showHelpTooltip, this, [this](){setToolTipMessage("Нажмите по еженедельному коду, чтобы скопировать его.", E_INFO);});
@@ -284,13 +285,13 @@ void StatusWidget::onPatchDownloaderFinished() {
 }
 
 void StatusWidget::onPatchDownloaderProgressChanged(Downloader::Status status) {
+    double download_percent = status.total_bytes > 0 ? double(status.downloaded_bytes) * 100.0 / double(status.total_bytes) : 100;
+    ui->c_progress_bar->setProgress(download_percent);
     if (last_statusbar_update_time_.elapsed() > 450) {
-        double download_percent = double(status.downloaded_bytes) * 100.0 / double(status.total_bytes);
         QString text = "Загрузка данных: " + QString::number(download_percent, 'f', 1) + "% ("
                      + Downloader::getSizeFormatted(status.downloaded_bytes) + "/"
                      + Downloader::getSizeFormatted(status.total_bytes) + ")\n"
                      + "До конца загрузки: " + Downloader::getElapsedTimeFormatted(status.elapsed_time);
-
         setToolTipMessage(text, E_PROCESS);
         last_statusbar_update_time_.restart();
     }
@@ -311,6 +312,8 @@ void StatusWidget::onPatchInstallerFinished() {
 }
 
 void StatusWidget::onPatchInstallerProgressChanged(PatchInstaller::Status status) {
+    double install_percent = status.total_parts > 0 ? double(status.finished_parts) * 100.0 / double(status.total_parts) : 100;
+    ui->c_progress_bar->setProgress(install_percent);
     if (last_statusbar_update_time_.elapsed() > 450 || status.finished_parts == 0) {
         QString text = "Установка русификации: "
                      + QString::number(double(status.finished_parts) * 100.0 / double(status.total_parts), 'f', 1)
@@ -350,7 +353,7 @@ void StatusWidget::createTooltipMessageWidget(QString tooltip_id)
     tooltip_widgets_[tooltip_id]->setWordWrap(true);
     tooltip_widgets_[tooltip_id]->setOpenExternalLinks(true);
 
-    tooltip_widgets_[tooltip_id]->setAlignment(Qt::AlignCenter);
+    tooltip_widgets_[tooltip_id]->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
 
     tooltip_effects_[tooltip_id] = new QGraphicsOpacityEffect(tooltip_widgets_[tooltip_id]);
     tooltip_effects_[tooltip_id]->setOpacity(0);

+ 5 - 5
src/Legacy/widgets/statuswidget.ui

@@ -226,9 +226,9 @@ QPushButton#game_button:disabled {
    <property name="geometry">
     <rect>
      <x>290</x>
-     <y>425</y>
+     <y>390</y>
      <width>521</width>
-     <height>51</height>
+     <height>91</height>
     </rect>
    </property>
    <property name="font">
@@ -239,7 +239,7 @@ QPushButton#game_button:disabled {
     </font>
    </property>
    <property name="styleSheet">
-    <string notr="true"/>
+    <string notr="true">padding-bottom:2px</string>
    </property>
    <property name="text">
     <string>TEST TOOLTIP USED FOR STYLE DESC</string>
@@ -289,7 +289,7 @@ QPushButton#game_button:disabled {
      <x>310</x>
      <y>150</y>
      <width>471</width>
-     <height>251</height>
+     <height>221</height>
     </rect>
    </property>
    <property name="styleSheet">
@@ -312,9 +312,9 @@ QPushButton#game_button:disabled {
   <zorder>server_status_widget</zorder>
   <zorder>weekly_code_widget</zorder>
   <zorder>c_progress_bar</zorder>
-  <zorder>galadriel_tooltip_example</zorder>
   <zorder>a_game_parameters</zorder>
   <zorder>b_components_status</zorder>
+  <zorder>galadriel_tooltip_example</zorder>
  </widget>
  <customwidgets>
   <customwidget>

+ 9 - 0
src/Legacy/widgets/translationcomponents.ui

@@ -14,6 +14,9 @@
    <string>Form</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>0</number>
+   </property>
    <item>
     <widget class="QLabel" name="sub_entry_3_title">
      <property name="sizePolicy">
@@ -187,6 +190,12 @@
    </item>
    <item>
     <widget class="QWidget" name="c_video_block" native="true">
+     <property name="maximumSize">
+      <size>
+       <width>16777215</width>
+       <height>0</height>
+      </size>
+     </property>
      <layout class="QHBoxLayout" name="horizontalLayout_5">
       <property name="spacing">
        <number>3</number>