Added possebility to call settings for just one application.

This commit is contained in:
Patrick von Reth 2015-08-18 10:41:34 +02:00
parent 14a412b54f
commit cf46a9aae1
3 changed files with 31 additions and 12 deletions

View File

@ -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[]) int main(int argc, char *argv[])
{ {
SettingsWindow *window;
QApplication app(argc, argv); QApplication app(argc, argv);
app.setApplicationName(QLatin1String("SnoreSettings")); app.setApplicationName(QLatin1String("SnoreSettings"));
app.setOrganizationName(QLatin1String("SnoreNotify")); app.setOrganizationName(QLatin1String("SnoreNotify"));
@ -113,10 +117,9 @@ int main(int argc, char *argv[])
listApps(); listApps();
} else if (parser.isSet(listSettingsCommand)) { } else if (parser.isSet(listSettingsCommand)) {
listSettings(type, appName); listSettings(type, appName);
} else if (parser.optionNames().empty() && parser.positionalArguments().empty()) { } else if ((parser.optionNames().empty() || (parser.optionNames().size() == 1 && parser.isSet(appNameCommand)))
window = new SettingsWindow(); && parser.positionalArguments().empty()) {
window->show(); return showWindow(appName);
return app.exec();
} else { } else {
QStringList posArgs = parser.positionalArguments(); QStringList posArgs = parser.positionalArguments();
if (posArgs.size() != 2) { if (posArgs.size() != 2) {

View File

@ -26,18 +26,34 @@
#include <QApplication> #include <QApplication>
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <iostream>
using namespace Snore; using namespace Snore;
SettingsWindow::SettingsWindow(QWidget *parent) : SettingsWindow::SettingsWindow(const QString &appName, QWidget *parent) :
QMainWindow(parent), QMainWindow(parent),
ui(new Ui::SettingsWindow) ui(new Ui::SettingsWindow)
{ {
ui->setupUi(this); ui->setupUi(this);
ui->widget->show(); ui->widget->show();
if (appName.isEmpty()) {
QStringList list = knownApps(); QStringList list = knownApps();
list.removeAll(qApp->applicationName()); list.removeAll(qApp->applicationName());
ui->comboBox->addItems(list); 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() SettingsWindow::~SettingsWindow()

View File

@ -33,7 +33,7 @@ class SettingsWindow : public QMainWindow
Q_OBJECT Q_OBJECT
public: public:
explicit SettingsWindow(QWidget *parent = 0); explicit SettingsWindow(const QString &appName, QWidget *parent = 0);
~SettingsWindow(); ~SettingsWindow();
static QStringList knownApps(); static QStringList knownApps();