VirtualBox

Changeset 76892 in vbox


Ignore:
Timestamp:
Jan 18, 2019 1:40:40 PM (6 years ago)
Author:
vboxsync
Message:

FE/Qt: bugref:9183. Make sure tree item(s) found after search is/are visible

Location:
trunk/src/VBox/Frontends/VirtualBox/src
Files:
4 edited

Legend:

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

    r76606 r76892  
    433433}
    434434
     435QModelIndex QITreeWidget::itemIndex(QTreeWidgetItem *pItem)
     436{
     437    return indexFromItem(pItem);
     438}
     439
    435440void QITreeWidget::paintEvent(QPaintEvent *pEvent)
    436441{
  • trunk/src/VBox/Frontends/VirtualBox/src/extensions/QITreeWidget.h

    r76581 r76892  
    8686    void resized(const QSize &size, const QSize &oldSize);
    8787
    88 public:
     88 public:
    8989
    9090    /** Constructs tree-widget passing @a pParent to the base-class. */
     
    9898    /** Returns the child item with @a iIndex. */
    9999    QITreeWidgetItem *childItem(int iIndex) const;
     100    QModelIndex itemIndex(QTreeWidgetItem *pItem);
    100101
    101102protected:
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp

    r76844 r76892  
    5454#endif /* VBOX_WS_MAC */
    5555
    56 
    57 class UIMediumSearchWidget : public QWidget
     56/*********************************************************************************************************************************
     57*   UIMediumSearchWidget definition.                                                                                         *
     58*********************************************************************************************************************************/
     59/** QWidget extension providing a simple way to enter a earch term and search type for medium searching
     60 *  in virtual media manager, medium selection dialog, etc. */
     61class UIMediumSearchWidget : public QIWithRetranslateUI<QWidget>
    5862{
    5963    Q_OBJECT;
     
    7074signals:
    7175
    72     void sigSearchTypeChanged(int newType);
    73     void sigSearchTermChanged(QString searchTerm);
     76    void sigPerformSearch();
    7477
    7578public:
     
    7982    QString searchTerm() const;
    8083
     84protected:
     85
     86    void retranslateUi() /* override */;
     87
    8188private:
    8289
    8390    void prepareWidgets();
    8491    QIComboBox       *m_pSearchComboxBox;
    85     QLineEdit         *m_pSearchTermLineEdit;
     92    QLineEdit        *m_pSearchTermLineEdit;
     93    QIToolButton     *m_pSearchButton;
    8694};
    8795
     
    92100
    93101UIMediumSearchWidget::UIMediumSearchWidget(QWidget *pParent)
    94     :QWidget(pParent)
     102    :QIWithRetranslateUI<QWidget>(pParent)
    95103    , m_pSearchComboxBox(0)
    96104    , m_pSearchTermLineEdit(0)
     105    , m_pSearchButton(0)
    97106{
    98107    prepareWidgets();
     
    115124
    116125        connect(m_pSearchComboxBox, static_cast<void(QIComboBox::*)(int)>(&QIComboBox::currentIndexChanged),
    117                 this, &UIMediumSearchWidget::sigSearchTypeChanged);
     126                this, &UIMediumSearchWidget::sigPerformSearch);
    118127
    119128    }
     
    124133        m_pSearchTermLineEdit->setClearButtonEnabled(true);
    125134        pLayout->addWidget(m_pSearchTermLineEdit);
    126         connect(m_pSearchTermLineEdit, &QILineEdit::textChanged,
    127                 this, &UIMediumSearchWidget::sigSearchTermChanged);
    128     }
     135        connect(m_pSearchTermLineEdit, &QILineEdit::editingFinished,
     136                this, &UIMediumSearchWidget::sigPerformSearch);
     137    }
     138
     139    m_pSearchButton = new QIToolButton;
     140    if (m_pSearchButton)
     141    {
     142        m_pSearchButton->setIcon(UIIconPool::iconSet(":/log_viewer_find_16px.png", ":/log_viewer_find_disabled_16px.png"));
     143        connect(m_pSearchButton, &QIToolButton::clicked, this, &UIMediumSearchWidget::sigPerformSearch);
     144        pLayout->addWidget(m_pSearchButton);
     145    }
     146    retranslateUi();
    129147}
    130148
     
    143161}
    144162
     163void UIMediumSearchWidget::retranslateUi()
     164{
     165    if (m_pSearchComboxBox)
     166    {
     167        m_pSearchComboxBox->setItemText(SearchByName, UIMediumSelector::tr("Search By Name"));
     168        m_pSearchComboxBox->setItemText(SearchByUUID, UIMediumSelector::tr("Search By UUID"));
     169        m_pSearchComboxBox->setToolTip(UIMediumSelector::tr("Select the search type"));
     170    }
     171    if (m_pSearchTermLineEdit)
     172        m_pSearchTermLineEdit->setToolTip("Enter the search term and press Return");
     173    if (m_pSearchButton)
     174        m_pSearchButton->setToolTip("Search medium with the given name or UUID");
     175}
     176
     177
     178/*********************************************************************************************************************************
     179*   UIMediumSelector implementation.                                                                                         *
     180*********************************************************************************************************************************/
    145181
    146182UIMediumSelector::UIMediumSelector(UIMediumDeviceType enmMediumType, const QString &machineName /* = QString() */,
     
    329365    if (m_pSearchWidget)
    330366    {
    331         connect(m_pSearchWidget, &UIMediumSearchWidget::sigSearchTypeChanged,
    332                 this, &UIMediumSelector::sltHandleSearchTypeChange);
    333         connect(m_pSearchWidget, &UIMediumSearchWidget::sigSearchTermChanged,
    334                 this, &UIMediumSelector::sltHandleSearchTermChange);
     367        connect(m_pSearchWidget, &UIMediumSearchWidget::sigPerformSearch,
     368                this, &UIMediumSelector::sltHandlePerformSearch);
    335369    }
    336370}
     
    544578}
    545579
    546 void UIMediumSelector::sltHandleSearchTypeChange(int type)
    547 {
    548     Q_UNUSED(type);
    549     performMediumSearch();
    550 }
    551 
    552 void UIMediumSelector::sltHandleSearchTermChange(QString searchTerm)
    553 {
    554     Q_UNUSED(searchTerm);
     580void UIMediumSelector::sltHandlePerformSearch()
     581{
    555582    performMediumSearch();
    556583}
     
    753780    }
    754781
    755 
    756782    UIMediumSearchWidget::SearchType searchType =
    757783        m_pSearchWidget->searchType();
     
    778804            for (int j = 0; j < m_pTreeWidget->columnCount(); ++j)
    779805                m_mediumItemList[i]->setData(j, Qt::ForegroundRole, QBrush(QColor(255, 0, 0)));
     806            QModelIndex itemIndex = m_pTreeWidget->itemIndex(m_mediumItemList[i]);
     807            if (itemIndex.isValid())
     808                m_pTreeWidget->scrollTo(itemIndex);
    780809        }
    781810    }
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.h

    r76829 r76892  
    6969    void sltHandleMediumEnumerationFinish();
    7070    void sltHandleRefresh();
    71     void sltHandleSearchTypeChange(int type);
    72     void sltHandleSearchTermChange(QString searchTerm);
     71    void sltHandlePerformSearch();
    7372
    74 private:
     73 private:
    7574
    7675
Note: See TracChangeset for help on using the changeset viewer.

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