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 }