mirror of https://github.com/OpenMW/openmw.git
Removed some leftover files belonging to the old launcher
parent
b9acc4a0ac
commit
9b439d74da
@ -1,259 +0,0 @@
|
||||
#include <QtGui>
|
||||
|
||||
#include "settingsdialog.h"
|
||||
|
||||
SettingsDialog::SettingsDialog()
|
||||
{
|
||||
QTabWidget *tabWidget = new QTabWidget(this);
|
||||
QWidget *graphicsTab = new QWidget();
|
||||
|
||||
// Render group
|
||||
QGroupBox *groupRender = new QGroupBox(tr("Renderer"), graphicsTab);
|
||||
groupRender->setMinimumWidth(450);
|
||||
|
||||
QVBoxLayout *groupRenderLayout = new QVBoxLayout(groupRender);
|
||||
QVBoxLayout *dialogLayout = new QVBoxLayout(this);
|
||||
QVBoxLayout *pageLayout = new QVBoxLayout(graphicsTab);
|
||||
|
||||
QGridLayout *renderLayout = new QGridLayout();
|
||||
|
||||
QLabel *labelRender = new QLabel(tr("Rendering Subsystem:"), groupRender);
|
||||
comboRender = new QComboBox(groupRender);
|
||||
|
||||
QLabel *labelRTT = new QLabel(tr("Preferred RTT Mode:"), groupRender);
|
||||
comboRTT = new QComboBox(groupRender);
|
||||
|
||||
QLabel *labelAA = new QLabel(tr("Antialiasing:"), groupRender);
|
||||
comboAA = new QComboBox(groupRender);
|
||||
|
||||
renderLayout->addWidget(labelRender, 0, 0, 1, 1);
|
||||
renderLayout->addWidget(comboRender, 0, 1, 1, 1);
|
||||
|
||||
QSpacerItem *vSpacer1 = new QSpacerItem(20, 10, QSizePolicy::Minimum, QSizePolicy::Minimum);
|
||||
renderLayout->addItem(vSpacer1, 1, 1, 1, 1);
|
||||
|
||||
renderLayout->addWidget(labelRTT, 2, 0, 1, 1);
|
||||
renderLayout->addWidget(comboRTT, 2, 1, 1, 1);
|
||||
renderLayout->addWidget(labelAA, 3, 0, 1, 1);
|
||||
renderLayout->addWidget(comboAA, 3, 1, 1, 1);
|
||||
|
||||
QSpacerItem *vSpacer2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
|
||||
|
||||
groupRenderLayout->addLayout(renderLayout);
|
||||
groupRenderLayout->addItem(vSpacer2);
|
||||
|
||||
pageLayout->addWidget(groupRender);
|
||||
|
||||
// Display group
|
||||
QGroupBox *groupDisplay = new QGroupBox(tr("Display"), graphicsTab);
|
||||
QVBoxLayout *groupDisplayLayout = new QVBoxLayout(groupDisplay);
|
||||
|
||||
QGridLayout *displayLayout = new QGridLayout();
|
||||
|
||||
QLabel *labelResolution = new QLabel(tr("Resolution:"), groupDisplay);
|
||||
comboResolution = new QComboBox(groupDisplay);
|
||||
|
||||
QLabel *labelFrequency = new QLabel(tr("Display Frequency:"), groupDisplay);
|
||||
comboFrequency = new QComboBox(groupDisplay);
|
||||
|
||||
checkVSync = new QCheckBox(tr("Vertical Sync"), groupDisplay);
|
||||
checkGamma = new QCheckBox(tr("sRGB Gamma Conversion"), groupDisplay);
|
||||
checkFullScreen = new QCheckBox(tr("Full Screen"), groupDisplay);
|
||||
|
||||
displayLayout->addWidget(labelResolution, 0, 0, 1, 1);
|
||||
displayLayout->addWidget(comboResolution, 0, 1, 1, 1);
|
||||
displayLayout->addWidget(labelFrequency, 1, 0, 1, 1);
|
||||
displayLayout->addWidget(comboFrequency, 1, 1, 1, 1);
|
||||
|
||||
QSpacerItem *vSpacer3 = new QSpacerItem(20, 10, QSizePolicy::Minimum, QSizePolicy::Minimum);
|
||||
displayLayout->addItem(vSpacer3, 2, 1, 1, 1);
|
||||
|
||||
displayLayout->addWidget(checkVSync, 3, 0, 1, 1);
|
||||
displayLayout->addWidget(checkGamma, 3, 1, 1, 1);
|
||||
displayLayout->addWidget(checkFullScreen, 6, 0, 1, 1);
|
||||
|
||||
QSpacerItem *vSpacer4 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
|
||||
|
||||
groupDisplayLayout->addLayout(displayLayout);
|
||||
groupDisplayLayout->addItem(vSpacer4);
|
||||
|
||||
pageLayout->addWidget(groupDisplay);
|
||||
|
||||
|
||||
tabWidget->addTab(graphicsTab, QString(tr("Graphics")));
|
||||
tabWidget->setCurrentIndex(0);
|
||||
|
||||
dialogLayout->addWidget(tabWidget);
|
||||
|
||||
QDialogButtonBox *buttonBox = new QDialogButtonBox(this);
|
||||
buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
|
||||
|
||||
dialogLayout->addWidget(buttonBox);
|
||||
|
||||
setWindowTitle(tr("Settings"));
|
||||
setWindowIcon(QIcon::fromTheme("preferences-other"));
|
||||
|
||||
// Ogre Settings
|
||||
// TODO: Find out a way to do this nice and platform-independent
|
||||
QString filepath = QDir::homePath();
|
||||
filepath.append("/.config/openmw/ogre.cfg");
|
||||
|
||||
ogreConfig = new QSettings(filepath, QSettings::IniFormat);
|
||||
|
||||
// Signals and slots
|
||||
connect(comboRender, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(rendererChanged(const QString&)));
|
||||
connect(buttonBox, SIGNAL(accepted()), this, SLOT(writeConfig()));
|
||||
connect(buttonBox, SIGNAL(rejected()), this, SLOT(close()));
|
||||
|
||||
// Ogre stuff
|
||||
root = new Ogre::Root("plugins.cfg");
|
||||
|
||||
// Get the available renderers and put them in the combobox
|
||||
const Ogre::RenderSystemList &renderers = root->getAvailableRenderers();
|
||||
|
||||
for (Ogre::RenderSystemList::const_iterator r = renderers.begin(); r != renderers.end(); ++r) {
|
||||
comboRender->addItem((*r)->getName().c_str());
|
||||
}
|
||||
|
||||
int index = comboRender->findText(getConfigValue("Render System"));
|
||||
|
||||
if ( index != -1) {
|
||||
comboRender->setCurrentIndex(index);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
QStringList SettingsDialog::getAvailableOptions(const QString& key)
|
||||
{
|
||||
QStringList result;
|
||||
|
||||
uint row = 0;
|
||||
Ogre::ConfigOptionMap options = mSelectedRenderSystem->getConfigOptions();
|
||||
|
||||
for (Ogre::ConfigOptionMap::iterator i = options.begin (); i != options.end (); i++, row++)
|
||||
{
|
||||
Ogre::StringVector::iterator opt_it;
|
||||
uint idx = 0;
|
||||
for (opt_it = i->second.possibleValues.begin ();
|
||||
opt_it != i->second.possibleValues.end (); opt_it++, idx++)
|
||||
{
|
||||
|
||||
if (strcmp (key.toStdString().c_str(), i->first.c_str()) == 0)
|
||||
result << (*opt_it).c_str();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void SettingsDialog::rendererChanged(const QString& renderer)
|
||||
{
|
||||
// Set the render system to the selected one
|
||||
mSelectedRenderSystem = root->getRenderSystemByName(renderer.toStdString().c_str());
|
||||
|
||||
comboRTT->addItems(getAvailableOptions("RTT Preferred Mode"));
|
||||
comboAA->addItems(getAvailableOptions("FSAA"));
|
||||
comboResolution->addItems(getAvailableOptions("Video Mode"));
|
||||
comboFrequency->addItems(getAvailableOptions("Display Frequency"));
|
||||
|
||||
// Get the value for the option the config file, find if it's in the combobox.
|
||||
// If it's found, set the current index to that value, otherwise: ignore.
|
||||
|
||||
int index = comboRTT->findText(getConfigValue("RTT Preferred Mode"));
|
||||
if ( index != -1)
|
||||
comboRTT->setCurrentIndex(index);
|
||||
|
||||
index = comboAA->findText(getConfigValue("FSAA"));
|
||||
if ( index != -1)
|
||||
comboAA->setCurrentIndex(index);
|
||||
|
||||
index = comboResolution->findText(getConfigValue("Video Mode"));
|
||||
if ( index != -1)
|
||||
comboResolution->setCurrentIndex(index);
|
||||
|
||||
index = comboFrequency->findText(getConfigValue("Display Frequency"));
|
||||
if ( index != -1)
|
||||
comboFrequency->setCurrentIndex(index);
|
||||
|
||||
// Now we do the same for the checkboxes
|
||||
if (QString::compare(getConfigValue("VSync"), QString("Yes")) == 0) {
|
||||
checkVSync->setCheckState(Qt::Checked);
|
||||
}
|
||||
|
||||
if (QString::compare(getConfigValue("sRGB Gamma Conversion"), QString("Yes")) == 0) {
|
||||
checkGamma->setCheckState(Qt::Checked);
|
||||
}
|
||||
|
||||
if (QString::compare(getConfigValue("Full Screen"), QString("Yes")) == 0) {
|
||||
checkFullScreen->setCheckState(Qt::Checked);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
QString SettingsDialog::getConfigValue(const QString& key)
|
||||
{
|
||||
QString result;
|
||||
|
||||
ogreConfig->beginGroup(mSelectedRenderSystem->getName().c_str());
|
||||
result = ogreConfig->value(key).toString();
|
||||
ogreConfig->endGroup();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void SettingsDialog::writeConfig()
|
||||
{
|
||||
// Get the values from the GUI elements and write them to the config file
|
||||
|
||||
// Custom write method: We cannot use QSettings because it does not accept spaces
|
||||
|
||||
QString keyName;
|
||||
QString fileName;
|
||||
|
||||
QFile file(ogreConfig->fileName());
|
||||
|
||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
|
||||
// File could not be opened, TODO error
|
||||
close();
|
||||
|
||||
QTextStream out(&file);
|
||||
|
||||
out << "Render System=" << mSelectedRenderSystem->getName().c_str() << endl << endl;
|
||||
|
||||
// add brackets to the renderer's name
|
||||
QString renderer = mSelectedRenderSystem->getName().c_str();
|
||||
renderer.prepend("[");
|
||||
renderer.append("]");
|
||||
out << renderer << endl;
|
||||
|
||||
out << "Display Frequency=" << comboFrequency->currentText() << endl;
|
||||
out << "FSAA=" << comboAA->currentText() << endl;
|
||||
|
||||
if (checkFullScreen->checkState() == Qt::Checked) {
|
||||
out << "Full Screen=Yes" << endl;
|
||||
} else {
|
||||
out << "Full Screen=No" << endl;
|
||||
}
|
||||
|
||||
out << "RTT Preferred Mode=" << comboRTT->currentText() << endl;
|
||||
|
||||
if (checkVSync->checkState() == Qt::Checked) {
|
||||
out << "VSync=Yes" << endl;
|
||||
} else {
|
||||
out << "VSync=No" << endl;
|
||||
}
|
||||
|
||||
out << "Video Mode=" << comboResolution->currentText() << endl;
|
||||
|
||||
if (checkGamma->checkState() == Qt::Checked) {
|
||||
out << "sRGB Gamma Conversion=Yes" << endl;
|
||||
} else {
|
||||
out << "sRGB Gamma Conversion=No" << endl;
|
||||
}
|
||||
|
||||
file.close();
|
||||
|
||||
close(); // Exit dialog
|
||||
}
|
||||
|
@ -1,46 +0,0 @@
|
||||
#ifndef SETTINGSDIALOG_H
|
||||
#define SETTINGSDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QComboBox>
|
||||
#include <QCheckBox>
|
||||
#include <QSettings>
|
||||
|
||||
#include <OgreRoot.h>
|
||||
#include <OgreRenderSystem.h>
|
||||
#include <OgreConfigFile.h>
|
||||
#include <OgreConfigDialog.h>
|
||||
#include <OgreException.h>
|
||||
#include <OgreLogManager.h>
|
||||
|
||||
class SettingsDialog : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SettingsDialog();
|
||||
QStringList getAvailableOptions(const QString& key);
|
||||
|
||||
Ogre::Root *root;
|
||||
Ogre::RenderSystem *mSelectedRenderSystem;
|
||||
|
||||
QComboBox *comboRender;
|
||||
QComboBox *comboRTT;
|
||||
QComboBox *comboAA;
|
||||
QComboBox *comboResolution;
|
||||
QComboBox *comboFrequency;
|
||||
|
||||
QCheckBox *checkVSync;
|
||||
QCheckBox *checkGamma;
|
||||
QCheckBox *checkFullScreen;
|
||||
|
||||
QSettings *ogreConfig;
|
||||
|
||||
QString getConfigValue(const QString& key);
|
||||
|
||||
public slots:
|
||||
void rendererChanged(const QString& renderer);
|
||||
void writeConfig();
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue