File indexing completed on 2023-12-03 07:57:52
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 <QDialogButtonBox> 0015 #include <QFile> 0016 #include <QFileDialog> 0017 #include <QMenu> 0018 #include <QToolButton> 0019 0020 namespace Kodaskanna 0021 { 0022 namespace FileExport 0023 { 0024 0025 Tool::Tool(QObject *parent) 0026 : AbstractExportTool(parent) 0027 { 0028 } 0029 0030 Tool::~Tool() = default; 0031 0032 void Tool::setupButtonBox(QDialogButtonBox *buttonBox) 0033 { 0034 m_saveAsMenu = new QMenu(buttonBox); 0035 0036 m_saveTextAsAction = KStandardAction::saveAs(this, &Tool::saveTextAs, m_saveAsMenu); 0037 m_saveTextAsAction->setText(i18nc("@action", "Save Text As...")); 0038 m_saveTextAsAction->setEnabled(false); 0039 0040 m_saveDataAsAction = new QAction(m_saveTextAsAction->icon(), i18nc("@action", "Save Data As..."), m_saveAsMenu); 0041 m_saveDataAsAction->setEnabled(false); 0042 connect(m_saveDataAsAction, &QAction::triggered, this, &Tool::saveDataAs); 0043 m_saveAsMenu->addAction(m_saveTextAsAction); 0044 m_saveAsMenu->addAction(m_saveDataAsAction); 0045 0046 m_saveAsButton = new QToolButton(buttonBox); 0047 m_saveAsButton->setMenu(m_saveAsMenu); 0048 m_saveAsButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); 0049 m_saveAsButton->setPopupMode(QToolButton::MenuButtonPopup); 0050 m_saveAsButton->setDefaultAction(m_saveTextAsAction); 0051 buttonBox->addButton(m_saveAsButton, QDialogButtonBox::ActionRole); 0052 } 0053 0054 void Tool::setScanResult(const ScanResult &scanResult) 0055 { 0056 m_scanResult = scanResult; 0057 0058 m_saveTextAsAction->setEnabled(m_scanResult.isSuccess()); 0059 m_saveDataAsAction->setEnabled(m_scanResult.isSuccess()); 0060 } 0061 0062 void Tool::saveTextAs() 0063 { 0064 // TODO: allow select encoding 0065 const QString localFileName = QFileDialog::getSaveFileName(nullptr, i18nc("@title:window", "Save Text As")); 0066 0067 if (localFileName.isEmpty()) { 0068 return; 0069 } 0070 0071 QFile file(localFileName); 0072 if (!file.open(QIODevice::WriteOnly)) { 0073 // TODO: emit error 0074 return; 0075 } 0076 0077 file.write(m_scanResult.text().toUtf8()); 0078 } 0079 0080 void Tool::saveDataAs() 0081 { 0082 const QString localFileName = QFileDialog::getSaveFileName(nullptr, i18nc("@title:window", "Save Data As")); 0083 0084 if (localFileName.isEmpty()) { 0085 return; 0086 } 0087 0088 QFile file(localFileName); 0089 if (!file.open(QIODevice::WriteOnly)) { 0090 // TODO: emit error 0091 return; 0092 } 0093 0094 file.write(m_scanResult.bytes()); 0095 } 0096 0097 } 0098 }