diff --git a/mainwindow.cpp b/mainwindow.cpp index bc86736..5ae3abf 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -38,13 +38,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi ui->uploaderList->setSelectionMode(QAbstractItemView::SingleSelection); // Add items to uploader selection - for (Uploader *u : UploaderSingleton::inst().uploaderList()) - { - QListWidgetItem *item = new QListWidgetItem(u->name()); - item->setToolTip(u->description()); - ui->uploaderList->addItem(item); - if (u->name() == UploaderSingleton::inst().selectedUploader()) item->setSelected(true); - } + for (Uploader *u : UploaderSingleton::inst().uploaderList()) newUploader(u); + connect(&UploaderSingleton::inst(), &UploaderSingleton::newUploader, this, &MainWindow::newUploader); // Set filename scheme if ((settings::settings().contains("fileFormat"))) @@ -85,6 +80,14 @@ void MainWindow::toggleVisible() this->setVisible(!this->isVisible()); } +void MainWindow::newUploader(Uploader *u) +{ + QListWidgetItem *item = new QListWidgetItem(u->name()); + item->setToolTip(u->description()); + ui->uploaderList->addItem(item); + if (u->name() == UploaderSingleton::inst().selectedUploader()) item->setSelected(true); +} + void MainWindow::on_actionQuit_triggered() { quit(); diff --git a/mainwindow.hpp b/mainwindow.hpp index 59cf7bd..8a8c7a1 100644 --- a/mainwindow.hpp +++ b/mainwindow.hpp @@ -4,6 +4,8 @@ #include #include +#include + namespace Ui { class MainWindow; @@ -15,6 +17,7 @@ class MainWindow : public QMainWindow private slots: void quit(); void toggleVisible(); + void newUploader(Uploader *u); void on_actionQuit_triggered(); void on_actionFullscreen_triggered(); diff --git a/uploaders/uploadersingleton.cpp b/uploaders/uploadersingleton.cpp index 5de27d4..7350950 100644 --- a/uploaders/uploadersingleton.cpp +++ b/uploaders/uploadersingleton.cpp @@ -8,7 +8,7 @@ #include #include -UploaderSingleton::UploaderSingleton() +UploaderSingleton::UploaderSingleton() : QObject() { QDir configDir(QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation)); configDir.mkpath("KShare/uploaders"); @@ -46,6 +46,7 @@ UploaderSingleton::UploaderSingleton() void UploaderSingleton::registerUploader(Uploader *uploader) { uploaders.insert(uploader->name(), uploader); + emit newUploader(uploader); } void UploaderSingleton::upload(QPixmap *pixmap) diff --git a/uploaders/uploadersingleton.hpp b/uploaders/uploadersingleton.hpp index 85d8a4b..9c857bf 100644 --- a/uploaders/uploadersingleton.hpp +++ b/uploaders/uploadersingleton.hpp @@ -4,8 +4,9 @@ #include "uploader.hpp" #include -class UploaderSingleton +class UploaderSingleton : public QObject { + Q_OBJECT public: static UploaderSingleton &inst() { @@ -18,6 +19,8 @@ class UploaderSingleton void set(QString uploader); QString selectedUploader(); QList errors(); + signals: + void newUploader(Uploader *u); private: UploaderSingleton();