make it more easy to embed the settings dialog
This commit is contained in:
parent
f83bbe53a8
commit
503d264839
|
@ -70,6 +70,11 @@ void PluginSettingsWidget::saveSettings()
|
||||||
save();
|
save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PluginSettingsWidget::isDirty()
|
||||||
|
{
|
||||||
|
return m_dirty;
|
||||||
|
}
|
||||||
|
|
||||||
QVariant PluginSettingsWidget::value(const QString &key) const
|
QVariant PluginSettingsWidget::value(const QString &key) const
|
||||||
{
|
{
|
||||||
return m_snorePlugin->value(key);
|
return m_snorePlugin->value(key);
|
||||||
|
@ -77,7 +82,10 @@ QVariant PluginSettingsWidget::value(const QString &key) const
|
||||||
|
|
||||||
void PluginSettingsWidget::setValue(const QString &key, const QVariant &value)
|
void PluginSettingsWidget::setValue(const QString &key, const QVariant &value)
|
||||||
{
|
{
|
||||||
m_snorePlugin->setValue(key, value);
|
if (this->value(key) != value) {
|
||||||
|
m_snorePlugin->setValue(key, value);
|
||||||
|
m_dirty = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PluginSettingsWidget::load()
|
void PluginSettingsWidget::load()
|
||||||
|
|
|
@ -42,6 +42,8 @@ public:
|
||||||
void loadSettings();
|
void loadSettings();
|
||||||
void saveSettings();
|
void saveSettings();
|
||||||
|
|
||||||
|
bool isDirty();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QVariant value(const QString &key) const;
|
QVariant value(const QString &key) const;
|
||||||
void setValue(const QString &key, const QVariant &value);
|
void setValue(const QString &key, const QVariant &value);
|
||||||
|
@ -53,6 +55,7 @@ private:
|
||||||
SnorePlugin *m_snorePlugin;
|
SnorePlugin *m_snorePlugin;
|
||||||
QFormLayout *m_layout;
|
QFormLayout *m_layout;
|
||||||
QCheckBox *m_enabled;
|
QCheckBox *m_enabled;
|
||||||
|
bool m_dirty = false;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,44 +77,39 @@ void SettingsDialog::load()
|
||||||
void SettingsDialog::save()
|
void SettingsDialog::save()
|
||||||
{
|
{
|
||||||
snoreDebug(SNORE_DEBUG) << "saving";
|
snoreDebug(SNORE_DEBUG) << "saving";
|
||||||
|
bool dirty = false;
|
||||||
for (auto w : m_tabs) {
|
for (auto w : m_tabs) {
|
||||||
w->saveSettings();
|
w->saveSettings();
|
||||||
|
dirty |= w->isDirty();
|
||||||
}
|
}
|
||||||
|
dirty |= SnoreCore::instance().value("PrimaryBackend", LOCAL_SETTING).toString() != ui->primaryBackendComboBox->currentText();
|
||||||
|
dirty |= SnoreCore::instance().value("Timeout", LOCAL_SETTING).toInt() != ui->timeoutSpinBox->value();
|
||||||
SnoreCore::instance().setValue("PrimaryBackend", ui->primaryBackendComboBox->currentText(), LOCAL_SETTING);
|
SnoreCore::instance().setValue("PrimaryBackend", ui->primaryBackendComboBox->currentText(), LOCAL_SETTING);
|
||||||
SnoreCore::instance().setValue("Timeout", ui->timeoutSpinBox->value(), LOCAL_SETTING);
|
SnoreCore::instance().setValue("Timeout", ui->timeoutSpinBox->value(), LOCAL_SETTING);
|
||||||
SnoreCorePrivate::instance()->syncSettings();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Snore::SettingsDialog::on_buttonBox_clicked(QAbstractButton *button)
|
if (dirty) {
|
||||||
{
|
SnoreCorePrivate::instance()->syncSettings();
|
||||||
switch (ui->buttonBox->buttonRole(button)) {
|
|
||||||
case QDialogButtonBox::ApplyRole:
|
|
||||||
save();
|
|
||||||
break;
|
|
||||||
case QDialogButtonBox::ResetRole:
|
|
||||||
load();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
snoreDebug(SNORE_WARNING) << "unhandled role" << button->text();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsDialog::show()
|
void SettingsDialog::setVisible(bool b)
|
||||||
{
|
{
|
||||||
load();
|
if (b) {
|
||||||
QWidget::show();
|
load();
|
||||||
|
} else {
|
||||||
|
save();
|
||||||
|
}
|
||||||
|
QWidget::setVisible(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsDialog::accept()
|
void SettingsDialog::accept()
|
||||||
{
|
{
|
||||||
hide();
|
|
||||||
save();
|
save();
|
||||||
emit finished();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SettingsDialog::reject()
|
|
||||||
|
void SettingsDialog::reset()
|
||||||
{
|
{
|
||||||
hide();
|
load();
|
||||||
emit finished();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,20 +50,15 @@ public:
|
||||||
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void show();
|
void setVisible(bool b) override;
|
||||||
void accept();
|
void accept();
|
||||||
void reject();
|
void reset();
|
||||||
|
|
||||||
signals:
|
|
||||||
void finished();
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_pushButton_clicked();
|
void on_pushButton_clicked();
|
||||||
void load();
|
void load();
|
||||||
void save();
|
void save();
|
||||||
|
|
||||||
void on_buttonBox_clicked(QAbstractButton *button);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SettingsDialog *ui;
|
Ui::SettingsDialog *ui;
|
||||||
QScopedPointer<Application> m_app;
|
QScopedPointer<Application> m_app;
|
||||||
|
|
|
@ -76,53 +76,10 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="standardButtons">
|
|
||||||
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../data/snore.qrc"/>
|
<include location="../../data/snore.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections>
|
<connections/>
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>accepted()</signal>
|
|
||||||
<receiver>SettingsDialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>248</x>
|
|
||||||
<y>254</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>157</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>rejected()</signal>
|
|
||||||
<receiver>SettingsDialog</receiver>
|
|
||||||
<slot>reject()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>316</x>
|
|
||||||
<y>260</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>286</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
</ui>
|
||||||
|
|
|
@ -38,7 +38,7 @@ SnoreCore::SnoreCore()
|
||||||
d_ptr = new SnoreCorePrivate();
|
d_ptr = new SnoreCorePrivate();
|
||||||
Q_D(SnoreCore);
|
Q_D(SnoreCore);
|
||||||
d->q_ptr = this;
|
d->q_ptr = this;
|
||||||
d->setDefaults();
|
d->init();
|
||||||
}
|
}
|
||||||
|
|
||||||
SnoreCore &SnoreCore::instance()
|
SnoreCore &SnoreCore::instance()
|
||||||
|
@ -181,6 +181,13 @@ bool SnoreCore::primaryBackendSupportsRichtext()
|
||||||
return d->m_notificationBackend->supportsRichtext();
|
return d->m_notificationBackend->supportsRichtext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SnoreCore::setDefaultApplication(Application app)
|
||||||
|
{
|
||||||
|
Q_D(SnoreCore);
|
||||||
|
app.addAlert(Alert("Default", Icon(":/root/snore.png")));
|
||||||
|
d->m_defaultApp = app;
|
||||||
|
}
|
||||||
|
|
||||||
QList<PluginSettingsWidget *> SnoreCore::settingWidgets()
|
QList<PluginSettingsWidget *> SnoreCore::settingWidgets()
|
||||||
{
|
{
|
||||||
Q_D(SnoreCore);
|
Q_D(SnoreCore);
|
||||||
|
|
|
@ -140,10 +140,16 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @return whether the backend supports rhichtext encoding
|
* @return whether the backend supports rhichtext encoding.
|
||||||
*/
|
*/
|
||||||
bool primaryBackendSupportsRichtext();
|
bool primaryBackendSupportsRichtext();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the default application used for internal notifications.
|
||||||
|
* @param app The default application.
|
||||||
|
*/
|
||||||
|
void setDefaultApplication(Application app);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @return A list of widgets a settings dialog.
|
* @return A list of widgets a settings dialog.
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
using namespace Snore;
|
using namespace Snore;
|
||||||
|
|
||||||
SnoreCorePrivate::SnoreCorePrivate():
|
SnoreCorePrivate::SnoreCorePrivate():
|
||||||
m_defaultApp("SnoreNotify", Icon(":/root/snore.png")),
|
|
||||||
m_settings(new QSettings("Snorenotify", "libsnore", this))
|
m_settings(new QSettings("Snorenotify", "libsnore", this))
|
||||||
{
|
{
|
||||||
snoreDebug(SNORE_INFO) << "Version:" << Version::version();
|
snoreDebug(SNORE_INFO) << "Version:" << Version::version();
|
||||||
|
@ -43,7 +42,6 @@ SnoreCorePrivate::SnoreCorePrivate():
|
||||||
snoreDebug(SNORE_DEBUG) << "Snore settings are located in" << m_settings->fileName();
|
snoreDebug(SNORE_DEBUG) << "Snore settings are located in" << m_settings->fileName();
|
||||||
snoreDebug(SNORE_DEBUG) << "Snore local settings are located in" << normalizeKey("Test", LOCAL_SETTING);
|
snoreDebug(SNORE_DEBUG) << "Snore local settings are located in" << normalizeKey("Test", LOCAL_SETTING);
|
||||||
|
|
||||||
m_defaultApp.addAlert(Alert("Default", Icon(":/root/snore.png")));
|
|
||||||
connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(slotAboutToQuit()));
|
connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(slotAboutToQuit()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,10 +130,11 @@ bool SnoreCorePrivate::initPrimaryNotificationBackend()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnoreCorePrivate::setDefaults()
|
void SnoreCorePrivate::init()
|
||||||
{
|
{
|
||||||
Q_Q(SnoreCore);
|
Q_Q(SnoreCore);
|
||||||
q->setDefaultValue("Timeout", 10, LOCAL_SETTING);
|
q->setDefaultValue("Timeout", 10, LOCAL_SETTING);
|
||||||
|
q->setDefaultApplication(Application("SnoreNotify", Icon(":/root/snore.png")));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnoreCorePrivate::syncSettings()
|
void SnoreCorePrivate::syncSettings()
|
||||||
|
@ -183,7 +182,7 @@ QStringList SnoreCorePrivate::knownClients(){
|
||||||
void SnoreCorePrivate::setLocalSttingsPrefix(const QString &prefix)
|
void SnoreCorePrivate::setLocalSttingsPrefix(const QString &prefix)
|
||||||
{
|
{
|
||||||
m_localSettingsPrefix = prefix;
|
m_localSettingsPrefix = prefix;
|
||||||
setDefaults();
|
init();
|
||||||
syncSettings();
|
syncSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ public:
|
||||||
|
|
||||||
void setLocalSttingsPrefix(const QString &prefix);
|
void setLocalSttingsPrefix(const QString &prefix);
|
||||||
|
|
||||||
void setDefaults();
|
void init();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void applicationRegistered(const Snore::Application &);
|
void applicationRegistered(const Snore::Application &);
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <QDialogButtonBox>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QSystemTrayIcon>
|
#include <QSystemTrayIcon>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
@ -43,6 +44,31 @@ TrayIcon::TrayIcon():
|
||||||
void TrayIcon::initConextMenu()
|
void TrayIcon::initConextMenu()
|
||||||
{
|
{
|
||||||
m_settings = new SettingsDialog();
|
m_settings = new SettingsDialog();
|
||||||
|
QDialogButtonBox *box = new QDialogButtonBox(QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset, m_settings);
|
||||||
|
connect(box, QDialogButtonBox::clicked,[&,box](QAbstractButton *button){
|
||||||
|
switch (box->buttonRole(button)) {
|
||||||
|
case QDialogButtonBox::AcceptRole:
|
||||||
|
m_settings->accept();
|
||||||
|
qApp->quit();
|
||||||
|
break;
|
||||||
|
case QDialogButtonBox::ApplyRole:
|
||||||
|
m_settings->accept();
|
||||||
|
break;
|
||||||
|
case QDialogButtonBox::ResetRole:
|
||||||
|
m_settings->reset();
|
||||||
|
break;
|
||||||
|
case QDialogButtonBox::RejectRole:
|
||||||
|
qApp->quit();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
snoreDebug(SNORE_WARNING) << "unhandled role" << button->text() << box->buttonRole(button);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
m_settings->layout()->addWidget(box);
|
||||||
|
|
||||||
|
|
||||||
|
// connect(m_settings, &SettingsDialog::finished, m_settings, &SettingsDialog::hide);
|
||||||
|
|
||||||
m_trayIcon->setVisible(true);
|
m_trayIcon->setVisible(true);
|
||||||
|
|
||||||
m_trayMenu = new QMenu("SnoreNotify");
|
m_trayMenu = new QMenu("SnoreNotify");
|
||||||
|
|
|
@ -67,6 +67,7 @@ NotifyWidget::NotifyWidget(int pos, const SnoreNotifier *parent) :
|
||||||
|
|
||||||
NotifyWidget::~NotifyWidget()
|
NotifyWidget::~NotifyWidget()
|
||||||
{
|
{
|
||||||
|
release();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NotifyWidget::display(const Notification ¬ification)
|
void NotifyWidget::display(const Notification ¬ification)
|
||||||
|
|
|
@ -28,13 +28,18 @@ using namespace Snore;
|
||||||
|
|
||||||
SnoreNotifier::SnoreNotifier():
|
SnoreNotifier::SnoreNotifier():
|
||||||
SnoreBackend("Snore", true, true, true),
|
SnoreBackend("Snore", true, true, true),
|
||||||
m_widgets(3)
|
m_widgets(3),
|
||||||
|
m_timer(new QTimer(this))
|
||||||
{
|
{
|
||||||
|
setDefaultValue("Position", Qt::TopRightCorner);
|
||||||
|
m_timer->setInterval(500);
|
||||||
|
connect(m_timer, &QTimer::timeout, this, &SnoreNotifier::slotProcessQueue);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SnoreNotifier::~SnoreNotifier()
|
SnoreNotifier::~SnoreNotifier()
|
||||||
{
|
{
|
||||||
foreach(NotifyWidget * w, m_widgets) {
|
for(auto w : m_widgets) {
|
||||||
w->deleteLater();
|
w->deleteLater();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -121,25 +126,16 @@ void SnoreNotifier::slotProcessQueue()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnoreNotifier::setup()
|
|
||||||
{
|
|
||||||
for (int i = 0; i < m_widgets.size(); ++i) {
|
|
||||||
NotifyWidget *w = new NotifyWidget(i, this);
|
|
||||||
m_widgets[i] = w;
|
|
||||||
connect(w, SIGNAL(dismissed()), this, SLOT(slotDismissed()));
|
|
||||||
connect(w, SIGNAL(invoked()), this, SLOT(slotInvoked()));
|
|
||||||
}
|
|
||||||
|
|
||||||
m_timer = new QTimer(this);
|
|
||||||
m_timer->setInterval(500);
|
|
||||||
connect(m_timer, SIGNAL(timeout()), this, SLOT(slotProcessQueue()));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SnoreNotifier::initialize()
|
bool SnoreNotifier::initialize()
|
||||||
{
|
{
|
||||||
if (SnoreBackend::initialize()) {
|
if (SnoreBackend::initialize()) {
|
||||||
setDefaultValue("Position", Qt::TopRightCorner);
|
for (int i = 0; i < m_widgets.size(); ++i) {
|
||||||
return metaObject()->invokeMethod(this, "setup", Qt::QueuedConnection);
|
NotifyWidget *w = new NotifyWidget(i, this);
|
||||||
|
m_widgets[i] = w;
|
||||||
|
connect(w, &NotifyWidget::dismissed, this, &SnoreNotifier::slotDismissed);
|
||||||
|
connect(w, &NotifyWidget::invoked, this, &SnoreNotifier::slotInvoked);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -147,11 +143,9 @@ bool SnoreNotifier::initialize()
|
||||||
bool SnoreNotifier::deinitialize()
|
bool SnoreNotifier::deinitialize()
|
||||||
{
|
{
|
||||||
if (SnoreBackend::deinitialize()) {
|
if (SnoreBackend::deinitialize()) {
|
||||||
for (int i = 0; i < m_widgets.size(); ++i) {
|
for (auto w : m_widgets) {
|
||||||
m_widgets[i]->release();
|
w->deleteLater();
|
||||||
m_widgets[i]->deleteLater();
|
|
||||||
}
|
}
|
||||||
m_timer->deleteLater();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -46,12 +46,10 @@ private slots:
|
||||||
void slotInvoked();
|
void slotInvoked();
|
||||||
void slotProcessQueue();
|
void slotProcessQueue();
|
||||||
|
|
||||||
void setup();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
QList<Snore::Notification> m_queue;
|
QList<Snore::Notification> m_queue;
|
||||||
QVector<NotifyWidget *> m_widgets;
|
QVector<NotifyWidget*> m_widgets;
|
||||||
QTimer *m_timer;
|
QTimer *m_timer;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
|
#include <QDialogButtonBox>
|
||||||
|
|
||||||
using namespace Snore;
|
using namespace Snore;
|
||||||
|
|
||||||
|
@ -16,7 +17,6 @@ SettingsWindow::SettingsWindow(QWidget *parent) :
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->widget->show();
|
ui->widget->show();
|
||||||
connect(ui->widget, &Snore::SettingsDialog::finished, qApp, &QApplication::quit);
|
|
||||||
|
|
||||||
QStringList list = SnoreCorePrivate::instance()->knownClients();
|
QStringList list = SnoreCorePrivate::instance()->knownClients();
|
||||||
list.removeAll(qApp->applicationName());
|
list.removeAll(qApp->applicationName());
|
||||||
|
@ -33,3 +33,24 @@ void SettingsWindow::on_comboBox_currentIndexChanged(const QString &arg1)
|
||||||
SnoreCorePrivate::instance()->setLocalSttingsPrefix(arg1);
|
SnoreCorePrivate::instance()->setLocalSttingsPrefix(arg1);
|
||||||
ui->widget->show();
|
ui->widget->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SettingsWindow::on_buttonBox_clicked(QAbstractButton *button)
|
||||||
|
{
|
||||||
|
switch (ui->buttonBox->buttonRole(button)) {
|
||||||
|
case QDialogButtonBox::AcceptRole:
|
||||||
|
ui->widget->accept();
|
||||||
|
qApp->quit();
|
||||||
|
break;
|
||||||
|
case QDialogButtonBox::ApplyRole:
|
||||||
|
ui->widget->accept();
|
||||||
|
break;
|
||||||
|
case QDialogButtonBox::ResetRole:
|
||||||
|
ui->widget->reset();
|
||||||
|
break;
|
||||||
|
case QDialogButtonBox::RejectRole:
|
||||||
|
qApp->quit();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
snoreDebug(SNORE_WARNING) << "unhandled role" << button->text() << ui->buttonBox->buttonRole(button);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -7,6 +7,8 @@ namespace Ui {
|
||||||
class SettingsWindow;
|
class SettingsWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class QAbstractButton;
|
||||||
|
|
||||||
class SettingsWindow : public QMainWindow
|
class SettingsWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -16,6 +18,7 @@ public:
|
||||||
~SettingsWindow();
|
~SettingsWindow();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void on_buttonBox_clicked(QAbstractButton *button);
|
||||||
void on_comboBox_currentIndexChanged(const QString &arg1);
|
void on_comboBox_currentIndexChanged(const QString &arg1);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -32,6 +32,16 @@
|
||||||
<item>
|
<item>
|
||||||
<widget class="Snore::SettingsDialog" name="widget" native="true"/>
|
<widget class="Snore::SettingsDialog" name="widget" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
Loading…
Reference in New Issue