Browse Source

Miscellaneous improvements for Launcher UI:
- Implemented "show intro" toggle in settings
- Install/Update/Enable buttons are now visible even when mod info is hidden
- Fixed behaviour of show mod info switch, added more obvious button to enable it
- Removed no longer used "Enable mods on install" switch
- Added buttons to open data, user data and temporary directories

Ivan Savenko 11 years ago
parent
commit
00cda400a1

+ 1 - 1
client/CMT.cpp

@@ -413,7 +413,7 @@ int main(int argc, char** argv)
 
 
 	if(!gNoGUI )
 	if(!gNoGUI )
 	{
 	{
-		if(!vm.count("battle") && !vm.count("nointro"))
+		if(!vm.count("battle") && !vm.count("nointro") && settings["video"]["showIntro"].Bool())
 			playIntro();
 			playIntro();
 		SDL_FillRect(screen,nullptr,0);
 		SDL_FillRect(screen,nullptr,0);
 	}
 	}

+ 5 - 1
config/schemas/settings.json

@@ -49,7 +49,7 @@
 			"type" : "object",
 			"type" : "object",
 			"additionalProperties" : false,
 			"additionalProperties" : false,
 			"default": {},
 			"default": {},
-			"required" : [ "screenRes", "bitsPerPixel", "fullscreen", "spellbookAnimation","driver"],
+			"required" : [ "screenRes", "bitsPerPixel", "fullscreen", "spellbookAnimation","driver", "showIntro" ],
 			"properties" : {
 			"properties" : {
 				"screenRes" : {
 				"screenRes" : {
 					"type" : "object",
 					"type" : "object",
@@ -69,6 +69,10 @@
 					"type" : "boolean",
 					"type" : "boolean",
 					"default" : false
 					"default" : false
 				},
 				},
+				"showIntro" : {
+					"type" : "boolean",
+					"default" : true
+				},
 				"spellbookAnimation" :  {
 				"spellbookAnimation" :  {
 					"type" : "boolean",
 					"type" : "boolean",
 					"default" : true
 					"default" : true

+ 20 - 2
launcher/modManager/cmodlistview_moc.cpp

@@ -69,8 +69,8 @@ CModListView::CModListView(QWidget *parent) :
 
 
 	ui->progressWidget->setVisible(false);
 	ui->progressWidget->setVisible(false);
 	dlManager = nullptr;
 	dlManager = nullptr;
+	disableModInfo();
 	loadRepositories();
 	loadRepositories();
-	hideModInfo();
 }
 }
 
 
 void CModListView::loadRepositories()
 void CModListView::loadRepositories()
@@ -105,8 +105,10 @@ void CModListView::showEvent(QShowEvent * event)
 
 
 void CModListView::showModInfo()
 void CModListView::showModInfo()
 {
 {
+	enableModInfo();
 	ui->modInfoWidget->show();
 	ui->modInfoWidget->show();
 	ui->hideModInfoButton->setArrowType(Qt::RightArrow);
 	ui->hideModInfoButton->setArrowType(Qt::RightArrow);
+	ui->showInfoButton->setVisible(false);
 	loadScreenshots();
 	loadScreenshots();
 }
 }
 
 
@@ -114,6 +116,8 @@ void CModListView::hideModInfo()
 {
 {
 	ui->modInfoWidget->hide();
 	ui->modInfoWidget->hide();
 	ui->hideModInfoButton->setArrowType(Qt::LeftArrow);
 	ui->hideModInfoButton->setArrowType(Qt::LeftArrow);
+	ui->hideModInfoButton->setEnabled(true);
+	ui->showInfoButton->setVisible(true);
 }
 }
 
 
 static QString replaceIfNotEmpty(QVariant value, QString pattern)
 static QString replaceIfNotEmpty(QVariant value, QString pattern)
@@ -223,14 +227,21 @@ QString CModListView::genModInfoText(CModEntry &mod)
 
 
 void CModListView::enableModInfo()
 void CModListView::enableModInfo()
 {
 {
-	showModInfo();
 	ui->hideModInfoButton->setEnabled(true);
 	ui->hideModInfoButton->setEnabled(true);
+	ui->showInfoButton->setVisible(true);
 }
 }
 
 
 void CModListView::disableModInfo()
 void CModListView::disableModInfo()
 {
 {
 	hideModInfo();
 	hideModInfo();
 	ui->hideModInfoButton->setEnabled(false);
 	ui->hideModInfoButton->setEnabled(false);
+	ui->showInfoButton->setVisible(false);
+
+	ui->disableButton->setVisible(false);
+	ui->enableButton->setVisible(false);
+	ui->installButton->setVisible(false);
+	ui->uninstallButton->setVisible(false);
+	ui->updateButton->setVisible(false);
 }
 }
 
 
 void CModListView::dataChanged(const QModelIndex & topleft, const QModelIndex & bottomRight)
 void CModListView::dataChanged(const QModelIndex & topleft, const QModelIndex & bottomRight)
@@ -255,6 +266,8 @@ void CModListView::selectMod(const QModelIndex & index)
 		bool hasBlockingMods = !findBlockingMods(index.data(ModRoles::ModNameRole).toString()).empty();
 		bool hasBlockingMods = !findBlockingMods(index.data(ModRoles::ModNameRole).toString()).empty();
 		bool hasDependentMods = !findDependentMods(index.data(ModRoles::ModNameRole).toString(), true).empty();
 		bool hasDependentMods = !findDependentMods(index.data(ModRoles::ModNameRole).toString(), true).empty();
 
 
+		ui->hideModInfoButton->setEnabled(true);
+		ui->showInfoButton->setVisible(!ui->modInfoWidget->isVisible());
 		ui->disableButton->setVisible(mod.isEnabled());
 		ui->disableButton->setVisible(mod.isEnabled());
 		ui->enableButton->setVisible(mod.isDisabled());
 		ui->enableButton->setVisible(mod.isDisabled());
 		ui->installButton->setVisible(mod.isAvailable() && !mod.getName().contains('.'));
 		ui->installButton->setVisible(mod.isAvailable() && !mod.getName().contains('.'));
@@ -677,3 +690,8 @@ void CModListView::on_screenshotsList_clicked(const QModelIndex &index)
 		ImageViewer::showPixmap(pixmap, this);
 		ImageViewer::showPixmap(pixmap, this);
 	}
 	}
 }
 }
+
+void CModListView::on_showInfoButton_clicked()
+{
+	showModInfo();
+}

+ 2 - 0
launcher/modManager/cmodlistview_moc.h

@@ -97,6 +97,8 @@ private slots:
 
 
 	void on_screenshotsList_clicked(const QModelIndex &index);
 	void on_screenshotsList_clicked(const QModelIndex &index);
 
 
+	void on_showInfoButton_clicked();
+
 private:
 private:
 	Ui::CModListView *ui;
 	Ui::CModListView *ui;
 };
 };

+ 183 - 147
launcher/modManager/cmodlistview_moc.ui

@@ -26,6 +26,9 @@
    <property name="bottomMargin">
    <property name="bottomMargin">
     <number>0</number>
     <number>0</number>
    </property>
    </property>
+   <property name="verticalSpacing">
+    <number>3</number>
+   </property>
    <item row="0" column="0">
    <item row="0" column="0">
     <layout class="QGridLayout" name="gridLayout_2">
     <layout class="QGridLayout" name="gridLayout_2">
      <property name="spacing">
      <property name="spacing">
@@ -166,7 +169,7 @@
    <item row="0" column="2">
    <item row="0" column="2">
     <widget class="QWidget" name="modInfoWidget" native="true">
     <widget class="QWidget" name="modInfoWidget" native="true">
      <property name="sizePolicy">
      <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
        <horstretch>0</horstretch>
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
       </sizepolicy>
@@ -202,147 +205,6 @@
       <property name="bottomMargin">
       <property name="bottomMargin">
        <number>0</number>
        <number>0</number>
       </property>
       </property>
-      <item row="1" column="4">
-       <widget class="QPushButton" name="uninstallButton">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="minimumSize">
-         <size>
-          <width>51</width>
-          <height>0</height>
-         </size>
-        </property>
-        <property name="maximumSize">
-         <size>
-          <width>100</width>
-          <height>16777215</height>
-         </size>
-        </property>
-        <property name="text">
-         <string>Uninstall</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="2">
-       <widget class="QPushButton" name="disableButton">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="minimumSize">
-         <size>
-          <width>51</width>
-          <height>0</height>
-         </size>
-        </property>
-        <property name="maximumSize">
-         <size>
-          <width>100</width>
-          <height>16777215</height>
-         </size>
-        </property>
-        <property name="text">
-         <string>Disable</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="3">
-       <widget class="QPushButton" name="updateButton">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="minimumSize">
-         <size>
-          <width>51</width>
-          <height>0</height>
-         </size>
-        </property>
-        <property name="maximumSize">
-         <size>
-          <width>100</width>
-          <height>16777215</height>
-         </size>
-        </property>
-        <property name="text">
-         <string>Update</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="0">
-       <spacer name="modButtonSpacer">
-        <property name="orientation">
-         <enum>Qt::Horizontal</enum>
-        </property>
-        <property name="sizeType">
-         <enum>QSizePolicy::MinimumExpanding</enum>
-        </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>0</width>
-          <height>20</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item row="1" column="5">
-       <widget class="QPushButton" name="installButton">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="minimumSize">
-         <size>
-          <width>51</width>
-          <height>0</height>
-         </size>
-        </property>
-        <property name="maximumSize">
-         <size>
-          <width>100</width>
-          <height>16777215</height>
-         </size>
-        </property>
-        <property name="text">
-         <string>Install</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="1">
-       <widget class="QPushButton" name="enableButton">
-        <property name="sizePolicy">
-         <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="minimumSize">
-         <size>
-          <width>51</width>
-          <height>0</height>
-         </size>
-        </property>
-        <property name="maximumSize">
-         <size>
-          <width>100</width>
-          <height>16777215</height>
-         </size>
-        </property>
-        <property name="text">
-         <string>Enable</string>
-        </property>
-       </widget>
-      </item>
       <item row="0" column="0" colspan="6">
       <item row="0" column="0" colspan="6">
        <widget class="QTabWidget" name="tabWidget">
        <widget class="QTabWidget" name="tabWidget">
         <property name="currentIndex">
         <property name="currentIndex">
@@ -464,6 +326,179 @@ p, li { white-space: pre-wrap; }
      </layout>
      </layout>
     </widget>
     </widget>
    </item>
    </item>
+   <item row="2" column="0" colspan="3">
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
+     <property name="spacing">
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QPushButton" name="showInfoButton">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>51</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>100</width>
+         <height>16777215</height>
+        </size>
+       </property>
+       <property name="text">
+        <string>Show details</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="modButtonSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::MinimumExpanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>0</width>
+         <height>0</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="enableButton">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>51</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>100</width>
+         <height>16777215</height>
+        </size>
+       </property>
+       <property name="text">
+        <string>Enable</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="disableButton">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>51</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>100</width>
+         <height>16777215</height>
+        </size>
+       </property>
+       <property name="text">
+        <string>Disable</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="updateButton">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>51</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>100</width>
+         <height>16777215</height>
+        </size>
+       </property>
+       <property name="text">
+        <string>Update</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="uninstallButton">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>51</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>100</width>
+         <height>16777215</height>
+        </size>
+       </property>
+       <property name="text">
+        <string>Uninstall</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="installButton">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>51</width>
+         <height>0</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>100</width>
+         <height>16777215</height>
+        </size>
+       </property>
+       <property name="text">
+        <string>Install</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
    <item row="1" column="0" colspan="3">
    <item row="1" column="0" colspan="3">
     <widget class="QWidget" name="progressWidget" native="true">
     <widget class="QWidget" name="progressWidget" native="true">
      <property name="enabled">
      <property name="enabled">
@@ -485,6 +520,12 @@ p, li { white-space: pre-wrap; }
       <property name="leftMargin">
       <property name="leftMargin">
        <number>9</number>
        <number>9</number>
       </property>
       </property>
+      <property name="topMargin">
+       <number>6</number>
+      </property>
+      <property name="bottomMargin">
+       <number>6</number>
+      </property>
       <item>
       <item>
        <widget class="QProgressBar" name="progressBar">
        <widget class="QProgressBar" name="progressBar">
         <property name="sizePolicy">
         <property name="sizePolicy">
@@ -533,11 +574,6 @@ p, li { white-space: pre-wrap; }
   <tabstop>comboBox</tabstop>
   <tabstop>comboBox</tabstop>
   <tabstop>allModsView</tabstop>
   <tabstop>allModsView</tabstop>
   <tabstop>hideModInfoButton</tabstop>
   <tabstop>hideModInfoButton</tabstop>
-  <tabstop>enableButton</tabstop>
-  <tabstop>disableButton</tabstop>
-  <tabstop>updateButton</tabstop>
-  <tabstop>uninstallButton</tabstop>
-  <tabstop>installButton</tabstop>
  </tabstops>
  </tabstops>
  <resources/>
  <resources/>
  <connections/>
  <connections/>

+ 31 - 12
launcher/settingsView/csettingsview_moc.cpp

@@ -2,6 +2,8 @@
 #include "csettingsview_moc.h"
 #include "csettingsview_moc.h"
 #include "ui_csettingsview_moc.h"
 #include "ui_csettingsview_moc.h"
 
 
+#include <QFileInfo>
+
 #include "../../lib/CConfigHandler.h"
 #include "../../lib/CConfigHandler.h"
 #include "../../lib/VCMIDirs.h"
 #include "../../lib/VCMIDirs.h"
 
 
@@ -27,6 +29,7 @@ void CSettingsView::loadSettings()
 
 
 	ui->comboBoxResolution->setCurrentIndex(resIndex);
 	ui->comboBoxResolution->setCurrentIndex(resIndex);
 	ui->comboBoxFullScreen->setCurrentIndex(settings["video"]["fullscreen"].Bool());
 	ui->comboBoxFullScreen->setCurrentIndex(settings["video"]["fullscreen"].Bool());
+	ui->comboBoxShowIntro->setCurrentIndex(settings["video"]["showIntro"].Bool());
 
 
 	int neutralAIIndex = ui->comboBoxNeutralAI->findText(QString::fromUtf8(settings["server"]["neutralAI"].String().c_str()));
 	int neutralAIIndex = ui->comboBoxNeutralAI->findText(QString::fromUtf8(settings["server"]["neutralAI"].String().c_str()));
 	int playerAIIndex = ui->comboBoxPlayerAI->findText(QString::fromUtf8(settings["server"]["playerAI"].String().c_str()));
 	int playerAIIndex = ui->comboBoxPlayerAI->findText(QString::fromUtf8(settings["server"]["playerAI"].String().c_str()));
@@ -36,8 +39,6 @@ void CSettingsView::loadSettings()
 
 
 	ui->spinBoxNetworkPort->setValue(settings["server"]["port"].Float());
 	ui->spinBoxNetworkPort->setValue(settings["server"]["port"].Float());
 
 
-	ui->comboBoxEnableMods->setCurrentIndex(settings["launcher"]["enableInstalledMods"].Bool());
-
 	// all calls to plainText will trigger textChanged() signal overwriting config. Create backup before editing widget
 	// all calls to plainText will trigger textChanged() signal overwriting config. Create backup before editing widget
 	JsonNode urls = settings["launcher"]["repositoryURL"];
 	JsonNode urls = settings["launcher"]["repositoryURL"];
 
 
@@ -46,10 +47,8 @@ void CSettingsView::loadSettings()
 		ui->plainTextEditRepos->appendPlainText(QString::fromUtf8(entry.String().c_str()));
 		ui->plainTextEditRepos->appendPlainText(QString::fromUtf8(entry.String().c_str()));
 
 
 	ui->lineEditUserDataDir->setText(QString::fromUtf8(VCMIDirs::get().userDataPath().c_str()));
 	ui->lineEditUserDataDir->setText(QString::fromUtf8(VCMIDirs::get().userDataPath().c_str()));
-	QStringList dataDirs;
-	for (auto string : VCMIDirs::get().dataPaths())
-		dataDirs += QString::fromUtf8(string.c_str());
-	ui->lineEditGameDir->setText(dataDirs.join(':'));
+	ui->lineEditGameDir->setText(QString::fromUtf8(M_DATA_DIR));
+	ui->lineEditTempDir->setText(QString::fromUtf8(VCMIDirs::get().userCachePath().c_str()));
 
 
 	std::string encoding = settings["general"]["encoding"].String();
 	std::string encoding = settings["general"]["encoding"].String();
 	size_t encodingIndex = boost::range::find(knownEncodingsList, encoding) - knownEncodingsList;
 	size_t encodingIndex = boost::range::find(knownEncodingsList, encoding) - knownEncodingsList;
@@ -98,12 +97,6 @@ void CSettingsView::on_comboBoxNeutralAI_currentIndexChanged(const QString &arg1
 	node->String() = arg1.toUtf8().data();
 	node->String() = arg1.toUtf8().data();
 }
 }
 
 
-void CSettingsView::on_comboBoxEnableMods_currentIndexChanged(int index)
-{
-	Settings node = settings.write["launcher"]["enableInstalledMods"];
-	node->Bool() = index;
-}
-
 void CSettingsView::on_spinBoxNetworkPort_valueChanged(int arg1)
 void CSettingsView::on_spinBoxNetworkPort_valueChanged(int arg1)
 {
 {
 	Settings node = settings.write["server"]["port"];
 	Settings node = settings.write["server"]["port"];
@@ -133,3 +126,29 @@ void CSettingsView::on_comboBoxEncoding_currentIndexChanged(int index)
 	Settings node = settings.write["general"]["encoding"];
 	Settings node = settings.write["general"]["encoding"];
 	node->String() = knownEncodingsList[index];
 	node->String() = knownEncodingsList[index];
 }
 }
+
+void CSettingsView::on_openTempDir_clicked()
+{
+	QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(ui->lineEditTempDir->text()).absoluteFilePath()));
+}
+
+void CSettingsView::on_openUserDataDir_clicked()
+{
+	QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(ui->lineEditUserDataDir->text()).absoluteFilePath()));
+}
+
+void CSettingsView::on_openGameDataDir_clicked()
+{
+	QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(ui->lineEditGameDir->text()).absoluteFilePath()));
+}
+
+void CSettingsView::on_comboBoxShowIntro_currentIndexChanged(int index)
+{
+	Settings node = settings.write["video"]["showIntro"];
+	node->Bool() = index;
+}
+
+void CSettingsView::on_changeGameDataDir_clicked()
+{
+
+}

+ 10 - 2
launcher/settingsView/csettingsview_moc.h

@@ -23,14 +23,22 @@ private slots:
 
 
 	void on_comboBoxNeutralAI_currentIndexChanged(const QString &arg1);
 	void on_comboBoxNeutralAI_currentIndexChanged(const QString &arg1);
 
 
-	void on_comboBoxEnableMods_currentIndexChanged(int index);
-
 	void on_spinBoxNetworkPort_valueChanged(int arg1);
 	void on_spinBoxNetworkPort_valueChanged(int arg1);
 
 
 	void on_plainTextEditRepos_textChanged();
 	void on_plainTextEditRepos_textChanged();
 
 
 	void on_comboBoxEncoding_currentIndexChanged(int index);
 	void on_comboBoxEncoding_currentIndexChanged(int index);
 
 
+	void on_openTempDir_clicked();
+
+	void on_openUserDataDir_clicked();
+
+	void on_openGameDataDir_clicked();
+
+	void on_comboBoxShowIntro_currentIndexChanged(int index);
+
+	void on_changeGameDataDir_clicked();
+
 private:
 private:
 	Ui::CSettingsView *ui;
 	Ui::CSettingsView *ui;
 };
 };

+ 276 - 213
launcher/settingsView/csettingsview_moc.ui

@@ -7,109 +7,46 @@
     <x>0</x>
     <x>0</x>
     <y>0</y>
     <y>0</y>
     <width>700</width>
     <width>700</width>
-    <height>308</height>
+    <height>420</height>
    </rect>
    </rect>
   </property>
   </property>
   <property name="windowTitle">
   <property name="windowTitle">
    <string>Form</string>
    <string>Form</string>
   </property>
   </property>
   <layout class="QGridLayout" name="gridLayout">
   <layout class="QGridLayout" name="gridLayout">
-   <item row="2" column="1">
-    <widget class="QComboBox" name="comboBoxFullScreen">
-     <property name="currentIndex">
-      <number>0</number>
-     </property>
-     <item>
-      <property name="text">
-       <string>Off</string>
-      </property>
-     </item>
-     <item>
-      <property name="text">
-       <string>On</string>
-      </property>
-     </item>
-    </widget>
-   </item>
-   <item row="11" column="0" colspan="5">
-    <widget class="QPlainTextEdit" name="plainTextEditRepos">
-     <property name="lineWrapMode">
-      <enum>QPlainTextEdit::NoWrap</enum>
-     </property>
-     <property name="plainText">
-      <string>http://downloads.vcmi.eu/Mods/repository.json</string>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="4">
-    <widget class="QLineEdit" name="lineEditUserDataDir">
-     <property name="enabled">
-      <bool>false</bool>
-     </property>
-     <property name="minimumSize">
-      <size>
-       <width>150</width>
-       <height>0</height>
-      </size>
-     </property>
-     <property name="text">
-      <string>/home/user/.vcmi</string>
-     </property>
-     <property name="readOnly">
-      <bool>true</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="5" column="0">
-    <widget class="QLabel" name="labelPlayerAI">
-     <property name="text">
-      <string>Player AI</string>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="2">
-    <spacer name="spacerColumns">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="sizeType">
-      <enum>QSizePolicy::Fixed</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>8</width>
-       <height>20</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="1" column="4">
-    <widget class="QLineEdit" name="lineEditGameDir">
-     <property name="enabled">
-      <bool>false</bool>
-     </property>
-     <property name="minimumSize">
-      <size>
-       <width>150</width>
-       <height>0</height>
-      </size>
+   <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 row="5" column="3" colspan="4">
+    <widget class="QLabel" name="labelGeneral">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
      </property>
      </property>
      <property name="text">
      <property name="text">
-      <string>/usr/share/vcmi</string>
-     </property>
-     <property name="readOnly">
-      <bool>true</bool>
+      <string>General</string>
      </property>
      </property>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="7" column="3">
-    <widget class="QLabel" name="labelEnableMods">
+   <item row="2" column="3">
+    <widget class="QLabel" name="labelUserDataDir">
      <property name="text">
      <property name="text">
-      <string>Enable mods on install</string>
+      <string>User data directory</string>
      </property>
      </property>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="5" column="4">
+   <item row="6" column="4" colspan="3">
     <widget class="QSpinBox" name="spinBoxNetworkPort">
     <widget class="QSpinBox" name="spinBoxNetworkPort">
      <property name="minimum">
      <property name="minimum">
       <number>1024</number>
       <number>1024</number>
@@ -122,21 +59,34 @@
      </property>
      </property>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="2" column="3">
-    <widget class="QLabel" name="labelUserDataDir">
+   <item row="1" column="5">
+    <widget class="QPushButton" name="changeGameDataDir">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
      <property name="text">
      <property name="text">
-      <string>User data directory</string>
+      <string>Change</string>
      </property>
      </property>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="1" column="3">
-    <widget class="QLabel" name="labelGameDir">
-     <property name="text">
-      <string>Game directory</string>
+   <item row="2" column="1">
+    <widget class="QComboBox" name="comboBoxFullScreen">
+     <property name="currentIndex">
+      <number>0</number>
      </property>
      </property>
+     <item>
+      <property name="text">
+       <string>Off</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>On</string>
+      </property>
+     </item>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="4" column="0" colspan="2">
+   <item row="5" column="0" colspan="2">
     <widget class="QLabel" name="labelAISettings">
     <widget class="QLabel" name="labelAISettings">
      <property name="font">
      <property name="font">
       <font>
       <font>
@@ -149,94 +99,17 @@
      </property>
      </property>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="8" column="0">
-    <spacer name="spacerRepos">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeType">
-      <enum>QSizePolicy::Fixed</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>20</width>
-       <height>8</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="1" column="0">
-    <widget class="QLabel" name="labelResolution">
-     <property name="text">
-      <string>Resolution</string>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="0" colspan="2">
-    <widget class="QLabel" name="labelVideo">
-     <property name="font">
-      <font>
-       <weight>75</weight>
-       <bold>true</bold>
-      </font>
-     </property>
-     <property name="text">
-      <string>Video</string>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="3" colspan="2">
-    <widget class="QLabel" name="labelDataDirs">
-     <property name="font">
-      <font>
-       <weight>75</weight>
-       <bold>true</bold>
-      </font>
-     </property>
-     <property name="text">
-      <string>Data Directories (unchangeable)</string>
-     </property>
-    </widget>
-   </item>
-   <item row="9" column="0" colspan="2">
-    <widget class="QLabel" name="labelRepositories">
-     <property name="font">
-      <font>
-       <weight>75</weight>
-       <bold>true</bold>
-      </font>
-     </property>
+   <item row="1" column="6">
+    <widget class="QPushButton" name="openGameDataDir">
      <property name="text">
      <property name="text">
-      <string>Repositories</string>
+      <string>Open</string>
      </property>
      </property>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="4" column="3" colspan="2">
-    <widget class="QLabel" name="labelGeneral">
-     <property name="font">
-      <font>
-       <weight>75</weight>
-       <bold>true</bold>
-      </font>
-     </property>
-     <property name="text">
-      <string>General</string>
-     </property>
-    </widget>
-   </item>
-   <item row="5" column="1">
-    <widget class="QComboBox" name="comboBoxPlayerAI">
-     <item>
-      <property name="text">
-       <string>VCAI</string>
-      </property>
-     </item>
-    </widget>
-   </item>
-   <item row="5" column="3">
-    <widget class="QLabel" name="labelNetworkPort">
+   <item row="1" column="3">
+    <widget class="QLabel" name="labelGameDir">
      <property name="text">
      <property name="text">
-      <string>Network port</string>
+      <string>Extra data directory</string>
      </property>
      </property>
     </widget>
     </widget>
    </item>
    </item>
@@ -299,47 +172,102 @@
      </item>
      </item>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="7" column="4">
-    <widget class="QComboBox" name="comboBoxEnableMods">
-     <property name="currentIndex">
-      <number>1</number>
+   <item row="2" column="0">
+    <widget class="QLabel" name="labelFullScreen">
+     <property name="text">
+      <string>Fullscreen</string>
+     </property>
+    </widget>
+   </item>
+   <item row="11" column="0" colspan="7">
+    <widget class="QPlainTextEdit" name="plainTextEditRepos">
+     <property name="lineWrapMode">
+      <enum>QPlainTextEdit::NoWrap</enum>
+     </property>
+     <property name="plainText">
+      <string>http://downloads.vcmi.eu/Mods/repository.json</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="6">
+    <widget class="QPushButton" name="openUserDataDir">
+     <property name="text">
+      <string>Open</string>
      </property>
      </property>
+    </widget>
+   </item>
+   <item row="1" column="4">
+    <widget class="QLineEdit" name="lineEditGameDir">
+     <property name="minimumSize">
+      <size>
+       <width>150</width>
+       <height>0</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>/usr/share/vcmi</string>
+     </property>
+    </widget>
+   </item>
+   <item row="7" column="1">
+    <widget class="QComboBox" name="comboBoxNeutralAI">
      <item>
      <item>
       <property name="text">
       <property name="text">
-       <string>Off</string>
+       <string>StupidAI</string>
       </property>
       </property>
      </item>
      </item>
      <item>
      <item>
       <property name="text">
       <property name="text">
-       <string>On</string>
+       <string>BattleAI</string>
       </property>
       </property>
      </item>
      </item>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="3" column="0">
-    <spacer name="spacerSections">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
+   <item row="3" column="6">
+    <widget class="QPushButton" name="openTempDir">
+     <property name="text">
+      <string>Open</string>
      </property>
      </property>
-     <property name="sizeType">
-      <enum>QSizePolicy::Fixed</enum>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QLabel" name="labelResolution">
+     <property name="text">
+      <string>Resolution</string>
      </property>
      </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>56</width>
-       <height>8</height>
-      </size>
+    </widget>
+   </item>
+   <item row="7" column="0">
+    <widget class="QLabel" name="labelNeutralAI">
+     <property name="text">
+      <string>Neutral AI</string>
      </property>
      </property>
-    </spacer>
+    </widget>
    </item>
    </item>
-   <item row="2" column="0">
-    <widget class="QLabel" name="labelFullScreen">
+   <item row="7" column="3">
+    <widget class="QLabel" name="labelEncoding">
      <property name="text">
      <property name="text">
-      <string>Fullscreen</string>
+      <string>Heroes III character set</string>
+     </property>
+    </widget>
+   </item>
+   <item row="6" column="1">
+    <widget class="QComboBox" name="comboBoxPlayerAI">
+     <item>
+      <property name="text">
+       <string>VCAI</string>
+      </property>
+     </item>
+    </widget>
+   </item>
+   <item row="6" column="0">
+    <widget class="QLabel" name="labelPlayerAI">
+     <property name="text">
+      <string>Player AI</string>
      </property>
      </property>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="6" column="4">
+   <item row="7" column="4" colspan="3">
     <widget class="QComboBox" name="comboBoxEncoding">
     <widget class="QComboBox" name="comboBoxEncoding">
      <item>
      <item>
       <property name="text">
       <property name="text">
@@ -368,34 +296,169 @@
      </item>
      </item>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="6" column="1">
-    <widget class="QComboBox" name="comboBoxNeutralAI">
+   <item row="6" column="3">
+    <widget class="QLabel" name="labelNetworkPort">
+     <property name="text">
+      <string>Network port</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0" colspan="2">
+    <widget class="QLabel" name="labelVideo">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
+     </property>
+     <property name="text">
+      <string>Video</string>
+     </property>
+    </widget>
+   </item>
+   <item row="9" column="0" colspan="2">
+    <widget class="QLabel" name="labelRepositories">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
+     </property>
+     <property name="text">
+      <string>Repositories</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="3">
+    <widget class="QLabel" name="labelTempDir">
+     <property name="text">
+      <string>Log files directory</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="4" colspan="2">
+    <widget class="QLineEdit" name="lineEditUserDataDir">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>150</width>
+       <height>0</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>/home/user/.vcmi</string>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="4" colspan="2">
+    <widget class="QLineEdit" name="lineEditTempDir">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>150</width>
+       <height>0</height>
+      </size>
+     </property>
+     <property name="text">
+      <string>/home/user/.vcmi</string>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="0">
+    <widget class="QLabel" name="labelShowIntro">
+     <property name="text">
+      <string>Show intro</string>
+     </property>
+    </widget>
+   </item>
+   <item row="3" column="1">
+    <widget class="QComboBox" name="comboBoxShowIntro">
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
      <item>
      <item>
       <property name="text">
       <property name="text">
-       <string>StupidAI</string>
+       <string>Off</string>
       </property>
       </property>
      </item>
      </item>
      <item>
      <item>
       <property name="text">
       <property name="text">
-       <string>BattleAI</string>
+       <string>On</string>
       </property>
       </property>
      </item>
      </item>
     </widget>
     </widget>
    </item>
    </item>
-   <item row="6" column="0">
-    <widget class="QLabel" name="labelNeutralAI">
-     <property name="text">
-      <string>Neutral AI</string>
+   <item row="4" column="0" colspan="2">
+    <spacer name="spacerSections">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
      </property>
      </property>
-    </widget>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>56</width>
+       <height>8</height>
+      </size>
+     </property>
+    </spacer>
    </item>
    </item>
-   <item row="6" column="3">
-    <widget class="QLabel" name="labelEncoding">
+   <item row="8" column="0" colspan="2">
+    <spacer name="spacerRepos">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>8</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item row="0" column="3" colspan="4">
+    <widget class="QLabel" name="labelDataDirs">
+     <property name="font">
+      <font>
+       <weight>75</weight>
+       <bold>true</bold>
+      </font>
+     </property>
      <property name="text">
      <property name="text">
-      <string>Heroes III character set</string>
+      <string>Data Directories</string>
      </property>
      </property>
     </widget>
     </widget>
    </item>
    </item>
+   <item row="1" column="2" rowspan="3">
+    <spacer name="spacerColumns">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>8</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
   </layout>
   </layout>
  </widget>
  </widget>
  <resources/>
  <resources/>