File indexing completed on 2025-04-20 04:33:18
0001 /** 0002 * SPDX-FileCopyrightText: 2016 Albert Vaca <albertvaka@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include <QClipboard> 0010 #include <QObject> 0011 0012 #ifdef Q_OS_MAC 0013 #include <QTimer> 0014 #endif 0015 0016 class KSystemClipboard; 0017 0018 /** 0019 * Wrapper around QClipboard, which emits clipboardChanged only when it really changed 0020 */ 0021 0022 class ClipboardListener : public QObject 0023 { 0024 Q_OBJECT 0025 0026 public: 0027 enum ClipboardContentType { ClipboardContentTypeUnknown = 0, ClipboardContentTypePassword = 1 }; 0028 0029 protected: 0030 ClipboardListener(); 0031 void refreshContent(const QString &content, ClipboardContentType contentType); 0032 QString m_currentContent; 0033 ClipboardContentType m_currentContentType; 0034 0035 private: 0036 qint64 m_updateTimestamp = 0; 0037 0038 public: 0039 static ClipboardListener *instance(); 0040 0041 void setText(const QString &content); 0042 0043 QString currentContent(); 0044 ClipboardContentType currentContentType(); 0045 qint64 updateTimestamp(); 0046 0047 Q_SIGNALS: 0048 void clipboardChanged(const QString &content, ClipboardContentType contentType); 0049 0050 private: 0051 void updateClipboard(QClipboard::Mode mode); 0052 0053 #ifdef Q_OS_MAC 0054 QTimer m_clipboardMonitorTimer; 0055 #endif 0056 KSystemClipboard *clipboard; 0057 };