|
#include <QGuiApplication>
|
|
#include <QQmlApplicationEngine>
|
|
#include <qqmlcontext.h>
|
|
#include <QClipboard>
|
|
|
|
#include "sys/stat.h"
|
|
#include "clipboard.hpp"
|
|
|
|
int selection(int argc, char *argv[]) {
|
|
QGuiApplication app(argc, argv);
|
|
QQmlApplicationEngine engine;
|
|
|
|
const QUrl url(QStringLiteral("qrc:/src/main.qml"));
|
|
|
|
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
|
|
&app, [url](QObject *obj, const QUrl &objUrl) {
|
|
if (!obj && url == objUrl)
|
|
QCoreApplication::exit(-1);
|
|
}, Qt::QueuedConnection);
|
|
|
|
engine.load(url);
|
|
engine.rootContext()->setContextProperty("clipboard", new Clipboard(&app, argv[0]));
|
|
|
|
return app.exec();
|
|
}
|
|
|
|
int clipboard(int argc, char *argv[]) {
|
|
QGuiApplication app(argc, argv);
|
|
QClipboard *clip = QGuiApplication::clipboard();
|
|
|
|
struct stat buf;
|
|
if (stat(argv[2], &buf) == -1) {
|
|
perror("stat");
|
|
exit(1);
|
|
}
|
|
|
|
QString path(argv[2]);
|
|
QImage image(path);
|
|
clip->setImage(image);
|
|
clip->connect(clip, &QClipboard::dataChanged, [&]() {
|
|
app.quit();
|
|
});
|
|
|
|
return app.exec();
|
|
}
|
|
|
|
int main(int argc, char *argv[]) {
|
|
if (argc >= 3 && strcmp(argv[1], "clipboard") == 0) {
|
|
return clipboard(argc, argv);
|
|
} else {
|
|
return selection(argc, argv);
|
|
}
|
|
}
|