1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-03-19 21:10:12 +02:00

Merge pull request #5398 from Laserlicht/portrait_mode

[1.6.6] portrait mode for android & grey bar fix
This commit is contained in:
Ivan Savenko 2025-02-09 19:42:03 +02:00 committed by GitHub
commit 68e0dcb01d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 161 additions and 97 deletions

View File

@ -81,7 +81,7 @@
android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density"
android:label="@string/app_name" android:label="@string/app_name"
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="sensorLandscape" /> android:screenOrientation="fullSensor" />
<service <service
android:name=".ServerService" android:name=".ServerService"

View File

@ -107,6 +107,8 @@ public class VcmiSDLActivity extends SDLActivity
mLayout = layout; mLayout = layout;
setContentView(outerLayout); setContentView(outerLayout);
VcmiSDLActivity.this.setWindowStyle(true); // set fullscreen
} }
@Override @Override

View File

@ -234,6 +234,14 @@ void InputHandler::preprocessEvent(const SDL_Event & ev)
boost::mutex::scoped_lock interfaceLock(GH.interfaceMutex); boost::mutex::scoped_lock interfaceLock(GH.interfaceMutex);
GH.onScreenResize(false); GH.onScreenResize(false);
} }
#endif
break;
case SDL_WINDOWEVENT_SIZE_CHANGED:
#ifdef VCMI_ANDROID
{
boost::mutex::scoped_lock interfaceLock(GH.interfaceMutex);
GH.onScreenResize(true);
}
#endif #endif
break; break;
case SDL_WINDOWEVENT_FOCUS_GAINED: case SDL_WINDOWEVENT_FOCUS_GAINED:

View File

@ -45,8 +45,6 @@ CHighScoreScreen::CHighScoreScreen(HighScorePage highscorepage, int highlighted)
OBJECT_CONSTRUCTION; OBJECT_CONSTRUCTION;
pos = center(Rect(0, 0, 800, 600)); pos = center(Rect(0, 0, 800, 600));
backgroundAroundMenu = std::make_shared<CFilledTexture>(ImagePath::builtin("DIBOXBCK"), Rect(-pos.x, -pos.y, GH.screenDimensions().x, GH.screenDimensions().y));
addHighScores(); addHighScores();
addButtons(); addButtons();
} }
@ -174,6 +172,12 @@ void CHighScoreScreen::buttonExitClick()
CMM->playMusic(); CMM->playMusic();
} }
void CHighScoreScreen::showAll(Canvas & to)
{
to.fillTexture(GH.renderHandler().loadImage(ImagePath::builtin("DiBoxBck"), EImageBlitMode::OPAQUE));
CWindowObject::showAll(to);
}
CHighScoreInputScreen::CHighScoreInputScreen(bool won, HighScoreCalculation calc, const StatisticDataSet & statistic) CHighScoreInputScreen::CHighScoreInputScreen(bool won, HighScoreCalculation calc, const StatisticDataSet & statistic)
: CWindowObject(BORDERED), won(won), calc(calc), stat(statistic) : CWindowObject(BORDERED), won(won), calc(calc), stat(statistic)
{ {
@ -182,7 +186,6 @@ CHighScoreInputScreen::CHighScoreInputScreen(bool won, HighScoreCalculation calc
OBJECT_CONSTRUCTION; OBJECT_CONSTRUCTION;
pos = center(Rect(0, 0, 800, 600)); pos = center(Rect(0, 0, 800, 600));
backgroundAroundMenu = std::make_shared<CFilledTexture>(ImagePath::builtin("DIBOXBCK"), Rect(-pos.x, -pos.y, GH.screenDimensions().x, GH.screenDimensions().y));
background = std::make_shared<TransparentFilledRectangle>(Rect(0, 0, pos.w, pos.h), Colors::BLACK); background = std::make_shared<TransparentFilledRectangle>(Rect(0, 0, pos.w, pos.h), Colors::BLACK);
if(won) if(won)
@ -272,6 +275,12 @@ void CHighScoreInputScreen::show(Canvas & to)
CWindowObject::showAll(to); CWindowObject::showAll(to);
} }
void CHighScoreInputScreen::showAll(Canvas & to)
{
to.fillTexture(GH.renderHandler().loadImage(ImagePath::builtin("DiBoxBck"), EImageBlitMode::OPAQUE));
CWindowObject::showAll(to);
}
void CHighScoreInputScreen::clickPressed(const Point & cursorPosition) void CHighScoreInputScreen::clickPressed(const Point & cursorPosition)
{ {
if(statisticButton && statisticButton->pos.isInside(cursorPosition)) if(statisticButton && statisticButton->pos.isInside(cursorPosition))

View File

@ -39,11 +39,11 @@ private:
void buttonExitClick(); void buttonExitClick();
void showPopupWindow(const Point & cursorPosition) override; void showPopupWindow(const Point & cursorPosition) override;
void showAll(Canvas & to) override;
HighScorePage highscorepage; HighScorePage highscorepage;
std::shared_ptr<CPicture> background; std::shared_ptr<CPicture> background;
std::shared_ptr<CFilledTexture> backgroundAroundMenu;
std::vector<std::shared_ptr<CButton>> buttons; std::vector<std::shared_ptr<CButton>> buttons;
std::vector<std::shared_ptr<CLabel>> texts; std::vector<std::shared_ptr<CLabel>> texts;
std::vector<std::shared_ptr<CAnimImage>> images; std::vector<std::shared_ptr<CAnimImage>> images;
@ -77,7 +77,6 @@ class CHighScoreInputScreen : public CWindowObject, public IVideoHolder
std::shared_ptr<CHighScoreInput> input; std::shared_ptr<CHighScoreInput> input;
std::shared_ptr<TransparentFilledRectangle> background; std::shared_ptr<TransparentFilledRectangle> background;
std::shared_ptr<VideoWidgetBase> videoPlayer; std::shared_ptr<VideoWidgetBase> videoPlayer;
std::shared_ptr<CFilledTexture> backgroundAroundMenu;
std::shared_ptr<CButton> statisticButton; std::shared_ptr<CButton> statisticButton;
@ -95,4 +94,5 @@ public:
void clickPressed(const Point & cursorPosition) override; void clickPressed(const Point & cursorPosition) override;
void keyPressed(EShortcut key) override; void keyPressed(EShortcut key) override;
void show(Canvas & to) override; void show(Canvas & to) override;
void showAll(Canvas & to) override;
}; };

View File

@ -211,6 +211,10 @@ ScreenHandler::ScreenHandler()
// NOTE: requires SDL 2.24. // NOTE: requires SDL 2.24.
SDL_SetHint(SDL_HINT_WINDOWS_DPI_AWARENESS, "permonitor"); SDL_SetHint(SDL_HINT_WINDOWS_DPI_AWARENESS, "permonitor");
#endif #endif
if(settings["video"]["allowPortrait"].Bool())
SDL_SetHint(SDL_HINT_ORIENTATIONS, "Portrait PortraitUpsideDown LandscapeLeft LandscapeRight");
else
SDL_SetHint(SDL_HINT_ORIENTATIONS, "LandscapeLeft LandscapeRight");
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_GAMECONTROLLER)) if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_GAMECONTROLLER))
{ {
@ -482,7 +486,7 @@ SDL_Window * ScreenHandler::createWindow()
#endif #endif
#ifdef VCMI_ANDROID #ifdef VCMI_ANDROID
return createWindowImpl(Point(), SDL_WINDOW_FULLSCREEN, false); return createWindowImpl(Point(), SDL_WINDOW_RESIZABLE, false);
#endif #endif
} }

View File

@ -1685,15 +1685,12 @@ void CObjectListWindow::keyPressed(EShortcut key)
} }
VideoWindow::VideoWindow(const VideoPath & video, const ImagePath & rim, bool showBackground, float scaleFactor, const std::function<void(bool skipped)> & closeCb) VideoWindow::VideoWindow(const VideoPath & video, const ImagePath & rim, bool showBackground, float scaleFactor, const std::function<void(bool skipped)> & closeCb)
: CWindowObject(BORDERED | SHADOW_DISABLED | NEEDS_ANIMATED_BACKGROUND), closeCb(closeCb) : CWindowObject(BORDERED | SHADOW_DISABLED | NEEDS_ANIMATED_BACKGROUND), closeCb(closeCb), showBackground(showBackground)
{ {
OBJECT_CONSTRUCTION; OBJECT_CONSTRUCTION;
addUsedEvents(LCLICK | KEYBOARD); addUsedEvents(LCLICK | KEYBOARD);
if(showBackground)
backgroundAroundWindow = std::make_shared<CFilledTexture>(ImagePath::builtin("DIBOXBCK"), Rect(0, 0, GH.screenDimensions().x, GH.screenDimensions().y));
if(!rim.empty()) if(!rim.empty())
{ {
setBackground(rim); setBackground(rim);
@ -1707,9 +1704,13 @@ VideoWindow::VideoWindow(const VideoPath & video, const ImagePath & rim, bool sh
pos = center(Rect(0, 0, videoPlayer->pos.w, videoPlayer->pos.h)); pos = center(Rect(0, 0, videoPlayer->pos.w, videoPlayer->pos.h));
blackBackground->addBox(Point(0, 0), Point(videoPlayer->pos.w, videoPlayer->pos.h), Colors::BLACK); blackBackground->addBox(Point(0, 0), Point(videoPlayer->pos.w, videoPlayer->pos.h), Colors::BLACK);
} }
}
if(backgroundAroundWindow) void VideoWindow::showAll(Canvas & to)
backgroundAroundWindow->pos.moveTo(Point(0, 0)); {
if(showBackground)
to.fillTexture(GH.renderHandler().loadImage(ImagePath::builtin("DiBoxBck"), EImageBlitMode::OPAQUE));
CWindowObject::showAll(to);
} }
void VideoWindow::onVideoPlaybackFinished() void VideoWindow::onVideoPlaybackFinished()
@ -1717,7 +1718,6 @@ void VideoWindow::onVideoPlaybackFinished()
exit(false); exit(false);
} }
void VideoWindow::exit(bool skipped) void VideoWindow::exit(bool skipped)
{ {
close(); close();

View File

@ -517,6 +517,7 @@ class VideoWindow : public CWindowObject, public IVideoHolder
std::shared_ptr<VideoWidgetOnce> videoPlayer; std::shared_ptr<VideoWidgetOnce> videoPlayer;
std::shared_ptr<CFilledTexture> backgroundAroundWindow; std::shared_ptr<CFilledTexture> backgroundAroundWindow;
std::shared_ptr<GraphicalPrimitiveCanvas> blackBackground; std::shared_ptr<GraphicalPrimitiveCanvas> blackBackground;
bool showBackground;
std::function<void(bool)> closeCb; std::function<void(bool)> closeCb;
@ -528,4 +529,5 @@ public:
void clickPressed(const Point & cursorPosition) override; void clickPressed(const Point & cursorPosition) override;
void keyPressed(EShortcut key) override; void keyPressed(EShortcut key) override;
void notFocusedClick() override; void notFocusedClick() override;
void showAll(Canvas & to) override;
}; };

View File

@ -188,7 +188,8 @@
"fontScalingFactor", "fontScalingFactor",
"upscalingFilter", "upscalingFilter",
"fontUpscalingFilter", "fontUpscalingFilter",
"downscalingFilter" "downscalingFilter",
"allowPortrait"
], ],
"properties" : { "properties" : {
"resolution" : { "resolution" : {
@ -276,6 +277,10 @@
"type" : "string", "type" : "string",
"enum" : [ "nearest", "linear", "best" ], "enum" : [ "nearest", "linear", "best" ],
"default" : "best" "default" : "best"
},
"allowPortrait" : {
"type" : "boolean",
"default" : false
} }
} }
}, },

View File

@ -128,6 +128,8 @@ void CSettingsView::loadSettings()
#ifndef VCMI_ANDROID #ifndef VCMI_ANDROID
ui->buttonHandleBackRightMouseButton->hide(); ui->buttonHandleBackRightMouseButton->hide();
ui->labelHandleBackRightMouseButton->hide(); ui->labelHandleBackRightMouseButton->hide();
ui->buttonAllowPortrait->hide();
ui->labelAllowPortrait->hide();
#endif #endif
fillValidScalingRange(); fillValidScalingRange();
@ -206,6 +208,7 @@ void CSettingsView::loadSettings()
void CSettingsView::loadToggleButtonSettings() void CSettingsView::loadToggleButtonSettings()
{ {
setCheckbuttonState(ui->buttonShowIntro, settings["video"]["showIntro"].Bool()); setCheckbuttonState(ui->buttonShowIntro, settings["video"]["showIntro"].Bool());
setCheckbuttonState(ui->buttonAllowPortrait, settings["video"]["allowPortrait"].Bool());
setCheckbuttonState(ui->buttonAutoCheck, settings["launcher"]["autoCheckRepositories"].Bool()); setCheckbuttonState(ui->buttonAutoCheck, settings["launcher"]["autoCheckRepositories"].Bool());
setCheckbuttonState(ui->buttonRepositoryDefault, settings["launcher"]["defaultRepositoryEnabled"].Bool()); setCheckbuttonState(ui->buttonRepositoryDefault, settings["launcher"]["defaultRepositoryEnabled"].Bool());
@ -472,6 +475,13 @@ void CSettingsView::on_buttonShowIntro_toggled(bool value)
updateCheckbuttonText(ui->buttonShowIntro); updateCheckbuttonText(ui->buttonShowIntro);
} }
void CSettingsView::on_buttonAllowPortrait_toggled(bool value)
{
Settings node = settings.write["video"]["allowPortrait"];
node->Bool() = value;
updateCheckbuttonText(ui->buttonAllowPortrait);
}
void CSettingsView::on_buttonAutoSave_toggled(bool value) void CSettingsView::on_buttonAutoSave_toggled(bool value)
{ {
Settings node = settings.write["general"]["saveFrequency"]; Settings node = settings.write["general"]["saveFrequency"];

View File

@ -47,6 +47,7 @@ private slots:
void on_comboBoxEnemyAI_currentTextChanged(const QString & arg1); void on_comboBoxEnemyAI_currentTextChanged(const QString & arg1);
void on_spinBoxNetworkPort_valueChanged(int arg1); void on_spinBoxNetworkPort_valueChanged(int arg1);
void on_buttonShowIntro_toggled(bool value); void on_buttonShowIntro_toggled(bool value);
void on_buttonAllowPortrait_toggled(bool value);
void on_buttonAutoCheck_toggled(bool value); void on_buttonAutoCheck_toggled(bool value);
void on_comboBoxDisplayIndex_currentIndexChanged(int index); void on_comboBoxDisplayIndex_currentIndexChanged(int index);
void on_buttonAutoSave_toggled(bool value); void on_buttonAutoSave_toggled(bool value);

View File

@ -53,7 +53,7 @@
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout" columnstretch="20,5,5,5,5,10"> <layout class="QGridLayout" name="gridLayout" columnstretch="20,5,5,5,5,10">
<item row="22" column="1" colspan="5"> <item row="23" column="1" colspan="5">
<widget class="QToolButton" name="buttonCursorType"> <widget class="QToolButton" name="buttonCursorType">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@ -69,14 +69,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="61" column="0"> <item row="62" column="0">
<widget class="QLabel" name="labelModsValidation"> <widget class="QLabel" name="labelModsValidation">
<property name="text"> <property name="text">
<string>Mods Validation</string> <string>Mods Validation</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="24" column="1" colspan="5"> <item row="25" column="1" colspan="5">
<widget class="QComboBox" name="comboBoxUpscalingFilter"> <widget class="QComboBox" name="comboBoxUpscalingFilter">
<item> <item>
<property name="text"> <property name="text">
@ -105,7 +105,7 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="44" column="1" colspan="5"> <item row="45" column="1" colspan="5">
<widget class="QSlider" name="sliderControllerSticksSensitivity"> <widget class="QSlider" name="sliderControllerSticksSensitivity">
<property name="minimum"> <property name="minimum">
<number>500</number> <number>500</number>
@ -133,7 +133,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="36" column="1" colspan="5"> <item row="37" column="1" colspan="5">
<widget class="QPushButton" name="pushButtonResetTutorialTouchscreen"> <widget class="QPushButton" name="pushButtonResetTutorialTouchscreen">
<property name="text"> <property name="text">
<string>Reset</string> <string>Reset</string>
@ -147,7 +147,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="40" column="1" colspan="5"> <item row="41" column="1" colspan="5">
<widget class="QSlider" name="sliderLongTouchDuration"> <widget class="QSlider" name="sliderLongTouchDuration">
<property name="minimum"> <property name="minimum">
<number>500</number> <number>500</number>
@ -172,7 +172,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="55" column="1"> <item row="56" column="1">
<widget class="QToolButton" name="buttonAutoCheck"> <widget class="QToolButton" name="buttonAutoCheck">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -223,7 +223,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="30" column="1" colspan="5"> <item row="31" column="1" colspan="5">
<widget class="QSlider" name="sliderMusicVolume"> <widget class="QSlider" name="sliderMusicVolume">
<property name="maximum"> <property name="maximum">
<number>100</number> <number>100</number>
@ -239,7 +239,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="56" column="1"> <item row="57" column="1">
<widget class="QToolButton" name="buttonRepositoryDefault"> <widget class="QToolButton" name="buttonRepositoryDefault">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -261,34 +261,34 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="31" column="0"> <item row="32" column="0">
<widget class="QLabel" name="labelSoundVolume"> <widget class="QLabel" name="labelSoundVolume">
<property name="text"> <property name="text">
<string>Sound Volume</string> <string>Sound Volume</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="39" column="0"> <item row="40" column="0">
<widget class="QLabel" name="labelHapticFeedback"> <widget class="QLabel" name="labelHapticFeedback">
<property name="text"> <property name="text">
<string>Haptic Feedback</string> <string>Haptic Feedback</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="42" column="0"> <item row="43" column="0">
<widget class="QLabel" name="labelToleranceDistanceTouch"> <widget class="QLabel" name="labelToleranceDistanceTouch">
<property name="text"> <property name="text">
<string>Touch Tap Tolerance</string> <string>Touch Tap Tolerance</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="21" column="1" colspan="5"> <item row="22" column="1" colspan="5">
<widget class="QComboBox" name="comboBoxRendererType"/> <widget class="QComboBox" name="comboBoxRendererType"/>
</item> </item>
<item row="1" column="1" colspan="5"> <item row="1" column="1" colspan="5">
<widget class="QComboBox" name="comboBoxLanguage"/> <widget class="QComboBox" name="comboBoxLanguage"/>
</item> </item>
<item row="59" column="1" colspan="5"> <item row="60" column="1" colspan="5">
<widget class="QSpinBox" name="spinBoxNetworkPortLobby"> <widget class="QSpinBox" name="spinBoxNetworkPortLobby">
<property name="minimum"> <property name="minimum">
<number>1024</number> <number>1024</number>
@ -301,7 +301,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="61" column="5"> <item row="62" column="5">
<widget class="QToolButton" name="buttonValidationFull"> <widget class="QToolButton" name="buttonValidationFull">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -326,7 +326,7 @@
</attribute> </attribute>
</widget> </widget>
</item> </item>
<item row="43" column="0"> <item row="44" column="0">
<widget class="QLabel" name="labelInputMouse_3"> <widget class="QLabel" name="labelInputMouse_3">
<property name="font"> <property name="font">
<font> <font>
@ -341,7 +341,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="23" column="2" colspan="4"> <item row="24" column="2" colspan="4">
<widget class="QSlider" name="sliderScalingCursor"> <widget class="QSlider" name="sliderScalingCursor">
<property name="minimum"> <property name="minimum">
<number>10</number> <number>10</number>
@ -372,14 +372,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="22" column="0"> <item row="23" column="0">
<widget class="QLabel" name="labelCursorType"> <widget class="QLabel" name="labelCursorType">
<property name="text"> <property name="text">
<string>Software Cursor</string> <string>Software Cursor</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="48" column="1" colspan="5"> <item row="49" column="1" colspan="5">
<widget class="QComboBox" name="comboBoxEnemyPlayerAI"> <widget class="QComboBox" name="comboBoxEnemyPlayerAI">
<property name="currentText"> <property name="currentText">
<string notr="true">VCAI</string> <string notr="true">VCAI</string>
@ -396,7 +396,7 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="56" column="2" colspan="4"> <item row="57" column="2" colspan="4">
<widget class="QLineEdit" name="lineEditRepositoryDefault"> <widget class="QLineEdit" name="lineEditRepositoryDefault">
<property name="text"> <property name="text">
<string notr="true"/> <string notr="true"/>
@ -406,7 +406,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="49" column="1" colspan="5"> <item row="50" column="1" colspan="5">
<widget class="QComboBox" name="comboBoxAlliedPlayerAI"> <widget class="QComboBox" name="comboBoxAlliedPlayerAI">
<property name="currentText"> <property name="currentText">
<string notr="true">VCAI</string> <string notr="true">VCAI</string>
@ -430,7 +430,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="47" column="0"> <item row="48" column="0">
<widget class="QLabel" name="labelArtificialIntelligence"> <widget class="QLabel" name="labelArtificialIntelligence">
<property name="font"> <property name="font">
<font> <font>
@ -445,14 +445,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="56" column="0"> <item row="57" column="0">
<widget class="QLabel" name="labelRepositoryDefault"> <widget class="QLabel" name="labelRepositoryDefault">
<property name="text"> <property name="text">
<string>Default repository</string> <string>Default repository</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="27" column="1"> <item row="28" column="1">
<widget class="QLabel" name="labelScalingFontValue"/> <widget class="QLabel" name="labelScalingFontValue"/>
</item> </item>
<item row="14" column="4" colspan="2"> <item row="14" column="4" colspan="2">
@ -471,21 +471,21 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="38" column="0"> <item row="39" column="0">
<widget class="QLabel" name="labelRelativeCursorSpeed"> <widget class="QLabel" name="labelRelativeCursorSpeed">
<property name="text"> <property name="text">
<string>Relative Pointer Speed</string> <string>Relative Pointer Speed</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="25" column="0"> <item row="26" column="0">
<widget class="QLabel" name="labelDownscalingFilter"> <widget class="QLabel" name="labelDownscalingFilter">
<property name="text"> <property name="text">
<string>Downscaling Filter</string> <string>Downscaling Filter</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="54" column="1" colspan="5"> <item row="55" column="1" colspan="5">
<widget class="QToolButton" name="buttonIgnoreSslErrors"> <widget class="QToolButton" name="buttonIgnoreSslErrors">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -527,7 +527,30 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="26" column="1" colspan="2"> <item row="20" column="0">
<widget class="QLabel" name="labelAllowPortrait">
<property name="text">
<string>Allow portrait mode</string>
</property>
</widget>
</item>
<item row="20" column="1" colspan="5">
<widget class="QToolButton" name="buttonAllowPortrait">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="27" column="1" colspan="2">
<widget class="QToolButton" name="buttonFontAuto"> <widget class="QToolButton" name="buttonFontAuto">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@ -549,7 +572,7 @@
</attribute> </attribute>
</widget> </widget>
</item> </item>
<item row="31" column="1" colspan="5"> <item row="32" column="1" colspan="5">
<widget class="QSlider" name="sliderSoundVolume"> <widget class="QSlider" name="sliderSoundVolume">
<property name="maximum"> <property name="maximum">
<number>100</number> <number>100</number>
@ -565,7 +588,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="57" column="1"> <item row="58" column="1">
<widget class="QToolButton" name="buttonRepositoryExtra"> <widget class="QToolButton" name="buttonRepositoryExtra">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@ -584,28 +607,28 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="55" column="2" colspan="4"> <item row="56" column="2" colspan="4">
<widget class="QPushButton" name="refreshRepositoriesButton"> <widget class="QPushButton" name="refreshRepositoriesButton">
<property name="text"> <property name="text">
<string>Refresh now</string> <string>Refresh now</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="49" column="0"> <item row="50" column="0">
<widget class="QLabel" name="labelAlliedPlayerAI"> <widget class="QLabel" name="labelAlliedPlayerAI">
<property name="text"> <property name="text">
<string>Adventure Map Allies</string> <string>Adventure Map Allies</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="50" column="0"> <item row="51" column="0">
<widget class="QLabel" name="labelNeutralAI"> <widget class="QLabel" name="labelNeutralAI">
<property name="text"> <property name="text">
<string>Neutral AI in battles</string> <string>Neutral AI in battles</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="27" column="2" colspan="4"> <item row="28" column="2" colspan="4">
<widget class="QSlider" name="sliderScalingFont"> <widget class="QSlider" name="sliderScalingFont">
<property name="minimum"> <property name="minimum">
<number>10</number> <number>10</number>
@ -636,21 +659,21 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="58" column="1" colspan="5"> <item row="59" column="1" colspan="5">
<widget class="QLineEdit" name="lineEditGameLobbyHost"> <widget class="QLineEdit" name="lineEditGameLobbyHost">
<property name="text"> <property name="text">
<string notr="true"/> <string notr="true"/>
</property> </property>
</widget> </widget>
</item> </item>
<item row="20" column="0"> <item row="21" column="0">
<widget class="QLabel" name="labelDisplayIndex"> <widget class="QLabel" name="labelDisplayIndex">
<property name="text"> <property name="text">
<string>Display index</string> <string>Display index</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="37" column="0"> <item row="38" column="0">
<widget class="QLabel" name="labelRelativeCursorMode"> <widget class="QLabel" name="labelRelativeCursorMode">
<property name="text"> <property name="text">
<string>Use Relative Pointer Mode</string> <string>Use Relative Pointer Mode</string>
@ -660,14 +683,14 @@
<item row="7" column="1" colspan="5"> <item row="7" column="1" colspan="5">
<widget class="QSpinBox" name="spinBoxAutoSaveLimit"/> <widget class="QSpinBox" name="spinBoxAutoSaveLimit"/>
</item> </item>
<item row="51" column="0"> <item row="52" column="0">
<widget class="QLabel" name="labelFriendlyAI"> <widget class="QLabel" name="labelFriendlyAI">
<property name="text"> <property name="text">
<string>Autocombat AI in battles</string> <string>Autocombat AI in battles</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="61" column="1" colspan="2"> <item row="62" column="1" colspan="2">
<widget class="QToolButton" name="buttonValidationOff"> <widget class="QToolButton" name="buttonValidationOff">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
@ -692,7 +715,7 @@
</attribute> </attribute>
</widget> </widget>
</item> </item>
<item row="32" column="0"> <item row="33" column="0">
<widget class="QLabel" name="labelInputMouse"> <widget class="QLabel" name="labelInputMouse">
<property name="font"> <property name="font">
<font> <font>
@ -714,7 +737,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="39" column="1" colspan="5"> <item row="40" column="1" colspan="5">
<widget class="QToolButton" name="buttonHapticFeedback"> <widget class="QToolButton" name="buttonHapticFeedback">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@ -730,7 +753,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="29" column="0"> <item row="30" column="0">
<widget class="QLabel" name="labelAudio"> <widget class="QLabel" name="labelAudio">
<property name="font"> <property name="font">
<font> <font>
@ -745,7 +768,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="57" column="0"> <item row="58" column="0">
<widget class="QLabel" name="labelRepositoryExtra"> <widget class="QLabel" name="labelRepositoryExtra">
<property name="text"> <property name="text">
<string>Additional repository</string> <string>Additional repository</string>
@ -768,7 +791,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="48" column="0"> <item row="49" column="0">
<widget class="QLabel" name="labelEnemyPlayerAI"> <widget class="QLabel" name="labelEnemyPlayerAI">
<property name="text"> <property name="text">
<string>Adventure Map Enemies</string> <string>Adventure Map Enemies</string>
@ -782,21 +805,21 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="26" column="0"> <item row="27" column="0">
<widget class="QLabel" name="labelFonts"> <widget class="QLabel" name="labelFonts">
<property name="text"> <property name="text">
<string>Use scalable fonts</string> <string>Use scalable fonts</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="21" column="0"> <item row="22" column="0">
<widget class="QLabel" name="labelRendererType"> <widget class="QLabel" name="labelRendererType">
<property name="text"> <property name="text">
<string>Renderer</string> <string>Renderer</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="35" column="0"> <item row="36" column="0">
<widget class="QLabel" name="labelInputMouse_2"> <widget class="QLabel" name="labelInputMouse_2">
<property name="font"> <property name="font">
<font> <font>
@ -827,10 +850,10 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="23" column="1"> <item row="24" column="1">
<widget class="QLabel" name="labelScalingCursorValue"/> <widget class="QLabel" name="labelScalingCursorValue"/>
</item> </item>
<item row="37" column="1" colspan="5"> <item row="38" column="1" colspan="5">
<widget class="QToolButton" name="buttonRelativeCursorMode"> <widget class="QToolButton" name="buttonRelativeCursorMode">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@ -853,28 +876,28 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="58" column="0"> <item row="59" column="0">
<widget class="QLabel" name="labelGameLobbyHost"> <widget class="QLabel" name="labelGameLobbyHost">
<property name="text"> <property name="text">
<string>Online Lobby address</string> <string>Online Lobby address</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="59" column="0"> <item row="60" column="0">
<widget class="QLabel" name="labelNetworkPortLobby"> <widget class="QLabel" name="labelNetworkPortLobby">
<property name="text"> <property name="text">
<string>Online Lobby port</string> <string>Online Lobby port</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="46" column="0"> <item row="47" column="0">
<widget class="QLabel" name="labelToleranceDistanceController"> <widget class="QLabel" name="labelToleranceDistanceController">
<property name="text"> <property name="text">
<string>Controller Click Tolerance</string> <string>Controller Click Tolerance</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="50" column="1" colspan="5"> <item row="51" column="1" colspan="5">
<widget class="QComboBox" name="comboBoxNeutralAI"> <widget class="QComboBox" name="comboBoxNeutralAI">
<property name="currentText"> <property name="currentText">
<string notr="true">BattleAI</string> <string notr="true">BattleAI</string>
@ -891,7 +914,7 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="25" column="1" colspan="5"> <item row="26" column="1" colspan="5">
<widget class="QComboBox" name="comboBoxDownscalingFilter"> <widget class="QComboBox" name="comboBoxDownscalingFilter">
<item> <item>
<property name="text"> <property name="text">
@ -910,24 +933,24 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="54" column="0"> <item row="55" column="0">
<widget class="QLabel" name="labelIgnoreSslErrors"> <widget class="QLabel" name="labelIgnoreSslErrors">
<property name="text"> <property name="text">
<string>Ignore SSL errors</string> <string>Ignore SSL errors</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="20" column="1" colspan="5"> <item row="21" column="1" colspan="5">
<widget class="QComboBox" name="comboBoxDisplayIndex"/> <widget class="QComboBox" name="comboBoxDisplayIndex"/>
</item> </item>
<item row="36" column="0"> <item row="37" column="0">
<widget class="QLabel" name="labelResetTutorialTouchscreen"> <widget class="QLabel" name="labelResetTutorialTouchscreen">
<property name="text"> <property name="text">
<string>Show Tutorial again</string> <string>Show Tutorial again</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="45" column="0"> <item row="46" column="0">
<widget class="QLabel" name="labelControllerSticksAcceleration"> <widget class="QLabel" name="labelControllerSticksAcceleration">
<property name="text"> <property name="text">
<string>Sticks Acceleration</string> <string>Sticks Acceleration</string>
@ -949,7 +972,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="52" column="1" colspan="5"> <item row="53" column="1" colspan="5">
<widget class="QComboBox" name="comboBoxEnemyAI"> <widget class="QComboBox" name="comboBoxEnemyAI">
<property name="editable"> <property name="editable">
<bool>false</bool> <bool>false</bool>
@ -983,21 +1006,21 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="33" column="0"> <item row="34" column="0">
<widget class="QLabel" name="labelToleranceDistanceMouse"> <widget class="QLabel" name="labelToleranceDistanceMouse">
<property name="text"> <property name="text">
<string>Mouse Click Tolerance</string> <string>Mouse Click Tolerance</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="34" column="0"> <item row="35" column="0">
<widget class="QLabel" name="labelHandleBackRightMouseButton"> <widget class="QLabel" name="labelHandleBackRightMouseButton">
<property name="text"> <property name="text">
<string>Handle back as right mouse button</string> <string>Handle back as right mouse button</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="34" column="1" colspan="5"> <item row="35" column="1" colspan="5">
<widget class="QToolButton" name="buttonHandleBackRightMouseButton"> <widget class="QToolButton" name="buttonHandleBackRightMouseButton">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@ -1013,7 +1036,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="52" column="0"> <item row="53" column="0">
<widget class="QLabel" name="labelEnemyAI"> <widget class="QLabel" name="labelEnemyAI">
<property name="text"> <property name="text">
<string>Enemy AI in battles</string> <string>Enemy AI in battles</string>
@ -1027,7 +1050,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="42" column="1" colspan="5"> <item row="43" column="1" colspan="5">
<widget class="QSlider" name="sliderToleranceDistanceTouch"> <widget class="QSlider" name="sliderToleranceDistanceTouch">
<property name="minimum"> <property name="minimum">
<number>0</number> <number>0</number>
@ -1062,14 +1085,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="30" column="0"> <item row="31" column="0">
<widget class="QLabel" name="labelMusicVolume"> <widget class="QLabel" name="labelMusicVolume">
<property name="text"> <property name="text">
<string>Music Volume</string> <string>Music Volume</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="51" column="1" colspan="5"> <item row="52" column="1" colspan="5">
<widget class="QComboBox" name="comboBoxFriendlyAI"> <widget class="QComboBox" name="comboBoxFriendlyAI">
<property name="editable"> <property name="editable">
<bool>false</bool> <bool>false</bool>
@ -1089,14 +1112,14 @@
</item> </item>
</widget> </widget>
</item> </item>
<item row="57" column="2" colspan="4"> <item row="58" column="2" colspan="4">
<widget class="QLineEdit" name="lineEditRepositoryExtra"> <widget class="QLineEdit" name="lineEditRepositoryExtra">
<property name="text"> <property name="text">
<string notr="true"/> <string notr="true"/>
</property> </property>
</widget> </widget>
</item> </item>
<item row="23" column="0"> <item row="24" column="0">
<widget class="QLabel" name="labelScalingCursor"> <widget class="QLabel" name="labelScalingCursor">
<property name="text"> <property name="text">
<string>Cursor Scaling</string> <string>Cursor Scaling</string>
@ -1119,7 +1142,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="26" column="3" colspan="2"> <item row="27" column="3" colspan="2">
<widget class="QToolButton" name="buttonFontScalable"> <widget class="QToolButton" name="buttonFontScalable">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@ -1141,7 +1164,7 @@
</attribute> </attribute>
</widget> </widget>
</item> </item>
<item row="53" column="0"> <item row="54" column="0">
<widget class="QLabel" name="labelNetwork"> <widget class="QLabel" name="labelNetwork">
<property name="font"> <property name="font">
<font> <font>
@ -1156,7 +1179,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="60" column="0"> <item row="61" column="0">
<widget class="QLabel" name="labelMiscellaneous"> <widget class="QLabel" name="labelMiscellaneous">
<property name="font"> <property name="font">
<font> <font>
@ -1171,7 +1194,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="45" column="1" colspan="5"> <item row="46" column="1" colspan="5">
<widget class="QSlider" name="sliderControllerSticksAcceleration"> <widget class="QSlider" name="sliderControllerSticksAcceleration">
<property name="minimum"> <property name="minimum">
<number>100</number> <number>100</number>
@ -1243,21 +1266,21 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and
</property> </property>
</widget> </widget>
</item> </item>
<item row="40" column="0"> <item row="41" column="0">
<widget class="QLabel" name="labelLongTouchDuration"> <widget class="QLabel" name="labelLongTouchDuration">
<property name="text"> <property name="text">
<string>Long Touch Duration</string> <string>Long Touch Duration</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="55" column="0"> <item row="56" column="0">
<widget class="QLabel" name="labelAutoCheck"> <widget class="QLabel" name="labelAutoCheck">
<property name="text"> <property name="text">
<string>Check on startup</string> <string>Check on startup</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="46" column="1" colspan="5"> <item row="47" column="1" colspan="5">
<widget class="QSlider" name="sliderToleranceDistanceController"> <widget class="QSlider" name="sliderToleranceDistanceController">
<property name="minimum"> <property name="minimum">
<number>0</number> <number>0</number>
@ -1301,7 +1324,7 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and
</property> </property>
</widget> </widget>
</item> </item>
<item row="38" column="1" colspan="5"> <item row="39" column="1" colspan="5">
<widget class="QSlider" name="sliderRelativeCursorSpeed"> <widget class="QSlider" name="sliderRelativeCursorSpeed">
<property name="minimum"> <property name="minimum">
<number>100</number> <number>100</number>
@ -1320,7 +1343,7 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and
</property> </property>
</widget> </widget>
</item> </item>
<item row="27" column="0"> <item row="28" column="0">
<widget class="QLabel" name="labelScalingFont"> <widget class="QLabel" name="labelScalingFont">
<property name="text"> <property name="text">
<string>Font Scaling (experimental)</string> <string>Font Scaling (experimental)</string>
@ -1343,7 +1366,7 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and
</property> </property>
</widget> </widget>
</item> </item>
<item row="33" column="1" colspan="5"> <item row="34" column="1" colspan="5">
<widget class="QSlider" name="slideToleranceDistanceMouse"> <widget class="QSlider" name="slideToleranceDistanceMouse">
<property name="minimum"> <property name="minimum">
<number>0</number> <number>0</number>
@ -1378,7 +1401,7 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and
</property> </property>
</widget> </widget>
</item> </item>
<item row="26" column="5"> <item row="27" column="5">
<widget class="QToolButton" name="buttonFontOriginal"> <widget class="QToolButton" name="buttonFontOriginal">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@ -1416,14 +1439,14 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and
</property> </property>
</widget> </widget>
</item> </item>
<item row="44" column="0"> <item row="45" column="0">
<widget class="QLabel" name="labelControllerSticksSensitivity"> <widget class="QLabel" name="labelControllerSticksSensitivity">
<property name="text"> <property name="text">
<string>Sticks Sensitivity</string> <string>Sticks Sensitivity</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="24" column="0"> <item row="25" column="0">
<widget class="QLabel" name="labelUpscalingFilter"> <widget class="QLabel" name="labelUpscalingFilter">
<property name="text"> <property name="text">
<string>Upscaling Filter</string> <string>Upscaling Filter</string>
@ -1447,7 +1470,7 @@ Fullscreen Exclusive Mode - the game will cover the entirety of your screen and
<item row="12" column="1" colspan="5"> <item row="12" column="1" colspan="5">
<widget class="QComboBox" name="comboBoxResolution"/> <widget class="QComboBox" name="comboBoxResolution"/>
</item> </item>
<item row="61" column="3" colspan="2"> <item row="62" column="3" colspan="2">
<widget class="QToolButton" name="buttonValidationBasic"> <widget class="QToolButton" name="buttonValidationBasic">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>