File indexing completed on 2024-05-12 16:28:12
0001 /** 0002 * SPDX-FileCopyrightText: 2019 Black Hat <bhat@encom.eu.org> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-only 0005 */ 0006 #include "clipboard.h" 0007 0008 #include <QClipboard> 0009 #include <QDir> 0010 #include <QFileInfo> 0011 #include <QGuiApplication> 0012 #include <QImage> 0013 #include <QMimeData> 0014 #include <QRegularExpression> 0015 #include <QUrl> 0016 0017 Clipboard::Clipboard(QObject *parent) 0018 : QObject(parent) 0019 , m_clipboard(QGuiApplication::clipboard()) 0020 { 0021 connect(m_clipboard, &QClipboard::changed, this, &Clipboard::imageChanged); 0022 } 0023 0024 bool Clipboard::hasImage() const 0025 { 0026 return !image().isNull(); 0027 } 0028 0029 QImage Clipboard::image() const 0030 { 0031 return m_clipboard->image(); 0032 } 0033 0034 bool Clipboard::saveImage(const QUrl &localPath) const 0035 { 0036 if (!localPath.isLocalFile()) { 0037 return false; 0038 } 0039 0040 auto i = image(); 0041 0042 if (i.isNull()) { 0043 return false; 0044 } 0045 0046 const QString path = QFileInfo(localPath.toLocalFile()).absolutePath(); 0047 QDir dir; 0048 if (!dir.exists(path)) { 0049 dir.mkpath(path); 0050 } 0051 0052 i.save(localPath.toLocalFile()); 0053 0054 return true; 0055 } 0056 0057 void Clipboard::saveText(QString message) 0058 { 0059 const static QRegularExpression re("<[^>]*>"); 0060 auto *mineData = new QMimeData; // ownership is transferred to clipboard 0061 mineData->setHtml(message); 0062 mineData->setText(message.replace(re, "")); 0063 m_clipboard->setMimeData(mineData); 0064 }