Explorar o código

Presumably fixed some runtime errors & redesigned most windows

Ivan Arkhipov %!s(int64=5) %!d(string=hai) anos
pai
achega
5786572ce7

+ 3 - 3
src/Legacy/Legacy.pro

@@ -22,8 +22,8 @@ SOURCES += \
     widgets/helpwidget.cpp \
     widgets/mainwindow.cpp \
     widgets/menuentry.cpp \
-    widgets/rusificationwidget.cpp \
     widgets/settingswidget.cpp \
+    widgets/aboutwidget.cpp \
     widgets/statuswidget.cpp \
     widgets/newslistwidget.cpp \
     widgets/newspiece.cpp \
@@ -40,8 +40,8 @@ HEADERS += \
     widgets/helpwidget.h \
     widgets/mainwindow.h \
     widgets/menuentry.h \
-    widgets/rusificationwidget.h \
     widgets/settingswidget.h \
+    widgets/aboutwidget.h \
     widgets/statuswidget.h \
     widgets/newslistwidget.h \
     widgets/newspiece.h \
@@ -54,8 +54,8 @@ HEADERS += \
 FORMS += \
     widgets/helpwidget.ui \
     widgets/mainwindow.ui \
-    widgets/rusificationwidget.ui \
     widgets/settingswidget.ui \
+    widgets/aboutwidget.ui \
     widgets/statuswidget.ui \
     widgets/newspiece.ui \
     widgets/serverstatuswidget.ui \

+ 5 - 0
src/Legacy/models/downloader.cpp

@@ -37,6 +37,11 @@ void Downloader::waitForDownloaded()
     loop.exec();
 }
 
+bool Downloader::isStarted()
+{
+    return busy;
+}
+
 double Downloader::getPercent()
 {
     return double(std::ceil(((double)bytes_downloaded/ bytes_total) * 100 * 10)) / 10.0;

+ 1 - 0
src/Legacy/models/downloader.h

@@ -25,6 +25,7 @@ public:
     void setUrl(const QUrl& _url);
     void waitForDownloaded();
 
+    bool isStarted();
     double getPercent();
     quint64 getBytesTotal();
     quint64 getBytesDownloaded();

+ 9 - 2
src/Legacy/models/patchdownloader.cpp

@@ -87,7 +87,8 @@ void PatchDownloader::checkForUpdates()
         return;
     }
     removeOldPatchesFromDirecrory();
-    addMissingPatchesToDownloadList();
+    DownloadMissingPatches();
+    qDebug() << "Finished checking for updates!";
     emit checkForUpdatesFinished();
 }
 
@@ -206,7 +207,7 @@ bool PatchDownloader::removeOldPatchesFromDirecrory()
     return true;
 }
 
-bool PatchDownloader::addMissingPatchesToDownloadList()
+bool PatchDownloader::DownloadMissingPatches()
 {
     QDir dir(patch_download_dir);
     if (!dir.exists())
@@ -246,5 +247,11 @@ bool PatchDownloader::addMissingPatchesToDownloadList()
         downloads_list[patch.name]->start();
         active_downloads_number++;
     }
+
+    foreach (Patch patch, patch_data) {
+        downloads_list[patch.name]->waitForDownloaded();
+    }
+
+    qDebug() << "Finished downloading patches!";
     return true;
 }

+ 1 - 1
src/Legacy/models/patchdownloader.h

@@ -55,7 +55,7 @@ private:
     int versionFromPatchFilename(QString filename);
     bool updatePatchList();
     bool removeOldPatchesFromDirecrory();
-    bool addMissingPatchesToDownloadList();
+    bool DownloadMissingPatches();
 
 private:
 

+ 2 - 2
src/Legacy/object_script.Legacy.Debug

@@ -9,8 +9,8 @@ INPUT(
 ./..\..\build\debug\Legacy\obj\helpwidget.o
 ./..\..\build\debug\Legacy\obj\mainwindow.o
 ./..\..\build\debug\Legacy\obj\menuentry.o
-./..\..\build\debug\Legacy\obj\rusificationwidget.o
 ./..\..\build\debug\Legacy\obj\settingswidget.o
+./..\..\build\debug\Legacy\obj\aboutwidget.o
 ./..\..\build\debug\Legacy\obj\statuswidget.o
 ./..\..\build\debug\Legacy\obj\newslistwidget.o
 ./..\..\build\debug\Legacy\obj\newspiece.o
@@ -26,8 +26,8 @@ INPUT(
 ./..\..\build\debug\Legacy\obj\moc_helpwidget.o
 ./..\..\build\debug\Legacy\obj\moc_mainwindow.o
 ./..\..\build\debug\Legacy\obj\moc_menuentry.o
-./..\..\build\debug\Legacy\obj\moc_rusificationwidget.o
 ./..\..\build\debug\Legacy\obj\moc_settingswidget.o
+./..\..\build\debug\Legacy\obj\moc_aboutwidget.o
 ./..\..\build\debug\Legacy\obj\moc_statuswidget.o
 ./..\..\build\debug\Legacy\obj\moc_newslistwidget.o
 ./..\..\build\debug\Legacy\obj\moc_newspiece.o

+ 2 - 2
src/Legacy/object_script.Legacy.Release

@@ -7,8 +7,8 @@ INPUT(
 ./..\..\build\release\Legacy\obj\helpwidget.o
 ./..\..\build\release\Legacy\obj\mainwindow.o
 ./..\..\build\release\Legacy\obj\menuentry.o
-./..\..\build\release\Legacy\obj\rusificationwidget.o
 ./..\..\build\release\Legacy\obj\settingswidget.o
+./..\..\build\release\Legacy\obj\aboutwidget.o
 ./..\..\build\release\Legacy\obj\statuswidget.o
 ./..\..\build\release\Legacy\obj\newslistwidget.o
 ./..\..\build\release\Legacy\obj\newspiece.o
@@ -24,8 +24,8 @@ INPUT(
 ./..\..\build\release\Legacy\obj\moc_helpwidget.o
 ./..\..\build\release\Legacy\obj\moc_mainwindow.o
 ./..\..\build\release\Legacy\obj\moc_menuentry.o
-./..\..\build\release\Legacy\obj\moc_rusificationwidget.o
 ./..\..\build\release\Legacy\obj\moc_settingswidget.o
+./..\..\build\release\Legacy\obj\moc_aboutwidget.o
 ./..\..\build\release\Legacy\obj\moc_statuswidget.o
 ./..\..\build\release\Legacy\obj\moc_newslistwidget.o
 ./..\..\build\release\Legacy\obj\moc_newspiece.o

+ 21 - 0
src/Legacy/widgets/aboutwidget.cpp

@@ -0,0 +1,21 @@
+#include "widgets/AboutWidget.h"
+#include "ui_AboutWidget.h"
+#include "models/filesystem.h"
+#include "models/lotrodatmanager.h"
+#include "widgets/mainwindow.h"
+
+#include <QDebug>
+#include <QFileDialog>
+#include <QMessageBox>
+
+AboutWidget::AboutWidget(QSettings* settings, PatchDownloader* patch_downloader, LotroDatManager* lotro_dat_manager, QWidget *parent) :
+    QWidget(parent), app_settings(settings), lotro_manager(lotro_dat_manager),
+    ui(new Ui::AboutWidget)
+{
+    ui->setupUi(this);
+}
+
+AboutWidget::~AboutWidget()
+{
+    delete ui;
+}

+ 31 - 0
src/Legacy/widgets/aboutwidget.h

@@ -0,0 +1,31 @@
+#ifndef AboutWidget_H
+#define AboutWidget_H
+
+#include <QWidget>
+#include <QTimer>
+#include <QSettings>
+
+namespace Ui {
+class AboutWidget;
+}
+
+class PatchDownloader;
+class LotroDatManager;
+
+class AboutWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+    explicit AboutWidget(QSettings* settings, PatchDownloader* patch_downloader, LotroDatManager* lotro_dat_manager, QWidget *parent = 0);
+    ~AboutWidget();
+
+private:
+    QSettings* app_settings;
+    PatchDownloader* patch_updater;
+    LotroDatManager* lotro_manager;
+
+    Ui::AboutWidget *ui;
+};
+
+#endif // AboutWidget_H

+ 42 - 0
src/Legacy/widgets/aboutwidget.ui

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AboutWidget</class>
+ <widget class="QWidget" name="AboutWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>709</width>
+    <height>540</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true">color: white;</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>20</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <property name="horizontalSpacing">
+    <number>0</number>
+   </property>
+   <property name="verticalSpacing">
+    <number>10</number>
+   </property>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 112 - 2
src/Legacy/widgets/helpwidget.cpp

@@ -1,14 +1,124 @@
-#include "widgets\helpwidget.h"
-#include "ui_helpwidget.h"
+#include "widgets/HelpWidget.h"
+#include "ui_HelpWidget.h"
+#include <QDebug>
+#include <QScrollBar>
 
 HelpWidget::HelpWidget(QSettings* settings, PatchDownloader* patch_downloader, LotroDatManager* lotro_dat_manager, QWidget *parent) :
     QWidget(parent),
     ui(new Ui::HelpWidget)
 {
     ui->setupUi(this);
+    currently_active_entry = ui->menuentry_1;
+
+//    moveMenuHoverWidget(ui->menuentry_1);
+    qDebug() << ui->hover_button_widget->geometry();
+    connect(ui->content_scroll_area->verticalScrollBar(), &QScrollBar::valueChanged, this, &HelpWidget::handleContentScrolling);
 }
 
 HelpWidget::~HelpWidget()
 {
     delete ui;
 }
+
+void HelpWidget::handleContentScrolling(int value)
+{
+    if (scrollAreaContentsAnimation && scrollAreaContentsAnimation->state() == QAbstractAnimation::Running)
+        return;
+
+    qDebug() << "VALUE CHANGED: " << value << ui->content_scroll_area->verticalScrollBar()->maximum();
+    QPushButton* new_active_entry = ui->menuentry_2;
+    if (value >= ui->sub_entry_1->y() + ui->sub_entry_1->height() * 2 / 3)
+        new_active_entry = ui->menuentry_2;
+    if (value >= ui->sub_entry_2->y() + ui->sub_entry_2->height() * 2 / 3)
+        new_active_entry = ui->menuentry_3;
+    if (value >= ui->sub_entry_3->y() + ui->sub_entry_3->height() * 2 / 3)
+        new_active_entry = ui->menuentry_4;
+    if (value >= ui->sub_entry_4->y() + ui->sub_entry_4->height() * 2 / 3 || value == ui->content_scroll_area->verticalScrollBar()->maximum())
+        new_active_entry = ui->menuentry_5;
+    if (value == 0)
+        new_active_entry = ui->menuentry_1;
+
+    moveMenuHoverWidget(new_active_entry);
+}
+
+void HelpWidget::moveMenuHoverWidget(QPushButton *target)
+{
+    if (ui->hover_button_widget->size() == QSize(0, 0)) {
+        ui->hover_button_widget->resize(target->size() + QSize(10, 0));
+        ui->hover_button_widget->move(ui->checkpoints_list->pos() + target->pos() + QPoint(-5, 0));
+    } else {
+        if (menuHoverWidgetAnimation == nullptr)
+            menuHoverWidgetAnimation = new QPropertyAnimation(ui->hover_button_widget, "geometry");
+        else
+            menuHoverWidgetAnimation->stop();
+
+        menuHoverWidgetAnimation->setDuration(200);
+        menuHoverWidgetAnimation->setStartValue(QRect(ui->hover_button_widget->pos(), ui->hover_button_widget->size()));
+        menuHoverWidgetAnimation->setEndValue(QRect(ui->checkpoints_list->pos() + target->pos() + QPoint(-5, 0), target->size() + QSize(10, 0)));
+        menuHoverWidgetAnimation->start();
+    }
+
+    ui->menuentry_1->raise();
+    ui->menuentry_2->raise();
+    ui->menuentry_3->raise();
+    ui->menuentry_4->raise();
+}
+
+void HelpWidget::scrollContentToWidget(QWidget *widget)
+{
+    if (scrollAreaContentsAnimation == nullptr)
+        scrollAreaContentsAnimation = new QPropertyAnimation(ui->content_scroll_area->verticalScrollBar(), "value");
+    else
+        scrollAreaContentsAnimation->stop();
+
+    scrollAreaContentsAnimation->setDuration(200);
+    scrollAreaContentsAnimation->setStartValue(ui->content_scroll_area->verticalScrollBar()->value());
+    scrollAreaContentsAnimation->setEndValue(widget->y());
+    scrollAreaContentsAnimation->start();
+}
+
+
+void HelpWidget::on_menuentry_1_clicked()
+{
+    if (currently_active_entry != ui->menuentry_1) {
+        currently_active_entry = ui->menuentry_1;
+        moveMenuHoverWidget(ui->menuentry_1);
+    }
+    scrollContentToWidget(ui->sub_entry_1);
+}
+
+void HelpWidget::on_menuentry_2_clicked()
+{
+    if (currently_active_entry != ui->menuentry_2) {
+        currently_active_entry = ui->menuentry_2;
+        moveMenuHoverWidget(ui->menuentry_2);
+    }
+    scrollContentToWidget(ui->sub_entry_2);
+}
+
+void HelpWidget::on_menuentry_3_clicked()
+{
+    if (currently_active_entry != ui->menuentry_3) {
+        currently_active_entry = ui->menuentry_3;
+        moveMenuHoverWidget(ui->menuentry_3);
+    }
+    scrollContentToWidget(ui->sub_entry_3);
+}
+
+void HelpWidget::on_menuentry_4_clicked()
+{
+    if (currently_active_entry != ui->menuentry_4) {
+        currently_active_entry = ui->menuentry_4;
+        moveMenuHoverWidget(ui->menuentry_4);
+    }
+    scrollContentToWidget(ui->sub_entry_4);
+}
+
+void HelpWidget::on_menuentry_5_clicked()
+{
+    if (currently_active_entry != ui->menuentry_5) {
+        currently_active_entry = ui->menuentry_5;
+        moveMenuHoverWidget(ui->menuentry_5);
+    }
+    scrollContentToWidget(ui->sub_entry_5);
+}

+ 32 - 6
src/Legacy/widgets/helpwidget.h

@@ -1,30 +1,56 @@
-#ifndef HELPWIDGET_H
-#define HELPWIDGET_H
+#ifndef HelpWidget_H
+#define HelpWidget_H
 
 #include <QWidget>
+#include <QTimer>
 #include <QSettings>
-
-class PatchDownloader;
-class LotroDatManager;
+#include <QPropertyAnimation>
+#include <QPushButton>
 
 namespace Ui {
 class HelpWidget;
 }
 
+class PatchDownloader;
+class LotroDatManager;
+
 class HelpWidget : public QWidget
 {
     Q_OBJECT
 
 public:
     explicit HelpWidget(QSettings* settings, PatchDownloader* patch_downloader, LotroDatManager* lotro_dat_manager, QWidget *parent = 0);
+
     ~HelpWidget();
 
+
+private slots:
+    void handleContentScrolling(int value);
+
+    void moveMenuHoverWidget(QPushButton* target);
+
+    void scrollContentToWidget(QWidget* widget);
+
+    void on_menuentry_1_clicked();
+
+    void on_menuentry_2_clicked();
+
+    void on_menuentry_3_clicked();
+
+    void on_menuentry_4_clicked();
+
+    void on_menuentry_5_clicked();
+
 private:
     QSettings* app_settings;
     PatchDownloader* patch_updater;
     LotroDatManager* lotro_manager;
 
+    QPushButton* currently_active_entry = nullptr;
+    QPropertyAnimation* menuHoverWidgetAnimation = nullptr;
+    QPropertyAnimation* scrollAreaContentsAnimation = nullptr;
+
     Ui::HelpWidget *ui;
 };
 
-#endif // HELPWIDGET_H
+#endif // HelpWidget_H

+ 604 - 81
src/Legacy/widgets/helpwidget.ui

@@ -6,43 +6,457 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>640</width>
-    <height>480</height>
+    <width>1000</width>
+    <height>538</height>
    </rect>
   </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
-  <layout class="QGridLayout" name="gridLayout">
-   <item row="0" column="0">
-    <widget class="QScrollArea" name="scrollArea">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="autoFillBackground">
-      <bool>false</bool>
-     </property>
-     <property name="styleSheet">
-      <string notr="true">QScrollArea{
-	background: transparent;
-}
-
-QScrollArea &gt; QWidget &gt; QWidget { background: transparent; }
+  <property name="styleSheet">
+   <string notr="true">QLabel, QRadioButton, QCheckBox {
+	color: white;
+}</string>
+  </property>
+  <widget class="QLabel" name="order_label">
+   <property name="geometry">
+    <rect>
+     <x>45</x>
+     <y>33</y>
+     <width>180</width>
+     <height>21</height>
+    </rect>
+   </property>
+   <property name="font">
+    <font>
+     <family>Trajan Pro 3</family>
+     <pointsize>9</pointsize>
+     <kerning>false</kerning>
+    </font>
+   </property>
+   <property name="text">
+    <string>РАЗДЕЛЫ ПОМОЩИ</string>
+   </property>
+  </widget>
+  <widget class="QWidget" name="checkpoints_list" native="true">
+   <property name="geometry">
+    <rect>
+     <x>25</x>
+     <y>70</y>
+     <width>271</width>
+     <height>440</height>
+    </rect>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout">
+    <property name="spacing">
+     <number>7</number>
+    </property>
+    <item>
+     <widget class="QPushButton" name="menuentry_1">
+      <property name="font">
+       <font>
+        <family>Trajan Pro 3</family>
+        <pointsize>9</pointsize>
+       </font>
+      </property>
+      <property name="cursor">
+       <cursorShape>PointingHandCursor</cursorShape>
+      </property>
+      <property name="styleSheet">
+       <string notr="true">QPushButton {
+	color: white; 
+	text-align: left;
+	background-color: transparent;
+	alternate-background-color: transparent;
+	border-radius: 5px;
+	margin: 7px;
+}
+
+QPushButton:pressed {
+	color: white; 
+	text-align: left;
+	background-color: transparent;
+	alternate-background-color: transparent;}
+
+QPushButton:flat {
+    border: none; /* no border for a flat push button */
+}
+
+QPushButton:default {
+	background-color: transparent;
+}</string>
+      </property>
+      <property name="text">
+       <string>♦ Установка русификации</string>
+      </property>
+      <property name="flat">
+       <bool>true</bool>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QPushButton" name="menuentry_2">
+      <property name="font">
+       <font>
+        <family>Trajan Pro 3</family>
+        <pointsize>9</pointsize>
+       </font>
+      </property>
+      <property name="cursor">
+       <cursorShape>PointingHandCursor</cursorShape>
+      </property>
+      <property name="styleSheet">
+       <string notr="true">QPushButton {
+	color: white; 
+	text-align: left;
+	background-color: transparent;
+	alternate-background-color: transparent;
+	border-radius: 5px;
+	margin: 7px;
+}
+
+QPushButton:pressed {
+	color: white; 
+	text-align: left;
+	background-color: transparent;
+	alternate-background-color: transparent;}
+
+QPushButton:flat {
+    border: none; /* no border for a flat push button */
+}
+
+QPushButton:default {
+	background-color: transparent;
+}</string>
+      </property>
+      <property name="text">
+       <string>♦ Обновление игры</string>
+      </property>
+      <property name="flat">
+       <bool>true</bool>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QPushButton" name="menuentry_3">
+      <property name="font">
+       <font>
+        <family>Trajan Pro 3</family>
+        <pointsize>9</pointsize>
+       </font>
+      </property>
+      <property name="cursor">
+       <cursorShape>PointingHandCursor</cursorShape>
+      </property>
+      <property name="styleSheet">
+       <string notr="true">QPushButton {
+	color: white; 
+	text-align: left;
+	background-color: transparent;
+	alternate-background-color: transparent;
+	border-radius: 5px;
+	margin: 7px;
+}
+
+QPushButton:pressed {
+	color: white; 
+	text-align: left;
+	background-color: transparent;
+	alternate-background-color: transparent;}
+
+QPushButton:flat {
+    border: none; /* no border for a flat push button */
+}
+
+QPushButton:default {
+	background-color: transparent;
+}</string>
+      </property>
+      <property name="text">
+       <string>♦ Исправление ошибок</string>
+      </property>
+      <property name="flat">
+       <bool>true</bool>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QPushButton" name="menuentry_4">
+      <property name="font">
+       <font>
+        <family>Trajan Pro 3</family>
+        <pointsize>9</pointsize>
+       </font>
+      </property>
+      <property name="cursor">
+       <cursorShape>PointingHandCursor</cursorShape>
+      </property>
+      <property name="styleSheet">
+       <string notr="true">QPushButton {
+	color: white; 
+	text-align: left;
+	background-color: transparent;
+	alternate-background-color: transparent;
+	border-radius: 5px;
+	margin: 7px;
+}
+
+QPushButton:pressed {
+	color: white; 
+	text-align: left;
+	background-color: transparent;
+	alternate-background-color: transparent;}
+
+QPushButton:flat {
+    border: none; /* no border for a flat push button */
+}
+
+QPushButton:default {
+	background-color: transparent;
+}</string>
+      </property>
+      <property name="text">
+       <string>♦ Использование плагинов</string>
+      </property>
+      <property name="flat">
+       <bool>true</bool>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <widget class="QPushButton" name="menuentry_5">
+      <property name="font">
+       <font>
+        <family>Trajan Pro 3</family>
+        <pointsize>9</pointsize>
+       </font>
+      </property>
+      <property name="cursor">
+       <cursorShape>PointingHandCursor</cursorShape>
+      </property>
+      <property name="styleSheet">
+       <string notr="true">QPushButton {
+	color: white; 
+	text-align: left;
+	background-color: transparent;
+	alternate-background-color: transparent;
+	border-radius: 5px;
+	margin: 7px;
+}
+
+QPushButton:pressed {
+	color: white; 
+	text-align: left;
+	background-color: transparent;
+	alternate-background-color: transparent;}
+
+QPushButton:flat {
+    border: none; /* no border for a flat push button */
+}
+
+QPushButton:default {
+	background-color: transparent;
+}</string>
+      </property>
+      <property name="text">
+       <string>♦ Обратиться за помощью</string>
+      </property>
+      <property name="flat">
+       <bool>true</bool>
+      </property>
+     </widget>
+    </item>
+    <item>
+     <spacer name="verticalSpacer">
+      <property name="orientation">
+       <enum>Qt::Vertical</enum>
+      </property>
+      <property name="sizeHint" stdset="0">
+       <size>
+        <width>20</width>
+        <height>40</height>
+       </size>
+      </property>
+     </spacer>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QProgressBar" name="progressBar">
+   <property name="geometry">
+    <rect>
+     <x>310</x>
+     <y>480</y>
+     <width>501</width>
+     <height>40</height>
+    </rect>
+   </property>
+   <property name="minimumSize">
+    <size>
+     <width>0</width>
+     <height>40</height>
+    </size>
+   </property>
+   <property name="maximumSize">
+    <size>
+     <width>16777215</width>
+     <height>40</height>
+    </size>
+   </property>
+   <property name="styleSheet">
+    <string notr="true">QProgressBar {
+    border: 0px solid grey;
+	border-image: url(:/per.png);
+}
+
+QProgressBar::chunk {
+background-image: url(:/letters.png);
+margin-left:8px;
+margin-right:8px;
+margin-top:7px;
+margin-bottom:7px;
+}
+</string>
+   </property>
+   <property name="maximum">
+    <number>100</number>
+   </property>
+   <property name="value">
+    <number>72</number>
+   </property>
+   <property name="textVisible">
+    <bool>false</bool>
+   </property>
+  </widget>
+  <widget class="QLabel" name="progress_label">
+   <property name="geometry">
+    <rect>
+     <x>310</x>
+     <y>450</y>
+     <width>501</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="font">
+    <font>
+     <family>Trajan Pro 3</family>
+     <pointsize>8</pointsize>
+     <weight>50</weight>
+     <bold>false</bold>
+    </font>
+   </property>
+   <property name="text">
+    <string>Русификация... 72.6%</string>
+   </property>
+   <property name="alignment">
+    <set>Qt::AlignCenter</set>
+   </property>
+   <property name="wordWrap">
+    <bool>true</bool>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="game_button">
+   <property name="geometry">
+    <rect>
+     <x>830</x>
+     <y>460</y>
+     <width>150</width>
+     <height>60</height>
+    </rect>
+   </property>
+   <property name="sizePolicy">
+    <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+     <horstretch>0</horstretch>
+     <verstretch>0</verstretch>
+    </sizepolicy>
+   </property>
+   <property name="font">
+    <font>
+     <family>Trajan Pro 3</family>
+     <pointsize>11</pointsize>
+     <weight>50</weight>
+     <bold>false</bold>
+     <kerning>false</kerning>
+    </font>
+   </property>
+   <property name="autoFillBackground">
+    <bool>false</bool>
+   </property>
+   <property name="styleSheet">
+    <string notr="true">QPushButton#game_button { 
+	color: white;
+	border-image: url(:/buttons/button_big_normal.png);
+}
+
+QPushButton#game_button:hover {
+	color: white;
+	border-image: url(:/buttons/button_big_over.png);
+}
+
+QPushButton#game_button:pressed {
+	color: white;
+	border-image: url(:/buttons/button_big_pressed.png);
+}
+
+</string>
+   </property>
+   <property name="text">
+    <string notr="true">    ИГРАТЬ    </string>
+   </property>
+   <property name="iconSize">
+    <size>
+     <width>0</width>
+     <height>0</height>
+    </size>
+   </property>
+   <property name="default">
+    <bool>false</bool>
+   </property>
+   <property name="flat">
+    <bool>true</bool>
+   </property>
+  </widget>
+  <widget class="QScrollArea" name="content_scroll_area">
+   <property name="geometry">
+    <rect>
+     <x>330</x>
+     <y>10</y>
+     <width>651</width>
+     <height>441</height>
+    </rect>
+   </property>
+   <property name="styleSheet">
+    <string notr="true">QScrollArea {
+	background-color: rgba(31, 19, 7, 155);
+	border-radius: 5px;
+	border: 1px solid rgba(149, 149, 149, 155);
+    background-attachment: fixed;
+}
 
 QScrollBar:vertical {
      border: 0px solid grey;
      background: transparent;
-     width: 10px;
-     margin: 22px 0 22px 0;
+     width: 0px;
+     margin: 10px 5px 10px 0px;
  }
 
  QScrollBar::handle:vertical {
-	background-color: rgba(129, 129, 129, 150);	
-    min-height: 10px;
+	min-height: 10px;
+	background-color:rgba(0,0,0,80);
 	border-radius: 5px;
+	border: 1px solid #6d6867;
+
  }
  QScrollBar::add-line:vertical {
      border: 0px solid grey;
@@ -61,69 +475,178 @@ QScrollBar:vertical {
  }
  QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {
      border: 0px;
-     width: 3px;
-     height: 3px;
+     width: 0px;
+     height: 0px;
      background: transparent;
  }
 
  QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
      background: none;
+	 height: 0px;
  }</string>
-     </property>
-     <property name="frameShape">
-      <enum>QFrame::NoFrame</enum>
-     </property>
-     <property name="frameShadow">
-      <enum>QFrame::Plain</enum>
-     </property>
-     <property name="lineWidth">
-      <number>0</number>
-     </property>
-     <property name="horizontalScrollBarPolicy">
-      <enum>Qt::ScrollBarAlwaysOff</enum>
-     </property>
-     <property name="sizeAdjustPolicy">
-      <enum>QAbstractScrollArea::AdjustIgnored</enum>
-     </property>
-     <property name="widgetResizable">
-      <bool>true</bool>
-     </property>
-     <property name="alignment">
-      <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
-     </property>
-     <widget class="QWidget" name="scrollAreaWidgetContents">
-      <property name="geometry">
-       <rect>
-        <x>0</x>
-        <y>0</y>
-        <width>618</width>
-        <height>458</height>
-       </rect>
-      </property>
-      <property name="autoFillBackground">
-       <bool>false</bool>
-      </property>
-      <layout class="QGridLayout" name="news_layout">
-       <property name="leftMargin">
-        <number>11</number>
-       </property>
-       <property name="topMargin">
-        <number>11</number>
-       </property>
-       <property name="rightMargin">
-        <number>11</number>
-       </property>
-       <property name="bottomMargin">
-        <number>11</number>
-       </property>
-       <property name="spacing">
-        <number>7</number>
-       </property>
-      </layout>
-     </widget>
-    </widget>
-   </item>
-  </layout>
+   </property>
+   <property name="widgetResizable">
+    <bool>true</bool>
+   </property>
+   <widget class="QWidget" name="content_widget">
+    <property name="geometry">
+     <rect>
+      <x>0</x>
+      <y>0</y>
+      <width>649</width>
+      <height>1150</height>
+     </rect>
+    </property>
+    <property name="sizePolicy">
+     <sizepolicy hsizetype="Ignored" vsizetype="Ignored">
+      <horstretch>0</horstretch>
+      <verstretch>0</verstretch>
+     </sizepolicy>
+    </property>
+    <property name="styleSheet">
+     <string notr="true">
+background: transparent;
+border: 0px;
+border-radius: 0px;
+</string>
+    </property>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <item>
+      <widget class="QWidget" name="sub_entry_1" native="true">
+       <layout class="QGridLayout" name="gridLayout">
+        <item row="0" column="0">
+         <widget class="QLabel" name="label_6">
+          <property name="font">
+           <font>
+            <family>Trajan Pro 3</family>
+            <pointsize>9</pointsize>
+           </font>
+          </property>
+          <property name="text">
+           <string>SUB_ENTRY_1 Товарищи! реализация намеченных плановых заданий позволяет выполнять важные задания по разработке системы обучения кадров, соответствует насущным потребностям. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения дальнейших направлений развития. Значимость этих проблем настолько очевидна, что сложившаяся структура организации способствует подготовки и реализации соответствующий условий активизации.</string>
+          </property>
+          <property name="wordWrap">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item>
+      <widget class="QWidget" name="sub_entry_2" native="true">
+       <layout class="QGridLayout" name="gridLayout_5">
+        <item row="0" column="0">
+         <widget class="QLabel" name="label_7">
+          <property name="font">
+           <font>
+            <family>Trajan Pro 3</family>
+            <pointsize>9</pointsize>
+           </font>
+          </property>
+          <property name="text">
+           <string>SUB_ENTRY_2 Товарищи! реализация намеченных плановых заданий позволяет выполнять важные задания по разработке системы обучения кадров, соответствует насущным потребностям. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения дальнейших направлений развития. Значимость этих проблем настолько очевидна, что сложившаяся структура организации способствует подготовки и реализации соответствующий условий активизации.</string>
+          </property>
+          <property name="wordWrap">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item>
+      <widget class="QWidget" name="sub_entry_3" native="true">
+       <layout class="QGridLayout" name="gridLayout_2">
+        <item row="0" column="0">
+         <widget class="QLabel" name="label_8">
+          <property name="font">
+           <font>
+            <family>Trajan Pro 3</family>
+            <pointsize>9</pointsize>
+           </font>
+          </property>
+          <property name="text">
+           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SUB_ENTRY_3 Товарищи! реализация намеченных плановых заданий позволяет выполнять важные задания по разработке системы обучения кадров, соответствует насущным потребностям. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения дальнейших направлений развития. Значимость этих проблем настолько очевидна, что сложившаяся структура организации способствует подготовки и реализации соответствующий условий активизации.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+          </property>
+          <property name="wordWrap">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item>
+      <widget class="QWidget" name="sub_entry_4" native="true">
+       <layout class="QGridLayout" name="gridLayout_4">
+        <item row="0" column="0">
+         <widget class="QLabel" name="label_9">
+          <property name="font">
+           <font>
+            <family>Trajan Pro 3</family>
+            <pointsize>9</pointsize>
+           </font>
+          </property>
+          <property name="text">
+           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SUB_ENTRY_4 Товарищи! реализация намеченных плановых заданий позволяет выполнять важные задания по разработке системы обучения кадров, соответствует насущным потребностям. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения дальнейших направлений развития. Значимость этих проблем настолько очевидна, что сложившаяся структура организации способствует подготовки и реализации соответствующий условий активизации.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+          </property>
+          <property name="wordWrap">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item>
+      <widget class="QWidget" name="sub_entry_5" native="true">
+       <layout class="QGridLayout" name="gridLayout_3">
+        <item row="0" column="0">
+         <widget class="QLabel" name="label_10">
+          <property name="font">
+           <font>
+            <family>Trajan Pro 3</family>
+            <pointsize>9</pointsize>
+           </font>
+          </property>
+          <property name="text">
+           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SUB_ENTRY_5 Товарищи! реализация намеченных плановых заданий позволяет выполнять важные задания по разработке системы обучения кадров, соответствует насущным потребностям. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения дальнейших направлений развития. Значимость этих проблем настолько очевидна, что сложившаяся структура организации способствует подготовки и реализации соответствующий условий активизации.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+          </property>
+          <property name="wordWrap">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+    </layout>
+   </widget>
+  </widget>
+  <widget class="QWidget" name="hover_button_widget" native="true">
+   <property name="geometry">
+    <rect>
+     <x>31</x>
+     <y>81</y>
+     <width>260</width>
+     <height>36</height>
+    </rect>
+   </property>
+   <property name="styleSheet">
+    <string notr="true">color: white;
+border-radius: 15px;
+border: 1px solid qlineargradient(spread:reflect, x1:1, y1:1, x2:0.502174, y2:1, stop:0 rgb(149, 149, 149), stop:0.60199 rgb(185, 185, 185));
+background-color: rgba(54, 47, 45, 155)</string>
+   </property>
+  </widget>
+  <zorder>hover_button_widget</zorder>
+  <zorder>order_label</zorder>
+  <zorder>checkpoints_list</zorder>
+  <zorder>progressBar</zorder>
+  <zorder>progress_label</zorder>
+  <zorder>game_button</zorder>
+  <zorder>content_scroll_area</zorder>
  </widget>
  <resources/>
  <connections/>

+ 9 - 11
src/Legacy/widgets/mainwindow.cpp

@@ -19,6 +19,7 @@
 #include <QGraphicsBlurEffect>
 #include <QFont>
 #include <QFontDatabase>
+#include <QNetworkAccessManager>
 
 MainWindow::MainWindow(QWidget *parent) :
     QMainWindow(parent, Qt::Window | Qt::FramelessWindowHint),
@@ -47,13 +48,11 @@ MainWindow::MainWindow(QWidget *parent) :
     QMetaObject::invokeMethod(lotro_manager, "InitialiseManager", Qt::QueuedConnection);
     qDebug() << "Starting check for patch updates...";
     QMetaObject::invokeMethod(patch_updater, "checkForUpdates", Qt::QueuedConnection);
-    qDebug() << "Starting installation for patch updates...";
-    QMetaObject::invokeMethod(lotro_manager, "installUpdates", Qt::QueuedConnection);
 
     status_widget = new StatusWidget(settings, patch_updater, lotro_manager, this);    
-    rusification_widget = new RusificationWidget(settings, patch_updater, lotro_manager, this);
     settings_widget = new SettingsWidget(settings, patch_updater, lotro_manager, this);
     help_widget = new HelpWidget(settings, patch_updater, lotro_manager, this);
+    about_widget = new AboutWidget(settings, patch_updater, lotro_manager, this);
 
     choose_locale_dialog = new ChooseVersionDialog(settings, patch_updater, lotro_manager, this);
     choose_locale_dialog->resize(size());
@@ -61,9 +60,9 @@ MainWindow::MainWindow(QWidget *parent) :
     connect(choose_locale_dialog, &ChooseVersionDialog::cancelled, this, &MainWindow::hideChooseVersionDialog);
 
     ui->content_layout->addWidget(status_widget);
-    ui->content_layout->addWidget(rusification_widget);
     ui->content_layout->addWidget(settings_widget);
     ui->content_layout->addWidget(help_widget);
+    ui->content_layout->addWidget(about_widget);
 
     ui->centralWidget->setStyleSheet("");
 
@@ -83,7 +82,6 @@ MainWindow::MainWindow(QWidget *parent) :
     background_update_timer.setInterval(30 * 1000);
     connect(&background_update_timer, &QTimer::timeout, this, &MainWindow::randomChangeBackground);
     background_update_timer.start();
-    randomChangeBackground();
 
     qDebug() << "Initialising main window connections";
     makeConnections();
@@ -176,8 +174,8 @@ void MainWindow::randomChangeBackground()
     current_bg_id = next_pixmap_id;
 
     QtConcurrent::run([cur_bg, new_bg, this](){
-        const int iterations_num = 100;
-        const int iteration_sleep = 17;
+        const int iterations_num = 50;
+        const int iteration_sleep = 40;
         const int starting_opacity_percent = 0;
 
         for (int i = 0; i < iterations_num - starting_opacity_percent && qApp; i++) {
@@ -213,21 +211,21 @@ void MainWindow::on_menuentry_2_clicked()
 {
     currently_active_entry = ui->menuentry_2;
     hideAllContentWidgets();
-    rusification_widget->show();
+    settings_widget->show();
 }
 
 void MainWindow::on_menuentry_3_clicked()
 {
     currently_active_entry = ui->menuentry_3;
     hideAllContentWidgets();
-    settings_widget->show();
+    help_widget->show();
 }
 
 void MainWindow::on_menuentry_4_clicked()
 {
     currently_active_entry = ui->menuentry_4;
     hideAllContentWidgets();
-    help_widget->show();
+    about_widget->show();
 }
 
 void MainWindow::onHoverMenuentry(MenuEntry *hovered_entry)
@@ -310,9 +308,9 @@ void MainWindow::checkMenuIsHovered()
 void MainWindow::hideAllContentWidgets()
 {
     status_widget->hide();
-    rusification_widget->hide();
     settings_widget->hide();
     help_widget->hide();
+    about_widget->hide();
 }
 
 

+ 3 - 2
src/Legacy/widgets/mainwindow.h

@@ -10,8 +10,8 @@
 #include <QFont>
 
 #include "statuswidget.h"
-#include "rusificationwidget.h"
 #include "settingswidget.h"
+#include "aboutwidget.h"
 #include "helpwidget.h"
 #include "chooseversiondialog.h"
 
@@ -87,9 +87,10 @@ private:
     Ui::MainWindow *ui;
 
     StatusWidget *status_widget;
-    RusificationWidget *rusification_widget;
     SettingsWidget *settings_widget;
     HelpWidget *help_widget;
+    AboutWidget *about_widget;
+
     ChooseVersionDialog *choose_locale_dialog;
 
     QWidget* menuHoverWidget;

+ 1 - 1
src/Legacy/widgets/mainwindow.ui

@@ -201,7 +201,7 @@
         <string notr="true">color: rgb(255, 255, 255);</string>
        </property>
        <property name="text">
-        <string>  русификация  </string>
+        <string>  настройки  </string>
        </property>
        <property name="scaledContents">
         <bool>true</bool>

+ 6 - 1
src/Legacy/widgets/newslistwidget.cpp

@@ -17,7 +17,7 @@ NewsListWidget::NewsListWidget(QWidget *parent) : QWidget(parent)
     news_layout->setSizeConstraint(QLayout::SetNoConstraint);
     connect(&news_update_timer, &QTimer::timeout, &news_downloader, &Downloader::start);
     connect(&news_downloader, &Downloader::downloadFinished, this, &NewsListWidget::updateNews);
-    emit news_downloader.start();
+    news_downloader.start();
     news_update_timer.setInterval(1000 * 63); // 63 seconds;
     news_update_timer.start();
 
@@ -55,6 +55,11 @@ void NewsListWidget::updateNews()
     for (int i = 0; i < news_list.size(); i++) {
         QStringList news_piece = news_list[i].split("|");
 
+        if (news_piece.size() != 5) {
+            qDebug() << "Incorrect news piece: " << news_piece << "\nNews data:" << news_list;
+            return;
+        }
+
         QString img_src = news_piece[0];
         QString news_title = news_piece[1];
         QString news_desrc = news_piece[2];

+ 0 - 124
src/Legacy/widgets/rusificationwidget.cpp

@@ -1,124 +0,0 @@
-#include "widgets/rusificationwidget.h"
-#include "ui_rusificationwidget.h"
-#include <QDebug>
-#include <QScrollBar>
-
-RusificationWidget::RusificationWidget(QSettings* settings, PatchDownloader* patch_downloader, LotroDatManager* lotro_dat_manager, QWidget *parent) :
-    QWidget(parent),
-    ui(new Ui::RusificationWidget)
-{
-    ui->setupUi(this);
-    currently_active_entry = ui->menuentry_1;
-
-//    moveMenuHoverWidget(ui->menuentry_1);
-    qDebug() << ui->hover_button_widget->geometry();
-    connect(ui->content_scroll_area->verticalScrollBar(), &QScrollBar::valueChanged, this, &RusificationWidget::handleContentScrolling);
-}
-
-RusificationWidget::~RusificationWidget()
-{
-    delete ui;
-}
-
-void RusificationWidget::handleContentScrolling(int value)
-{
-    if (scrollAreaContentsAnimation && scrollAreaContentsAnimation->state() == QAbstractAnimation::Running)
-        return;
-
-    qDebug() << "VALUE CHANGED: " << value << ui->content_scroll_area->verticalScrollBar()->maximum();
-    QPushButton* new_active_entry = ui->menuentry_2;
-    if (value >= ui->sub_entry_1->y() + ui->sub_entry_1->height() * 2 / 3)
-        new_active_entry = ui->menuentry_2;
-    if (value >= ui->sub_entry_2->y() + ui->sub_entry_2->height() * 2 / 3)
-        new_active_entry = ui->menuentry_3;
-    if (value >= ui->sub_entry_3->y() + ui->sub_entry_3->height() * 2 / 3)
-        new_active_entry = ui->menuentry_4;
-    if (value >= ui->sub_entry_4->y() + ui->sub_entry_4->height() * 2 / 3 || value == ui->content_scroll_area->verticalScrollBar()->maximum())
-        new_active_entry = ui->menuentry_5;
-    if (value == 0)
-        new_active_entry = ui->menuentry_1;
-
-    moveMenuHoverWidget(new_active_entry);
-}
-
-void RusificationWidget::moveMenuHoverWidget(QPushButton *target)
-{
-    if (ui->hover_button_widget->size() == QSize(0, 0)) {
-        ui->hover_button_widget->resize(target->size() + QSize(10, 0));
-        ui->hover_button_widget->move(ui->checkpoints_list->pos() + target->pos() + QPoint(-5, 0));
-    } else {
-        if (menuHoverWidgetAnimation == nullptr)
-            menuHoverWidgetAnimation = new QPropertyAnimation(ui->hover_button_widget, "geometry");
-        else
-            menuHoverWidgetAnimation->stop();
-
-        menuHoverWidgetAnimation->setDuration(200);
-        menuHoverWidgetAnimation->setStartValue(QRect(ui->hover_button_widget->pos(), ui->hover_button_widget->size()));
-        menuHoverWidgetAnimation->setEndValue(QRect(ui->checkpoints_list->pos() + target->pos() + QPoint(-5, 0), target->size() + QSize(10, 0)));
-        menuHoverWidgetAnimation->start();
-    }
-
-    ui->menuentry_1->raise();
-    ui->menuentry_2->raise();
-    ui->menuentry_3->raise();
-    ui->menuentry_4->raise();
-}
-
-void RusificationWidget::scrollContentToWidget(QWidget *widget)
-{
-    if (scrollAreaContentsAnimation == nullptr)
-        scrollAreaContentsAnimation = new QPropertyAnimation(ui->content_scroll_area->verticalScrollBar(), "value");
-    else
-        scrollAreaContentsAnimation->stop();
-
-    scrollAreaContentsAnimation->setDuration(200);
-    scrollAreaContentsAnimation->setStartValue(ui->content_scroll_area->verticalScrollBar()->value());
-    scrollAreaContentsAnimation->setEndValue(widget->y());
-    scrollAreaContentsAnimation->start();
-}
-
-
-void RusificationWidget::on_menuentry_1_clicked()
-{
-    if (currently_active_entry != ui->menuentry_1) {
-        currently_active_entry = ui->menuentry_1;
-        moveMenuHoverWidget(ui->menuentry_1);
-    }
-    scrollContentToWidget(ui->sub_entry_1);
-}
-
-void RusificationWidget::on_menuentry_2_clicked()
-{
-    if (currently_active_entry != ui->menuentry_2) {
-        currently_active_entry = ui->menuentry_2;
-        moveMenuHoverWidget(ui->menuentry_2);
-    }
-    scrollContentToWidget(ui->sub_entry_2);
-}
-
-void RusificationWidget::on_menuentry_3_clicked()
-{
-    if (currently_active_entry != ui->menuentry_3) {
-        currently_active_entry = ui->menuentry_3;
-        moveMenuHoverWidget(ui->menuentry_3);
-    }
-    scrollContentToWidget(ui->sub_entry_3);
-}
-
-void RusificationWidget::on_menuentry_4_clicked()
-{
-    if (currently_active_entry != ui->menuentry_4) {
-        currently_active_entry = ui->menuentry_4;
-        moveMenuHoverWidget(ui->menuentry_4);
-    }
-    scrollContentToWidget(ui->sub_entry_4);
-}
-
-void RusificationWidget::on_menuentry_5_clicked()
-{
-    if (currently_active_entry != ui->menuentry_5) {
-        currently_active_entry = ui->menuentry_5;
-        moveMenuHoverWidget(ui->menuentry_5);
-    }
-    scrollContentToWidget(ui->sub_entry_5);
-}

+ 0 - 56
src/Legacy/widgets/rusificationwidget.h

@@ -1,56 +0,0 @@
-#ifndef RUSIFICATIONWIDGET_H
-#define RUSIFICATIONWIDGET_H
-
-#include <QWidget>
-#include <QTimer>
-#include <QSettings>
-#include <QPropertyAnimation>
-#include <QPushButton>
-
-namespace Ui {
-class RusificationWidget;
-}
-
-class PatchDownloader;
-class LotroDatManager;
-
-class RusificationWidget : public QWidget
-{
-    Q_OBJECT
-
-public:
-    explicit RusificationWidget(QSettings* settings, PatchDownloader* patch_downloader, LotroDatManager* lotro_dat_manager, QWidget *parent = 0);
-
-    ~RusificationWidget();
-
-
-private slots:
-    void handleContentScrolling(int value);
-
-    void moveMenuHoverWidget(QPushButton* target);
-
-    void scrollContentToWidget(QWidget* widget);
-
-    void on_menuentry_1_clicked();
-
-    void on_menuentry_2_clicked();
-
-    void on_menuentry_3_clicked();
-
-    void on_menuentry_4_clicked();
-
-    void on_menuentry_5_clicked();
-
-private:
-    QSettings* app_settings;
-    PatchDownloader* patch_updater;
-    LotroDatManager* lotro_manager;
-
-    QPushButton* currently_active_entry = nullptr;
-    QPropertyAnimation* menuHoverWidgetAnimation = nullptr;
-    QPropertyAnimation* scrollAreaContentsAnimation = nullptr;
-
-    Ui::RusificationWidget *ui;
-};
-
-#endif // RUSIFICATIONWIDGET_H

+ 0 - 655
src/Legacy/widgets/rusificationwidget.ui

@@ -1,655 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>RusificationWidget</class>
- <widget class="QWidget" name="RusificationWidget">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>1000</width>
-    <height>538</height>
-   </rect>
-  </property>
-  <property name="sizePolicy">
-   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-    <horstretch>0</horstretch>
-    <verstretch>0</verstretch>
-   </sizepolicy>
-  </property>
-  <property name="windowTitle">
-   <string>Form</string>
-  </property>
-  <property name="styleSheet">
-   <string notr="true">QLabel, QRadioButton, QCheckBox {
-	color: white;
-}</string>
-  </property>
-  <widget class="QLabel" name="order_label">
-   <property name="geometry">
-    <rect>
-     <x>57</x>
-     <y>33</y>
-     <width>180</width>
-     <height>21</height>
-    </rect>
-   </property>
-   <property name="font">
-    <font>
-     <family>Trajan Pro 3</family>
-     <pointsize>9</pointsize>
-     <kerning>false</kerning>
-    </font>
-   </property>
-   <property name="text">
-    <string>Порядок установки</string>
-   </property>
-  </widget>
-  <widget class="QWidget" name="checkpoints_list" native="true">
-   <property name="geometry">
-    <rect>
-     <x>25</x>
-     <y>70</y>
-     <width>271</width>
-     <height>440</height>
-    </rect>
-   </property>
-   <layout class="QVBoxLayout" name="verticalLayout">
-    <property name="spacing">
-     <number>7</number>
-    </property>
-    <item>
-     <widget class="QPushButton" name="menuentry_1">
-      <property name="font">
-       <font>
-        <family>Trajan Pro 3</family>
-        <pointsize>9</pointsize>
-       </font>
-      </property>
-      <property name="cursor">
-       <cursorShape>PointingHandCursor</cursorShape>
-      </property>
-      <property name="styleSheet">
-       <string notr="true">QPushButton {
-	color: white; 
-	text-align: left;
-	background-color: transparent;
-	alternate-background-color: transparent;
-	border-radius: 5px;
-	margin: 7px;
-}
-
-QPushButton:pressed {
-	color: white; 
-	text-align: left;
-	background-color: transparent;
-	alternate-background-color: transparent;}
-
-QPushButton:flat {
-    border: none; /* no border for a flat push button */
-}
-
-QPushButton:default {
-	background-color: transparent;
-}</string>
-      </property>
-      <property name="text">
-       <string>♦ Настройка клиента игры</string>
-      </property>
-      <property name="flat">
-       <bool>true</bool>
-      </property>
-     </widget>
-    </item>
-    <item>
-     <widget class="QPushButton" name="menuentry_2">
-      <property name="font">
-       <font>
-        <family>Trajan Pro 3</family>
-        <pointsize>9</pointsize>
-       </font>
-      </property>
-      <property name="cursor">
-       <cursorShape>PointingHandCursor</cursorShape>
-      </property>
-      <property name="styleSheet">
-       <string notr="true">QPushButton {
-	color: white; 
-	text-align: left;
-	background-color: transparent;
-	alternate-background-color: transparent;
-	border-radius: 5px;
-	margin: 7px;
-}
-
-QPushButton:pressed {
-	color: white; 
-	text-align: left;
-	background-color: transparent;
-	alternate-background-color: transparent;}
-
-QPushButton:flat {
-    border: none; /* no border for a flat push button */
-}
-
-QPushButton:default {
-	background-color: transparent;
-}</string>
-      </property>
-      <property name="text">
-       <string>♦ Настройка резервной
-копии</string>
-      </property>
-      <property name="flat">
-       <bool>true</bool>
-      </property>
-     </widget>
-    </item>
-    <item>
-     <widget class="QPushButton" name="menuentry_3">
-      <property name="font">
-       <font>
-        <family>Trajan Pro 3</family>
-        <pointsize>9</pointsize>
-       </font>
-      </property>
-      <property name="cursor">
-       <cursorShape>PointingHandCursor</cursorShape>
-      </property>
-      <property name="styleSheet">
-       <string notr="true">QPushButton {
-	color: white; 
-	text-align: left;
-	background-color: transparent;
-	alternate-background-color: transparent;
-	border-radius: 5px;
-	margin: 7px;
-}
-
-QPushButton:pressed {
-	color: white; 
-	text-align: left;
-	background-color: transparent;
-	alternate-background-color: transparent;}
-
-QPushButton:flat {
-    border: none; /* no border for a flat push button */
-}
-
-QPushButton:default {
-	background-color: transparent;
-}</string>
-      </property>
-      <property name="text">
-       <string>♦ Выбор компонентов
-русификации</string>
-      </property>
-      <property name="flat">
-       <bool>true</bool>
-      </property>
-     </widget>
-    </item>
-    <item>
-     <widget class="QPushButton" name="menuentry_4">
-      <property name="font">
-       <font>
-        <family>Trajan Pro 3</family>
-        <pointsize>9</pointsize>
-       </font>
-      </property>
-      <property name="cursor">
-       <cursorShape>PointingHandCursor</cursorShape>
-      </property>
-      <property name="styleSheet">
-       <string notr="true">QPushButton {
-	color: white; 
-	text-align: left;
-	background-color: transparent;
-	alternate-background-color: transparent;
-	border-radius: 5px;
-	margin: 7px;
-}
-
-QPushButton:pressed {
-	color: white; 
-	text-align: left;
-	background-color: transparent;
-	alternate-background-color: transparent;}
-
-QPushButton:flat {
-    border: none; /* no border for a flat push button */
-}
-
-QPushButton:default {
-	background-color: transparent;
-}</string>
-      </property>
-      <property name="text">
-       <string>♦ Настройка обновлений</string>
-      </property>
-      <property name="flat">
-       <bool>true</bool>
-      </property>
-     </widget>
-    </item>
-    <item>
-     <widget class="QPushButton" name="menuentry_5">
-      <property name="font">
-       <font>
-        <family>Trajan Pro 3</family>
-        <pointsize>9</pointsize>
-       </font>
-      </property>
-      <property name="cursor">
-       <cursorShape>PointingHandCursor</cursorShape>
-      </property>
-      <property name="styleSheet">
-       <string notr="true">QPushButton {
-	color: white; 
-	text-align: left;
-	background-color: transparent;
-	alternate-background-color: transparent;
-	border-radius: 5px;
-	margin: 7px;
-}
-
-QPushButton:pressed {
-	color: white; 
-	text-align: left;
-	background-color: transparent;
-	alternate-background-color: transparent;}
-
-QPushButton:flat {
-    border: none; /* no border for a flat push button */
-}
-
-QPushButton:default {
-	background-color: transparent;
-}</string>
-      </property>
-      <property name="text">
-       <string>♦ Применить!</string>
-      </property>
-      <property name="flat">
-       <bool>true</bool>
-      </property>
-     </widget>
-    </item>
-    <item>
-     <spacer name="verticalSpacer">
-      <property name="orientation">
-       <enum>Qt::Vertical</enum>
-      </property>
-      <property name="sizeHint" stdset="0">
-       <size>
-        <width>20</width>
-        <height>40</height>
-       </size>
-      </property>
-     </spacer>
-    </item>
-   </layout>
-  </widget>
-  <widget class="QProgressBar" name="progressBar">
-   <property name="geometry">
-    <rect>
-     <x>310</x>
-     <y>480</y>
-     <width>501</width>
-     <height>40</height>
-    </rect>
-   </property>
-   <property name="minimumSize">
-    <size>
-     <width>0</width>
-     <height>40</height>
-    </size>
-   </property>
-   <property name="maximumSize">
-    <size>
-     <width>16777215</width>
-     <height>40</height>
-    </size>
-   </property>
-   <property name="styleSheet">
-    <string notr="true">QProgressBar {
-    border: 0px solid grey;
-	border-image: url(:/per.png);
-}
-
-QProgressBar::chunk {
-background-image: url(:/letters.png);
-margin-left:8px;
-margin-right:8px;
-margin-top:7px;
-margin-bottom:7px;
-}
-</string>
-   </property>
-   <property name="maximum">
-    <number>100</number>
-   </property>
-   <property name="value">
-    <number>72</number>
-   </property>
-   <property name="textVisible">
-    <bool>false</bool>
-   </property>
-  </widget>
-  <widget class="QLabel" name="progress_label">
-   <property name="geometry">
-    <rect>
-     <x>310</x>
-     <y>450</y>
-     <width>501</width>
-     <height>31</height>
-    </rect>
-   </property>
-   <property name="sizePolicy">
-    <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-     <horstretch>0</horstretch>
-     <verstretch>0</verstretch>
-    </sizepolicy>
-   </property>
-   <property name="font">
-    <font>
-     <family>Trajan Pro 3</family>
-     <pointsize>8</pointsize>
-     <weight>50</weight>
-     <bold>false</bold>
-    </font>
-   </property>
-   <property name="text">
-    <string>Русификация... 72.6%</string>
-   </property>
-   <property name="alignment">
-    <set>Qt::AlignCenter</set>
-   </property>
-   <property name="wordWrap">
-    <bool>true</bool>
-   </property>
-  </widget>
-  <widget class="QPushButton" name="game_button">
-   <property name="geometry">
-    <rect>
-     <x>830</x>
-     <y>460</y>
-     <width>150</width>
-     <height>60</height>
-    </rect>
-   </property>
-   <property name="sizePolicy">
-    <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-     <horstretch>0</horstretch>
-     <verstretch>0</verstretch>
-    </sizepolicy>
-   </property>
-   <property name="font">
-    <font>
-     <family>Trajan Pro 3</family>
-     <pointsize>11</pointsize>
-     <weight>50</weight>
-     <bold>false</bold>
-     <kerning>false</kerning>
-    </font>
-   </property>
-   <property name="autoFillBackground">
-    <bool>false</bool>
-   </property>
-   <property name="styleSheet">
-    <string notr="true">QPushButton#game_button { 
-	color: white;
-	border-image: url(:/buttons/button_big_normal.png);
-}
-
-QPushButton#game_button:hover {
-	color: white;
-	border-image: url(:/buttons/button_big_over.png);
-}
-
-QPushButton#game_button:pressed {
-	color: white;
-	border-image: url(:/buttons/button_big_pressed.png);
-}
-
-</string>
-   </property>
-   <property name="text">
-    <string notr="true">    ИГРАТЬ    </string>
-   </property>
-   <property name="iconSize">
-    <size>
-     <width>0</width>
-     <height>0</height>
-    </size>
-   </property>
-   <property name="default">
-    <bool>false</bool>
-   </property>
-   <property name="flat">
-    <bool>true</bool>
-   </property>
-  </widget>
-  <widget class="QScrollArea" name="content_scroll_area">
-   <property name="geometry">
-    <rect>
-     <x>330</x>
-     <y>10</y>
-     <width>651</width>
-     <height>441</height>
-    </rect>
-   </property>
-   <property name="styleSheet">
-    <string notr="true">QScrollArea {
-	background-color: rgba(31, 19, 7, 155);
-	border-radius: 5px;
-	border: 1px solid rgba(149, 149, 149, 155);
-    background-attachment: fixed;
-}
-
-QScrollBar:vertical {
-     border: 0px solid grey;
-     background: transparent;
-     width: 0px;
-     margin: 10px 5px 10px 0px;
- }
-
- QScrollBar::handle:vertical {
-	min-height: 10px;
-	background-color:rgba(0,0,0,80);
-	border-radius: 5px;
-	border: 1px solid #6d6867;
-
- }
- QScrollBar::add-line:vertical {
-     border: 0px solid grey;
-     background: transparent;
-     height: 1px;
-     subcontrol-position: bottom;
-     subcontrol-origin: margin;
- }
-
- QScrollBar::sub-line:vertical {
-     border: 0px solid grey;
-     background: transparent;
-     height: 1px;
-     subcontrol-position: top;
-     subcontrol-origin: margin;
- }
- QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {
-     border: 0px;
-     width: 0px;
-     height: 0px;
-     background: transparent;
- }
-
- QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
-     background: none;
-	 height: 0px;
- }</string>
-   </property>
-   <property name="widgetResizable">
-    <bool>true</bool>
-   </property>
-   <widget class="QWidget" name="content_widget">
-    <property name="geometry">
-     <rect>
-      <x>0</x>
-      <y>0</y>
-      <width>649</width>
-      <height>1150</height>
-     </rect>
-    </property>
-    <property name="sizePolicy">
-     <sizepolicy hsizetype="Ignored" vsizetype="Ignored">
-      <horstretch>0</horstretch>
-      <verstretch>0</verstretch>
-     </sizepolicy>
-    </property>
-    <property name="styleSheet">
-     <string notr="true">
-background: transparent;
-border: 0px;
-border-radius: 0px;
-</string>
-    </property>
-    <layout class="QVBoxLayout" name="verticalLayout_2">
-     <item>
-      <widget class="QWidget" name="sub_entry_1" native="true">
-       <layout class="QGridLayout" name="gridLayout">
-        <item row="0" column="0">
-         <widget class="QLabel" name="label_6">
-          <property name="font">
-           <font>
-            <family>Trajan Pro 3</family>
-            <pointsize>9</pointsize>
-           </font>
-          </property>
-          <property name="text">
-           <string>SUB_ENTRY_1 Товарищи! реализация намеченных плановых заданий позволяет выполнять важные задания по разработке системы обучения кадров, соответствует насущным потребностям. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения дальнейших направлений развития. Значимость этих проблем настолько очевидна, что сложившаяся структура организации способствует подготовки и реализации соответствующий условий активизации.</string>
-          </property>
-          <property name="wordWrap">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </widget>
-     </item>
-     <item>
-      <widget class="QWidget" name="sub_entry_2" native="true">
-       <layout class="QGridLayout" name="gridLayout_5">
-        <item row="0" column="0">
-         <widget class="QLabel" name="label_7">
-          <property name="font">
-           <font>
-            <family>Trajan Pro 3</family>
-            <pointsize>9</pointsize>
-           </font>
-          </property>
-          <property name="text">
-           <string>SUB_ENTRY_2 Товарищи! реализация намеченных плановых заданий позволяет выполнять важные задания по разработке системы обучения кадров, соответствует насущным потребностям. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения дальнейших направлений развития. Значимость этих проблем настолько очевидна, что сложившаяся структура организации способствует подготовки и реализации соответствующий условий активизации.</string>
-          </property>
-          <property name="wordWrap">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </widget>
-     </item>
-     <item>
-      <widget class="QWidget" name="sub_entry_3" native="true">
-       <layout class="QGridLayout" name="gridLayout_2">
-        <item row="0" column="0">
-         <widget class="QLabel" name="label_8">
-          <property name="font">
-           <font>
-            <family>Trajan Pro 3</family>
-            <pointsize>9</pointsize>
-           </font>
-          </property>
-          <property name="text">
-           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SUB_ENTRY_3 Товарищи! реализация намеченных плановых заданий позволяет выполнять важные задания по разработке системы обучения кадров, соответствует насущным потребностям. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения дальнейших направлений развития. Значимость этих проблем настолько очевидна, что сложившаяся структура организации способствует подготовки и реализации соответствующий условий активизации.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-          </property>
-          <property name="wordWrap">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </widget>
-     </item>
-     <item>
-      <widget class="QWidget" name="sub_entry_4" native="true">
-       <layout class="QGridLayout" name="gridLayout_4">
-        <item row="0" column="0">
-         <widget class="QLabel" name="label_9">
-          <property name="font">
-           <font>
-            <family>Trajan Pro 3</family>
-            <pointsize>9</pointsize>
-           </font>
-          </property>
-          <property name="text">
-           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SUB_ENTRY_4 Товарищи! реализация намеченных плановых заданий позволяет выполнять важные задания по разработке системы обучения кадров, соответствует насущным потребностям. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения дальнейших направлений развития. Значимость этих проблем настолько очевидна, что сложившаяся структура организации способствует подготовки и реализации соответствующий условий активизации.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-          </property>
-          <property name="wordWrap">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </widget>
-     </item>
-     <item>
-      <widget class="QWidget" name="sub_entry_5" native="true">
-       <layout class="QGridLayout" name="gridLayout_3">
-        <item row="0" column="0">
-         <widget class="QLabel" name="label_10">
-          <property name="font">
-           <font>
-            <family>Trajan Pro 3</family>
-            <pointsize>9</pointsize>
-           </font>
-          </property>
-          <property name="text">
-           <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SUB_ENTRY_5 Товарищи! реализация намеченных плановых заданий позволяет выполнять важные задания по разработке системы обучения кадров, соответствует насущным потребностям. Равным образом постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения дальнейших направлений развития. Значимость этих проблем настолько очевидна, что сложившаяся структура организации способствует подготовки и реализации соответствующий условий активизации.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
-          </property>
-          <property name="wordWrap">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </widget>
-     </item>
-    </layout>
-   </widget>
-  </widget>
-  <widget class="QWidget" name="hover_button_widget" native="true">
-   <property name="geometry">
-    <rect>
-     <x>31</x>
-     <y>81</y>
-     <width>260</width>
-     <height>36</height>
-    </rect>
-   </property>
-   <property name="styleSheet">
-    <string notr="true">color: white;
-border-radius: 15px;
-border: 1px solid qlineargradient(spread:reflect, x1:1, y1:1, x2:0.502174, y2:1, stop:0 rgb(149, 149, 149), stop:0.60199 rgb(185, 185, 185));
-background-color: rgba(54, 47, 45, 155)</string>
-   </property>
-  </widget>
-  <zorder>hover_button_widget</zorder>
-  <zorder>order_label</zorder>
-  <zorder>checkpoints_list</zorder>
-  <zorder>progressBar</zorder>
-  <zorder>progress_label</zorder>
-  <zorder>game_button</zorder>
-  <zorder>content_scroll_area</zorder>
- </widget>
- <resources/>
- <connections/>
-</ui>

+ 1 - 1
src/Legacy/widgets/serverstatuswidget.cpp

@@ -15,7 +15,7 @@ ServerStatusWidget::ServerStatusWidget(QWidget *parent) :
 
     connect(&update_timer, &QTimer::timeout, &downloader, &Downloader::start);
     connect(&downloader, &Downloader::downloadFinished, this, &ServerStatusWidget::updateStatus, Qt::QueuedConnection);
-    emit downloader.start();
+    downloader.start();
     update_timer.setInterval(1000 * 60); // 1 minute;
     update_timer.start();
 }

+ 11 - 29
src/Legacy/widgets/settingswidget.cpp

@@ -1,19 +1,20 @@
 #include "widgets/settingswidget.h"
-#include "ui_settingswidget.h"
+#include "widgets/mainwindow.h"
+#include "ui_SettingsWidget.h"
 #include "models/filesystem.h"
 #include "models/lotrodatmanager.h"
-#include "widgets/mainwindow.h"
 
 #include <QDebug>
+#include <QScrollBar>
 #include <QFileDialog>
-#include <QMessageBox>
+#include <QMetaObject>
+
 
 SettingsWidget::SettingsWidget(QSettings* settings, PatchDownloader* patch_downloader, LotroDatManager* lotro_dat_manager, QWidget *parent) :
-    QWidget(parent), app_settings(settings), lotro_manager(lotro_dat_manager),
+    QWidget(parent), app_settings(settings), patch_updater(patch_downloader), lotro_manager(lotro_dat_manager),
     ui(new Ui::SettingsWidget)
 {
     ui->setupUi(this);
-    ui->folder_value_common->setText(app_settings->value("General/game_folder_path", "Не выбрана").toString());
 }
 
 SettingsWidget::~SettingsWidget()
@@ -36,21 +37,22 @@ void SettingsWidget::on_interface_scale_combobox_common_currentIndexChanged(cons
     app_settings->setValue("general/ui_scale", value);
 }
 
-void SettingsWidget::on_change_folder_button_clicked() {
+void SettingsWidget::on_change_folder_button_clicked()
+{
     QStringList known_paths = FileSystem::recognizeRegistryLotroPath();
     QString template_path = known_paths.empty() ? "" : known_paths[0];
     QString str = QFileDialog::getOpenFileName(0, "Расположение игры", template_path, "LotroLauncher.exe");
-    QString game_folder= str.replace("/LotroLauncher.exe", "").replace("\\", "/").replace("//", "/");
+    QString game_folder= str.replace("/LotroLauncher.exe", "").replace("\\", "/").replace("//", "/") + "/";
 
     if (app_settings->value("General/game_folder_path", "").toString() == game_folder)
         return;
 
     app_settings->setValue("General/game_folder_path", game_folder);
-    ui->folder_value_common->setText(game_folder);
+    ui->game_folder_path->setText(game_folder);
     QMetaObject::invokeMethod(lotro_manager, "InitialiseManager", Qt::QueuedConnection);
 }
 
-void SettingsWidget::on_lotro_patch_language_combobox_common_activated(int index)
+void SettingsWidget::on_lotro_language_combobox_currentIndexChanged(int index)
 {
     QString value = "";
     if (index == 0)
@@ -66,23 +68,3 @@ void SettingsWidget::on_lotro_patch_language_combobox_common_activated(int index
     app_settings->setValue("General/original_locale", value);
     QMetaObject::invokeMethod(lotro_manager, "InitialiseManager", Qt::QueuedConnection);
 }
-
-void SettingsWidget::on_patch_all_button_common_clicked()
-{
-    QMetaObject::invokeMethod(lotro_manager, "InstallActivePatches", Qt::QueuedConnection);
-}
-
-void SettingsWidget::on_remove_backup_common_clicked()
-{
-    QMetaObject::invokeMethod(lotro_manager, "RemoveBackup", Qt::QueuedConnection);
-}
-
-void SettingsWidget::on_create_backup_common_clicked()
-{
-    QMetaObject::invokeMethod(lotro_manager, "CreateBackup", Qt::QueuedConnection);
-}
-
-void SettingsWidget::on_restore_backup_common_clicked()
-{
-    QMetaObject::invokeMethod(lotro_manager, "RestoreBackup", Qt::QueuedConnection);
-}

+ 10 - 13
src/Legacy/widgets/settingswidget.h

@@ -1,9 +1,11 @@
-#ifndef SETTINGSWIDGET_H
-#define SETTINGSWIDGET_H
+#ifndef SettingsWidget_H
+#define SettingsWidget_H
 
 #include <QWidget>
 #include <QTimer>
 #include <QSettings>
+#include <QPropertyAnimation>
+#include <QPushButton>
 
 namespace Ui {
 class SettingsWidget;
@@ -18,23 +20,18 @@ class SettingsWidget : public QWidget
 
 public:
     explicit SettingsWidget(QSettings* settings, PatchDownloader* patch_downloader, LotroDatManager* lotro_dat_manager, QWidget *parent = 0);
+
     ~SettingsWidget();
 
-private slots:    
+
+private slots:
+
     void on_interface_scale_combobox_common_currentIndexChanged(const QString &arg1);
 
     void on_change_folder_button_clicked();
 
-    void on_lotro_patch_language_combobox_common_activated(int index);
+    void on_lotro_language_combobox_currentIndexChanged(int index);
 
-    void on_patch_all_button_common_clicked();
-    
-    void on_remove_backup_common_clicked();
-    
-    void on_create_backup_common_clicked();
-    
-    void on_restore_backup_common_clicked();
-        
 private:
     QSettings* app_settings;
     PatchDownloader* patch_updater;
@@ -43,4 +40,4 @@ private:
     Ui::SettingsWidget *ui;
 };
 
-#endif // SETTINGSWIDGET_H
+#endif // SettingsWidget_H

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 870 - 188
src/Legacy/widgets/settingswidget.ui


+ 1 - 1
src/Legacy/widgets/statuswidget.cpp

@@ -101,7 +101,7 @@ void StatusWidget::resizeEvent(QResizeEvent *event)
     ui->progressBar->resize(QSize(501, 40) * coefficient);
     ui->progress_label->move(QPoint(330, 450) * coefficient);
     ui->progress_label->resize(QSize(501, 31) * coefficient);
-    ui->news_label->move(QPoint(57, 33)* coefficient);
+    ui->news_label->move(QPoint(45, 33)* coefficient);
     ui->news_label->resize(QSize(180, 21) * coefficient);
     ui->news_scroll_area->move(QPoint(40, 75) * coefficient);
     ui->news_scroll_area->resize(QSize(250, 440) * coefficient);

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

@@ -27,7 +27,7 @@ color: white;
   <widget class="QLabel" name="news_label">
    <property name="geometry">
     <rect>
-     <x>57</x>
+     <x>45</x>
      <y>33</y>
      <width>180</width>
      <height>21</height>

+ 1 - 1
src/Legacy/widgets/weeklycodewidget.cpp

@@ -22,7 +22,7 @@ WeeklyCodeWidget::WeeklyCodeWidget(QWidget *parent) :
 
     connect(&code_update_timer, &QTimer::timeout, &code_downloader, &Downloader::start);
     connect(&code_downloader, &Downloader::downloadFinished, this, &WeeklyCodeWidget::updateCode, Qt::QueuedConnection);
-    emit code_downloader.start();
+    code_downloader.start();
     code_update_timer.setInterval(1000 * 60); // 1 minute;
     code_update_timer.start();
 }

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio