Qt: Add camera driver option

This commit is contained in:
Vicki Pfau 2017-07-28 13:44:47 -07:00
parent 9dc8b9e854
commit 64eb253c50
4 changed files with 193 additions and 0 deletions

View File

@ -130,15 +130,40 @@ SettingsView::SettingsView(ConfigController* controller, InputController* inputC
}
#endif
// TODO: Move to reloadConfig()
QVariant cameraDriver = m_controller->getQtOption("cameraDriver");
m_ui.cameraDriver->addItem(tr("None (Still Image)"), static_cast<int>(InputController::CameraDriver::NONE));
if (cameraDriver.isNull() || cameraDriver.toInt() == static_cast<int>(InputController::CameraDriver::NONE)) {
m_ui.cameraDriver->setCurrentIndex(m_ui.cameraDriver->count() - 1);
}
#ifdef BUILD_QT_MULTIMEDIA
m_ui.cameraDriver->addItem(tr("Qt Multimedia"), static_cast<int>(InputController::CameraDriver::QT_MULTIMEDIA));
if (!cameraDriver.isNull() && cameraDriver.toInt() == static_cast<int>(InputController::CameraDriver::QT_MULTIMEDIA)) {
m_ui.cameraDriver->setCurrentIndex(m_ui.cameraDriver->count() - 1);
}
#endif
#ifdef M_CORE_GBA
connect(m_ui.gbaBiosBrowse, &QPushButton::clicked, [this]() {
selectBios(m_ui.gbaBios);
});
#else
m_ui.gbaBiosBrowse->hide();
#endif
#ifdef M_CORE_GB
connect(m_ui.gbBiosBrowse, &QPushButton::clicked, [this]() {
selectBios(m_ui.gbBios);
});
connect(m_ui.gbcBiosBrowse, &QPushButton::clicked, [this]() {
selectBios(m_ui.gbcBios);
});
#else
m_ui.gbBiosBrowse->hide();
m_ui.gbcBiosBrowse->hide();
m_ui.gb->hide();
#endif
GBAKeyEditor* editor = new GBAKeyEditor(inputController, InputController::KEYBOARD, QString(), this);
m_ui.stackedWidget->addWidget(editor);
@ -294,6 +319,12 @@ void SettingsView::updateConfig() {
emit displayDriverChanged();
}
QVariant cameraDriver = m_ui.cameraDriver->itemData(m_ui.cameraDriver->currentIndex());
if (cameraDriver != m_controller->getQtOption("cameraDriver")) {
m_controller->setQtOption("cameraDriver", cameraDriver);
emit cameraDriverChanged();
}
QLocale language = m_ui.languages->itemData(m_ui.languages->currentIndex()).toLocale();
if (language != m_controller->getQtOption("language").toLocale() && !(language.bcp47Name() == QLocale::system().bcp47Name() && m_controller->getQtOption("language").isNull())) {
m_controller->setQtOption("language", language.bcp47Name());

View File

@ -32,6 +32,7 @@ signals:
void biosLoaded(int platform, const QString&);
void audioDriverChanged();
void displayDriverChanged();
void cameraDriverChanged();
void pathsChanged();
void languageChanged();
void libraryCleared();

View File

@ -65,6 +65,11 @@
<string>Paths</string>
</property>
</item>
<item>
<property name="text">
<string>Game Boy</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0" colspan="2">
@ -1010,6 +1015,161 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="gb">
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_29">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Default model</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="gbModel">
<property name="enabled">
<bool>false</bool>
</property>
<item>
<property name="text">
<string>Autodetect</string>
</property>
</item>
<item>
<property name="text">
<string>Game Boy (DMG)</string>
</property>
</item>
<item>
<property name="text">
<string>Game Boy Color (CGB)</string>
</property>
</item>
<item>
<property name="text">
<string>Game Boy Advance (AGB)</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_28">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Default colors</string>
</property>
</widget>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_9">
<item>
<widget class="QFrame" name="color0">
<property name="minimumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="color1">
<property name="minimumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="color2">
<property name="minimumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="color3">
<property name="minimumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0" colspan="2">
<widget class="Line" name="line_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_27">
<property name="text">
<string>Camera driver</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="cameraDriver">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>

View File

@ -402,6 +402,7 @@ void Window::openSettingsWindow() {
#endif
connect(settingsWindow, &SettingsView::displayDriverChanged, this, &Window::reloadDisplayDriver);
connect(settingsWindow, &SettingsView::audioDriverChanged, this, &Window::reloadAudioDriver);
connect(settingsWindow, &SettingsView::cameraDriverChanged, this, &Window::mustRestart);
connect(settingsWindow, &SettingsView::languageChanged, this, &Window::mustRestart);
connect(settingsWindow, &SettingsView::pathsChanged, this, &Window::reloadConfig);
connect(settingsWindow, &SettingsView::libraryCleared, m_libraryView, &LibraryController::clear);