@@ -22,14 +22,19 @@
22#include <QQuickItemGrabResult>
22#include <QQuickItemGrabResult>
23#include <QtConcurrent>
23#include <QtConcurrent>
25−static QString cachePath()
25+static QString cacheFolder()
27 return QDir::homePath() + "/.cache/app_shots/";
27 return QDir::homePath() + "/.cache/app_shots/";
30+static QString cachePath(const QString &appId)
32+ return cacheFolder() + appId + ".png";
30SessionGrabber::SessionGrabber(QObject *parent)
35SessionGrabber::SessionGrabber(QObject *parent)
31− : QObject(parent),
36+ : QObject(parent)
32− m_target(nullptr)
37+ , m_target(nullptr)
@@ -38,11 +43,11 @@ QString SessionGrabber::appId() const
38 return m_appId;
43 return m_appId;
41−void SessionGrabber::setAppdId(const QString &appId)
46+void SessionGrabber::setAppId(const QString &appId)
43 if (appId != m_appId) {
48 if (appId != m_appId) {
44 m_appId = appId;
49 m_appId = appId;
45− const QString path = cachePath() + appId + ".png";
50+ const QString path = cachePath(appId);
46 if (QFile::exists(path)) {
51 if (QFile::exists(path)) {
47 setPath(path);
52 setPath(path);
@@ -78,22 +83,21 @@ void SessionGrabber::setPath(const QString &path)
78static QString saveScreenshot(const QString &appId, const QSharedPointer<QQuickItemGrabResult> grabResult)
83static QString saveScreenshot(const QString &appId, const QSharedPointer<QQuickItemGrabResult> grabResult)
80 const QImage image = grabResult->image();
85 const QImage image = grabResult->image();
81− const QString cPath = cachePath();
86+ const QString cPath = cacheFolder();
83 d.mkpath(cPath);
88 d.mkpath(cPath);
84− const QString path = cPath + appId + ".png";
89+ const QString path = cachePath(appId);
85− bool b = image.save(path);
90+ if (image.save(path)) {
87 return path;
91 return path;
89 return QString();
93 return QString();
93−void SessionGrabber::take()
97+void SessionGrabber::grab()
95 if (!m_grabResult.isNull()) {
99 if (!m_grabResult.isNull()) {
96− qWarning() << "Asked to take a screenshot when there's one already being taken, ignoring";
100+ qWarning() << "Asked to grab a screenshot when there's one already being grabbed, ignoring";
@@ -102,13 +106,13 @@ void SessionGrabber::take()
102 m_grabResult = m_target->grabToImage();
106 m_grabResult = m_target->grabToImage();
103 connect(m_grabResult.data(), &QQuickItemGrabResult::ready, this, &SessionGrabber::grabReady);
107 connect(m_grabResult.data(), &QQuickItemGrabResult::ready, this, &SessionGrabber::grabReady);
105− qWarning() << "Can't take screnshot: appId:" << m_appId << " target:" << m_target;
109+ qWarning() << "Can't grab screnshot: appId:" << m_appId << " target:" << m_target;
109void SessionGrabber::removeScreenshot()
113void SessionGrabber::removeScreenshot()
111− const QString path = cachePath() + m_appId + ".png";
115+ const QString path = cachePath(m_appId);
112 QFile::remove(path);
116 QFile::remove(path);
@@ -125,5 +129,5 @@ void SessionGrabber::saveFinished()
125 setPath(m_watcher->future().result());
129 setPath(m_watcher->future().result());
126 m_watcher.clear();
130 m_watcher.clear();
127 m_grabResult.clear();
131 m_grabResult.clear();
128− Q_EMIT screenshotTaken();
132+ Q_EMIT screenshotGrabbed();