QortalOS Brooklyn for Raspberry Pi 4
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

138 lines
2.8 KiB

/*
SPDX-FileCopyrightText: 2004 Esben Mose Hansen <[email protected]>
SPDX-FileCopyrightText: Andrew Stanley-Jones <[email protected]>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include <QByteArray>
#include <QHash>
#include <QObject>
class HistoryItem;
class HistoryModel;
class QAction;
class History : public QObject
{
Q_OBJECT
public:
explicit History(QObject *parent);
~History() override;
/**
* Inserts item into clipboard history top
* if duplicate entry exist, the older duplicate is deleted.
* The duplicate concept is "deep", so that two text string
* are considerd duplicate if identical.
*/
void insert(QSharedPointer<HistoryItem> item);
/**
* Inserts item into clipboard without any checks
* Used when restoring a saved history and internally.
* Don't use this unless you're reasonable certain
* that no duplicates are introduced
*/
void forceInsert(QSharedPointer<HistoryItem> item);
/**
* Remove (first) history item equal to item from history
*/
void remove(const QSharedPointer<const HistoryItem> &item);
/**
* Traversal: Get first item
*/
QSharedPointer<const HistoryItem> first() const;
/**
* Get item identified by uuid
*/
QSharedPointer<const HistoryItem> find(const QByteArray &uuid) const;
/**
* @return next item in cycle, or null if at end
*/
QSharedPointer<const HistoryItem> nextInCycle() const;
/**
* @return previous item in cycle, or null if at top
*/
QSharedPointer<const HistoryItem> prevInCycle() const;
/**
* True if no history items
*/
bool empty() const;
/**
* Set maximum history size
*/
void setMaxSize(unsigned max_size);
/**
* Get the maximum history size
*/
unsigned maxSize() const;
/**
* returns true if the user has selected the top item
*/
bool topIsUserSelected()
{
return m_topIsUserSelected;
}
/**
* Cycle to next item
*/
void cycleNext();
/**
* Cycle to prev item
*/
void cyclePrev();
HistoryModel *model()
{
return m_model;
}
public Q_SLOTS:
/**
* move the history in position pos to top
*/
void slotMoveToTop(QAction *action);
/**
* move the history in position pos to top
*/
void slotMoveToTop(const QByteArray &uuid);
/**
* Clear history
*/
void slotClear();
Q_SIGNALS:
void changed();
/**
* Emitted when the first history item has changed.
*/
void topChanged();
void topIsUserSelectedSet();
private:
/**
* True if the top is selected by the user
*/
bool m_topIsUserSelected;
HistoryModel *m_model;
QByteArray m_cycleStartUuid;
};