File indexing completed on 2024-04-28 04:20:03
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 "imageselecttool.hpp" 0008 0009 // own 0010 #include "tool.hpp" 0011 // KF 0012 #include <KLocalizedString> 0013 // Qt 0014 #include <QApplication> 0015 #include <QClipboard> 0016 #include <QFileDialog> 0017 #include <QImage> 0018 #include <QMimeData> 0019 #include <QUrl> 0020 0021 namespace Kodaskanna 0022 { 0023 namespace ImageSource 0024 { 0025 0026 ImageSelectTool::ImageSelectTool(Tool *tool) 0027 : m_tool(tool) 0028 { 0029 } 0030 0031 bool ImageSelectTool::canHandleMimeData(const QMimeData *mimeData) const 0032 { 0033 if (mimeData->hasImage()) { 0034 return true; 0035 } 0036 0037 if (mimeData->hasUrls()) { 0038 const QList<QUrl> urls = mimeData->urls(); 0039 if (urls.size() == 1) { 0040 return true; 0041 } 0042 } 0043 0044 return false; 0045 } 0046 0047 bool ImageSelectTool::handleDroppedMimeData(const QMimeData *mimeData) 0048 { 0049 if (mimeData->hasImage()) { 0050 const QImage image = qvariant_cast<QImage>(mimeData->imageData()); 0051 m_tool->setImage(image); 0052 return true; 0053 } 0054 0055 if (mimeData->hasUrls()) { 0056 const QList<QUrl> urls = mimeData->urls(); 0057 if (urls.size() == 1) { 0058 m_tool->setOrigin(urls.first()); 0059 return true; 0060 } 0061 } 0062 0063 return false; 0064 } 0065 0066 void ImageSelectTool::openFile() 0067 { 0068 const QUrl fileUrl = QFileDialog::getOpenFileUrl(nullptr, i18nc("@title:window", "Open Image")); 0069 if (fileUrl.isEmpty()) { 0070 return; 0071 } 0072 0073 m_tool->setOrigin(fileUrl); 0074 } 0075 0076 void ImageSelectTool::pasteFromClipboard() 0077 { 0078 handleDroppedMimeData(QApplication::clipboard()->mimeData()); 0079 } 0080 0081 } 0082 }