- Timestamp:
- Jan 25, 2019 9:29:25 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 128416
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/extensions/QITreeWidget.cpp
r76892 r76995 438 438 } 439 439 440 QList<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 450 void 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 440 462 void QITreeWidget::paintEvent(QPaintEvent *pEvent) 441 463 { -
trunk/src/VBox/Frontends/VirtualBox/src/extensions/QITreeWidget.h
r76892 r76995 32 32 class QITreeWidget; 33 33 34 /** A functor base to be passed to QITabWidget::filterItems(..). Overload operator()(..) to filter out 35 * tree items. */ 36 class SHARED_LIBRARY_STUFF QITreeWidgetItemFilter 37 { 38 public: 39 virtual bool operator()(QTreeWidgetItem*) const 40 { 41 return true; 42 } 43 }; 34 44 35 45 /** QTreeWidgetItem subclass extending standard functionality. */ … … 99 109 QITreeWidgetItem *childItem(int iIndex) const; 100 110 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); 101 114 102 115 protected: … … 106 119 /** Handles resize @a pEvent. */ 107 120 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); 108 127 }; 109 128 -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp
r76977 r76995 100 100 /* Virtual Media Manager: */ 101 101 const char *UIExtraDataDefs::GUI_VirtualMediaManager_Details_Expanded = "GUI/VirtualMediaManager/Details/Expanded"; 102 const char *UIExtraDataDefs::GUI_VirtualMediaManager_Search_Widget_Expanded = "GUI/VirtualMediaManager/SearchWidget/Expanded"; 102 103 103 104 /* Host Network Manager: */ -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
r76977 r76995 191 191 /** Holds whether Virtual Media Manager details expanded. */ 192 192 SHARED_LIBRARY_STUFF extern const char *GUI_VirtualMediaManager_Details_Expanded; 193 /** Holds whether Virtual Media Manager search widget expanded. */ 194 SHARED_LIBRARY_STUFF extern const char *GUI_VirtualMediaManager_Search_Widget_Expanded; 193 195 /** @} */ 194 196 -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
r76977 r76995 2975 2975 } 2976 2976 2977 bool UIExtraDataManager::virtualMediaManagerSearchWidgetExpanded() 2978 { 2979 /* 'False' unless feature allowed: */ 2980 return isFeatureAllowed(GUI_VirtualMediaManager_Search_Widget_Expanded); 2981 } 2982 2983 void UIExtraDataManager::setVirtualMediaManagerSearchWidgetExpanded(bool fExpanded) 2984 { 2985 /* 'True' if feature allowed, null-string otherwise: */ 2986 return setExtraDataString(GUI_VirtualMediaManager_Search_Widget_Expanded, toFeatureAllowed(fExpanded)); 2987 } 2988 2977 2989 bool UIExtraDataManager::hostNetworkManagerDetailsExpanded() 2978 2990 { -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
r76977 r76995 370 370 /** Defines whether Virtual Media Manager details @a fExpanded. */ 371 371 void setVirtualMediaManagerDetailsExpanded(bool fExpanded); 372 /** Returns whether Virtual Media Manager search widget expanded. */ 373 bool virtualMediaManagerSearchWidgetExpanded(); 374 /** Defines whether Virtual Media Manager search widget @a fExpanded. */ 375 void setVirtualMediaManagerSearchWidgetExpanded(bool fExpanded); 372 376 /** @} */ 373 377 -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp
r76842 r76995 2042 2042 setStatusTip(QApplication::translate("UIActionPool", "Open pane with selected disk image file properties")); 2043 2043 setToolTip(QApplication::translate("UIActionPool", "Open Disk Image File Properties (%1)").arg(shortcut().toString())); 2044 } 2045 }; 2046 2047 /** Toggle action extension, used as 'Toggle Search Pane' action class. */ 2048 class UIActionMenuSelectorMediumToggleSearch : public UIActionToggle 2049 { 2050 Q_OBJECT; 2051 2052 public: 2053 2054 /** Constructs action passing @a pParent to the base-class. */ 2055 UIActionMenuSelectorMediumToggleSearch(UIActionPool *pParent) 2056 : UIActionToggle(pParent) 2057 { 2058 setShortcutContext(Qt::WidgetWithChildrenShortcut); 2059 setIcon(0, UIIconPool::iconSetFull(":/hd_modify_32px.png", ":/hd_modify_16px.png", 2060 ":/hd_modify_disabled_32px.png", ":/hd_modify_disabled_16px.png")); 2061 setIcon(1, UIIconPool::iconSetFull(":/cd_modify_32px.png", ":/cd_modify_16px.png", 2062 ":/cd_modify_disabled_32px.png", ":/cd_modify_disabled_16px.png")); 2063 setIcon(2, UIIconPool::iconSetFull(":/fd_modify_32px.png", ":/fd_modify_16px.png", 2064 ":/fd_modify_disabled_32px.png", ":/fd_modify_disabled_16px.png")); 2065 } 2066 2067 protected: 2068 2069 /** Returns shortcut extra-data ID. */ 2070 virtual QString shortcutExtraDataID() const /* override */ 2071 { 2072 return QString("ToggleMediumSearch"); 2073 } 2074 2075 /** Returns default shortcut. */ 2076 virtual QKeySequence defaultShortcut(UIActionPoolType) const /* override */ 2077 { 2078 return QKeySequence(""); 2079 } 2080 2081 /** Handles translation event. */ 2082 virtual void retranslateUi() /* override */ 2083 { 2084 setName(QApplication::translate("UIActionPool", "&Search")); 2085 setShortcutScope(QApplication::translate("UIActionPool", "Media Manager")); 2086 setStatusTip(QApplication::translate("UIActionPool", "Open the medium search pane")); 2087 setToolTip(QApplication::translate("UIActionPool", "Open Medium Search Pane (%1)").arg(shortcut().toString())); 2044 2088 } 2045 2089 }; … … 2619 2663 m_pool[UIActionIndexST_M_Medium_S_Release] = new UIActionMenuSelectorMediumPerformRelease(this); 2620 2664 m_pool[UIActionIndexST_M_Medium_T_Details] = new UIActionMenuSelectorMediumToggleProperties(this); 2665 m_pool[UIActionIndexST_M_Medium_T_Search] = new UIActionMenuSelectorMediumToggleSearch(this); 2621 2666 m_pool[UIActionIndexST_M_Medium_S_Refresh] = new UIActionMenuSelectorMediumPerformRefresh(this); 2622 2667 … … 3087 3132 /* 'Properties' action: */ 3088 3133 fSeparator = addAction(pMenu, action(UIActionIndexST_M_Medium_T_Details)) || fSeparator; 3134 /* 'Search' action: */ 3135 fSeparator = addAction(pMenu, action(UIActionIndexST_M_Medium_T_Search)) || fSeparator; 3089 3136 3090 3137 /* Separator? */ -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.h
r76776 r76995 138 138 UIActionIndexST_M_Medium_S_Release, 139 139 UIActionIndexST_M_Medium_T_Details, 140 UIActionIndexST_M_Medium_T_Search, 140 141 UIActionIndexST_M_Medium_S_Refresh, 141 142 … … 247 248 248 249 #endif /* !FEQT_INCLUDED_SRC_globals_UIActionPoolManager_h */ 249 -
trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumItem.h
r76581 r76995 72 72 KMediumState state() const { return m_guiMedium.state(); } 73 73 74 /** Returns Q String<i>ID</i> of the wrapped UIMedium. */74 /** Returns QUuid <i>ID</i> of the wrapped UIMedium. */ 75 75 QUuid id() const { return m_guiMedium.id(); } 76 /** Returns QString <i>name</i> of the wrapped UIMedium. */ 77 QString name() const { return m_guiMedium.name(); } 78 76 79 /** Returns QString <i>location</i> of the wrapped UIMedium. */ 77 80 QString location() const { return m_guiMedium.location(); } -
trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
r76606 r76995 37 37 #include "UIMediumItem.h" 38 38 #include "UIMediumManager.h" 39 #include "UIMediumSearchWidget.h" 39 40 #include "UIWizardCloneVD.h" 40 41 #include "UIMessageCenter.h" … … 161 162 , m_pToolBar(0) 162 163 , m_pProgressBar(0) 164 , m_pSearchWidget(0) 163 165 { 164 166 /* Prepare: */ … … 562 564 } 563 565 566 void UIMediumManagerWidget::sltToggleMediumSearchVisibility(bool fVisible) 567 { 568 /* Save the setting: */ 569 //gEDataManager->setVirtualMediaManagerSea(fVisible); 570 /* Toggle medium details visibility: */ 571 if (m_pSearchWidget) 572 m_pSearchWidget->setVisible(fVisible); 573 } 574 564 575 void UIMediumManagerWidget::sltRefreshAll() 565 576 { … … 620 631 menu.addAction(m_pActionPool->action(UIActionIndexST_M_Medium_S_Release)); 621 632 menu.addAction(m_pActionPool->action(UIActionIndexST_M_Medium_T_Details)); 633 menu.addAction(m_pActionPool->action(UIActionIndexST_M_Medium_T_Search)); 622 634 } 623 635 else 624 636 { 625 637 menu.addAction(m_pActionPool->action(UIActionIndexST_M_Medium_S_Add)); 638 menu.addAction(m_pActionPool->action(UIActionIndexST_M_Medium_T_Search)); 626 639 menu.addAction(m_pActionPool->action(UIActionIndexST_M_Medium_S_Refresh)); 627 640 } … … 653 666 pTreeWidget->header()->resizeSection(0, iSize0); 654 667 } 668 } 669 670 void UIMediumManagerWidget::sltHandlePerformSearch() 671 { 672 if (!m_pSearchWidget || !m_pTabWidget) 673 return; 674 675 QITreeWidget *pTreeWidget = treeWidget(static_cast<UIMediumDeviceType>(m_pTabWidget->currentIndex())); 676 if (!pTreeWidget) 677 return; 678 m_pSearchWidget->search(pTreeWidget); 679 680 // printf("size %d\n", matchedList.size()); 681 // m_pSearchWidget->searchItems(pTreeWidget->invisibleRootItem(), matchedList); 682 683 684 685 // SearchType searchType() const; 686 // QString searchTerm() const; 687 688 689 // foreach (const QUuid &id, vboxGlobal().mediumIDs()) 690 // { 691 // UIMedium medium = vboxGlobal().medium(id); 692 // /** Only search among the types of the tab widget's current page: */ 693 // if (static_cast<UIMediumDeviceType>(m_pTabWidget->currentIndex()) != medium.type()) 694 // continue; 695 // if (m_pSearchWidget->searchType() == UIMediumSearchWidget::SearchByName && 696 // medium.name().contains(m_pSearchWidget->searchTerm(), Qt::CaseInsensitive)) 697 // matchedMediumList << medium; 698 // else if (m_pSearchWidget->searchType() == UIMediumSearchWidget::SearchByUUID && 699 // medium.id().toString().contains(m_pSearchWidget->searchTerm(), Qt::CaseInsensitive)) 700 // matchedMediumList << medium; 701 // } 702 // printf("search %s -- %d\n", qPrintable(m_pSearchWidget->searchTerm()), matchedMediumList.size()); 703 655 704 } 656 705 … … 711 760 addAction(m_pActionPool->action(UIActionIndexST_M_Medium_S_Release)); 712 761 addAction(m_pActionPool->action(UIActionIndexST_M_Medium_T_Details)); 762 addAction(m_pActionPool->action(UIActionIndexST_M_Medium_T_Search)); 713 763 addAction(m_pActionPool->action(UIActionIndexST_M_Medium_S_Refresh)); 714 764 … … 726 776 connect(m_pActionPool->action(UIActionIndexST_M_Medium_T_Details), &QAction::toggled, 727 777 this, &UIMediumManagerWidget::sltToggleMediumDetailsVisibility); 778 connect(m_pActionPool->action(UIActionIndexST_M_Medium_T_Search), &QAction::toggled, 779 this, &UIMediumManagerWidget::sltToggleMediumSearchVisibility); 728 780 connect(m_pActionPool->action(UIActionIndexST_M_Medium_S_Refresh), &QAction::triggered, 729 781 this, &UIMediumManagerWidget::sltRefreshAll); … … 754 806 /* Prepare details-widget: */ 755 807 prepareDetailsWidget(); 808 /* Prepare search-widget: */ 809 prepareSearchWidget(); 756 810 } 757 811 } … … 776 830 m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Medium_S_Release)); 777 831 m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Medium_T_Details)); 832 m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Medium_T_Search)); 778 833 m_pToolBar->addSeparator(); 779 834 m_pToolBar->addAction(m_pActionPool->action(UIActionIndexST_M_Medium_S_Refresh)); … … 901 956 } 902 957 958 void UIMediumManagerWidget::prepareSearchWidget() 959 { 960 m_pSearchWidget = new UIMediumSearchWidget(this); 961 AssertPtrReturnVoid(m_pSearchWidget); 962 { 963 m_pSearchWidget->setVisible(false); 964 m_pSearchWidget->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); 965 connect(m_pSearchWidget, &UIMediumSearchWidget::sigPerformSearch, 966 this, &UIMediumManagerWidget::sltHandlePerformSearch); 967 968 /* Add into layout: */ 969 layout()->addWidget(m_pSearchWidget); 970 } 971 972 } 973 903 974 void UIMediumManagerWidget::loadSettings() 904 975 { … … 906 977 m_pActionPool->action(UIActionIndexST_M_Medium_T_Details)->setChecked(gEDataManager->virtualMediaManagerDetailsExpanded()); 907 978 sltToggleMediumDetailsVisibility(m_pActionPool->action(UIActionIndexST_M_Medium_T_Details)->isChecked()); 979 980 /* Search action/widget: */ 981 m_pActionPool->action(UIActionIndexST_M_Medium_T_Search)->setChecked(gEDataManager->virtualMediaManagerDetailsExpanded()); 982 sltToggleMediumSearchVisibility(m_pActionPool->action(UIActionIndexST_M_Medium_T_Search)->isChecked()); 908 983 } 909 984 … … 1644 1719 return qobject_cast<UIMediumManagerWidget*>(QIManagerDialog::widget()); 1645 1720 } 1721 1722 void UIMediumManagerWidget::markUnmarkSearchMatchedItems(bool fMark) 1723 { 1724 /* Unmark the whole tree: */ 1725 if (!fMark) 1726 { 1727 QITreeWidget *pTreeWidget = treeWidget(static_cast<UIMediumDeviceType>(m_pTabWidget->currentIndex())); 1728 if (!pTreeWidget) 1729 return; 1730 QList<UIMediumItem*> itemList; 1731 1732 getItems(pTreeWidget->invisibleRootItem(), itemList); 1733 } 1734 //QList<UIMedium> m_matchedMediumList; 1735 // for (int i = 0; i < m_mediumItemList.size(); ++i) 1736 // { 1737 // for (int j = 0; j < m_pTreeWidget->columnCount(); ++j) 1738 // { 1739 // if (m_mediumItemList[i]) 1740 // m_mediumItemList[i]->setData(j, Qt::ForegroundRole, m_defaultItemForeground); 1741 // } 1742 // } 1743 1744 } 1745 1746 void UIMediumManagerWidget::getItems(QTreeWidgetItem *pParentItem, QList<UIMediumItem*> outList) 1747 { 1748 if (!pParentItem) 1749 return; 1750 if (pParentItem->type() == QITreeWidgetItem::ItemType) 1751 { 1752 UIMediumItem* pItem = static_cast<UIMediumItem*>(pParentItem); 1753 if (pItem) 1754 outList.append(pItem); 1755 } 1756 1757 for (int iChildIndex = 0; iChildIndex < pParentItem->childCount(); ++iChildIndex) 1758 getItems(pParentItem->child(iChildIndex), outList); 1759 } -
trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.h
r76581 r76995 40 40 class UIMediumDetailsWidget; 41 41 class UIMediumItem; 42 class UIMediumSearchWidget; 42 43 class UIToolBar; 43 44 … … 177 178 /** Handles command to make medium details @a fVisible. */ 178 179 void sltToggleMediumDetailsVisibility(bool fVisible); 180 /** Handles command to make medium search pane @a fVisible. */ 181 void sltToggleMediumSearchVisibility(bool fVisible); 179 182 /** Handles command to refresh medium. */ 180 183 void sltRefreshAll(); … … 195 198 /** Adjusts tree-widgets according content. */ 196 199 void sltPerformTablesAdjustment(); 200 /** @} */ 201 202 /** @name Medium search stuff. 203 * @{ */ 204 /** Adjusts tree-widgets according content. */ 205 void sltHandlePerformSearch(); 197 206 /** @} */ 198 207 … … 219 228 /** Prepares details-widget. */ 220 229 void prepareDetailsWidget(); 230 /** Prepares search-widget. */ 231 void prepareSearchWidget(); 221 232 /** Load settings: */ 222 233 void loadSettings(); … … 285 296 const CheckIfSuitableBy &condition, 286 297 CheckIfSuitableBy *pException = 0); 298 287 299 288 300 /** Checks if @a action can be used for @a pItem. */ … … 351 363 UIEnumerationProgressBar *m_pProgressBar; 352 364 /** @} */ 365 366 /** @name Search-widget variables. 367 * @{ */ 368 /** Holds the medium details-widget instance. */ 369 UIMediumSearchWidget *m_pSearchWidget; 370 /** @} */ 371 353 372 }; 354 373 -
trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSearchWidget.cpp
r76979 r76995 25 25 #include "QIDialogButtonBox.h" 26 26 #include "QIToolButton.h" 27 #include "QITreeWidget.h" 27 28 #include "UIFDCreationDialog.h" 28 29 #include "UIIconPool.h" 30 #include "UIMediumItem.h" 29 31 #include "UIMediumSearchWidget.h" 30 32 #include "UIToolBar.h" … … 33 35 # include "UIWindowMenuManager.h" 34 36 #endif /* VBOX_WS_MAC */ 37 38 39 class FilterByNameUUID : public QITreeWidgetItemFilter 40 { 41 42 public: 43 44 FilterByNameUUID(UIMediumSearchWidget::SearchType enmSearchType, const QString &strSearchTerm) 45 : m_enmSearchType(enmSearchType) 46 , m_strSearchTerm(strSearchTerm){} 47 48 virtual bool operator()(QTreeWidgetItem *pItem) const 49 { 50 if (!pItem || m_strSearchTerm.isEmpty()) 51 return false; 52 if (pItem->type() != QITreeWidgetItem::ItemType) 53 return false; 54 55 UIMediumItem *pMediumItem = static_cast<UIMediumItem*>(pItem); 56 if (!pMediumItem) 57 return false; 58 if (m_enmSearchType == UIMediumSearchWidget::SearchByUUID && !pMediumItem->id().toString().contains(m_strSearchTerm)) 59 return false; 60 if (m_enmSearchType == UIMediumSearchWidget::SearchByName && !pMediumItem->name().contains(m_strSearchTerm)) 61 return false; 62 return true; 63 } 64 65 private: 66 67 UIMediumSearchWidget::SearchType m_enmSearchType; 68 QString m_strSearchTerm; 69 }; 35 70 36 71 UIMediumSearchWidget::UIMediumSearchWidget(QWidget *pParent) … … 40 75 , m_pShowNextMatchButton(0) 41 76 , m_pShowPreviousMatchButton(0) 77 , m_pTreeWidget(0) 78 , m_iScrollToIndex(0) 42 79 { 43 80 prepareWidgets(); … … 78 115 m_pShowPreviousMatchButton->setIcon(UIIconPool::iconSet(":/log_viewer_search_backward_16px.png", ":/log_viewer_search_backward_disabled_16px.png")); 79 116 connect(m_pShowPreviousMatchButton, &QIToolButton::clicked, this, &UIMediumSearchWidget::sigShowPreviousMatchingItem); 117 connect(m_pShowPreviousMatchButton, &QIToolButton::clicked, this, &UIMediumSearchWidget::sltShowPreviousMatchingItem); 118 80 119 pLayout->addWidget(m_pShowPreviousMatchButton); 81 120 } … … 85 124 m_pShowNextMatchButton->setIcon(UIIconPool::iconSet(":/log_viewer_search_forward_16px.png", ":/log_viewer_search_forward_disabled_16px.png")); 86 125 connect(m_pShowNextMatchButton, &QIToolButton::clicked, this, &UIMediumSearchWidget:: sigShowNextMatchingItem); 126 connect(m_pShowNextMatchButton, &QIToolButton::clicked, this, &UIMediumSearchWidget:: sltShowNextMatchingItem); 127 87 128 pLayout->addWidget(m_pShowNextMatchButton); 88 129 } … … 103 144 return QString(); 104 145 return m_pSearchTermLineEdit->text(); 146 } 147 148 void UIMediumSearchWidget::search(QITreeWidget* pTreeWidget) 149 { 150 if (!pTreeWidget) 151 return; 152 153 m_pTreeWidget = pTreeWidget; 154 QList<QTreeWidgetItem*> allItems = pTreeWidget->filterItems(QITreeWidgetItemFilter()); 155 markUnmarkItems(allItems, false); 156 157 m_matchedItemList = pTreeWidget->filterItems(FilterByNameUUID(searchType(), searchTerm())); 158 markUnmarkItems(m_matchedItemList, true); 159 if (!m_matchedItemList.isEmpty()) 160 { 161 m_iScrollToIndex = 0; 162 pTreeWidget->scrollTo(pTreeWidget->itemIndex(m_matchedItemList[m_iScrollToIndex]), QAbstractItemView::PositionAtCenter); 163 } 105 164 } 106 165 … … 120 179 m_pShowNextMatchButton->setToolTip("Show the next item matching the search term"); 121 180 } 181 182 void UIMediumSearchWidget::showEvent(QShowEvent *pEvent) 183 { 184 if (m_pSearchTermLineEdit) 185 m_pSearchTermLineEdit->setFocus(); 186 QIWithRetranslateUI<QWidget>::showEvent(pEvent); 187 } 188 189 void UIMediumSearchWidget::markUnmarkItems(QList<QTreeWidgetItem*> &itemList, bool fMark) 190 { 191 foreach (QTreeWidgetItem* pItem, itemList) 192 { 193 if (pItem->type() != QITreeWidgetItem::ItemType) 194 continue; 195 UIMediumItem *pMediumItem = static_cast<UIMediumItem*>(pItem); 196 if (!pMediumItem) 197 continue; 198 QFont font = pMediumItem->font(0); 199 font.setBold(fMark); 200 pMediumItem->setFont(0, font); 201 } 202 } 203 204 void UIMediumSearchWidget::sltShowNextMatchingItem() 205 { 206 if (!m_pTreeWidget) 207 return; 208 if (++m_iScrollToIndex >= m_matchedItemList.size()) 209 m_iScrollToIndex = 0; 210 if (!m_matchedItemList[m_iScrollToIndex]) 211 return; 212 m_pTreeWidget->scrollTo(m_pTreeWidget->itemIndex(m_matchedItemList[m_iScrollToIndex]), QAbstractItemView::PositionAtCenter); 213 } 214 215 void UIMediumSearchWidget::sltShowPreviousMatchingItem() 216 { 217 if (!m_pTreeWidget) 218 return; 219 if (--m_iScrollToIndex <= 0) 220 m_iScrollToIndex = m_matchedItemList.size() - 1; 221 if (!m_matchedItemList[m_iScrollToIndex]) 222 return; 223 m_pTreeWidget->scrollTo(m_pTreeWidget->itemIndex(m_matchedItemList[m_iScrollToIndex]), QAbstractItemView::PositionAtCenter); 224 225 } -
trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSearchWidget.h
r76979 r76995 27 27 /* Forward declarations: */ 28 28 class QAction; 29 class QTreeWidgetItem; 29 30 class QLineEdit; 30 31 class QIComboBox; 31 32 class QIDialogButtonBox; 32 33 class QIToolButton; 34 class QITreeWidget; 35 class UIMediumItem; 36 33 37 34 38 /** QWidget extension providing a simple way to enter a earch term and search type for medium searching … … 58 62 SearchType searchType() const; 59 63 QString searchTerm() const; 64 void search(QITreeWidget* pTreeWidget); 60 65 61 protected:66 protected: 62 67 63 68 void retranslateUi() /* override */; 69 virtual void showEvent(QShowEvent *pEvent) /* override */; 70 71 private slots: 72 73 void sltShowNextMatchingItem(); 74 void sltShowPreviousMatchingItem(); 64 75 65 76 private: 66 77 67 void prepareWidgets(); 78 void prepareWidgets(); 79 void markUnmarkItems(QList<QTreeWidgetItem*> &itemList, bool fMark); 80 68 81 QIComboBox *m_pSearchComboxBox; 69 82 QLineEdit *m_pSearchTermLineEdit; 70 83 QIToolButton *m_pShowNextMatchButton; 71 84 QIToolButton *m_pShowPreviousMatchButton; 85 86 QList<QTreeWidgetItem*> m_matchedItemList; 87 QITreeWidget *m_pTreeWidget; 88 int m_iScrollToIndex; 72 89 }; 73 90
Note:
See TracChangeset
for help on using the changeset viewer.