Plugin settings (weather & lunch) #74
@@ -8,6 +8,7 @@ WeatherSettings::WeatherSettings(QWidget *parent) :
|
||||
SettingsWidget(parent)
|
||||
{
|
||||
auto layout = new QFormLayout(this);
|
||||
layout->setMargin(0);
|
||||
|
||||
layout->addRow(tr("Weather API:"), new QLineEdit(this));
|
||||
|
||||
|
@@ -34,7 +34,6 @@ struct {
|
||||
QTranslator zeiterfassungguilibTranslator;
|
||||
} translators;
|
||||
|
||||
QSet<std::shared_ptr<QPluginLoader> > pluginLoaders;
|
||||
QSet<ZeiterfassungPlugin*> plugins;
|
||||
|
||||
bool loadAndInstallTranslator(QTranslator &translator, const QString &filename)
|
||||
@@ -281,25 +280,22 @@ bool loadPlugins(QSplashScreen &splashScreen)
|
||||
continue; // to skip windows junk files
|
||||
}
|
||||
|
||||
auto pluginLoader = std::make_shared<QPluginLoader>(fileInfo.filePath());
|
||||
if(!pluginLoader->load())
|
||||
QPluginLoader pluginLoader(fileInfo.filePath());
|
||||
if(!pluginLoader.load())
|
||||
{
|
||||
QMessageBox::warning(&splashScreen, QCoreApplication::translate("main", "Could not load plugin %0!"),
|
||||
QCoreApplication::translate("main", "Could not load plugin %0!").arg(fileInfo.fileName()) %
|
||||
"\n\n" % pluginLoader->errorString());
|
||||
"\n\n" % pluginLoader.errorString());
|
||||
ok = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(auto plugin = qobject_cast<ZeiterfassungPlugin*>(pluginLoader->instance()))
|
||||
{
|
||||
pluginLoaders.insert(pluginLoader);
|
||||
if(auto plugin = qobject_cast<ZeiterfassungPlugin*>(pluginLoader.instance()))
|
||||
plugins.insert(plugin);
|
||||
}
|
||||
else
|
||||
QMessageBox::warning(&splashScreen, QCoreApplication::translate("main", "Plugin not valid %0!"),
|
||||
QCoreApplication::translate("main", "Plugin not valid %0!").arg(pluginLoader->fileName()) %
|
||||
"\n\n" % pluginLoader->errorString());
|
||||
QCoreApplication::translate("main", "Plugin not valid %0!").arg(pluginLoader.fileName()) %
|
||||
"\n\n" % pluginLoader.errorString());
|
||||
|
||||
}
|
||||
|
||||
|
@@ -5,12 +5,15 @@
|
||||
#include <QStringBuilder>
|
||||
#include <QDir>
|
||||
#include <QApplication>
|
||||
#include <QSet>
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
|
||||
#include "zeiterfassungsettings.h"
|
||||
#include "zeiterfassungplugin.h"
|
||||
#include "settingswidget.h"
|
||||
|
||||
SettingsDialog::SettingsDialog(ZeiterfassungSettings &settings, QWidget *parent) :
|
||||
SettingsDialog::SettingsDialog(ZeiterfassungSettings &settings, const QSet<ZeiterfassungPlugin*> &plugins, QWidget *parent) :
|
||||
ZeiterfassungDialog(parent),
|
||||
ui(new Ui::SettingsDialog),
|
||||
m_settings(settings)
|
||||
@@ -40,6 +43,16 @@ SettingsDialog::SettingsDialog(ZeiterfassungSettings &settings, QWidget *parent)
|
||||
ui->comboBoxTheme->setCurrentIndex(index);
|
||||
}
|
||||
|
||||
for(const auto plugin : plugins)
|
||||
{
|
||||
auto widget = plugin->settingsWidget(this);
|
||||
if(!widget)
|
||||
continue;
|
||||
|
||||
ui->verticalLayout->addWidget(widget);
|
||||
m_settingsWidgets.append(widget);
|
||||
}
|
||||
|
||||
connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &SettingsDialog::submit);
|
||||
}
|
||||
|
||||
|
@@ -3,15 +3,17 @@
|
||||
#include "zeiterfassungguilib_global.h"
|
||||
#include "zeiterfassungdialog.h"
|
||||
|
||||
class ZeiterfassungSettings;
|
||||
namespace Ui { class SettingsDialog; }
|
||||
class ZeiterfassungSettings;
|
||||
class ZeiterfassungPlugin;
|
||||
class SettingsWidget;
|
||||
|
||||
class ZEITERFASSUNGGUILIBSHARED_EXPORT SettingsDialog : public ZeiterfassungDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SettingsDialog(ZeiterfassungSettings &settings, QWidget *parent = Q_NULLPTR);
|
||||
explicit SettingsDialog(ZeiterfassungSettings &settings, const QSet<ZeiterfassungPlugin*> &plugins, QWidget *parent = Q_NULLPTR);
|
||||
~SettingsDialog();
|
||||
|
||||
private Q_SLOTS:
|
||||
@@ -20,4 +22,5 @@ private Q_SLOTS:
|
||||
private:
|
||||
Ui::SettingsDialog *ui;
|
||||
ZeiterfassungSettings &m_settings;
|
||||
QVector<SettingsWidget*> m_settingsWidgets;
|
||||
};
|
||||
|
@@ -50,7 +50,7 @@ MainWindow::MainWindow(ZeiterfassungSettings &settings, ZeiterfassungApi &erfass
|
||||
ui->actionRefresh->setShortcut(QKeySequence::Refresh);
|
||||
connect(ui->actionRefresh, &QAction::triggered, this, &MainWindow::refreshEverything);
|
||||
|
||||
connect(ui->actionSettings, &QAction::triggered, this, [this](){ SettingsDialog(m_settings, this).exec(); });
|
||||
connect(ui->actionSettings, &QAction::triggered, this, [this](){ SettingsDialog(m_settings, m_plugins, this).exec(); });
|
||||
|
||||
ui->actionHelp->setShortcut(QKeySequence::HelpContents);
|
||||
|
||||
|
@@ -3,5 +3,4 @@
|
||||
SettingsWidget::SettingsWidget(QWidget *parent) :
|
||||
QWidget(parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user