File indexing completed on 2024-04-28 15:39:18
0001 /* 0002 SPDX-FileCopyrightText: 2022 Friedrich W. H. Kossebau <kossebau@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include "tool.hpp" 0008 0009 // KF 0010 #include <KLocalizedString> 0011 #include <KStandardAction> 0012 // Qt 0013 #include <QAction> 0014 #include <QApplication> 0015 #include <QClipboard> 0016 #include <QDialogButtonBox> 0017 #include <QMenu> 0018 #include <QMimeData> 0019 #include <QToolButton> 0020 0021 namespace Kodaskanna 0022 { 0023 namespace ClipboardExport 0024 { 0025 0026 Tool::Tool(QObject *parent) 0027 : AbstractExportTool(parent) 0028 { 0029 } 0030 0031 Tool::~Tool() = default; 0032 0033 void Tool::setupButtonBox(QDialogButtonBox *buttonBox) 0034 { 0035 m_clipboardMenu = new QMenu(buttonBox); 0036 0037 m_copyTextToClipboardAction = KStandardAction::copy(this, &Tool::copyText, m_clipboardMenu); 0038 m_copyTextToClipboardAction->setText(i18nc("@action", "Copy Text to Clipboard")); 0039 m_copyTextToClipboardAction->setEnabled(false); 0040 0041 m_copyDataToClipboardAction = new QAction(m_copyTextToClipboardAction->icon(), i18nc("@action", "Copy Data to Clipboard"), m_clipboardMenu); 0042 m_copyDataToClipboardAction->setEnabled(false); 0043 connect(m_copyDataToClipboardAction, &QAction::triggered, this, &Tool::copyData); 0044 m_clipboardMenu->addAction(m_copyTextToClipboardAction); 0045 m_clipboardMenu->addAction(m_copyDataToClipboardAction); 0046 0047 m_clipboardButton = new QToolButton(buttonBox); 0048 m_clipboardButton->setMenu(m_clipboardMenu); 0049 m_clipboardButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); 0050 m_clipboardButton->setPopupMode(QToolButton::MenuButtonPopup); 0051 m_clipboardButton->setDefaultAction(m_copyTextToClipboardAction); 0052 buttonBox->addButton(m_clipboardButton, QDialogButtonBox::ActionRole); 0053 } 0054 0055 void Tool::setScanResult(const ScanResult &scanResult) 0056 { 0057 m_scanResult = scanResult; 0058 0059 m_copyTextToClipboardAction->setEnabled(m_scanResult.isSuccess()); 0060 m_copyDataToClipboardAction->setEnabled(m_scanResult.isSuccess()); 0061 } 0062 0063 void Tool::copyText() 0064 { 0065 QApplication::clipboard()->setText(m_scanResult.text()); 0066 } 0067 0068 void Tool::copyData() 0069 { 0070 auto *mimeData = new QMimeData; 0071 mimeData->setData(QStringLiteral("application/octet-stream"), m_scanResult.bytes()); 0072 QApplication::clipboard()->setMimeData(mimeData); 0073 } 0074 0075 } 0076 }