From 9a90814891474afbb534ddbdf74283b957762355 Mon Sep 17 00:00:00 2001 From: ArsenArsen Date: Tue, 25 Apr 2017 22:17:36 +0200 Subject: [PATCH] Notifications --- KShare.pro | 6 ++++-- mainwindow.cpp | 10 +++++++++- mainwindow.hpp | 5 ++++- mainwindow.ui | 6 +++--- notifications.cpp | 10 ++++++++++ notifications.hpp | 12 ++++++++++++ uploaders/customuploader.cpp | 25 +++++++++++++++++++------ uploaders/default/clipboarduploader.cpp | 2 ++ uploaders/default/imguruploader.cpp | 6 +++++- 9 files changed, 68 insertions(+), 14 deletions(-) create mode 100644 notifications.cpp create mode 100644 notifications.hpp diff --git a/KShare.pro b/KShare.pro index c51045a..34d4bf8 100644 --- a/KShare.pro +++ b/KShare.pro @@ -36,7 +36,8 @@ SOURCES += main.cpp\ settings.cpp \ uploaders/default/clipboarduploader.cpp \ formatter.cpp \ - uploaders/customuploader.cpp + uploaders/customuploader.cpp \ + notifications.cpp HEADERS += mainwindow.hpp \ cropeditor/cropeditor.hpp \ @@ -51,7 +52,8 @@ HEADERS += mainwindow.hpp \ settings.hpp \ uploaders/default/clipboarduploader.hpp \ formatter.hpp \ - uploaders/customuploader.hpp + uploaders/customuploader.hpp \ + notifications.hpp FORMS += mainwindow.ui diff --git a/mainwindow.cpp b/mainwindow.cpp index 5ae3abf..530a0e7 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -13,8 +13,11 @@ #include #include +MainWindow *MainWindow::instance; + MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { + instance = this; ui->setupUi(this); setWindowIcon(QIcon(":/icons/icon.jpg")); tray = new QSystemTrayIcon(windowIcon(), this); @@ -51,7 +54,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi if (errors.length() == 1) statusBar()->showMessage(errors.at(0).what()); else - statusBar()->showMessage(QString("Errors visible in console. Count: " + errors.size())); + statusBar()->showMessage(QString("Errors visible in console (if present). Count: " + QString::number(errors.size()))); } MainWindow::~MainWindow() @@ -64,6 +67,11 @@ void MainWindow::setScheme(QString scheme) ui->nameScheme->setText(scheme); } +MainWindow *MainWindow::inst() +{ + return instance; +} + void MainWindow::closeEvent(QCloseEvent *event) { event->ignore(); diff --git a/mainwindow.hpp b/mainwindow.hpp index 8a8c7a1..47dbbda 100644 --- a/mainwindow.hpp +++ b/mainwindow.hpp @@ -29,11 +29,14 @@ class MainWindow : public QMainWindow explicit MainWindow(QWidget *parent = 0); ~MainWindow(); + QSystemTrayIcon *tray; void setScheme(QString scheme); + static MainWindow *inst(); + private: Ui::MainWindow *ui; - QSystemTrayIcon *tray; + static MainWindow *instance; protected: void closeEvent(QCloseEvent *event); diff --git a/mainwindow.ui b/mainwindow.ui index 0067b44..5c00ba7 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 312 - 317 + 470 + 315 @@ -59,7 +59,7 @@ 0 0 - 312 + 470 24 diff --git a/notifications.cpp b/notifications.cpp new file mode 100644 index 0000000..1bf1785 --- /dev/null +++ b/notifications.cpp @@ -0,0 +1,10 @@ +#include "notifications.hpp" + +#include "mainwindow.hpp" +#include + +void notifications::notify(QString title, QString body, QSystemTrayIcon::MessageIcon icon) +{ + MainWindow::inst()->tray->showMessage(title, body, icon, 5000); + MainWindow::inst()->statusBar()->showMessage(title + ": " + body); +} diff --git a/notifications.hpp b/notifications.hpp new file mode 100644 index 0000000..4684b75 --- /dev/null +++ b/notifications.hpp @@ -0,0 +1,12 @@ +#ifndef NOTIFICATIONS_HPP +#define NOTIFICATIONS_HPP + +#include +#include + +namespace notifications +{ +void notify(QString title, QString body, QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information); +} + +#endif // NOTIFICATIONS_HPP diff --git a/uploaders/customuploader.cpp b/uploaders/customuploader.cpp index a944afb..fc28e40 100644 --- a/uploaders/customuploader.cpp +++ b/uploaders/customuploader.cpp @@ -8,6 +8,7 @@ #include #include #include +#include using std::runtime_error; @@ -257,6 +258,21 @@ QString parsePathspec(QJsonDocument &response, QString &pathspec) return ""; } +void parseResult(QJsonDocument result, QString returnPathspec, QString name) +{ + if (result.isObject()) + { + QString url = parsePathspec(result, returnPathspec); + if (!url.isEmpty()) + { + QApplication::clipboard()->setText(url); + notifications::notify("KShare Custom Uploader " + name, "Copied upload link to clipboard!"); + } + else + notifications::notify("KShare Custom Uploader " + name, "Upload done, but result empty!"); + } +} + void CustomUploader::doUpload(QPixmap *pixmap) { auto h = getHeaders(headers, getFormatString(false), types, this->format); @@ -329,16 +345,13 @@ void CustomUploader::doUpload(QPixmap *pixmap) { ioutils::postData(target, h, data, [&](QByteArray result, QNetworkReply *) { QApplication::clipboard()->setText(QString::fromUtf8(result)); + notifications::notify("KShare Custom Uploader " + name(), "Copied upload result to clipboard!"); }); } else { - ioutils::postJson(target, h, data, [&](QJsonDocument result, QNetworkReply *) { - if (result.isObject()) - { - QApplication::clipboard()->setText(parsePathspec(result, returnPathspec)); - } - }); + ioutils::postJson(target, h, data, + [&](QJsonDocument result, QNetworkReply *) { parseResult(result, returnPathspec, name()); }); } break; } diff --git a/uploaders/default/clipboarduploader.cpp b/uploaders/default/clipboarduploader.cpp index d188f95..d413e14 100644 --- a/uploaders/default/clipboarduploader.cpp +++ b/uploaders/default/clipboarduploader.cpp @@ -2,8 +2,10 @@ #include #include +#include void ClipboardUploader::doUpload(QPixmap *pixmap) { QApplication::clipboard()->setImage(pixmap->toImage()); + notifications::notify("KShare", "Copied to clipboard!"); } diff --git a/uploaders/default/imguruploader.cpp b/uploaders/default/imguruploader.cpp index 03b3664..e6dd179 100644 --- a/uploaders/default/imguruploader.cpp +++ b/uploaders/default/imguruploader.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include void ImgurUploader::doUpload(QPixmap *pixmap) @@ -16,6 +17,9 @@ void ImgurUploader::doUpload(QPixmap *pixmap) << QPair("Content-Type", "application/x-www-form-urlencoded") << QPair("Authorization", "Client-ID 8a98f183fc895da"), byteArray, [](QJsonDocument res, QNetworkReply *) { - screenshotutil::toClipboard(res.object()["data"].toObject()["link"].toString()); + QString result = res.object()["data"].toObject()["link"].toString(); + screenshotutil::toClipboard(result); + notifications::notify("KShare imgur Uploader ", + result.isEmpty() ? "Failed upload!" : "Upload done, but result empty!"); }); }