swift
dropbase.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2015 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
4 #include "gui/dropbase.h"
5 
6 #include <QMetaType>
7 #include <QUrl>
8 #include <QtGlobal>
9 
10 #include "gui/guiutility.h"
11 
12 using namespace swift::misc;
13 
14 namespace swift::gui
15 {
16  void CDropBase::setAcceptedMetaTypeIds(const QList<int> &ids) { m_acceptedMetaTypes = ids; }
17 
18  void CDropBase::addAcceptedMetaTypeId(int id) { m_acceptedMetaTypes.append(id); }
19 
20  bool CDropBase::acceptDrop(const QMimeData *mime) const
21  {
22  if (!mime) { return false; }
23  if (!m_allowDrop) { return false; }
24  if (m_acceptedMetaTypes.isEmpty()) { return false; }
25 
26  if (m_acceptJsonFile && CGuiUtility::isMimeRepresentingReadableJsonFile(mime))
27  {
28  // further checks could go here
29  return true;
30  }
31 
32  if (!CGuiUtility::hasSwiftVariantMimeType(mime)) { return false; }
33  const int metaTypeId = CGuiUtility::metaTypeIdFromSwiftDragAndDropData(mime);
34  if (metaTypeId == QMetaType::UnknownType) { return false; }
35  const bool accept = m_acceptedMetaTypes.contains(metaTypeId);
36  return accept;
37  }
38 
39  CVariant CDropBase::toCVariant(const QMimeData *mime) const { return CGuiUtility::fromSwiftDragAndDropData(mime); }
40 } // namespace swift::gui
Wrapper around QVariant which provides transparent access to CValueObject methods of the contained ob...
Definition: variant.h:66
GUI related classes.
Free functions in swift::misc.
void append(QList< T > &&value)