Jelajahi Sumber

Merge pull request #4106 from IvanSavenko/launcher_first_install_improvements

Improvements to first run / welcome screen in Launcher
Ivan Savenko 1 tahun lalu
induk
melakukan
6451f3fd01

+ 43 - 55
launcher/firstLaunch/firstlaunch_moc.cpp

@@ -51,8 +51,15 @@ FirstLaunchView::FirstLaunchView(QWidget * parent)
 
 	Helper::enableScrollBySwiping(ui->listWidgetLanguage);
 
+#ifdef VCMI_MOBILE
+	// This directory is not accessible to players without rooting of their device
+	ui->lineEditDataSystem->hide();
+#endif
+
 #ifndef ENABLE_INNOEXTRACT
 	ui->pushButtonGogInstall->hide();
+	ui->labelDataGogTitle->hide();
+	ui->labelDataGogDescr->hide();
 #endif
 }
 
@@ -125,11 +132,6 @@ void FirstLaunchView::on_pushButtonGogInstall_clicked()
 	QTimer::singleShot(0, this, &FirstLaunchView::extractGogData);
 }
 
-void FirstLaunchView::on_comboBoxLanguage_currentIndexChanged(int index)
-{
-	forceHeroesLanguage(ui->comboBoxLanguage->itemData(index).toString());
-}
-
 void FirstLaunchView::enterSetup()
 {
 	Languages::fillLanguages(ui->listWidgetLanguage, false);
@@ -159,9 +161,6 @@ void FirstLaunchView::activateTabHeroesData()
 	ui->buttonTabHeroesData->setChecked(true);
 	ui->buttonTabModPreset->setChecked(false);
 
-#ifndef ENABLE_INNOEXTRACT
-	ui->labelDataHelp->hide();
-#endif
 	if(heroesDataUpdate())
 		return;
 
@@ -218,29 +217,29 @@ void FirstLaunchView::heroesDataMissing()
 	ui->lineEditDataSystem->setPalette(newPalette);
 	ui->lineEditDataUser->setPalette(newPalette);
 
-	ui->labelDataSearch->setVisible(true);
+	ui->labelDataManualTitle->setVisible(true);
+	ui->labelDataManualDescr->setVisible(true);
 	ui->pushButtonDataSearch->setVisible(true);
 
 #ifdef VCMI_ANDROID
 	// selecting directory with ACTION_OPEN_DOCUMENT_TREE is available only since API level 21
-	if (QtAndroid::androidSdkVersion() < 21)
-	{
-		ui->labelDataCopy->hide();
-		ui->pushButtonDataCopy->hide();
-	}
-	else
+	bool canUseDataCopy = QtAndroid::androidSdkVersion() >= 21;
+#else
+	bool canUseDataCopy = true;
 #endif
-	{
-		ui->labelDataCopy->show();
-		ui->pushButtonDataCopy->show();
-	}
 
-	ui->labelDataFound->setVisible(false);
-	ui->pushButtonDataNext->setEnabled(false);
+	ui->labelDataCopyTitle->setVisible(canUseDataCopy);
+	ui->labelDataCopyDescr->setVisible(canUseDataCopy);
+	ui->pushButtonDataCopy->setVisible(canUseDataCopy);
 
 #ifdef ENABLE_INNOEXTRACT
-	ui->labelDataHelp->setVisible(true);
+	ui->pushButtonGogInstall->setVisible(true);
+	ui->labelDataGogTitle->setVisible(true);
+	ui->labelDataGogDescr->setVisible(true);
 #endif
+
+	ui->labelDataFound->setVisible(false);
+	ui->pushButtonDataNext->setEnabled(false);
 }
 
 void FirstLaunchView::heroesDataDetected()
@@ -253,18 +252,21 @@ void FirstLaunchView::heroesDataDetected()
 	ui->pushButtonDataSearch->setVisible(false);
 	ui->pushButtonDataCopy->setVisible(false);
 
-	ui->labelDataSearch->setVisible(false);
-	ui->labelDataCopy->setVisible(false);
-	ui->pushButtonGogInstall->setVisible(false);
+	ui->labelDataManualTitle->setVisible(false);
+	ui->labelDataManualDescr->setVisible(false);
+	ui->labelDataCopyTitle->setVisible(false);
+	ui->labelDataCopyDescr->setVisible(false);
 
 #ifdef ENABLE_INNOEXTRACT
-		ui->labelDataHelp->setVisible(false);
+	ui->pushButtonGogInstall->setVisible(false);
+	ui->labelDataGogTitle->setVisible(false);
+	ui->labelDataGogDescr->setVisible(false);
 #endif
 
 	ui->labelDataFound->setVisible(true);
 	ui->pushButtonDataNext->setEnabled(true);
 
-	heroesLanguageUpdate();
+	CGeneralTextHandler::detectInstallParameters();
 }
 
 // Tab Heroes III Data
@@ -283,24 +285,6 @@ bool FirstLaunchView::heroesDataDetect()
 	return heroesDataFoundROE && heroesDataFoundSOD;
 }
 
-void FirstLaunchView::heroesLanguageUpdate()
-{
-	Languages::fillLanguages(ui->comboBoxLanguage, true);
-
-	QString language = Languages::getHeroesDataLanguage();
-	bool success = !language.isEmpty();
-
-	ui->labelDataFailure->setVisible(!success);
-	ui->labelDataSuccess->setVisible(success);
-}
-
-void FirstLaunchView::forceHeroesLanguage(const QString & language)
-{
-	Settings node = settings.write["general"]["gameDataLanguage"];
-
-	node->String() = language.toStdString();
-}
-
 QString FirstLaunchView::getHeroesInstallDir()
 {
 #ifdef VCMI_WINDOWS
@@ -490,14 +474,18 @@ void FirstLaunchView::modPresetUpdate()
 {
 	bool translationExists = !findTranslationModName().isEmpty();
 
-	ui->labelPresetLanguage->setVisible(translationExists);
 	ui->labelPresetLanguageDescr->setVisible(translationExists);
-	ui->checkBoxPresetLanguage->setVisible(translationExists);
+	ui->buttonPresetLanguage->setVisible(translationExists);
+
+	ui->buttonPresetLanguage->setVisible(checkCanInstallTranslation());
+	ui->buttonPresetExtras->setVisible(checkCanInstallExtras());
+	ui->buttonPresetHota->setVisible(checkCanInstallHota());
+	ui->buttonPresetWog->setVisible(checkCanInstallWog());
 
-	ui->checkBoxPresetLanguage->setEnabled(checkCanInstallTranslation());
-	ui->checkBoxPresetExtras->setEnabled(checkCanInstallExtras());
-	ui->checkBoxPresetHota->setEnabled(checkCanInstallHota());
-	ui->checkBoxPresetWog->setEnabled(checkCanInstallWog());
+	ui->labelPresetLanguageDescr->setVisible(checkCanInstallTranslation());
+	ui->labelPresetExtrasDescr->setVisible(checkCanInstallExtras());
+	ui->labelPresetHotaDescr->setVisible(checkCanInstallHota());
+	ui->labelPresetWogDescr->setVisible(checkCanInstallWog());
 
 	// we can't install anything - either repository checkout is off or all recommended mods are already installed
 	if (!checkCanInstallTranslation() && !checkCanInstallExtras() && !checkCanInstallHota() && !checkCanInstallWog())
@@ -568,16 +556,16 @@ void FirstLaunchView::on_pushButtonPresetNext_clicked()
 {
 	QStringList modsToInstall;
 
-	if (ui->checkBoxPresetLanguage->isChecked() && checkCanInstallTranslation())
+	if (ui->buttonPresetLanguage->isChecked() && checkCanInstallTranslation())
 		modsToInstall.push_back(findTranslationModName());
 
-	if (ui->checkBoxPresetExtras->isChecked() && checkCanInstallExtras())
+	if (ui->buttonPresetExtras->isChecked() && checkCanInstallExtras())
 		modsToInstall.push_back("vcmi-extras");
 
-	if (ui->checkBoxPresetWog->isChecked() && checkCanInstallWog())
+	if (ui->buttonPresetWog->isChecked() && checkCanInstallWog())
 		modsToInstall.push_back("wake-of-gods");
 
-	if (ui->checkBoxPresetHota->isChecked() && checkCanInstallHota())
+	if (ui->buttonPresetHota->isChecked() && checkCanInstallHota())
 		modsToInstall.push_back("hota");
 
 	exitSetup();

+ 0 - 5
launcher/firstLaunch/firstlaunch_moc.h

@@ -40,9 +40,6 @@ class FirstLaunchView : public QWidget
 	void heroesDataMissing();
 	void heroesDataDetected();
 
-	void heroesLanguageUpdate();
-	void forceHeroesLanguage(const QString & language);
-
 	QString getHeroesInstallDir();
 	void extractGogData();
 	void copyHeroesData(const QString & path = {}, bool move = false);
@@ -84,8 +81,6 @@ private slots:
 
 	void on_pushButtonGogInstall_clicked();
 
-	void on_comboBoxLanguage_currentIndexChanged(int index);
-
 	void on_pushButtonPresetBack_clicked();
 
 	void on_pushButtonPresetNext_clicked();

+ 224 - 229
launcher/firstLaunch/firstlaunch_moc.ui

@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>745</width>
-    <height>397</height>
+    <height>380</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -96,7 +96,7 @@
    <item>
     <widget class="QStackedWidget" name="installerTabs">
      <property name="currentIndex">
-      <number>2</number>
+      <number>1</number>
      </property>
      <widget class="QWidget" name="pageLanguageSelect">
       <layout class="QGridLayout" name="gridLayout_3">
@@ -119,7 +119,6 @@
         <widget class="QLabel" name="labelLanguageTitle">
          <property name="font">
           <font>
-           <weight>75</weight>
            <bold>true</bold>
           </font>
          </property>
@@ -249,7 +248,6 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
         <widget class="QLabel" name="labelDataTitle">
          <property name="font">
           <font>
-           <weight>75</weight>
            <bold>true</bold>
           </font>
          </property>
@@ -272,11 +270,61 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
         </spacer>
        </item>
        <item>
-        <layout class="QGridLayout" name="gridLayout" columnstretch="1,1,1,1">
+        <layout class="QGridLayout" name="gridLayout" columnstretch="1,2,1">
          <property name="spacing">
           <number>6</number>
          </property>
-         <item row="4" column="3">
+         <item row="2" column="2">
+          <widget class="QPushButton" name="pushButtonDataCopy">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+             <horstretch>25</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>Copy existing data</string>
+           </property>
+          </widget>
+         </item>
+         <item row="4" column="0" colspan="2">
+          <widget class="QLabel" name="labelDataGogTitle">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>50</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <bold>true</bold>
+            </font>
+           </property>
+           <property name="text">
+            <string>Use offline installer from gog.com</string>
+           </property>
+          </widget>
+         </item>
+         <item row="7" column="0" colspan="3">
+          <widget class="QLabel" name="labelDataManualDescr">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>100</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>You can manually copy directories Maps, Data and Mp3 from the original game directory to VCMI data directory that you can see on top of this page</string>
+           </property>
+           <property name="alignment">
+            <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+           </property>
+           <property name="wordWrap">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="4" column="2">
           <widget class="QPushButton" name="pushButtonGogInstall">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@@ -289,35 +337,25 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
            </property>
           </widget>
          </item>
-         <item row="4" column="3">
-          <widget class="QProgressBar" name="progressBarGog">
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="maximum">
-             <number>100</number>
-            </property>
-            <property name="value">
-             <number>0</number>
-            </property>
-            <property name="textVisible">
-             <bool>true</bool>
-            </property>
-            <property name="invertedAppearance">
-             <bool>false</bool>
-            </property>
-            <property name="format">
-             <string>Installing... %p%</string>
-            </property>
-            <property name="visible">
-              <bool>false</bool>
-            </property>
-           </widget>
-         </item>
-         <item row="2" column="3">
+         <item row="6" column="0" colspan="2">
+          <widget class="QLabel" name="labelDataManualTitle">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>50</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <bold>true</bold>
+            </font>
+           </property>
+           <property name="text">
+            <string>Manual Installation</string>
+           </property>
+          </widget>
+         </item>
+         <item row="6" column="2">
           <widget class="QPushButton" name="pushButtonDataSearch">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@@ -330,23 +368,35 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
            </property>
           </widget>
          </item>
-         <item row="1" column="1" colspan="3">
-          <widget class="QLineEdit" name="lineEditDataSystem">
-           <property name="enabled">
-            <bool>true</bool>
-           </property>
+         <item row="8" column="2">
+          <widget class="QProgressBar" name="progressBarGog">
            <property name="sizePolicy">
-            <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-             <horstretch>50</horstretch>
+            <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
+             <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
-           <property name="readOnly">
+           <property name="visible">
+            <bool>false</bool>
+           </property>
+           <property name="maximum">
+            <number>100</number>
+           </property>
+           <property name="value">
+            <number>0</number>
+           </property>
+           <property name="textVisible">
             <bool>true</bool>
            </property>
+           <property name="invertedAppearance">
+            <bool>false</bool>
+           </property>
+           <property name="format">
+            <string>Installing... %p%</string>
+           </property>
           </widget>
          </item>
-         <item row="0" column="1" colspan="3">
+         <item row="0" column="1" colspan="2">
           <widget class="QLineEdit" name="lineEditDataUser">
            <property name="enabled">
             <bool>true</bool>
@@ -362,8 +412,8 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
            </property>
           </widget>
          </item>
-         <item row="4" column="0" colspan="3">
-          <widget class="QLabel" name="labelDataHelp">
+         <item row="3" column="0" colspan="3">
+          <widget class="QLabel" name="labelDataCopyDescr">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
              <horstretch>100</horstretch>
@@ -371,23 +421,10 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
             </sizepolicy>
            </property>
            <property name="text">
-            <string>If you don't have a copy of Heroes III installed, VCMI can import Heroes III data using offline installer from gog.com</string>
-           </property>
-           <property name="wordWrap">
-            <bool>true</bool>
-           </property>
-          </widget>
-         </item>
-         <item row="2" column="0" colspan="3">
-          <widget class="QLabel" name="labelDataSearch">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-             <horstretch>100</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
+            <string>If you already have Heroes III files on your device, you can select this directory and VCMI will copy the existing data automatically.</string>
            </property>
-           <property name="text">
-            <string>To run VCMI, Heroes III data files need to be present in one of the specified locations. Please copy the Heroes III data to one of these directories.</string>
+           <property name="alignment">
+            <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
            </property>
            <property name="wordWrap">
             <bool>true</bool>
@@ -404,7 +441,6 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
            </property>
            <property name="font">
             <font>
-             <weight>75</weight>
              <bold>true</bold>
             </font>
            </property>
@@ -413,36 +449,41 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
            </property>
           </widget>
          </item>
-         <item row="3" column="0" colspan="3">
-          <widget class="QLabel" name="labelDataCopy">
+         <item row="2" column="0" colspan="2">
+          <widget class="QLabel" name="labelDataCopyTitle">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-             <horstretch>100</horstretch>
+             <horstretch>50</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
-           <property name="text">
-            <string>Alternatively, you can provide the directory where Heroes III data is installed and VCMI will copy the existing data automatically.</string>
+           <property name="font">
+            <font>
+             <bold>true</bold>
+            </font>
            </property>
-           <property name="wordWrap">
-            <bool>true</bool>
+           <property name="text">
+            <string>Copy existing files</string>
            </property>
           </widget>
          </item>
-         <item row="3" column="3">
-          <widget class="QPushButton" name="pushButtonDataCopy">
+         <item row="1" column="1" colspan="2">
+          <widget class="QLineEdit" name="lineEditDataSystem">
+           <property name="enabled">
+            <bool>true</bool>
+           </property>
            <property name="sizePolicy">
-            <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-             <horstretch>25</horstretch>
+            <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+             <horstretch>50</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
-           <property name="text">
-            <string>Copy existing data</string>
+           <property name="readOnly">
+            <bool>true</bool>
            </property>
           </widget>
          </item>
-         <item row="5" column="0" colspan="4">
+         <item row="9" column="0" colspan="3">
           <widget class="QLabel" name="labelDataFound">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
@@ -458,66 +499,33 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
            </property>
           </widget>
          </item>
-        </layout>
-       </item>
-       <item>
-        <spacer name="verticalSpacer_4">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>0</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <layout class="QGridLayout" name="gridLayout_2" columnstretch="2,1">
-         <property name="verticalSpacing">
-          <number>6</number>
-         </property>
-         <item row="1" column="0" colspan="2">
-          <widget class="QLabel" name="labelDataSuccess">
+         <item row="5" column="0" colspan="3">
+          <widget class="QLabel" name="labelDataGogDescr">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>100</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
            <property name="text">
-            <string>Your Heroes III language has been successfully detected.</string>
+            <string>If you own Heroes III on gog.com you can download backup offline installer from gog.com, and VCMI will import Heroes III data using offline installer. 
+Offline installer consists of two parts, .exe and .bin. Make sure you download both of them.</string>
            </property>
-           <property name="wordWrap">
-            <bool>true</bool>
+           <property name="textFormat">
+            <enum>Qt::PlainText</enum>
            </property>
-          </widget>
-         </item>
-         <item row="2" column="0" colspan="2">
-          <widget class="QLabel" name="labelDataFailure">
-           <property name="text">
-            <string>The automatic detection of the Heroes III language has failed. Please select the language of your Heroes III manually</string>
+           <property name="alignment">
+            <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
            </property>
            <property name="wordWrap">
             <bool>true</bool>
            </property>
           </widget>
          </item>
-         <item row="0" column="1">
-          <widget class="QComboBox" name="comboBoxLanguage"/>
-         </item>
-         <item row="0" column="0">
-          <widget class="QLabel" name="labelDataLanguage">
-           <property name="font">
-            <font>
-             <weight>75</weight>
-             <bold>true</bold>
-            </font>
-           </property>
-           <property name="text">
-            <string>Heroes III language</string>
-           </property>
-          </widget>
-         </item>
         </layout>
        </item>
        <item>
-        <spacer name="verticalSpacer_3">
+        <spacer name="verticalSpacer_4">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
          </property>
@@ -586,7 +594,6 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
         <widget class="QLabel" name="labelPresetTitle">
          <property name="font">
           <font>
-           <weight>75</weight>
            <bold>true</bold>
           </font>
          </property>
@@ -609,171 +616,159 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
         </spacer>
        </item>
        <item>
-        <layout class="QGridLayout" name="gridLayout_4" columnstretch="1,10,25">
-         <item row="2" column="0">
-          <widget class="QCheckBox" name="checkBoxPresetLanguage">
+        <layout class="QGridLayout" name="gridLayout_4" columnstretch="1,0">
+         <item row="1" column="1">
+          <widget class="QLabel" name="labelPresetLanguageDescr">
            <property name="sizePolicy">
-            <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
-             <horstretch>0</horstretch>
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>100</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="text">
-            <string/>
+            <string>Install a translation of Heroes III in your preferred language</string>
            </property>
-           <property name="checked">
+           <property name="wordWrap">
             <bool>true</bool>
            </property>
           </widget>
          </item>
-         <item row="4" column="1">
-          <widget class="QLabel" name="labelPresetHota">
+         <item row="1" column="0">
+          <widget class="QToolButton" name="buttonPresetLanguage">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-             <horstretch>100</horstretch>
+             <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="font">
             <font>
-             <weight>75</weight>
              <bold>true</bold>
             </font>
            </property>
            <property name="text">
-            <string>Horn of the Abyss</string>
+            <string>Heroes III Translation</string>
            </property>
-           <property name="wordWrap">
-            <bool>false</bool>
+           <property name="icon">
+            <iconset>
+             <normaloff>:icons/mod-disabled.png</normaloff>
+             <normalon>:icons/mod-enabled.png</normalon>:icons/mod-disabled.png</iconset>
            </property>
-          </widget>
-         </item>
-         <item row="2" column="1">
-          <widget class="QLabel" name="labelPresetLanguage">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-             <horstretch>100</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
+           <property name="checkable">
+            <bool>true</bool>
            </property>
-           <property name="font">
-            <font>
-             <weight>75</weight>
-             <bold>true</bold>
-            </font>
+           <property name="checked">
+            <bool>true</bool>
            </property>
-           <property name="text">
-            <string>Heroes III Translation</string>
+           <property name="toolButtonStyle">
+            <enum>Qt::ToolButtonTextBesideIcon</enum>
            </property>
-           <property name="wordWrap">
+           <property name="autoRaise">
             <bool>false</bool>
            </property>
           </widget>
          </item>
-         <item row="3" column="0">
-          <widget class="QCheckBox" name="checkBoxPresetExtras">
+         <item row="3" column="1">
+          <widget class="QLabel" name="labelPresetHotaDescr">
            <property name="sizePolicy">
-            <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
-             <horstretch>0</horstretch>
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>100</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="text">
-            <string/>
+            <string>Install compatible version of &quot;Horn of the Abyss&quot;, a fan-made Heroes III expansion ported by the VCMI team</string>
            </property>
-           <property name="checked">
+           <property name="wordWrap">
             <bool>true</bool>
            </property>
           </widget>
          </item>
-         <item row="4" column="0">
-          <widget class="QCheckBox" name="checkBoxPresetHota">
+         <item row="0" column="0" colspan="2">
+          <widget class="QLabel" name="labelPresetDescription">
            <property name="sizePolicy">
-            <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
-             <horstretch>0</horstretch>
+            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+             <horstretch>100</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="text">
-            <string/>
-           </property>
-          </widget>
-         </item>
-         <item row="5" column="0">
-          <widget class="QCheckBox" name="checkBoxPresetWog">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
-             <horstretch>0</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
+            <string>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</string>
            </property>
-           <property name="text">
-            <string/>
+           <property name="wordWrap">
+            <bool>true</bool>
            </property>
           </widget>
          </item>
-         <item row="3" column="1">
-          <widget class="QLabel" name="labelPresetExtras">
+         <item row="3" column="0">
+          <widget class="QToolButton" name="buttonPresetHota">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-             <horstretch>100</horstretch>
+             <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="font">
             <font>
-             <weight>75</weight>
              <bold>true</bold>
             </font>
            </property>
            <property name="text">
-            <string>Interface Improvements</string>
+            <string>Horn of the Abyss</string>
            </property>
-           <property name="wordWrap">
+           <property name="icon">
+            <iconset>
+             <normaloff>:icons/mod-disabled.png</normaloff>
+             <normalon>:icons/mod-enabled.png</normalon>:icons/mod-disabled.png</iconset>
+           </property>
+           <property name="checkable">
+            <bool>true</bool>
+           </property>
+           <property name="toolButtonStyle">
+            <enum>Qt::ToolButtonTextBesideIcon</enum>
+           </property>
+           <property name="autoRaise">
             <bool>false</bool>
            </property>
           </widget>
          </item>
-         <item row="5" column="1">
-          <widget class="QLabel" name="labelPresetWog">
+         <item row="2" column="0">
+          <widget class="QToolButton" name="buttonPresetExtras">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-             <horstretch>100</horstretch>
+             <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
            <property name="font">
             <font>
-             <weight>75</weight>
              <bold>true</bold>
             </font>
            </property>
            <property name="text">
-            <string>In The Wake of Gods</string>
-           </property>
-           <property name="wordWrap">
-            <bool>false</bool>
+            <string>Interface Improvements</string>
            </property>
-          </widget>
-         </item>
-         <item row="2" column="2">
-          <widget class="QLabel" name="labelPresetLanguageDescr">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-             <horstretch>100</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
+           <property name="icon">
+            <iconset>
+             <normaloff>:icons/mod-disabled.png</normaloff>
+             <normalon>:icons/mod-enabled.png</normalon>:icons/mod-disabled.png</iconset>
            </property>
-           <property name="text">
-            <string>Install a translation of Heroes III in your preferred language</string>
+           <property name="checkable">
+            <bool>true</bool>
            </property>
-           <property name="wordWrap">
+           <property name="checked">
             <bool>true</bool>
            </property>
+           <property name="toolButtonStyle">
+            <enum>Qt::ToolButtonTextBesideIcon</enum>
+           </property>
+           <property name="autoRaise">
+            <bool>false</bool>
+           </property>
           </widget>
          </item>
-         <item row="0" column="0" colspan="3">
-          <widget class="QLabel" name="labelPresetDescription">
+         <item row="4" column="1">
+          <widget class="QLabel" name="labelPresetWogDescr">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
              <horstretch>100</horstretch>
@@ -781,14 +776,14 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
             </sizepolicy>
            </property>
            <property name="text">
-            <string>Optionally, you can install additional mods either now, or at any point later, using the VCMI Launcher</string>
+            <string>Install compatible version of &quot;In The Wake of Gods&quot;, a fan-made Heroes III expansion</string>
            </property>
            <property name="wordWrap">
             <bool>true</bool>
            </property>
           </widget>
          </item>
-         <item row="3" column="2">
+         <item row="2" column="1">
           <widget class="QLabel" name="labelPresetExtrasDescr">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
@@ -804,35 +799,35 @@ Heroes® of Might and Magic® III HD is currently not supported!</string>
            </property>
           </widget>
          </item>
-         <item row="4" column="2">
-          <widget class="QLabel" name="labelPresetHotaDescr">
+         <item row="4" column="0">
+          <widget class="QToolButton" name="buttonPresetWog">
            <property name="sizePolicy">
             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-             <horstretch>100</horstretch>
+             <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
+           <property name="font">
+            <font>
+             <bold>true</bold>
+            </font>
+           </property>
            <property name="text">
-            <string>Install compatible version of &quot;Horn of the Abyss&quot;, a fan-made Heroes III expansion ported by the VCMI team</string>
+            <string>In The Wake of Gods</string>
            </property>
-           <property name="wordWrap">
-            <bool>true</bool>
+           <property name="icon">
+            <iconset>
+             <normaloff>:/icons/mod-disabled.png</normaloff>
+             <normalon>:icons/mod-enabled.png</normalon>:icons/mod-disabled.png</iconset>
            </property>
-          </widget>
-         </item>
-         <item row="5" column="2">
-          <widget class="QLabel" name="labelPresetWogDecsr">
-           <property name="sizePolicy">
-            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-             <horstretch>100</horstretch>
-             <verstretch>0</verstretch>
-            </sizepolicy>
+           <property name="checkable">
+            <bool>true</bool>
            </property>
-           <property name="text">
-            <string>Install compatible version of &quot;In The Wake of Gods&quot;, a fan-made Heroes III expansion</string>
+           <property name="toolButtonStyle">
+            <enum>Qt::ToolButtonTextBesideIcon</enum>
            </property>
-           <property name="wordWrap">
-            <bool>true</bool>
+           <property name="autoRaise">
+            <bool>false</bool>
            </property>
           </widget>
          </item>