Browse Source

Code improvements

Ivan Arkhipov 3 years ago
parent
commit
c8a31055d6

+ 6 - 0
src/Legacy/Legacy.pro

@@ -20,6 +20,7 @@ SOURCES += \
     models/patchinstaller.cpp \
     models/selfupdater.cpp \
     utils.cpp \
+    widgets/gamesettings.cpp \
     widgets/helpwidget.cpp \
     widgets/mainwindow.cpp \
     widgets/menuentry.cpp \
@@ -31,6 +32,7 @@ SOURCES += \
     widgets/serverstatuswidget.cpp \
     widgets/switchbutton.cpp \
     widgets/chooseversiondialog.cpp \
+    widgets/translationcomponents.cpp \
     widgets/weeklycodewidget.cpp \
     widgets/dialogwindow.cpp \
     widgets/qsmoothscrollarea.cpp \
@@ -48,6 +50,7 @@ HEADERS += \
     models/patchinstaller.h \
     models/selfupdater.h \
     utils.h \
+    widgets/gamesettings.h \
     widgets/helpwidget.h \
     widgets/mainwindow.h \
     widgets/menuentry.h \
@@ -59,6 +62,7 @@ HEADERS += \
     widgets/serverstatuswidget.h \
     widgets/switchbutton.h \
     widgets/chooseversiondialog.h \
+    widgets/translationcomponents.h \
     widgets/weeklycodewidget.h \
     widgets/dialogwindow.h \
     widgets/qsmoothscrollarea.h \
@@ -70,6 +74,7 @@ HEADERS += \
     legacyapplication.h
 
 FORMS += \
+    widgets/gamesettings.ui \
     widgets/helpwidget.ui \
     widgets/mainwindow.ui \
     widgets/settingswidget.ui \
@@ -78,6 +83,7 @@ FORMS += \
     widgets/newspiece.ui \
     widgets/serverstatuswidget.ui \
     widgets/chooseversiondialog.ui \
+    widgets/translationcomponents.ui \
     widgets/weeklycodewidget.ui \
     widgets/dialogwindow.ui
 

+ 2 - 0
src/Legacy/models/patchinstaller.cpp

@@ -58,6 +58,7 @@ void PatchInstaller::deinit() {
         client_local_file_->Deinit();
     if (client_general_file_)
         client_general_file_->Deinit();
+    emit deinitialized();
 }
 
 void PatchInstaller::installPatch(QString patch_name, LOTRO_DAT::Database* database) {
@@ -290,6 +291,7 @@ void PatchInstaller::init()
              << QString::fromStdString(client_general_file_->GetFilename())
              << QString::fromStdString(client_local_file_->GetFilename());
 
+    emit successfullyInitialized();
 }
 
 void PatchInstaller::startGame(bool freeze_updates) {

+ 2 - 0
src/Legacy/models/patchinstaller.h

@@ -63,6 +63,8 @@ signals:
     void progressChanged(PatchInstaller::Status status);
     void videosDownloadProgressChanged(int finished_videos, int total_videos, Downloader::Status status);
     void finished();
+    void successfullyInitialized();
+    void deinitialized();
 
 private:
     LOTRO_DAT::DatFile* client_local_file_;

+ 15 - 0
src/Legacy/widgets/gamesettings.cpp

@@ -0,0 +1,15 @@
+#include "gamesettings.h"
+#include "ui_gamesettings.h"
+
+GameSettings::GameSettings(QWidget *parent) :
+    QWidget(parent),
+    ui(new Ui::GameSettings)
+{
+    ui->setupUi(this);
+    setAttribute(Qt::WA_StyledBackground, true);
+}
+
+GameSettings::~GameSettings()
+{
+    delete ui;
+}

+ 22 - 0
src/Legacy/widgets/gamesettings.h

@@ -0,0 +1,22 @@
+#ifndef GAMESETTINGS_H
+#define GAMESETTINGS_H
+
+#include <QWidget>
+
+namespace Ui {
+class GameSettings;
+}
+
+class GameSettings : public QWidget
+{
+    Q_OBJECT
+
+public:
+    explicit GameSettings(QWidget *parent = nullptr);
+    ~GameSettings();
+
+private:
+    Ui::GameSettings *ui;
+};
+
+#endif // GAMESETTINGS_H

+ 248 - 0
src/Legacy/widgets/gamesettings.ui

@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>GameSettings</class>
+ <widget class="QWidget" name="GameSettings">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>454</width>
+    <height>209</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="sub_entry_1_title">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="font">
+      <font>
+       <family>EB Garamond</family>
+       <pointsize>11</pointsize>
+      </font>
+     </property>
+     <property name="text">
+      <string>● Параметры игры  ●</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+     <property name="wordWrap">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="widget_2" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QLabel" name="game_folder_label">
+        <property name="font">
+         <font>
+          <family>Crimson Text</family>
+          <pointsize>11</pointsize>
+         </font>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">
+background-color: none;</string>
+        </property>
+        <property name="text">
+         <string>Папка с игрой:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLabel" name="game_folder_path">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="font">
+         <font>
+          <family>Crimson Text</family>
+          <pointsize>11</pointsize>
+         </font>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">
+background-color: none;</string>
+        </property>
+        <property name="text">
+         <string>(не выбрано)</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QPushButton" name="change_folder_button">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>36</width>
+          <height>32</height>
+         </size>
+        </property>
+        <property name="cursor">
+         <cursorShape>PointingHandCursor</cursorShape>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::NoFocus</enum>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">border-image: url(:/buttons/folder.png);
+background-color: none;</string>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="widget_5" native="true">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>30</height>
+      </size>
+     </property>
+     <property name="font">
+      <font>
+       <pointsize>8</pointsize>
+      </font>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <property name="leftMargin">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QLabel" name="lotro_base_language_label">
+        <property name="font">
+         <font>
+          <family>Crimson Text</family>
+          <pointsize>11</pointsize>
+         </font>
+        </property>
+        <property name="text">
+         <string>Версия игры для перевода:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QComboBox" name="lotro_base_language_combobox">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>130</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="font">
+         <font>
+          <family>Crimson Text</family>
+          <pointsize>11</pointsize>
+         </font>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::ClickFocus</enum>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">background: silver;
+color: black;
+border-radius: 3px;</string>
+        </property>
+        <property name="currentText">
+         <string>Английская</string>
+        </property>
+        <property name="sizeAdjustPolicy">
+         <enum>QComboBox::AdjustToContentsOnFirstShow</enum>
+        </property>
+        <property name="frame">
+         <bool>true</bool>
+        </property>
+        <item>
+         <property name="text">
+          <string>Английская</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Немецкая</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>Французская</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_4">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

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

@@ -413,17 +413,7 @@ void MainWindow::setEventFilterRecursive(QObject *widget)
     if (!widget)
         return;
 
-    QStringList classes_to_set = {
-        "QPushButton",
-        "QCheckBox",
-        "QComboBox",
-        "QLabel",
-        "QWidget"
-    };
-
-    if (classes_to_set.contains(widget->metaObject()->className())) {
-        widget->installEventFilter(this);
-    }
+    widget->installEventFilter(this);
 
     foreach (QObject* child, widget->children()) {
         setEventFilterRecursive(child);

+ 2 - 2
src/Legacy/widgets/settingswidget.ui

@@ -394,9 +394,9 @@ QScrollBar:vertical {
     <property name="geometry">
      <rect>
       <x>0</x>
-      <y>-87</y>
+      <y>0</y>
       <width>651</width>
-      <height>976</height>
+      <height>871</height>
      </rect>
     </property>
     <property name="sizePolicy">

+ 28 - 14
src/Legacy/widgets/statuswidget.cpp

@@ -39,6 +39,10 @@ StatusWidget::StatusWidget(QWidget *parent)
     connect(&PatchInstaller::instance(), &PatchInstaller::progressChanged, this, &StatusWidget::onPatchInstallerProgressChanged);
     connect(&PatchInstaller::instance(), &PatchInstaller::finished, this, &StatusWidget::onPatchInstallerFinished);
     connect(&PatchInstaller::instance(), &PatchInstaller::videosDownloadProgressChanged, this, &StatusWidget::onPatchInstallerVideoProgressChanged);
+    connect(&PatchInstaller::instance(), &PatchInstaller::successfullyInitialized, this, &StatusWidget::showComponentsStatus);
+    connect(&PatchInstaller::instance(), &PatchInstaller::deinitialized, this, &StatusWidget::hideComponentsStatus);
+
+    ui->b_components_status->hide();
 
     generateRandomTooltipMessage();
     random_tooltip_generator_timer_.setInterval(5 * 1000);
@@ -49,24 +53,13 @@ StatusWidget::StatusWidget(QWidget *parent)
     process_completed_tooltip_hide_timer_.stop();
     connect(&process_completed_tooltip_hide_timer_, &QTimer::timeout, this, [this](){unsetToolTipMessage(E_PROCESS); process_completed_tooltip_hide_timer_.stop();});
 
-    ui->texts_block_label->setTooltipParentWidget(this);
-    ui->texts_block_label->setTooltipText("Перевод всех текстовых элементов в игре: названий, квестов, меню и т.д.");
-
-    ui->graphics_block_label->setTooltipParentWidget(this);
-    ui->graphics_block_label->setTooltipText("Переведенные карты локаций и элементы графического интерфейса.");
-
-    ui->video_block_label->setTooltipParentWidget(this);
-    ui->video_block_label->setTooltipText("Переведенные и озвученные видеоролики и кат-сцены.");
-
-    ui->audio_block_label->setTooltipParentWidget(this);
-    ui->audio_block_label->setTooltipText("Переведенные и озвученные реплики персонажей.");
-
-    ui->loadscreens_block_label->setTooltipParentWidget(this);
-    ui->loadscreens_block_label->setTooltipText("Загрузочные экраны от команды Наследия");
+    _components_status_opacity_effect = new QGraphicsOpacityEffect();
+    ui->b_components_status->setGraphicsEffect(_components_status_opacity_effect);
 }
 
 StatusWidget::~StatusWidget()
 {
+    _components_status_opacity_effect->deleteLater();
     delete ui;
     ui = nullptr;
 }
@@ -371,3 +364,24 @@ void StatusWidget::on_check_for_updates_button_clicked()
 {
     QMetaObject::invokeMethod(&PatchDownloader::instance(), &PatchDownloader::startPatchDownloaderChain, Qt::QueuedConnection);
 }
+
+
+void StatusWidget::showComponentsStatus() {
+    QPropertyAnimation *animation = new QPropertyAnimation(_components_status_opacity_effect, "opacity");
+    animation->setDuration(1000);
+    animation->setStartValue(0);
+    animation->setEndValue(1);
+    animation->start(QPropertyAnimation::DeleteWhenStopped);
+    ui->b_components_status->show();
+}
+
+void StatusWidget::hideComponentsStatus() {
+    QPropertyAnimation *animation = new QPropertyAnimation(_components_status_opacity_effect, "opacity");
+    animation->setDuration(300);
+    animation->setStartValue(1);
+    animation->setEndValue(0);
+    animation->setEasingCurve(QEasingCurve::InBack);
+    animation->start(QPropertyAnimation::DeleteWhenStopped);
+    connect(animation, &QPropertyAnimation::finished, ui->b_components_status, &QWidget::hide);
+}
+

+ 6 - 0
src/Legacy/widgets/statuswidget.h

@@ -72,6 +72,10 @@ private slots:
 
     void on_check_for_updates_button_clicked();
 
+    void showComponentsStatus();
+
+    void hideComponentsStatus();
+
 private:
     void createTooltipMessageWidget(QString tooltip_id);
 
@@ -95,6 +99,8 @@ private:
 
     QString init_error_type_message_ = "";
     QString error_timeout_message_ = "";
+
+    QGraphicsOpacityEffect* _components_status_opacity_effect;
 };
 
 #endif // STATUSWIDGET_H

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

@@ -22,7 +22,8 @@
   <property name="styleSheet">
    <string notr="true">QLabel {
 color: white;
-}</string>
+}
+</string>
   </property>
   <widget class="QLabel" name="news_label">
    <property name="geometry">
@@ -250,7 +251,10 @@ QPushButton#game_button:disabled {
     <bool>true</bool>
    </property>
   </widget>
-  <widget class="QWidget" name="a_game_parameters" native="true">
+  <widget class="GameSettings" name="a_game_parameters" native="true">
+   <property name="enabled">
+    <bool>true</bool>
+   </property>
    <property name="geometry">
     <rect>
      <x>310</x>
@@ -266,247 +270,20 @@ QPushButton#game_button:disabled {
     </sizepolicy>
    </property>
    <property name="styleSheet">
-    <string notr="true">QWidget#a_game_parameters {
+    <string notr="true">#a_game_parameters {
 	background-color: rgba(31, 19, 7, 155);
-	border-radius: 5px;
+	border-radius: 5px;	
 	border: 1px solid rgba(149, 149, 149, 155);
-    background-attachment: fixed;
+	background-attachment: fixed
 }</string>
    </property>
    <layout class="QGridLayout" name="gridLayout">
     <property name="verticalSpacing">
      <number>10</number>
     </property>
-    <item row="1" column="0">
-     <widget class="QWidget" name="widget_2" native="true">
-      <layout class="QHBoxLayout" name="horizontalLayout">
-       <property name="leftMargin">
-        <number>0</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
-        <number>0</number>
-       </property>
-       <item>
-        <widget class="QLabel" name="game_folder_label">
-         <property name="font">
-          <font>
-           <family>Crimson Text</family>
-           <pointsize>11</pointsize>
-          </font>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">
-background-color: none;</string>
-         </property>
-         <property name="text">
-          <string>Папка с игрой:</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QLabel" name="game_folder_path">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="font">
-          <font>
-           <family>Crimson Text</family>
-           <pointsize>11</pointsize>
-          </font>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">
-background-color: none;</string>
-         </property>
-         <property name="text">
-          <string>(не выбрано)</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QPushButton" name="change_folder_button">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="minimumSize">
-          <size>
-           <width>36</width>
-           <height>32</height>
-          </size>
-         </property>
-         <property name="cursor">
-          <cursorShape>PointingHandCursor</cursorShape>
-         </property>
-         <property name="focusPolicy">
-          <enum>Qt::NoFocus</enum>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">border-image: url(:/buttons/folder.png);
-background-color: none;</string>
-         </property>
-         <property name="text">
-          <string/>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </widget>
-    </item>
-    <item row="0" column="0">
-     <widget class="QLabel" name="sub_entry_1_title">
-      <property name="sizePolicy">
-       <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-        <horstretch>0</horstretch>
-        <verstretch>0</verstretch>
-       </sizepolicy>
-      </property>
-      <property name="font">
-       <font>
-        <family>EB Garamond</family>
-        <pointsize>11</pointsize>
-       </font>
-      </property>
-      <property name="text">
-       <string>● Параметры игры  ●</string>
-      </property>
-      <property name="alignment">
-       <set>Qt::AlignCenter</set>
-      </property>
-      <property name="wordWrap">
-       <bool>false</bool>
-      </property>
-     </widget>
-    </item>
-    <item row="2" column="0">
-     <widget class="QWidget" name="widget_5" native="true">
-      <property name="sizePolicy">
-       <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-        <horstretch>0</horstretch>
-        <verstretch>0</verstretch>
-       </sizepolicy>
-      </property>
-      <property name="minimumSize">
-       <size>
-        <width>0</width>
-        <height>30</height>
-       </size>
-      </property>
-      <property name="font">
-       <font>
-        <pointsize>8</pointsize>
-       </font>
-      </property>
-      <layout class="QHBoxLayout" name="horizontalLayout_2">
-       <property name="leftMargin">
-        <number>0</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
-        <number>0</number>
-       </property>
-       <item>
-        <widget class="QLabel" name="lotro_base_language_label">
-         <property name="font">
-          <font>
-           <family>Crimson Text</family>
-           <pointsize>11</pointsize>
-          </font>
-         </property>
-         <property name="text">
-          <string>Версия игры для перевода:</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QComboBox" name="lotro_base_language_combobox">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="minimumSize">
-          <size>
-           <width>130</width>
-           <height>0</height>
-          </size>
-         </property>
-         <property name="font">
-          <font>
-           <family>Crimson Text</family>
-           <pointsize>11</pointsize>
-          </font>
-         </property>
-         <property name="focusPolicy">
-          <enum>Qt::ClickFocus</enum>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">background: silver;
-color: black;
-border-radius: 3px;</string>
-         </property>
-         <property name="currentText">
-          <string>Английская</string>
-         </property>
-         <property name="sizeAdjustPolicy">
-          <enum>QComboBox::AdjustToContentsOnFirstShow</enum>
-         </property>
-         <property name="frame">
-          <bool>true</bool>
-         </property>
-         <item>
-          <property name="text">
-           <string>Английская</string>
-          </property>
-         </item>
-         <item>
-          <property name="text">
-           <string>Немецкая</string>
-          </property>
-         </item>
-         <item>
-          <property name="text">
-           <string>Французская</string>
-          </property>
-         </item>
-        </widget>
-       </item>
-       <item>
-        <spacer name="horizontalSpacer_4">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>40</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
-     </widget>
-    </item>
    </layout>
   </widget>
-  <widget class="QWidget" name="b_components_status" native="true">
+  <widget class="TranslationComponents" name="b_components_status" native="true">
    <property name="geometry">
     <rect>
      <x>310</x>
@@ -527,396 +304,6 @@ border-radius: 3px;</string>
     <property name="spacing">
      <number>12</number>
     </property>
-    <item>
-     <widget class="QLabel" name="sub_entry_3_title">
-      <property name="sizePolicy">
-       <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-        <horstretch>0</horstretch>
-        <verstretch>0</verstretch>
-       </sizepolicy>
-      </property>
-      <property name="font">
-       <font>
-        <family>EB Garamond</family>
-        <pointsize>11</pointsize>
-       </font>
-      </property>
-      <property name="text">
-       <string>● Компоненты перевода ●</string>
-      </property>
-      <property name="alignment">
-       <set>Qt::AlignCenter</set>
-      </property>
-      <property name="wordWrap">
-       <bool>false</bool>
-      </property>
-     </widget>
-    </item>
-    <item>
-     <widget class="QWidget" name="a_texts_block" native="true">
-      <layout class="QHBoxLayout" name="horizontalLayout_3">
-       <property name="spacing">
-        <number>3</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
-        <number>0</number>
-       </property>
-       <item>
-        <widget class="TooltipButton" name="texts_block_label">
-         <property name="font">
-          <font>
-           <family>Crimson Text</family>
-           <pointsize>12</pointsize>
-          </font>
-         </property>
-         <property name="autoFillBackground">
-          <bool>false</bool>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">border-bottom: 3px dotted #fff;
-</string>
-         </property>
-         <property name="frameShape">
-          <enum>QFrame::NoFrame</enum>
-         </property>
-         <property name="text">
-          <string>Тексты</string>
-         </property>
-         <property name="alignment">
-          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer name="horizontalSpacer">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>40</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="SwitchButton" name="texts_block_switch" native="true">
-         <property name="minimumSize">
-          <size>
-           <width>110</width>
-           <height>0</height>
-          </size>
-         </property>
-         <property name="cursor">
-          <cursorShape>PointingHandCursor</cursorShape>
-         </property>
-         <property name="focusPolicy">
-          <enum>Qt::NoFocus</enum>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </widget>
-    </item>
-    <item>
-     <widget class="QWidget" name="b_graphics_block" native="true">
-      <layout class="QHBoxLayout" name="horizontalLayout_4">
-       <property name="spacing">
-        <number>3</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
-        <number>0</number>
-       </property>
-       <item>
-        <widget class="TooltipButton" name="graphics_block_label">
-         <property name="font">
-          <font>
-           <family>Crimson Text</family>
-           <pointsize>12</pointsize>
-          </font>
-         </property>
-         <property name="autoFillBackground">
-          <bool>false</bool>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">border-bottom: 3px dotted #fff;
-</string>
-         </property>
-         <property name="frameShape">
-          <enum>QFrame::NoFrame</enum>
-         </property>
-         <property name="text">
-          <string>Изображения</string>
-         </property>
-         <property name="alignment">
-          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer name="horizontalSpacer_2">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>40</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="SwitchButton" name="graphics_block_switch" native="true">
-         <property name="minimumSize">
-          <size>
-           <width>110</width>
-           <height>0</height>
-          </size>
-         </property>
-         <property name="cursor">
-          <cursorShape>PointingHandCursor</cursorShape>
-         </property>
-         <property name="focusPolicy">
-          <enum>Qt::NoFocus</enum>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </widget>
-    </item>
-    <item>
-     <widget class="QWidget" name="c_video_block" native="true">
-      <layout class="QHBoxLayout" name="horizontalLayout_5">
-       <property name="spacing">
-        <number>3</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
-        <number>0</number>
-       </property>
-       <item>
-        <widget class="TooltipButton" name="video_block_label">
-         <property name="font">
-          <font>
-           <family>Crimson Text</family>
-           <pointsize>12</pointsize>
-          </font>
-         </property>
-         <property name="autoFillBackground">
-          <bool>false</bool>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">border-bottom: 3px dotted #fff;
-</string>
-         </property>
-         <property name="frameShape">
-          <enum>QFrame::NoFrame</enum>
-         </property>
-         <property name="text">
-          <string>Видеоролики</string>
-         </property>
-         <property name="alignment">
-          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer name="horizontalSpacer_3">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>40</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="SwitchButton" name="video_block_switch" native="true">
-         <property name="minimumSize">
-          <size>
-           <width>110</width>
-           <height>0</height>
-          </size>
-         </property>
-         <property name="cursor">
-          <cursorShape>PointingHandCursor</cursorShape>
-         </property>
-         <property name="focusPolicy">
-          <enum>Qt::NoFocus</enum>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </widget>
-    </item>
-    <item>
-     <widget class="QWidget" name="d_audio_block" native="true">
-      <layout class="QHBoxLayout" name="horizontalLayout_6">
-       <property name="spacing">
-        <number>3</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
-        <number>0</number>
-       </property>
-       <item>
-        <widget class="TooltipButton" name="audio_block_label">
-         <property name="font">
-          <font>
-           <family>Crimson Text</family>
-           <pointsize>12</pointsize>
-          </font>
-         </property>
-         <property name="autoFillBackground">
-          <bool>false</bool>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">border-bottom: 3px dotted #fff;
-</string>
-         </property>
-         <property name="frameShape">
-          <enum>QFrame::NoFrame</enum>
-         </property>
-         <property name="text">
-          <string>Озвучка персонажей</string>
-         </property>
-         <property name="alignment">
-          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer name="horizontalSpacer_5">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>40</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="SwitchButton" name="audio_block_switch" native="true">
-         <property name="minimumSize">
-          <size>
-           <width>110</width>
-           <height>0</height>
-          </size>
-         </property>
-         <property name="cursor">
-          <cursorShape>PointingHandCursor</cursorShape>
-         </property>
-         <property name="focusPolicy">
-          <enum>Qt::NoFocus</enum>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </widget>
-    </item>
-    <item>
-     <widget class="QWidget" name="e_loadscreens_block" native="true">
-      <layout class="QHBoxLayout" name="horizontalLayout_7">
-       <property name="spacing">
-        <number>3</number>
-       </property>
-       <property name="topMargin">
-        <number>0</number>
-       </property>
-       <property name="rightMargin">
-        <number>0</number>
-       </property>
-       <property name="bottomMargin">
-        <number>0</number>
-       </property>
-       <item>
-        <widget class="TooltipButton" name="loadscreens_block_label">
-         <property name="font">
-          <font>
-           <family>Crimson Text</family>
-           <pointsize>12</pointsize>
-          </font>
-         </property>
-         <property name="autoFillBackground">
-          <bool>false</bool>
-         </property>
-         <property name="styleSheet">
-          <string notr="true">border-bottom: 3px dotted #fff;
-</string>
-         </property>
-         <property name="frameShape">
-          <enum>QFrame::NoFrame</enum>
-         </property>
-         <property name="text">
-          <string>Загрузочные экраны</string>
-         </property>
-         <property name="alignment">
-          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer name="horizontalSpacer_6">
-         <property name="orientation">
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>40</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <widget class="SwitchButton" name="loadscreens_block_switch" native="true">
-         <property name="minimumSize">
-          <size>
-           <width>110</width>
-           <height>0</height>
-          </size>
-         </property>
-         <property name="cursor">
-          <cursorShape>PointingHandCursor</cursorShape>
-         </property>
-         <property name="focusPolicy">
-          <enum>Qt::NoFocus</enum>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </widget>
-    </item>
    </layout>
   </widget>
   <zorder>news_label</zorder>
@@ -949,20 +336,21 @@ border-radius: 3px;</string>
    <container>1</container>
   </customwidget>
   <customwidget>
-   <class>SwitchButton</class>
+   <class>ProgressBar</class>
    <extends>QWidget</extends>
-   <header>widgets/switchbutton.h</header>
+   <header>widgets/progressbar.h</header>
    <container>1</container>
   </customwidget>
   <customwidget>
-   <class>TooltipButton</class>
-   <extends>QLabel</extends>
-   <header>widgets/tooltipbutton.h</header>
+   <class>GameSettings</class>
+   <extends>QWidget</extends>
+   <header>widgets/gamesettings.h</header>
+   <container>1</container>
   </customwidget>
   <customwidget>
-   <class>ProgressBar</class>
+   <class>TranslationComponents</class>
    <extends>QWidget</extends>
-   <header>widgets/progressbar.h</header>
+   <header>widgets/translationcomponents.h</header>
    <container>1</container>
   </customwidget>
  </customwidgets>

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

@@ -28,13 +28,6 @@ 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);
@@ -43,6 +36,7 @@ void TooltipButton::enterEvent(QEvent*) {
    animation->setEasingCurve(QEasingCurve::InBack);
    animation->start(QPropertyAnimation::DeleteWhenStopped);
    _tooltip_label->show();
+   _tooltip_label->raise();
 
    QPropertyAnimation *arrow_animation = new QPropertyAnimation(_tooltip_arrow_opacity_effect, "opacity");
    arrow_animation->setDuration(300);
@@ -51,6 +45,7 @@ void TooltipButton::enterEvent(QEvent*) {
    arrow_animation->setEasingCurve(QEasingCurve::InBack);
    arrow_animation->start(QPropertyAnimation::DeleteWhenStopped);
    _tooltip_label_arrow->show();
+   _tooltip_label_arrow->raise();
 }
 
 void TooltipButton::leaveEvent(QEvent*) {

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

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

+ 36 - 0
src/Legacy/widgets/translationcomponents.cpp

@@ -0,0 +1,36 @@
+#include "translationcomponents.h"
+#include "ui_translationcomponents.h"
+
+TranslationComponents::TranslationComponents(QWidget *parent) :
+    QWidget(parent),
+    ui(new Ui::TranslationComponents)
+{
+    ui->setupUi(this);
+    setAttribute(Qt::WA_StyledBackground, true);
+
+    ui->texts_block_label->setTooltipParentWidget(parentWidget());
+    ui->texts_block_label->raise();
+    ui->texts_block_label->setTooltipText("Перевод всех текстовых элементов в игре: названий, квестов, меню и т.д.");
+
+    ui->graphics_block_label->setTooltipParentWidget(parentWidget());
+    ui->graphics_block_label->raise();
+    ui->graphics_block_label->setTooltipText("Переведенные карты локаций и элементы графического интерфейса.");
+
+    ui->video_block_label->setTooltipParentWidget(parentWidget());
+    ui->video_block_label->raise();
+    ui->video_block_label->setTooltipText("Переведенные и озвученные видеоролики и кат-сцены.");
+
+    ui->audio_block_label->setTooltipParentWidget(parentWidget());
+    ui->audio_block_label->raise();
+    ui->audio_block_label->setTooltipText("Переведенные и озвученные реплики персонажей.");
+
+    ui->loadscreens_block_label->setTooltipParentWidget(parentWidget());
+    ui->loadscreens_block_label->raise();
+    ui->loadscreens_block_label->setTooltipText("Загрузочные экраны от команды Наследия");
+
+}
+
+TranslationComponents::~TranslationComponents()
+{
+    delete ui;
+}

+ 22 - 0
src/Legacy/widgets/translationcomponents.h

@@ -0,0 +1,22 @@
+#ifndef TRANSLATIONCOMPONENTS_H
+#define TRANSLATIONCOMPONENTS_H
+
+#include <QWidget>
+
+namespace Ui {
+class TranslationComponents;
+}
+
+class TranslationComponents : public QWidget
+{
+    Q_OBJECT
+
+public:
+    explicit TranslationComponents(QWidget *parent = nullptr);
+    ~TranslationComponents();
+
+private:
+    Ui::TranslationComponents *ui;
+};
+
+#endif // TRANSLATIONCOMPONENTS_H

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

@@ -0,0 +1,424 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>TranslationComponents</class>
+ <widget class="QWidget" name="TranslationComponents">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="sub_entry_3_title">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="font">
+      <font>
+       <family>EB Garamond</family>
+       <pointsize>11</pointsize>
+      </font>
+     </property>
+     <property name="text">
+      <string>● Компоненты перевода ●</string>
+     </property>
+     <property name="alignment">
+      <set>Qt::AlignCenter</set>
+     </property>
+     <property name="wordWrap">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="a_texts_block" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout_3">
+      <property name="spacing">
+       <number>3</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="TooltipButton" name="texts_block_label">
+        <property name="font">
+         <font>
+          <family>Crimson Text</family>
+          <pointsize>12</pointsize>
+         </font>
+        </property>
+        <property name="autoFillBackground">
+         <bool>false</bool>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">border-bottom: 3px dotted #fff;
+</string>
+        </property>
+        <property name="frameShape">
+         <enum>QFrame::NoFrame</enum>
+        </property>
+        <property name="text">
+         <string>Тексты</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="SwitchButton" name="texts_block_switch" native="true">
+        <property name="minimumSize">
+         <size>
+          <width>110</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="cursor">
+         <cursorShape>PointingHandCursor</cursorShape>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::NoFocus</enum>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="b_graphics_block" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout_4">
+      <property name="spacing">
+       <number>3</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="TooltipButton" name="graphics_block_label">
+        <property name="font">
+         <font>
+          <family>Crimson Text</family>
+          <pointsize>12</pointsize>
+         </font>
+        </property>
+        <property name="autoFillBackground">
+         <bool>false</bool>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">border-bottom: 3px dotted #fff;
+</string>
+        </property>
+        <property name="frameShape">
+         <enum>QFrame::NoFrame</enum>
+        </property>
+        <property name="text">
+         <string>Изображения</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="SwitchButton" name="graphics_block_switch" native="true">
+        <property name="minimumSize">
+         <size>
+          <width>110</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="cursor">
+         <cursorShape>PointingHandCursor</cursorShape>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::NoFocus</enum>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="c_video_block" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout_5">
+      <property name="spacing">
+       <number>3</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="TooltipButton" name="video_block_label">
+        <property name="font">
+         <font>
+          <family>Crimson Text</family>
+          <pointsize>12</pointsize>
+         </font>
+        </property>
+        <property name="autoFillBackground">
+         <bool>false</bool>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">border-bottom: 3px dotted #fff;
+</string>
+        </property>
+        <property name="frameShape">
+         <enum>QFrame::NoFrame</enum>
+        </property>
+        <property name="text">
+         <string>Видеоролики</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_3">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="SwitchButton" name="video_block_switch" native="true">
+        <property name="minimumSize">
+         <size>
+          <width>110</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="cursor">
+         <cursorShape>PointingHandCursor</cursorShape>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::NoFocus</enum>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="d_audio_block" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout_6">
+      <property name="spacing">
+       <number>3</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="TooltipButton" name="audio_block_label">
+        <property name="font">
+         <font>
+          <family>Crimson Text</family>
+          <pointsize>12</pointsize>
+         </font>
+        </property>
+        <property name="autoFillBackground">
+         <bool>false</bool>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">border-bottom: 3px dotted #fff;
+</string>
+        </property>
+        <property name="frameShape">
+         <enum>QFrame::NoFrame</enum>
+        </property>
+        <property name="text">
+         <string>Озвучка персонажей</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_5">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="SwitchButton" name="audio_block_switch" native="true">
+        <property name="minimumSize">
+         <size>
+          <width>110</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="cursor">
+         <cursorShape>PointingHandCursor</cursorShape>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::NoFocus</enum>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QWidget" name="e_loadscreens_block" native="true">
+     <layout class="QHBoxLayout" name="horizontalLayout_7">
+      <property name="spacing">
+       <number>3</number>
+      </property>
+      <property name="topMargin">
+       <number>0</number>
+      </property>
+      <property name="rightMargin">
+       <number>0</number>
+      </property>
+      <property name="bottomMargin">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="TooltipButton" name="loadscreens_block_label">
+        <property name="font">
+         <font>
+          <family>Crimson Text</family>
+          <pointsize>12</pointsize>
+         </font>
+        </property>
+        <property name="autoFillBackground">
+         <bool>false</bool>
+        </property>
+        <property name="styleSheet">
+         <string notr="true">border-bottom: 3px dotted #fff;
+</string>
+        </property>
+        <property name="frameShape">
+         <enum>QFrame::NoFrame</enum>
+        </property>
+        <property name="text">
+         <string>Загрузочные экраны</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_6">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="SwitchButton" name="loadscreens_block_switch" native="true">
+        <property name="minimumSize">
+         <size>
+          <width>110</width>
+          <height>0</height>
+         </size>
+        </property>
+        <property name="cursor">
+         <cursorShape>PointingHandCursor</cursorShape>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::NoFocus</enum>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>SwitchButton</class>
+   <extends>QWidget</extends>
+   <header>widgets/switchbutton.h</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>TooltipButton</class>
+   <extends>QLabel</extends>
+   <header>widgets/tooltipbutton.h</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>