File indexing completed on 2025-02-02 04:11:21
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #include "clipboard_inspector.hpp" 0008 #include <QTabWidget> 0009 #include <QClipboard> 0010 #include <QGuiApplication> 0011 #include <QMimeData> 0012 #include <QPlainTextEdit> 0013 #include <QVBoxLayout> 0014 #include <QTextBlock> 0015 #include <QPushButton> 0016 0017 0018 using namespace glaxnimate::gui; 0019 0020 ClipboardInspector::ClipboardInspector(QWidget* parent) 0021 : QDialog(parent) 0022 { 0023 resize(1024, 1024); 0024 0025 auto lay = new QVBoxLayout(this); 0026 setLayout(lay); 0027 0028 auto tab = new QTabWidget(this); 0029 lay->addWidget(tab); 0030 load(tab); 0031 0032 QPushButton* button = new QPushButton(this); 0033 button->setText("Reload"); 0034 lay->addWidget(button); 0035 connect(button, &QPushButton::clicked, this, [this, tab]{ 0036 while ( tab->count() ) 0037 delete tab->widget(0); 0038 load(tab); 0039 }); 0040 } 0041 0042 void ClipboardInspector::load(QTabWidget* tab) 0043 { 0044 auto data = QGuiApplication::clipboard()->mimeData(); 0045 0046 for ( const auto& format : data->formats() ) 0047 { 0048 QPlainTextEdit* widget = new QPlainTextEdit(this); 0049 auto bytes = data->data(format); 0050 widget->appendPlainText(bytes); 0051 if ( !format.contains("json") && !format.contains("text") && !format.contains("xml") ) 0052 { 0053 widget->appendPlainText("\n\n\n"); 0054 widget->appendPlainText(bytes.toHex()); 0055 } 0056 widget->setTextCursor(QTextCursor(widget->document()->findBlockByLineNumber(0))); 0057 tab->addTab(widget, format); 0058 } 0059 }