QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgshistoryentrynode.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgshistoryentrynode.cpp
3 --------------------------
4 begin : April 2023
5 copyright : (C) 2023 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8/***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16#include "qgshistoryentrynode.h"
17
18//
19// QgsHistoryEntryNode
20//
21
23
25{
26 return 0;
27}
28
30{
31 return QString();
32}
33
35{
36 return nullptr;
37}
38
40{
41 return false;
42}
43
45{
46
47}
48
49bool QgsHistoryEntryNode::matchesString( const QString &string ) const
50{
51 if ( string.isEmpty() )
52 return true;
53
54 return data( Qt::DisplayRole ).toString().contains( string, Qt::CaseInsensitive );
55}
56
57
58//
59// QgsHistoryEntryGroup
60//
61
63
65{
66 if ( !child )
67 return;
68
69 Q_ASSERT( !child->mParent );
70 child->mParent = this;
71
72 mChildren.emplace_back( child );
73}
74
76{
77 if ( !child )
78 return;
79
80 Q_ASSERT( !child->mParent );
81 child->mParent = this;
82
83 mChildren.insert( mChildren.begin() + index, std::unique_ptr< QgsHistoryEntryNode >( child ) );
84}
85
87{
88 if ( child->mParent != this )
89 return -1;
90
91 auto it = std::find_if( mChildren.begin(), mChildren.end(), [&]( const std::unique_ptr<QgsHistoryEntryNode> &p )
92 {
93 return p.get() == child;
94 } );
95 if ( it != mChildren.end() )
96 return static_cast< int >( std::distance( mChildren.begin(), it ) );
97 return -1;
98}
99
101{
102 if ( static_cast< std::size_t >( index ) >= mChildren.size() )
103 return nullptr;
104
105 return mChildren[ index ].get();
106
107}
108
110{
111 if ( static_cast< std::size_t >( index ) >= mChildren.size() )
112 return;
113
114 mChildren.erase( mChildren.begin() + index );
115}
116
118{
119 mChildren.clear();
120}
121
123{
124 return static_cast< int >( mChildren.size() );
125}
std::deque< std::unique_ptr< QgsHistoryEntryNode > > mChildren
void addChild(QgsHistoryEntryNode *child)
Adds a child node to this node.
void removeChildAt(int index)
Removes the child at the specified index.
~QgsHistoryEntryGroup() override
int childCount() const FINAL
Returns the number of child nodes owned by this node.
QgsHistoryEntryNode * childAt(int index)
Returns the child at the specified index.
int indexOf(QgsHistoryEntryNode *child) const
Returns the index of the specified child node.
void insertChild(int index, QgsHistoryEntryNode *child)
Inserts a child node at the specified index.
void clear()
Clears the group, removing all its children.
Base class for nodes representing a QgsHistoryEntry.
virtual QWidget * createWidget(const QgsHistoryWidgetContext &context)
Returns a new widget which should be shown to users when selecting the node.
virtual QString html(const QgsHistoryWidgetContext &context) const
Returns a HTML formatted text string which should be shown to a user when selecting the node.
virtual ~QgsHistoryEntryNode()
virtual bool matchesString(const QString &searchString) const
Returns true if the node matches the specified searchString, and should be shown in filtered results ...
virtual QVariant data(int role=Qt::DisplayRole) const =0
Returns the node's data for the specified model role.
virtual void populateContextMenu(QMenu *menu, const QgsHistoryWidgetContext &context)
Allows the node to populate a context menu before display to the user.
virtual int childCount() const
Returns the number of child nodes owned by this node.
virtual bool doubleClicked(const QgsHistoryWidgetContext &context)
Called when the node is double-clicked.
Contains settings which reflect the context in which a history widget is shown, e....