diff --git a/src/core/capturerequest.cpp b/src/core/capturerequest.cpp index 8a2a16f0..29393d3d 100644 --- a/src/core/capturerequest.cpp +++ b/src/core/capturerequest.cpp @@ -5,15 +5,14 @@ #include "src/utils/screenshotsaver.h" #include #include +#include CaptureRequest::CaptureRequest(CaptureRequest::CaptureMode mode, const uint delay, - const QString& path, const QVariant& data, CaptureRequest::ExportTask tasks) : m_mode(mode) , m_delay(delay) - , m_path(path) , m_tasks(tasks) , m_data(data) , m_forcedID(false) @@ -69,12 +68,21 @@ CaptureRequest::ExportTask CaptureRequest::tasks() const void CaptureRequest::addTask(CaptureRequest::ExportTask task) { + if (task == SAVE_TASK) { + throw std::logic_error("SAVE_TASK must be added using addSaveTask"); + } m_tasks |= task; } +void CaptureRequest::addSaveTask(const QString& path) +{ + m_tasks |= SAVE_TASK; + m_path = path; +} + void CaptureRequest::exportCapture(const QPixmap& p) { - if ((m_tasks & ExportTask::FILESYSTEM_SAVE_TASK) != ExportTask::NO_TASK) { + if ((m_tasks & ExportTask::SAVE_TASK) != ExportTask::NO_TASK) { if (m_path.isEmpty()) { ScreenshotSaver(m_id).saveToFilesystemGUI(p); } else { @@ -82,7 +90,7 @@ void CaptureRequest::exportCapture(const QPixmap& p) } } - if ((m_tasks & ExportTask::CLIPBOARD_SAVE_TASK) != ExportTask::NO_TASK) { + if ((m_tasks & ExportTask::COPY_TASK) != ExportTask::NO_TASK) { ScreenshotSaver().saveToClipboard(p); } } diff --git a/src/core/capturerequest.h b/src/core/capturerequest.h index 22c47280..c738a2b1 100644 --- a/src/core/capturerequest.h +++ b/src/core/capturerequest.h @@ -20,13 +20,12 @@ public: enum ExportTask { NO_TASK = 0, - CLIPBOARD_SAVE_TASK = 1, - FILESYSTEM_SAVE_TASK = 2, + COPY_TASK = 1, + SAVE_TASK = 2, }; CaptureRequest(CaptureMode mode, const uint delay = 0, - const QString& path = QLatin1String(""), const QVariant& data = QVariant(), ExportTask tasks = NO_TASK); @@ -40,6 +39,7 @@ public: ExportTask tasks() const; void addTask(ExportTask task); + void addSaveTask(const QString& path); void exportCapture(const QPixmap& p); private: diff --git a/src/core/flameshotdbusadapter.cpp b/src/core/flameshotdbusadapter.cpp index 1643b687..8871a1d5 100644 --- a/src/core/flameshotdbusadapter.cpp +++ b/src/core/flameshotdbusadapter.cpp @@ -33,9 +33,12 @@ void FlameshotDBusAdapter::graphicCapture(QString path, int delay, uint id) { - CaptureRequest req(CaptureRequest::GRAPHICAL_MODE, delay, path); + CaptureRequest req(CaptureRequest::GRAPHICAL_MODE, delay); if (toClipboard) { - req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK); + req.addTask(CaptureRequest::COPY_TASK); + } + if (!path.isEmpty()) { + req.addSaveTask(path); } req.setStaticID(id); Controller::getInstance()->requestCapture(req); @@ -48,9 +51,11 @@ void FlameshotDBusAdapter::fullScreen(QString path, { CaptureRequest req(CaptureRequest::FULLSCREEN_MODE, delay, path); if (toClipboard) { - req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK); + req.addTask(CaptureRequest::COPY_TASK); + } + if (!path.isEmpty()) { + req.addSaveTask(path); } - req.addTask(CaptureRequest::FILESYSTEM_SAVE_TASK); req.setStaticID(id); Controller::getInstance()->requestCapture(req); } @@ -66,11 +71,13 @@ void FlameshotDBusAdapter::captureScreen(int number, int delay, uint id) { - CaptureRequest req(CaptureRequest::SCREEN_MODE, delay, path, number); + CaptureRequest req(CaptureRequest::SCREEN_MODE, delay, number); if (toClipboard) { - req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK); + req.addTask(CaptureRequest::COPY_TASK); + } + if (!path.isEmpty()) { + req.addSaveTask(path); } - req.addTask(CaptureRequest::FILESYSTEM_SAVE_TASK); req.setStaticID(id); Controller::getInstance()->requestCapture(req); } diff --git a/src/main.cpp b/src/main.cpp index 56748c44..851809a0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -307,7 +307,7 @@ int main(int argc, char* argv[]) DBusUtils dbusUtils; CaptureRequest req(CaptureRequest::GRAPHICAL_MODE, delay, pathValue); if (toClipboard) { - req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK); + req.addTask(CaptureRequest::COPY_TASK); } uint id = req.id(); @@ -352,12 +352,12 @@ int main(int argc, char* argv[]) goto finish; } - CaptureRequest req(CaptureRequest::FULLSCREEN_MODE, delay, pathValue); + CaptureRequest req(CaptureRequest::FULLSCREEN_MODE, delay); if (toClipboard) { - req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK); + req.addTask(CaptureRequest::COPY_TASK); } if (!pathValue.isEmpty()) { - req.addTask(CaptureRequest::FILESYSTEM_SAVE_TASK); + req.addSaveTask(pathValue); } uint id = req.id(); DBusUtils dbusUtils; @@ -410,13 +410,12 @@ int main(int argc, char* argv[]) goto finish; } - CaptureRequest req( - CaptureRequest::SCREEN_MODE, delay, pathValue, number); + CaptureRequest req(CaptureRequest::SCREEN_MODE, delay, number); if (toClipboard) { - req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK); + req.addTask(CaptureRequest::COPY_TASK); } if (!pathValue.isEmpty()) { - req.addTask(CaptureRequest::FILESYSTEM_SAVE_TASK); + req.addSaveTask(pathValue); } uint id = req.id(); DBusUtils dbusUtils;