VirtualBox

Changeset 76997 in vbox for trunk


Ignore:
Timestamp:
Jan 25, 2019 9:45:52 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
128418
Message:

FE/Qt: Adding a basic filtering functionality to QITreeWidget. take 2

Location:
trunk/src/VBox/Frontends/VirtualBox/src/extensions
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QITreeWidget.cpp

    r76996 r76997  
    438438}
    439439
     440QList<QTreeWidgetItem*> QITreeWidget::filterItems(const QITreeWidgetItemFilter &filter, QTreeWidgetItem* pParent /* = 0 */)
     441{
     442    QList<QTreeWidgetItem*> filteredItemList;
     443    if (!pParent)
     444        filterItemsInternal(filter, invisibleRootItem(), filteredItemList);
     445    else
     446        filterItemsInternal(filter, pParent, filteredItemList);
     447    return filteredItemList;
     448}
     449
     450void QITreeWidget::filterItemsInternal(const QITreeWidgetItemFilter &filter,
     451                                           QTreeWidgetItem* pParent, QList<QTreeWidgetItem*> &filteredItemList)
     452{
     453    if (!pParent)
     454        return;
     455    if (filter(pParent))
     456        filteredItemList.append(pParent);
     457
     458    for (int i = 0; i < pParent->childCount(); ++i)
     459        filterItemsInternal(filter, pParent->child(i), filteredItemList);
     460}
     461
    440462void QITreeWidget::paintEvent(QPaintEvent *pEvent)
    441463{
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QITreeWidget.h

    r76996 r76997  
    3232class QITreeWidget;
    3333
     34/** A functor base to be passed to QITabWidget::filterItems(..). Overload operator()(..) to filter out
     35 *  tree items. */
     36class SHARED_LIBRARY_STUFF QITreeWidgetItemFilter
     37{
     38 public:
     39    virtual bool operator()(QTreeWidgetItem*) const
     40    {
     41        return true;
     42    }
     43};
    3444
    3545/** QTreeWidgetItem subclass extending standard functionality. */
     
    99109    QITreeWidgetItem *childItem(int iIndex) const;
    100110    QModelIndex itemIndex(QTreeWidgetItem *pItem);
     111    /** Recurses thru the subtree with a root pParent and returns a list of tree items filtered by @a filter.
     112     *  When @a pParent is null than QTreeWidget::invisibleRootItem() is used as the root item. */
     113    QList<QTreeWidgetItem*> filterItems(const QITreeWidgetItemFilter &filter, QTreeWidgetItem* pParent = 0);
    101114
    102115protected:
     
    106119    /** Handles resize @a pEvent. */
    107120    void resizeEvent(QResizeEvent *pEvent);
     121
     122 private:
     123
     124    /* Recurses thru the tree and append filtered items to @a filteredItemList. */
     125    void filterItemsInternal(const QITreeWidgetItemFilter &filter, QTreeWidgetItem* pParent,
     126                             QList<QTreeWidgetItem*> &filteredItemList);
    108127};
    109128
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette