mirror of
https://github.com/fergalmoran/flameshot.git
synced 2026-01-03 23:55:17 +00:00
Add requestCapture DBus call
Signed-off-by: Haris Gušić <harisgusic.dev@gmail.com>
This commit is contained in:
@@ -2,7 +2,16 @@
|
||||
<node>
|
||||
<interface name="org.flameshot.Flameshot">
|
||||
|
||||
<!--
|
||||
<!--
|
||||
requestCapture:
|
||||
@requestData: Serialized CaptureRequest object.
|
||||
|
||||
Start a capture using a CaptureRequest.
|
||||
-->
|
||||
<method name="requestCapture">
|
||||
<arg name="requestData" type="ay" direction="in"/>
|
||||
</method>
|
||||
<!--
|
||||
graphicCapture:
|
||||
@path: the path where the screenshot will be saved. When the argument is empty the program will ask for a path graphically.
|
||||
@toClipboard: Whether to copy the screenshot to clipboard or not.
|
||||
|
||||
@@ -41,6 +41,29 @@ uint CaptureRequest::id() const
|
||||
return id;
|
||||
}
|
||||
|
||||
QByteArray CaptureRequest::serialize() const
|
||||
{
|
||||
QByteArray data;
|
||||
QDataStream stream(&data, QIODevice::WriteOnly);
|
||||
stream << m_mode << m_delay << m_tasks << m_data << m_forcedID << m_id
|
||||
<< m_path;
|
||||
return data;
|
||||
}
|
||||
|
||||
CaptureRequest CaptureRequest::deserialize(const QByteArray& data)
|
||||
{
|
||||
QDataStream stream(data);
|
||||
CaptureRequest request;
|
||||
stream >> request.m_mode;
|
||||
stream >> request.m_delay;
|
||||
stream >> request.m_tasks;
|
||||
stream >> request.m_data;
|
||||
stream >> request.m_forcedID;
|
||||
stream >> request.m_id;
|
||||
stream >> request.m_path;
|
||||
return request;
|
||||
}
|
||||
|
||||
CaptureRequest::CaptureMode CaptureRequest::captureMode() const
|
||||
{
|
||||
return m_mode;
|
||||
|
||||
@@ -22,6 +22,8 @@ public:
|
||||
NO_TASK = 0,
|
||||
COPY_TASK = 1,
|
||||
SAVE_TASK = 2,
|
||||
PRINT_RAW_TASK = 4,
|
||||
PRINT_GEOMETRY_TASK = 8,
|
||||
};
|
||||
|
||||
CaptureRequest(CaptureMode mode,
|
||||
@@ -32,6 +34,8 @@ public:
|
||||
void setStaticID(uint id);
|
||||
|
||||
uint id() const;
|
||||
QByteArray serialize() const;
|
||||
static CaptureRequest deserialize(const QByteArray& data);
|
||||
uint delay() const;
|
||||
QString path() const;
|
||||
QVariant data() const;
|
||||
@@ -51,6 +55,8 @@ private:
|
||||
|
||||
bool m_forcedID;
|
||||
uint m_id;
|
||||
|
||||
CaptureRequest() {}
|
||||
};
|
||||
|
||||
using eTask = CaptureRequest::ExportTask;
|
||||
|
||||
@@ -28,6 +28,13 @@ FlameshotDBusAdapter::FlameshotDBusAdapter(QObject* parent)
|
||||
|
||||
FlameshotDBusAdapter::~FlameshotDBusAdapter() {}
|
||||
|
||||
void FlameshotDBusAdapter::requestCapture(const QByteArray& requestData)
|
||||
{
|
||||
CaptureRequest req = CaptureRequest::deserialize(requestData);
|
||||
req.setStaticID(req.id());
|
||||
Controller::getInstance()->requestCapture(req);
|
||||
}
|
||||
|
||||
void FlameshotDBusAdapter::graphicCapture(QString path,
|
||||
bool toClipboard,
|
||||
int delay,
|
||||
|
||||
@@ -21,6 +21,7 @@ signals:
|
||||
void captureSaved(uint id, QString savePath);
|
||||
|
||||
public slots:
|
||||
Q_NOREPLY void requestCapture(const QByteArray& requestData);
|
||||
Q_NOREPLY void graphicCapture(QString path,
|
||||
bool toClipboard,
|
||||
int delay,
|
||||
|
||||
27
src/main.cpp
27
src/main.cpp
@@ -309,6 +309,15 @@ int main(int argc, char* argv[])
|
||||
if (toClipboard) {
|
||||
req.addTask(CaptureRequest::COPY_TASK);
|
||||
}
|
||||
if (isRaw) {
|
||||
req.addTask(CaptureRequest::PRINT_RAW_TASK);
|
||||
}
|
||||
if (!pathValue.isEmpty()) {
|
||||
req.addSaveTask(pathValue);
|
||||
}
|
||||
if (isSelection) {
|
||||
req.addTask(CaptureRequest::PRINT_GEOMETRY_TASK);
|
||||
}
|
||||
uint id = req.id();
|
||||
|
||||
// Send message
|
||||
@@ -316,8 +325,8 @@ int main(int argc, char* argv[])
|
||||
QStringLiteral("org.flameshot.Flameshot"),
|
||||
QStringLiteral("/"),
|
||||
QLatin1String(""),
|
||||
QStringLiteral("graphicCapture"));
|
||||
m << pathValue << toClipboard << delay << id;
|
||||
QStringLiteral("requestCapture"));
|
||||
m << req.serialize();
|
||||
QDBusConnection sessionBus = QDBusConnection::sessionBus();
|
||||
dbusUtils.checkDBusConnection(sessionBus);
|
||||
sessionBus.call(m);
|
||||
@@ -356,6 +365,9 @@ int main(int argc, char* argv[])
|
||||
if (toClipboard) {
|
||||
req.addTask(CaptureRequest::COPY_TASK);
|
||||
}
|
||||
if (isRaw) {
|
||||
req.addTask(CaptureRequest::PRINT_RAW_TASK);
|
||||
}
|
||||
if (!pathValue.isEmpty()) {
|
||||
req.addSaveTask(pathValue);
|
||||
}
|
||||
@@ -367,8 +379,8 @@ int main(int argc, char* argv[])
|
||||
QStringLiteral("org.flameshot.Flameshot"),
|
||||
QStringLiteral("/"),
|
||||
QLatin1String(""),
|
||||
QStringLiteral("fullScreen"));
|
||||
m << pathValue << toClipboard << delay << id;
|
||||
QStringLiteral("requestCapture"));
|
||||
m << req.serialize();
|
||||
QDBusConnection sessionBus = QDBusConnection::sessionBus();
|
||||
dbusUtils.checkDBusConnection(sessionBus);
|
||||
sessionBus.call(m);
|
||||
@@ -414,6 +426,9 @@ int main(int argc, char* argv[])
|
||||
if (toClipboard) {
|
||||
req.addTask(CaptureRequest::COPY_TASK);
|
||||
}
|
||||
if (isRaw) {
|
||||
req.addTask(CaptureRequest::PRINT_RAW_TASK);
|
||||
}
|
||||
if (!pathValue.isEmpty()) {
|
||||
req.addSaveTask(pathValue);
|
||||
}
|
||||
@@ -425,8 +440,8 @@ int main(int argc, char* argv[])
|
||||
QStringLiteral("org.flameshot.Flameshot"),
|
||||
QStringLiteral("/"),
|
||||
QLatin1String(""),
|
||||
QStringLiteral("captureScreen"));
|
||||
m << number << pathValue << toClipboard << delay << id;
|
||||
QStringLiteral("requestCapture"));
|
||||
m << req.serialize();
|
||||
QDBusConnection sessionBus = QDBusConnection::sessionBus();
|
||||
dbusUtils.checkDBusConnection(sessionBus);
|
||||
sessionBus.call(m);
|
||||
|
||||
Reference in New Issue
Block a user