GameSettings: Add custom aspect ratios
This commit is contained in:
@@ -368,11 +368,25 @@ void GamePropertiesDialog::populateGameSettings()
|
||||
QSignalBlocker sb(m_ui.userCropMode);
|
||||
m_ui.userCropMode->setCurrentIndex(static_cast<int>(gs.display_crop_mode.value()) + 1);
|
||||
}
|
||||
|
||||
if (gs.display_aspect_ratio.has_value())
|
||||
{
|
||||
QSignalBlocker sb(m_ui.userAspectRatio);
|
||||
m_ui.userAspectRatio->setCurrentIndex(static_cast<int>(gs.display_aspect_ratio.value()) + 1);
|
||||
}
|
||||
if (gs.display_aspect_ratio_custom_numerator.has_value())
|
||||
{
|
||||
QSignalBlocker sb(m_ui.userCustomAspectRatioNumerator);
|
||||
m_ui.userCustomAspectRatioNumerator->setValue(static_cast<int>(gs.display_aspect_ratio_custom_numerator.value()));
|
||||
}
|
||||
if (gs.display_aspect_ratio_custom_denominator.has_value())
|
||||
{
|
||||
QSignalBlocker sb(m_ui.userCustomAspectRatioDenominator);
|
||||
m_ui.userCustomAspectRatioDenominator->setValue(
|
||||
static_cast<int>(gs.display_aspect_ratio_custom_denominator.value()));
|
||||
}
|
||||
onUserAspectRatioChanged();
|
||||
|
||||
if (gs.gpu_downsample_mode.has_value())
|
||||
{
|
||||
QSignalBlocker sb(m_ui.userDownsampleMode);
|
||||
@@ -566,6 +580,21 @@ void GamePropertiesDialog::connectUi()
|
||||
else
|
||||
m_game_settings.display_aspect_ratio = static_cast<DisplayAspectRatio>(index - 1);
|
||||
saveGameSettings();
|
||||
onUserAspectRatioChanged();
|
||||
});
|
||||
connect(m_ui.userCustomAspectRatioNumerator, QOverload<int>::of(&QSpinBox::valueChanged), [this](int value) {
|
||||
if (value <= 0)
|
||||
m_game_settings.display_aspect_ratio_custom_numerator.reset();
|
||||
else
|
||||
m_game_settings.display_aspect_ratio_custom_numerator = static_cast<u16>(value);
|
||||
saveGameSettings();
|
||||
});
|
||||
connect(m_ui.userCustomAspectRatioDenominator, QOverload<int>::of(&QSpinBox::valueChanged), [this](int value) {
|
||||
if (value <= 0)
|
||||
m_game_settings.display_aspect_ratio_custom_denominator.reset();
|
||||
else
|
||||
m_game_settings.display_aspect_ratio_custom_denominator = static_cast<u16>(value);
|
||||
saveGameSettings();
|
||||
});
|
||||
|
||||
connect(m_ui.userCropMode, QOverload<int>::of(&QComboBox::currentIndexChanged), [this](int index) {
|
||||
@@ -795,6 +824,16 @@ void GamePropertiesDialog::updateCPUClockSpeedLabel()
|
||||
m_ui.userCPUClockSpeedLabel->setText(tr("%1% (%2MHz)").arg(percent).arg(frequency / 1000000.0, 0, 'f', 2));
|
||||
}
|
||||
|
||||
void GamePropertiesDialog::onUserAspectRatioChanged()
|
||||
{
|
||||
const int index = m_ui.userAspectRatio->currentIndex();
|
||||
const bool is_custom = (index > 0 && static_cast<DisplayAspectRatio>(index - 1) == DisplayAspectRatio::Custom);
|
||||
|
||||
m_ui.userCustomAspectRatioNumerator->setVisible(is_custom);
|
||||
m_ui.userCustomAspectRatioDenominator->setVisible(is_custom);
|
||||
m_ui.userCustomAspectRatioSeparator->setVisible(is_custom);
|
||||
}
|
||||
|
||||
void GamePropertiesDialog::fillEntryFromUi(GameListCompatibilityEntry* entry)
|
||||
{
|
||||
entry->code = m_game_code;
|
||||
|
||||
@@ -50,6 +50,7 @@ private:
|
||||
void fillEntryFromUi(GameListCompatibilityEntry* entry);
|
||||
void computeTrackHashes();
|
||||
void onResize();
|
||||
void onUserAspectRatioChanged();
|
||||
|
||||
Ui::GamePropertiesDialog m_ui;
|
||||
std::array<QCheckBox*, static_cast<u32>(GameSettings::Trait::Count)> m_trait_checkboxes{};
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>793</width>
|
||||
<height>619</height>
|
||||
<height>651</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@@ -269,7 +269,38 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="userAspectRatio"/>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_8" stretch="1,0,0,0">
|
||||
<item>
|
||||
<widget class="QComboBox" name="userAspectRatio"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="userCustomAspectRatioNumerator">
|
||||
<property name="minimum">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>9999</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="userCustomAspectRatioSeparator">
|
||||
<property name="text">
|
||||
<string>:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSpinBox" name="userCustomAspectRatioDenominator">
|
||||
<property name="minimum">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>9999</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_17">
|
||||
|
||||
Reference in New Issue
Block a user