Files
RedBear-OS/local/recipes/kde/kf6-kguiaddons/source/tests/clipboardtest.cpp
T
vasilito b8aac3c9bc D7: editor multi-cursor support
Add secondary_cursors field to Editor with insert_char_multi,
delete_back_multi, delete_forward_multi methods. Right-to-left
processing ensures position shifts don't corrupt earlier insertions.

7 new tests: add/clear, all_positions, insert, delete_back,
delete_forward, unicode, duplicate-add.
2026-07-05 22:29:19 +03:00

117 lines
3.8 KiB
C++

/*
SPDX-FileCopyrightText: 2025 David Edmundson <davidedmundson@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include <KSystemClipboard>
#include <QApplication>
#include <QClipboard>
#include <QFormLayout>
#include <QGroupBox>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QMimeData>
#include <QPushButton>
#include <QTableView>
#include <QTextEdit>
#include <QVBoxLayout>
#include <QWidget>
// This tests KSystemClipboard
// it also shows the Qt Clipboard so that we can confirm nothing deadlocks
// copying between the two
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QWidget window;
window.setWindowTitle(QStringLiteral("Clipboard Test"));
auto *rootLayout = new QHBoxLayout(&window);
// regular clipboard
{
auto clipboard = QApplication::clipboard();
auto *group = new QGroupBox(QStringLiteral("Normal Clipboard"), &window);
rootLayout->addWidget(group);
auto *groupLayout = new QVBoxLayout(group);
auto *clipboardView = new QTextEdit(&window);
clipboardView->setEnabled(false);
clipboardView->setMinimumHeight(200);
QObject::connect(clipboard, &QClipboard::changed, clipboardView, [clipboardView, clipboard](QClipboard::Mode mode) {
if (mode != QClipboard::Clipboard) {
return;
}
clipboardView->setText(clipboard->text());
});
clipboardView->setText(clipboard->text());
groupLayout->addWidget(clipboardView);
auto *textEdit = new QTextEdit(group);
textEdit->setPlaceholderText(QStringLiteral("Enter clipboard content here…"));
textEdit->setMinimumHeight(120);
groupLayout->addWidget(textEdit);
auto *btnRow = new QHBoxLayout();
btnRow->addStretch();
auto *submitBtn = new QPushButton(QStringLiteral("Submit"), group);
btnRow->addWidget(submitBtn);
groupLayout->addLayout(btnRow);
QObject::connect(submitBtn, &QPushButton::clicked, &window, [textEdit, clipboard]() {
auto mimeData = new QMimeData;
mimeData->setText(textEdit->toPlainText());
clipboard->setMimeData(mimeData, QClipboard::Clipboard);
});
}
// system clipboard
{
auto clipboard = KSystemClipboard::instance();
auto *group = new QGroupBox(QStringLiteral("System Clipboard"), &window);
rootLayout->addWidget(group);
auto *groupLayout = new QVBoxLayout(group);
auto *clipboardView = new QTextEdit(&window);
clipboardView->setEnabled(false);
clipboardView->setMinimumHeight(200);
QObject::connect(clipboard, &KSystemClipboard::changed, clipboardView, [clipboardView, clipboard](QClipboard::Mode mode) {
if (mode != QClipboard::Clipboard) {
return;
}
clipboardView->setText(clipboard->text(mode));
});
clipboardView->setText(clipboard->text(QClipboard::Clipboard));
groupLayout->addWidget(clipboardView);
auto *textEdit = new QTextEdit(group);
textEdit->setPlaceholderText(QStringLiteral("Enter clipboard content here…"));
textEdit->setMinimumHeight(120);
groupLayout->addWidget(textEdit);
auto *btnRow = new QHBoxLayout();
btnRow->addStretch();
auto *submitBtn = new QPushButton(QStringLiteral("Submit"), group);
btnRow->addWidget(submitBtn);
groupLayout->addLayout(btnRow);
QObject::connect(submitBtn, &QPushButton::clicked, &window, [textEdit, clipboard]() {
auto mimeData = new QMimeData;
mimeData->setText(textEdit->toPlainText());
clipboard->setMimeData(mimeData, QClipboard::Clipboard);
});
}
window.resize(600, 500);
window.show();
return app.exec();
}