mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-24 22:14:36 +02:00
Allow choosing the display from the launcher
This adds another combobox for choosing the display. To ease the display choice we try to roughly describe the display (its resolution and location). The combobox is hidden for single display setups.
This commit is contained in:
parent
12f2006fbf
commit
58bc0f7272
@ -3,6 +3,7 @@ cmake_minimum_required(VERSION 2.8.7)
|
|||||||
|
|
||||||
include_directories(${CMAKE_HOME_DIRECTORY} ${CMAKE_HOME_DIRECTORY}/include ${CMAKE_CURRENT_SOURCE_DIR})
|
include_directories(${CMAKE_HOME_DIRECTORY} ${CMAKE_HOME_DIRECTORY}/include ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
include_directories(${ZLIB_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS})
|
include_directories(${ZLIB_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS})
|
||||||
|
include_directories(${SDL_INCLUDE_DIR})
|
||||||
|
|
||||||
set(launcher_modmanager_SRCS
|
set(launcher_modmanager_SRCS
|
||||||
modManager/cdownloadmanager_moc.cpp
|
modManager/cdownloadmanager_moc.cpp
|
||||||
@ -25,6 +26,7 @@ set(launcher_SRCS
|
|||||||
mainwindow_moc.cpp
|
mainwindow_moc.cpp
|
||||||
launcherdirs.cpp
|
launcherdirs.cpp
|
||||||
jsonutils.cpp
|
jsonutils.cpp
|
||||||
|
sdldisplayquery.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(launcher_FORMS
|
set(launcher_FORMS
|
||||||
@ -60,10 +62,10 @@ endif()
|
|||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
# Fix _WinMain@16 linking error
|
# Fix _WinMain@16 linking error
|
||||||
target_link_libraries(vcmilauncher vcmi ${Qt5Core_QTMAIN_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES})
|
target_link_libraries(vcmilauncher vcmi ${Qt5Core_QTMAIN_LIBRARIES} ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES} ${SDL_LIBRARY})
|
||||||
else()
|
else()
|
||||||
# The Qt5Widgets_LIBRARIES variable also includes QtGui and QtCore
|
# The Qt5Widgets_LIBRARIES variable also includes QtGui and QtCore
|
||||||
target_link_libraries(vcmilauncher vcmi ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES})
|
target_link_libraries(vcmilauncher vcmi ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES} ${SDL_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# temporary(?) disabled - generation of PCH takes too much time since cotire is trying to collect all Qt headers
|
# temporary(?) disabled - generation of PCH takes too much time since cotire is trying to collect all Qt headers
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
#include "StdInc.h"
|
#include "StdInc.h"
|
||||||
#include "mainwindow_moc.h"
|
#include "mainwindow_moc.h"
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include "sdldisplayquery.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
auto displayList = getDisplays();
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
MainWindow w;
|
MainWindow w(displayList);
|
||||||
w.show();
|
w.show();
|
||||||
|
|
||||||
return a.exec();
|
return a.exec();
|
||||||
|
@ -26,7 +26,7 @@ void MainWindow::load()
|
|||||||
settings.init();
|
settings.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget *parent) :
|
MainWindow::MainWindow(const QStringList& displayList, QWidget *parent) :
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
ui(new Ui::MainWindow)
|
ui(new Ui::MainWindow)
|
||||||
{
|
{
|
||||||
@ -34,6 +34,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
|
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->tabListWidget->setCurrentIndex(0);
|
ui->tabListWidget->setCurrentIndex(0);
|
||||||
|
ui->settingsView->setDisplayList(displayList);
|
||||||
|
|
||||||
connect(ui->tabSelectList, SIGNAL(currentRowChanged(int)),
|
connect(ui->tabSelectList, SIGNAL(currentRowChanged(int)),
|
||||||
ui->tabListWidget, SLOT(setCurrentIndex(int)));
|
ui->tabListWidget, SLOT(setCurrentIndex(int)));
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
#include <QStringList>
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class MainWindow;
|
class MainWindow;
|
||||||
@ -14,7 +15,7 @@ class MainWindow : public QMainWindow
|
|||||||
void load();
|
void load();
|
||||||
void startExecutable(QString name);
|
void startExecutable(QString name);
|
||||||
public:
|
public:
|
||||||
explicit MainWindow(QWidget *parent = 0);
|
explicit MainWindow(const QStringList& displayList, QWidget *parent = 0);
|
||||||
~MainWindow();
|
~MainWindow();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
@ -176,7 +176,7 @@
|
|||||||
<number>1</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="CModListView" name="stackedWidgetPage2"/>
|
<widget class="CModListView" name="stackedWidgetPage2"/>
|
||||||
<widget class="CSettingsView" name="stackedWidgetPage3"/>
|
<widget class="CSettingsView" name="settingsView"/>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
|
32
launcher/sdldisplayquery.cpp
Normal file
32
launcher/sdldisplayquery.cpp
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#include "sdldisplayquery.h"
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
|
#include <SDL.h>
|
||||||
|
#include <SDL_video.h>
|
||||||
|
|
||||||
|
QStringList getDisplays()
|
||||||
|
{
|
||||||
|
if(SDL_Init(SDL_INIT_VIDEO))
|
||||||
|
return QStringList("default display");
|
||||||
|
|
||||||
|
const int displays = SDL_GetNumVideoDisplays();
|
||||||
|
QStringList list;
|
||||||
|
|
||||||
|
for (int display = 0; display < displays; ++display)
|
||||||
|
{
|
||||||
|
SDL_Rect rect;
|
||||||
|
|
||||||
|
if (SDL_GetDisplayBounds (display, &rect))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
QString string;
|
||||||
|
QTextStream(&string) << display << " - " << rect.w << "x" << rect.h << " (at " << rect.x << ", " << rect.y << ")";
|
||||||
|
|
||||||
|
list << string;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_Quit();
|
||||||
|
return list;
|
||||||
|
}
|
5
launcher/sdldisplayquery.h
Normal file
5
launcher/sdldisplayquery.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QStringList>
|
||||||
|
|
||||||
|
QStringList getDisplays();
|
@ -20,11 +20,25 @@ static const std::string knownEncodingsList[] = //TODO: remove hardcode
|
|||||||
"GB2312" // basic set for Simplified Chinese. Separate from GBK to allow proper detection of H3 fonts
|
"GB2312" // basic set for Simplified Chinese. Separate from GBK to allow proper detection of H3 fonts
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void CSettingsView::setDisplayList(const QStringList& displayList)
|
||||||
|
{
|
||||||
|
if (displayList.count() < 2)
|
||||||
|
{
|
||||||
|
ui->comboBoxDisplayIndex->hide ();
|
||||||
|
ui->labelDisplayIndex->hide ();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui->comboBoxDisplayIndex->clear();
|
||||||
|
ui->comboBoxDisplayIndex->addItems(displayList);
|
||||||
|
ui->comboBoxDisplayIndex->setCurrentIndex(settings["video"]["displayIndex"].Float());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CSettingsView::loadSettings()
|
void CSettingsView::loadSettings()
|
||||||
{
|
{
|
||||||
int resX = settings["video"]["screenRes"]["width"].Float();
|
int resX = settings["video"]["screenRes"]["width"].Float();
|
||||||
int resY = settings["video"]["screenRes"]["height"].Float();
|
int resY = settings["video"]["screenRes"]["height"].Float();
|
||||||
|
|
||||||
int resIndex = ui->comboBoxResolution->findText(QString("%1x%2").arg(resX).arg(resY));
|
int resIndex = ui->comboBoxResolution->findText(QString("%1x%2").arg(resX).arg(resY));
|
||||||
|
|
||||||
ui->comboBoxResolution->setCurrentIndex(resIndex);
|
ui->comboBoxResolution->setCurrentIndex(resIndex);
|
||||||
@ -92,6 +106,12 @@ void CSettingsView::on_comboBoxAutoCheck_currentIndexChanged(int index)
|
|||||||
node->Bool() = index;
|
node->Bool() = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSettingsView::on_comboBoxDisplayIndex_currentIndexChanged(int index)
|
||||||
|
{
|
||||||
|
Settings node = settings.write["video"];
|
||||||
|
node["displayIndex"].Float() = index;
|
||||||
|
}
|
||||||
|
|
||||||
void CSettingsView::on_comboBoxPlayerAI_currentIndexChanged(const QString &arg1)
|
void CSettingsView::on_comboBoxPlayerAI_currentIndexChanged(const QString &arg1)
|
||||||
{
|
{
|
||||||
Settings node = settings.write["server"]["playerAI"];
|
Settings node = settings.write["server"]["playerAI"];
|
||||||
|
@ -15,6 +15,7 @@ public:
|
|||||||
~CSettingsView();
|
~CSettingsView();
|
||||||
|
|
||||||
void loadSettings();
|
void loadSettings();
|
||||||
|
void setDisplayList(const QStringList& displayList);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_comboBoxResolution_currentIndexChanged(const QString &arg1);
|
void on_comboBoxResolution_currentIndexChanged(const QString &arg1);
|
||||||
@ -43,6 +44,8 @@ private slots:
|
|||||||
|
|
||||||
void on_comboBoxAutoCheck_currentIndexChanged(int index);
|
void on_comboBoxAutoCheck_currentIndexChanged(int index);
|
||||||
|
|
||||||
|
void on_comboBoxDisplayIndex_currentIndexChanged(int index);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::CSettingsView *ui;
|
Ui::CSettingsView *ui;
|
||||||
};
|
};
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>700</width>
|
<width>714</width>
|
||||||
<height>420</height>
|
<height>429</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -26,7 +26,7 @@
|
|||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="9" column="1" colspan="4">
|
<item row="10" column="1" colspan="4">
|
||||||
<widget class="QLabel" name="LauncherSettings">
|
<widget class="QLabel" name="LauncherSettings">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
@ -39,7 +39,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="6" colspan="4">
|
<item row="6" column="6" colspan="4">
|
||||||
<widget class="QLabel" name="labelGeneral">
|
<widget class="QLabel" name="labelGeneral">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
@ -59,7 +59,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="7" colspan="3">
|
<item row="7" column="7" colspan="3">
|
||||||
<widget class="QSpinBox" name="spinBoxNetworkPort">
|
<widget class="QSpinBox" name="spinBoxNetworkPort">
|
||||||
<property name="minimum">
|
<property name="minimum">
|
||||||
<number>1024</number>
|
<number>1024</number>
|
||||||
@ -99,7 +99,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="1" colspan="4">
|
<item row="6" column="1" colspan="4">
|
||||||
<widget class="QLabel" name="labelAISettings">
|
<widget class="QLabel" name="labelAISettings">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
@ -192,7 +192,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="13" column="1" colspan="9">
|
<item row="14" column="1" colspan="9">
|
||||||
<widget class="QPlainTextEdit" name="plainTextEditRepos">
|
<widget class="QPlainTextEdit" name="plainTextEditRepos">
|
||||||
<property name="lineWrapMode">
|
<property name="lineWrapMode">
|
||||||
<enum>QPlainTextEdit::NoWrap</enum>
|
<enum>QPlainTextEdit::NoWrap</enum>
|
||||||
@ -222,7 +222,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="4">
|
<item row="8" column="4">
|
||||||
<widget class="QComboBox" name="comboBoxNeutralAI">
|
<widget class="QComboBox" name="comboBoxNeutralAI">
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -250,21 +250,21 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="1">
|
<item row="8" column="1">
|
||||||
<widget class="QLabel" name="labelNeutralAI">
|
<widget class="QLabel" name="labelNeutralAI">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Neutral AI</string>
|
<string>Neutral AI</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="6">
|
<item row="8" column="6">
|
||||||
<widget class="QLabel" name="labelEncoding">
|
<widget class="QLabel" name="labelEncoding">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Heroes III character set</string>
|
<string>Heroes III character set</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="4">
|
<item row="7" column="4">
|
||||||
<widget class="QComboBox" name="comboBoxPlayerAI">
|
<widget class="QComboBox" name="comboBoxPlayerAI">
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -273,14 +273,14 @@
|
|||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="1">
|
<item row="7" column="1">
|
||||||
<widget class="QLabel" name="labelPlayerAI">
|
<widget class="QLabel" name="labelPlayerAI">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Player AI</string>
|
<string>Player AI</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="7" colspan="3">
|
<item row="8" column="7" colspan="3">
|
||||||
<widget class="QComboBox" name="comboBoxEncoding">
|
<widget class="QComboBox" name="comboBoxEncoding">
|
||||||
<item>
|
<item>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -309,7 +309,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="6">
|
<item row="7" column="6">
|
||||||
<widget class="QLabel" name="labelNetworkPort">
|
<widget class="QLabel" name="labelNetworkPort">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Network port</string>
|
<string>Network port</string>
|
||||||
@ -329,7 +329,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="1" colspan="4">
|
<item row="12" column="1" colspan="4">
|
||||||
<widget class="QLabel" name="labelRepositories">
|
<widget class="QLabel" name="labelRepositories">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
@ -411,7 +411,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1" colspan="4">
|
<item row="5" column="1" colspan="4">
|
||||||
<spacer name="spacerSections">
|
<spacer name="spacerSections">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
@ -427,7 +427,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="1" colspan="4">
|
<item row="9" column="1" colspan="4">
|
||||||
<spacer name="spacerRepos">
|
<spacer name="spacerRepos">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
@ -472,7 +472,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="6">
|
<item row="11" column="6">
|
||||||
<widget class="QComboBox" name="comboBoxAutoCheck">
|
<widget class="QComboBox" name="comboBoxAutoCheck">
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
@ -489,13 +489,29 @@
|
|||||||
</item>
|
</item>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="1" colspan="4">
|
<item row="11" column="1" colspan="4">
|
||||||
<widget class="QLabel" name="labelAutoCheck">
|
<widget class="QLabel" name="labelAutoCheck">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Check repositories on startup</string>
|
<string>Check repositories on startup</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QLabel" name="labelDisplayIndex">
|
||||||
|
<property name="text">
|
||||||
|
<string>Display index</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="4">
|
||||||
|
<widget class="QComboBox" name="comboBoxDisplayIndex">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>0</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
Loading…
Reference in New Issue
Block a user