mirror of
https://github.com/ioquake/launch.git
synced 2024-11-25 20:50:58 +00:00
Save Quake 3 path to settings on Windows. QSettings is wrapped to keep error-prone stringly typed code in one place (QSettings uses string keys).
This commit is contained in:
parent
633e2fbd6c
commit
8a231f0b0b
5 changed files with 117 additions and 8 deletions
|
@ -13,9 +13,11 @@ TEMPLATE = app
|
||||||
|
|
||||||
|
|
||||||
SOURCES += main.cpp\
|
SOURCES += main.cpp\
|
||||||
mainwindow.cpp
|
mainwindow.cpp \
|
||||||
|
settings.cpp
|
||||||
|
|
||||||
HEADERS += mainwindow.h
|
HEADERS += mainwindow.h \
|
||||||
|
settings.h
|
||||||
|
|
||||||
FORMS += mainwindow.ui
|
FORMS += mainwindow.ui
|
||||||
|
|
||||||
|
|
|
@ -20,14 +20,35 @@ ioLaunch::~ioLaunch()
|
||||||
|
|
||||||
void ioLaunch::on_btnLaunch_clicked()
|
void ioLaunch::on_btnLaunch_clicked()
|
||||||
{
|
{
|
||||||
|
QString ioq3;
|
||||||
|
|
||||||
#ifdef Q_OS_WIN32
|
#ifdef Q_OS_WIN32
|
||||||
if(ioq3 == NULL)
|
// Prompt the user to set the ioq3 path if the settings value either doesn't exist or is invalid.
|
||||||
|
bool promptForPath = true;
|
||||||
|
|
||||||
|
if (settings.containsQuakePath())
|
||||||
|
{
|
||||||
|
const QString path = settings.getQuakePath();
|
||||||
|
const QDir dir(path);
|
||||||
|
|
||||||
|
if (!path.isEmpty() && dir.exists())
|
||||||
|
promptForPath = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(promptForPath)
|
||||||
{
|
{
|
||||||
msg.setText("Please select your Quake3 directory");
|
msg.setText("Please select your Quake3 directory");
|
||||||
msg.exec();
|
msg.exec();
|
||||||
QString path = QFileDialog::getExistingDirectory (this, tr("Directory"), directory.path());
|
|
||||||
ioq3 = QString("\"") + path + QDir::separator() + "ioquake3.x86.exe\" +set r_mode -1";
|
const QString path = QFileDialog::getExistingDirectory (this, tr("Directory"));
|
||||||
|
|
||||||
|
if (path.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
settings.setQuakePath(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ioq3 = QString("\"") + settings.getQuakePath() + QDir::separator() + "ioquake3.x86.exe\" +set r_mode -1";
|
||||||
#elif defined Q_OS_MAC
|
#elif defined Q_OS_MAC
|
||||||
ioq3 = "open -a ioquake3 --args +set r_mode -1";
|
ioq3 = "open -a ioquake3 --args +set r_mode -1";
|
||||||
#elif defined Q_OS_UNIX
|
#elif defined Q_OS_UNIX
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
#include "settings.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class ioLaunch;
|
class ioLaunch;
|
||||||
|
@ -41,17 +42,15 @@ private slots:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::ioLaunch *ui;
|
Ui::ioLaunch *ui;
|
||||||
QString ioq3;
|
|
||||||
QString resOption;
|
QString resOption;
|
||||||
QString screenOption;
|
QString screenOption;
|
||||||
QMessageBox msg;
|
QMessageBox msg;
|
||||||
QMessageBox ioq3Failed;
|
QMessageBox ioq3Failed;
|
||||||
QDir directory;
|
|
||||||
int ioWidth;
|
int ioWidth;
|
||||||
int ioHeight;
|
int ioHeight;
|
||||||
bool ioWedited;
|
bool ioWedited;
|
||||||
bool ioHedited;
|
bool ioHedited;
|
||||||
|
Settings settings;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|
44
settings.cpp
Normal file
44
settings.cpp
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2013 The ioquake Group
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
#include <QString>
|
||||||
|
#include "settings.h"
|
||||||
|
|
||||||
|
Settings::Settings() :
|
||||||
|
settings("ioquake", "launch")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Settings::getQuakePath() const
|
||||||
|
{
|
||||||
|
return settings.value("quakePath").toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Settings::containsQuakePath() const
|
||||||
|
{
|
||||||
|
return settings.contains("quakePath");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::setQuakePath(const QString &path)
|
||||||
|
{
|
||||||
|
settings.setValue("quakePath", path);
|
||||||
|
}
|
43
settings.h
Normal file
43
settings.h
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
/*
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2013 The ioquake Group
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
#ifndef SETTINGS_H
|
||||||
|
#define SETTINGS_H
|
||||||
|
|
||||||
|
#include <QSettings>
|
||||||
|
|
||||||
|
class QString;
|
||||||
|
|
||||||
|
class Settings
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Settings();
|
||||||
|
|
||||||
|
QString getQuakePath() const;
|
||||||
|
bool containsQuakePath() const;
|
||||||
|
void setQuakePath(const QString &path);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QSettings settings;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SETTINGS_H
|
Loading…
Reference in a new issue