diff --git a/src/settings/main.cpp b/src/settings/main.cpp index faa2fd9..0a1741a 100644 --- a/src/settings/main.cpp +++ b/src/settings/main.cpp @@ -69,11 +69,15 @@ void listSettings(SettingsType type, const QString &application) } } +int showWindow(const QString &appName) +{ + SettingsWindow *window = new SettingsWindow(appName); + window->show(); + return qApp->exec(); +} + int main(int argc, char *argv[]) { - - SettingsWindow *window; - QApplication app(argc, argv); app.setApplicationName(QLatin1String("SnoreSettings")); app.setOrganizationName(QLatin1String("SnoreNotify")); @@ -113,10 +117,9 @@ int main(int argc, char *argv[]) listApps(); } else if (parser.isSet(listSettingsCommand)) { listSettings(type, appName); - } else if (parser.optionNames().empty() && parser.positionalArguments().empty()) { - window = new SettingsWindow(); - window->show(); - return app.exec(); + } else if ((parser.optionNames().empty() || (parser.optionNames().size() == 1 && parser.isSet(appNameCommand))) + && parser.positionalArguments().empty()) { + return showWindow(appName); } else { QStringList posArgs = parser.positionalArguments(); if (posArgs.size() != 2) { diff --git a/src/settings/settingswindow.cpp b/src/settings/settingswindow.cpp index 4078e3a..819e8fe 100644 --- a/src/settings/settingswindow.cpp +++ b/src/settings/settingswindow.cpp @@ -26,18 +26,34 @@ #include #include +#include + using namespace Snore; -SettingsWindow::SettingsWindow(QWidget *parent) : +SettingsWindow::SettingsWindow(const QString &appName, QWidget *parent) : QMainWindow(parent), ui(new Ui::SettingsWindow) { ui->setupUi(this); ui->widget->show(); - QStringList list = knownApps(); - list.removeAll(qApp->applicationName()); - ui->comboBox->addItems(list); + if (appName.isEmpty()) { + QStringList list = knownApps(); + list.removeAll(qApp->applicationName()); + ui->comboBox->addItems(list); + } else { + if (!knownApps().contains(appName)) { + + std::wcerr << "Error: " << appName.toUtf8().constData() << " is not known to Snorenotify" << std::endl; + exit(1); + } + ui->comboBox->deleteLater(); + ui->label->deleteLater(); + SnoreCorePrivate::instance()->setLocalSttingsPrefix(appName); + setWindowTitle(appName + tr(" Settings")); + ui->widget->initTabs(); + ui->widget->setVisible(true); + } } SettingsWindow::~SettingsWindow() diff --git a/src/settings/settingswindow.h b/src/settings/settingswindow.h index 3d229d1..17fd1b6 100644 --- a/src/settings/settingswindow.h +++ b/src/settings/settingswindow.h @@ -33,7 +33,7 @@ class SettingsWindow : public QMainWindow Q_OBJECT public: - explicit SettingsWindow(QWidget *parent = 0); + explicit SettingsWindow(const QString &appName, QWidget *parent = 0); ~SettingsWindow(); static QStringList knownApps();