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 }