aboutsummaryrefslogtreecommitdiffstats
path: root/src/app/config-ui
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2014-02-21 11:36:02 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2014-02-21 12:04:25 +0100
commitbab99ac39ad9de7f1c244006ccfd49852941ac26 (patch)
treeebc89a823692e632cf775d1b01edb4ff307e851a /src/app/config-ui
parentee7eb1f45529a16a4337c33fac82b205406ca1a0 (diff)
Allow the user to specify a custom place for settings.
Task-number: QBS-509 Change-Id: I4ad32c648121068880d652e3ba39d4eea59dfbc3 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/app/config-ui')
-rw-r--r--src/app/config-ui/commandlineparser.cpp9
-rw-r--r--src/app/config-ui/commandlineparser.h2
-rw-r--r--src/app/config-ui/main.cpp2
-rw-r--r--src/app/config-ui/mainwindow.cpp5
-rw-r--r--src/app/config-ui/mainwindow.h2
-rw-r--r--src/app/config-ui/settingsmodel.cpp4
-rw-r--r--src/app/config-ui/settingsmodel.h2
7 files changed, 17 insertions, 9 deletions
diff --git a/src/app/config-ui/commandlineparser.cpp b/src/app/config-ui/commandlineparser.cpp
index f094fb3b6..fb8d41796 100644
--- a/src/app/config-ui/commandlineparser.cpp
+++ b/src/app/config-ui/commandlineparser.cpp
@@ -37,6 +37,7 @@ using qbs::Internal::Tr;
static QString helpOptionShort() { return QLatin1String("-h"); }
static QString helpOptionLong() { return QLatin1String("--help"); }
+static QString settingsDirOption() { return QLatin1String("--settings-dir"); }
void CommandLineParser::parse(const QStringList &commandLine)
{
@@ -44,6 +45,7 @@ void CommandLineParser::parse(const QStringList &commandLine)
Q_ASSERT(!m_commandLine.isEmpty());
m_command = QFileInfo(m_commandLine.takeFirst()).fileName();
m_helpRequested = false;
+ m_settingsDir.clear();
if (m_commandLine.isEmpty())
return;
@@ -51,6 +53,9 @@ void CommandLineParser::parse(const QStringList &commandLine)
if (arg == helpOptionShort() || arg == helpOptionLong()) {
m_commandLine.removeFirst();
m_helpRequested = true;
+ } else if (arg == settingsDirOption()) {
+ m_commandLine.removeFirst();
+ assignOptionArgument(settingsDirOption(), m_settingsDir);
}
if (!m_commandLine.isEmpty())
@@ -70,8 +75,8 @@ QString CommandLineParser::usageString() const
"If you have more than a few settings, this might be preferable to "
"plain \"qbs config\", as it presents a hierarchical view.\n");
s += Tr::tr("Usage:\n");
- s += Tr::tr(" %1 [%3|%4]\n")
- .arg(m_command, helpOptionShort(), helpOptionLong());
+ s += Tr::tr(" %1 [%2 <settings directory>] [%3|%4]\n")
+ .arg(m_command, settingsDirOption(), helpOptionShort(), helpOptionLong());
return s;
}
diff --git a/src/app/config-ui/commandlineparser.h b/src/app/config-ui/commandlineparser.h
index 0a5fcab0a..e8edc8cd5 100644
--- a/src/app/config-ui/commandlineparser.h
+++ b/src/app/config-ui/commandlineparser.h
@@ -37,6 +37,7 @@ public:
void parse(const QStringList &commandLine);
bool helpRequested() const { return m_helpRequested; }
+ QString settingsDir() const { return m_settingsDir; }
QString usageString() const;
@@ -46,6 +47,7 @@ private:
void complainAboutExtraArguments();
bool m_helpRequested;
+ QString m_settingsDir;
QStringList m_commandLine;
QString m_command;
};
diff --git a/src/app/config-ui/main.cpp b/src/app/config-ui/main.cpp
index 6515ec227..940065602 100644
--- a/src/app/config-ui/main.cpp
+++ b/src/app/config-ui/main.cpp
@@ -55,7 +55,7 @@ int main(int argc, char *argv[])
return EXIT_FAILURE;
}
- MainWindow mw;
+ MainWindow mw(clParser.settingsDir());
mw.show();
return app.exec();
}
diff --git a/src/app/config-ui/mainwindow.cpp b/src/app/config-ui/mainwindow.cpp
index fd8651057..6a49f55d7 100644
--- a/src/app/config-ui/mainwindow.cpp
+++ b/src/app/config-ui/mainwindow.cpp
@@ -40,10 +40,11 @@
#include <QPoint>
#include <QString>
-MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
+MainWindow::MainWindow(const QString &settingsDir, QWidget *parent)
+ : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
- m_model = new SettingsModel(this);
+ m_model = new SettingsModel(settingsDir, this);
ui->treeView->setModel(m_model);
ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);
connect(ui->treeView, SIGNAL(expanded(QModelIndex)), SLOT(adjustColumns()));
diff --git a/src/app/config-ui/mainwindow.h b/src/app/config-ui/mainwindow.h
index 91ba13e6a..5998a99e6 100644
--- a/src/app/config-ui/mainwindow.h
+++ b/src/app/config-ui/mainwindow.h
@@ -43,7 +43,7 @@ class MainWindow : public QMainWindow
Q_OBJECT
public:
- explicit MainWindow(QWidget *parent = 0);
+ explicit MainWindow(const QString &settingsDir, QWidget *parent = 0);
~MainWindow();
private slots:
diff --git a/src/app/config-ui/settingsmodel.cpp b/src/app/config-ui/settingsmodel.cpp
index faa8a01c2..f983d464e 100644
--- a/src/app/config-ui/settingsmodel.cpp
+++ b/src/app/config-ui/settingsmodel.cpp
@@ -60,10 +60,10 @@ public:
bool dirty;
};
-SettingsModel::SettingsModel(QObject *parent)
+SettingsModel::SettingsModel(const QString &settingsDir, QObject *parent)
: QAbstractItemModel(parent), d(new SettingsModelPrivate)
{
- d->settings = qbsSettings();
+ d->settings = qbsSettings(settingsDir);
d->readSettings();
}
diff --git a/src/app/config-ui/settingsmodel.h b/src/app/config-ui/settingsmodel.h
index 6bfac91bd..4d9333877 100644
--- a/src/app/config-ui/settingsmodel.h
+++ b/src/app/config-ui/settingsmodel.h
@@ -32,7 +32,7 @@ class SettingsModel : public QAbstractItemModel
{
Q_OBJECT
public:
- SettingsModel(QObject *parent = 0);
+ SettingsModel(const QString &settingsDir, QObject *parent = 0);
~SettingsModel();
int keyColumn() const { return 0; }