3
0
mirror of https://github.com/Qortal/Brooklyn.git synced 2025-02-07 06:44:18 +00:00
Brooklyn/plasma/workspace/klipper/klipperpopup.h
2022-03-05 22:41:29 +05:00

130 lines
2.4 KiB
C++

/*
SPDX-FileCopyrightText: 2004 Esben Mose Hansen <kde@mosehansen.dk>
SPDX-FileCopyrightText: Andrew Stanley-Jones
SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include <QList>
#include <QMenu>
class QAction;
class QWidgetAction;
class QKeyEvent;
class KHelpMenu;
class KLineEdit;
class PopupProxy;
class History;
/**
* Default view of clipboard history.
*
*/
class KlipperPopup : public QMenu
{
Q_OBJECT
public:
explicit KlipperPopup(History *history);
~KlipperPopup() override;
void plugAction(QAction *action);
/**
* Normally, the popupmenu is only rebuilt just before showing.
* If you need the pixel-size or similar of the this menu, call
* this beforehand.
*/
void ensureClean();
History *history()
{
return m_history;
}
const History *history() const
{
return m_history;
}
void setShowHelp(bool show)
{
m_showHelp = show;
}
public Q_SLOTS:
void slotHistoryChanged()
{
m_dirty = true;
}
void slotTopIsUserSelectedSet();
void slotAboutToShow();
/**
* set the top history item active, to easy kb navigation
*/
void slotSetTopActive();
private:
void rebuild(const QString &filter = QString());
void buildFromScratch();
protected:
void keyPressEvent(QKeyEvent *e) override;
private:
bool m_dirty : 1; // true if menu contents needs to be rebuild.
/**
* Contains the string shown if the menu is empty.
*/
QString m_textForEmptyHistory;
/**
* Contains the string shown if the search string has no
* matches and the menu is not empty.
*/
QString m_textForNoMatch;
/**
* The "document" (clipboard history)
*/
History *m_history;
/**
* The help menu
*/
KHelpMenu *m_helpMenu;
/**
* (unowned) actions to plug into the primary popup menu
*/
QList<QAction *> m_actions;
/**
* Proxy helper object used to track history items
*/
PopupProxy *m_popupProxy;
/**
* search filter widget
*/
KLineEdit *m_filterWidget;
/**
* Action of search widget
*/
QWidgetAction *m_filterWidgetAction;
/**
* The current number of history items in the clipboard
*/
int m_nHistoryItems;
bool m_showHelp;
/**
* The last event which was received. Used to avoid an infinite event loop
*/
QKeyEvent *m_lastEvent;
};