Refactor CaptureRequest

Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
This commit is contained in:
Haris Gušić
2021-10-06 15:22:07 +02:00
parent 60d2d8c33d
commit 151f6e35b4
4 changed files with 36 additions and 22 deletions

View File

@@ -5,15 +5,14 @@
#include "src/utils/screenshotsaver.h" #include "src/utils/screenshotsaver.h"
#include <QDateTime> #include <QDateTime>
#include <QVector> #include <QVector>
#include <stdexcept>
CaptureRequest::CaptureRequest(CaptureRequest::CaptureMode mode, CaptureRequest::CaptureRequest(CaptureRequest::CaptureMode mode,
const uint delay, const uint delay,
const QString& path,
const QVariant& data, const QVariant& data,
CaptureRequest::ExportTask tasks) CaptureRequest::ExportTask tasks)
: m_mode(mode) : m_mode(mode)
, m_delay(delay) , m_delay(delay)
, m_path(path)
, m_tasks(tasks) , m_tasks(tasks)
, m_data(data) , m_data(data)
, m_forcedID(false) , m_forcedID(false)
@@ -69,12 +68,21 @@ CaptureRequest::ExportTask CaptureRequest::tasks() const
void CaptureRequest::addTask(CaptureRequest::ExportTask task) void CaptureRequest::addTask(CaptureRequest::ExportTask task)
{ {
if (task == SAVE_TASK) {
throw std::logic_error("SAVE_TASK must be added using addSaveTask");
}
m_tasks |= task; m_tasks |= task;
} }
void CaptureRequest::addSaveTask(const QString& path)
{
m_tasks |= SAVE_TASK;
m_path = path;
}
void CaptureRequest::exportCapture(const QPixmap& p) 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()) { if (m_path.isEmpty()) {
ScreenshotSaver(m_id).saveToFilesystemGUI(p); ScreenshotSaver(m_id).saveToFilesystemGUI(p);
} else { } 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); ScreenshotSaver().saveToClipboard(p);
} }
} }

View File

@@ -20,13 +20,12 @@ public:
enum ExportTask enum ExportTask
{ {
NO_TASK = 0, NO_TASK = 0,
CLIPBOARD_SAVE_TASK = 1, COPY_TASK = 1,
FILESYSTEM_SAVE_TASK = 2, SAVE_TASK = 2,
}; };
CaptureRequest(CaptureMode mode, CaptureRequest(CaptureMode mode,
const uint delay = 0, const uint delay = 0,
const QString& path = QLatin1String(""),
const QVariant& data = QVariant(), const QVariant& data = QVariant(),
ExportTask tasks = NO_TASK); ExportTask tasks = NO_TASK);
@@ -40,6 +39,7 @@ public:
ExportTask tasks() const; ExportTask tasks() const;
void addTask(ExportTask task); void addTask(ExportTask task);
void addSaveTask(const QString& path);
void exportCapture(const QPixmap& p); void exportCapture(const QPixmap& p);
private: private:

View File

@@ -33,9 +33,12 @@ void FlameshotDBusAdapter::graphicCapture(QString path,
int delay, int delay,
uint id) uint id)
{ {
CaptureRequest req(CaptureRequest::GRAPHICAL_MODE, delay, path); CaptureRequest req(CaptureRequest::GRAPHICAL_MODE, delay);
if (toClipboard) { if (toClipboard) {
req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK); req.addTask(CaptureRequest::COPY_TASK);
}
if (!path.isEmpty()) {
req.addSaveTask(path);
} }
req.setStaticID(id); req.setStaticID(id);
Controller::getInstance()->requestCapture(req); Controller::getInstance()->requestCapture(req);
@@ -48,9 +51,11 @@ void FlameshotDBusAdapter::fullScreen(QString path,
{ {
CaptureRequest req(CaptureRequest::FULLSCREEN_MODE, delay, path); CaptureRequest req(CaptureRequest::FULLSCREEN_MODE, delay, path);
if (toClipboard) { 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); req.setStaticID(id);
Controller::getInstance()->requestCapture(req); Controller::getInstance()->requestCapture(req);
} }
@@ -66,11 +71,13 @@ void FlameshotDBusAdapter::captureScreen(int number,
int delay, int delay,
uint id) uint id)
{ {
CaptureRequest req(CaptureRequest::SCREEN_MODE, delay, path, number); CaptureRequest req(CaptureRequest::SCREEN_MODE, delay, number);
if (toClipboard) { 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); req.setStaticID(id);
Controller::getInstance()->requestCapture(req); Controller::getInstance()->requestCapture(req);
} }

View File

@@ -307,7 +307,7 @@ int main(int argc, char* argv[])
DBusUtils dbusUtils; DBusUtils dbusUtils;
CaptureRequest req(CaptureRequest::GRAPHICAL_MODE, delay, pathValue); CaptureRequest req(CaptureRequest::GRAPHICAL_MODE, delay, pathValue);
if (toClipboard) { if (toClipboard) {
req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK); req.addTask(CaptureRequest::COPY_TASK);
} }
uint id = req.id(); uint id = req.id();
@@ -352,12 +352,12 @@ int main(int argc, char* argv[])
goto finish; goto finish;
} }
CaptureRequest req(CaptureRequest::FULLSCREEN_MODE, delay, pathValue); CaptureRequest req(CaptureRequest::FULLSCREEN_MODE, delay);
if (toClipboard) { if (toClipboard) {
req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK); req.addTask(CaptureRequest::COPY_TASK);
} }
if (!pathValue.isEmpty()) { if (!pathValue.isEmpty()) {
req.addTask(CaptureRequest::FILESYSTEM_SAVE_TASK); req.addSaveTask(pathValue);
} }
uint id = req.id(); uint id = req.id();
DBusUtils dbusUtils; DBusUtils dbusUtils;
@@ -410,13 +410,12 @@ int main(int argc, char* argv[])
goto finish; goto finish;
} }
CaptureRequest req( CaptureRequest req(CaptureRequest::SCREEN_MODE, delay, number);
CaptureRequest::SCREEN_MODE, delay, pathValue, number);
if (toClipboard) { if (toClipboard) {
req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK); req.addTask(CaptureRequest::COPY_TASK);
} }
if (!pathValue.isEmpty()) { if (!pathValue.isEmpty()) {
req.addTask(CaptureRequest::FILESYSTEM_SAVE_TASK); req.addSaveTask(pathValue);
} }
uint id = req.id(); uint id = req.id();
DBusUtils dbusUtils; DBusUtils dbusUtils;