File indexing completed on 2024-04-14 14:21:01

0001 /*
0002     SPDX-FileCopyrightText: 2020 David Edmundson <davidedmundson@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "ksystemclipboard.h"
0008 #include "kguiaddons_debug.h"
0009 
0010 #include "qtclipboard_p.h"
0011 #include "waylandclipboard_p.h"
0012 
0013 #include <QDebug>
0014 #include <QGuiApplication>
0015 #include <QMimeData>
0016 
0017 KSystemClipboard *KSystemClipboard::instance()
0018 {
0019     if (!qGuiApp || qGuiApp->closingDown()) {
0020         return nullptr;
0021     }
0022     static KSystemClipboard *systemClipboard = nullptr;
0023 
0024 #ifdef WITH_WAYLAND
0025     static bool s_waylandChecked = false;
0026     if (!systemClipboard && qGuiApp->platformName() == QLatin1String("wayland") && !s_waylandChecked) {
0027         WaylandClipboard *waylandClipboard = new WaylandClipboard(qApp);
0028         s_waylandChecked = true;
0029 
0030         if (waylandClipboard->isValid()) {
0031             systemClipboard = waylandClipboard;
0032         } else {
0033             delete waylandClipboard;
0034             qCWarning(KGUIADDONS_LOG) << "Could not init WaylandClipboard, falling back to QtClipboard.";
0035         }
0036     }
0037 #endif
0038 
0039     if (!systemClipboard) {
0040         systemClipboard = new QtClipboard(qApp);
0041     }
0042 
0043     return systemClipboard;
0044 }
0045 
0046 QString KSystemClipboard::text(QClipboard::Mode mode)
0047 {
0048     const QMimeData *data = mimeData(mode);
0049     if (data) {
0050         return data->text();
0051     }
0052     return QString();
0053 }
0054 
0055 KSystemClipboard::KSystemClipboard(QObject *parent)
0056     : QObject(parent)
0057 {
0058 }
0059 
0060 #include "moc_ksystemclipboard.cpp"