diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-02-21 11:36:02 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-02-21 12:04:25 +0100 |
commit | bab99ac39ad9de7f1c244006ccfd49852941ac26 (patch) | |
tree | ebc89a823692e632cf775d1b01edb4ff307e851a /src/app/config-ui | |
parent | ee7eb1f45529a16a4337c33fac82b205406ca1a0 (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.cpp | 9 | ||||
-rw-r--r-- | src/app/config-ui/commandlineparser.h | 2 | ||||
-rw-r--r-- | src/app/config-ui/main.cpp | 2 | ||||
-rw-r--r-- | src/app/config-ui/mainwindow.cpp | 5 | ||||
-rw-r--r-- | src/app/config-ui/mainwindow.h | 2 | ||||
-rw-r--r-- | src/app/config-ui/settingsmodel.cpp | 4 | ||||
-rw-r--r-- | src/app/config-ui/settingsmodel.h | 2 |
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; } |