File indexing completed on 2024-04-28 05:49:36

0001 /*
0002  *  SPDX-FileCopyrightText: 2022 Waqar Ahmed <waqar.17a@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include "tabmimedata.h"
0008 
0009 #include <QDataStream>
0010 
0011 TabMimeData::TabMimeData(KateViewSpace *vs, DocOrWidget d)
0012     : QMimeData()
0013     , sourceVS(vs)
0014     , doc(d)
0015 {
0016     if (doc.doc() && doc.doc()->url().isValid()) {
0017         setUrls({doc.doc()->url()});
0018     }
0019 }
0020 
0021 bool TabMimeData::hasValidData(const QMimeData *md)
0022 {
0023     bool valid = md && md->hasFormat(QStringLiteral("application/kate.tab.mimedata"));
0024     if (valid) {
0025         QByteArray data = md->data(QStringLiteral("application/kate.tab.mimedata"));
0026         QDataStream ds(data);
0027         int line = 0;
0028         int column = 0;
0029         QUrl url;
0030         ds >> line;
0031         ds >> column;
0032         ds >> url;
0033         return url.isValid();
0034     }
0035     return false;
0036 }
0037 
0038 std::optional<TabMimeData::DroppedData> TabMimeData::data(const QMimeData *md)
0039 {
0040     if (!md || !md->hasFormat(QStringLiteral("application/kate.tab.mimedata"))) {
0041         return {};
0042     }
0043 
0044     QByteArray data = md->data(QStringLiteral("application/kate.tab.mimedata"));
0045     QDataStream ds(data);
0046     TabMimeData::DroppedData d;
0047     ds >> d.line;
0048     ds >> d.col;
0049     ds >> d.url;
0050     if (!d.url.isValid()) {
0051         return {};
0052     }
0053     return d;
0054 }
0055 
0056 #include "moc_tabmimedata.cpp"