VirtualBox

Changeset 100293 in vbox


Ignore:
Timestamp:
Jun 27, 2023 6:59:34 AM (21 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
158008
Message:

FE/Qt: bugref:9080. Don't use tree view in host file browser.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoBrowserBase.cpp

    r100155 r100293  
    297297        return;
    298298    QModelIndex selectedIndex = indices[0];
    299     treeSelectionChanged(selectedIndex);
    300299}
    301300
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoBrowserBase.h

    r100155 r100293  
    7676
    7777    virtual void tableViewItemDoubleClick(const QModelIndex &index) = 0;
    78     virtual void treeSelectionChanged(const QModelIndex &selectedTreeIndex) = 0;
    7978    virtual void setTableRootIndex(QModelIndex index = QModelIndex()) = 0;
    80     virtual void setTreeCurrentIndex(QModelIndex index = QModelIndex()) = 0;
    8179
    8280    virtual void resizeEvent(QResizeEvent *pEvent) RT_OVERRIDE;
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.cpp

    r100282 r100293  
    460460        {
    461461            setTableRootIndex(currentRoot.parent());
    462             setTreeCurrentIndex(currentRoot.parent());
    463462        }
    464463    }
     
    467466        importISOContentToViso(strISOPath, pClickedItem, pClickedItem->data(UICustomFileSystemModelData_LocalPath).toString());
    468467        setTableRootIndex(index);
    469         setTreeCurrentIndex(index);
    470468    }
    471469    else
     
    473471        scanHostDirectory(pClickedItem);
    474472        setTableRootIndex(index);
    475         setTreeCurrentIndex(index);
    476473    }
    477474}
     
    714711}
    715712
    716 void UIVisoContentBrowser::setTreeCurrentIndex(QModelIndex index /* = QModelIndex() */)
    717 {
    718     if (!m_pTreeView)
    719         return;
    720     QItemSelectionModel *pSelectionModel = m_pTreeView->selectionModel();
    721     if (!pSelectionModel)
    722         return;
    723     m_pTreeView->blockSignals(true);
    724     pSelectionModel->blockSignals(true);
    725     QModelIndex treeIndex;
    726     if (index.isValid())
    727     {
    728         treeIndex = convertIndexToTreeIndex(index);
    729     }
    730     else
    731     {
    732         QItemSelectionModel *selectionModel = m_pTableView->selectionModel();
    733         if (selectionModel)
    734         {
    735             if (!selectionModel->selectedIndexes().isEmpty())
    736             {
    737                 QModelIndex tableIndex = selectionModel->selectedIndexes().at(0);
    738                 treeIndex = convertIndexToTreeIndex(tableIndex);
    739             }
    740         }
    741     }
    742 
    743     if (treeIndex.isValid())
    744     {
    745         m_pTreeView->setCurrentIndex(treeIndex);
    746         m_pTreeView->setExpanded(treeIndex, true);
    747         m_pTreeView->scrollTo(index, QAbstractItemView::PositionAtCenter);
    748         m_pTreeProxyModel->invalidate();
    749     }
    750     pSelectionModel->blockSignals(false);
    751     m_pTreeView->blockSignals(false);
    752 }
    753 
    754 void UIVisoContentBrowser::treeSelectionChanged(const QModelIndex &selectedTreeIndex)
    755 {
    756     if (!m_pTableProxyModel || !m_pTreeProxyModel)
    757         return;
    758 
    759     /* Check if we need to scan the directory in the host system: */
    760     UICustomFileSystemItem *pClickedItem =
    761         static_cast<UICustomFileSystemItem*>(m_pTreeProxyModel->mapToSource(selectedTreeIndex).internalPointer());
    762     scanHostDirectory(pClickedItem);
    763     setTableRootIndex(selectedTreeIndex);
    764     m_pTableProxyModel->invalidate();
    765     m_pTreeProxyModel->invalidate();
    766 }
     713// void UIVisoContentBrowser::setTreeCurrentIndex(QModelIndex index /* = QModelIndex() */)
     714// {
     715//     if (!m_pTreeView)
     716//         return;
     717//     QItemSelectionModel *pSelectionModel = m_pTreeView->selectionModel();
     718//     if (!pSelectionModel)
     719//         return;
     720//     m_pTreeView->blockSignals(true);
     721//     pSelectionModel->blockSignals(true);
     722//     QModelIndex treeIndex;
     723//     if (index.isValid())
     724//     {
     725//         treeIndex = convertIndexToTreeIndex(index);
     726//     }
     727//     else
     728//     {
     729//         QItemSelectionModel *selectionModel = m_pTableView->selectionModel();
     730//         if (selectionModel)
     731//         {
     732//             if (!selectionModel->selectedIndexes().isEmpty())
     733//             {
     734//                 QModelIndex tableIndex = selectionModel->selectedIndexes().at(0);
     735//                 treeIndex = convertIndexToTreeIndex(tableIndex);
     736//             }
     737//         }
     738//     }
     739
     740//     if (treeIndex.isValid())
     741//     {
     742//         m_pTreeView->setCurrentIndex(treeIndex);
     743//         m_pTreeView->setExpanded(treeIndex, true);
     744//         m_pTreeView->scrollTo(index, QAbstractItemView::PositionAtCenter);
     745//         m_pTreeProxyModel->invalidate();
     746//     }
     747//     pSelectionModel->blockSignals(false);
     748//     m_pTreeView->blockSignals(false);
     749// }
     750
     751// void UIVisoContentBrowser::treeSelectionChanged(const QModelIndex &selectedTreeIndex)
     752// {
     753//     if (!m_pTableProxyModel || !m_pTreeProxyModel)
     754//         return;
     755
     756//     /* Check if we need to scan the directory in the host system: */
     757//     UICustomFileSystemItem *pClickedItem =
     758//         static_cast<UICustomFileSystemItem*>(m_pTreeProxyModel->mapToSource(selectedTreeIndex).internalPointer());
     759//     scanHostDirectory(pClickedItem);
     760//     setTableRootIndex(selectedTreeIndex);
     761//     m_pTableProxyModel->invalidate();
     762//     m_pTreeProxyModel->invalidate();
     763// }
    767764
    768765void UIVisoContentBrowser::showHideHiddenObjects(bool bShow)
     
    808805}
    809806
    810 QModelIndex UIVisoContentBrowser::convertIndexToTreeIndex(const QModelIndex &index)
    811 {
    812     if (!index.isValid())
    813         return QModelIndex();
    814 
    815     if (index.model() == m_pTreeProxyModel)
    816         return index;
    817     else if (index.model() == m_pModel)
    818         return m_pTreeProxyModel->mapFromSource(index);
    819     else if (index.model() == m_pTableProxyModel)
    820         return m_pTreeProxyModel->mapFromSource(m_pTableProxyModel->mapToSource(index));
    821     return QModelIndex();
    822 }
     807// QModelIndex UIVisoContentBrowser::convertIndexToTreeIndex(const QModelIndex &index)
     808// {
     809//     if (!index.isValid())
     810//         return QModelIndex();
     811
     812//     if (index.model() == m_pTreeProxyModel)
     813//         return index;
     814//     else if (index.model() == m_pModel)
     815//         return m_pTreeProxyModel->mapFromSource(index);
     816//     else if (index.model() == m_pTableProxyModel)
     817//         return m_pTreeProxyModel->mapFromSource(m_pTableProxyModel->mapToSource(index));
     818//     return QModelIndex();
     819// }
    823820
    824821void UIVisoContentBrowser::scanHostDirectory(UICustomFileSystemItem *directoryItem)
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.h

    r100282 r100293  
    9494      * @{ */
    9595        virtual void setTableRootIndex(QModelIndex index = QModelIndex())  final override;
    96         virtual void setTreeCurrentIndex(QModelIndex index = QModelIndex()) final override;
    9796    /** @} */
    98 
    99     virtual void treeSelectionChanged(const QModelIndex &selectedTreeIndex) final override;
    10097
    10198private slots:
     
    115112      * @{ */
    116113        QModelIndex         convertIndexToTableIndex(const QModelIndex &index);
    117         QModelIndex         convertIndexToTreeIndex(const QModelIndex &index);
     114        // QModelIndex         convertIndexToTreeIndex(const QModelIndex &index);
    118115    /** @} */
    119116    /** Lists the content of the host file system directory by using Qt file system API. */
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.cpp

    r100180 r100293  
    3232#include <QMimeData>
    3333#include <QTextEdit>
    34 #include <QTreeView>
    3534#include <QTableView>
    3635
     
    155154UIVisoHostBrowser::UIVisoHostBrowser(QWidget *pParent /* = 0 */)
    156155    : UIVisoBrowserBase(pParent)
    157     , m_pTreeModel(0)
    158156    , m_pTableModel(0)
    159157    , m_pTableView(0)
     
    175173    UIVisoBrowserBase::prepareObjects();
    176174
    177     m_pTreeModel = new UIVisoHostBrowserModel(this);
    178     m_pTreeModel->setRootPath(QDir::rootPath());
    179     m_pTreeModel->setReadOnly(true);
    180     m_pTreeModel->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::Hidden);
    181175    m_pTableModel = new UIVisoHostBrowserModel(this);
    182176    m_pTableModel->setRootPath(QDir::rootPath());
    183177    m_pTableModel->setReadOnly(true);
    184178    m_pTableModel->setFilter(QDir::AllEntries | QDir::NoDot | QDir::Hidden | QDir::System);
    185 
    186     if (m_pTreeView)
    187     {
    188         m_pTreeView->setModel(m_pTreeModel);
    189         m_pTreeView->setRootIndex(m_pTreeModel->index(m_pTreeModel->rootPath()).parent());
    190         m_pTreeView->setCurrentIndex(m_pTreeModel->index(QDir::homePath()));
    191         /* Show only the 0th column that is "name': */
    192         m_pTreeView->hideColumn(1);
    193         m_pTreeView->hideColumn(2);
    194         m_pTreeView->hideColumn(3);
    195     }
    196179
    197180    m_pTableView = new QTableView;
     
    221204
    222205        m_pTableView->setModel(m_pTableModel);
    223         setTableRootIndex();
     206        //setTableRootIndex();
    224207        /* Hide the "type" column: */
    225208        m_pTableView->hideColumn(2);
     
    259242    if (!index.isValid())
    260243        return;
     244    /* QFileInfo::isDir() returns true if QFileInfo is a folder or a symlink to folder: */
    261245    QFileInfo fileInfo = m_pTableModel->fileInfo(index);
    262     /* QFileInfo::isDir() returns true if QFileInfo is a folder or a symlink to folder: */
    263246    if (!fileInfo.isDir())
    264247        return;
     248    if (QString::compare(fileInfo.fileName(), "..") == 0)
     249    {
     250        //printf("rrr %s\n", qPrintable(m_pTableModel->filePath(m_pTableModel->parent(m_pTableView->rootIndex()))));
     251
     252        setTableRootIndex(m_pTableModel->parent(m_pTableView->rootIndex()));
     253    }
     254    else
     255        setTableRootIndex(index);
     256}
     257
     258void UIVisoHostBrowser::showHideHiddenObjects(bool bShow)
     259{
     260    if (bShow)
     261        m_pTableModel->setFilter(QDir::AllEntries | QDir::NoDot | QDir::Hidden | QDir::System);
     262    else
     263        m_pTableModel->setFilter(QDir::AllEntries | QDir::NoDot);
     264}
     265
     266QString UIVisoHostBrowser::currentPath() const
     267{
     268    if (!m_pTableView || !m_pTableModel)
     269        return QString();
     270    QModelIndex currentTableIndex = m_pTableView->selectionModel()->currentIndex();
     271    return QDir::fromNativeSeparators(m_pTableModel->filePath(currentTableIndex));
     272}
     273
     274void UIVisoHostBrowser::setCurrentPath(const QString &strPath)
     275{
     276    if (strPath.isEmpty() || !m_pTableModel)
     277        return;
     278    QModelIndex index = m_pTableModel->index(strPath);
    265279    setTableRootIndex(index);
    266 
    267     m_pTreeView->blockSignals(true);
    268     setTreeCurrentIndex(index);
    269     m_pTreeView->blockSignals(false);
    270 }
    271 
    272 void UIVisoHostBrowser::treeSelectionChanged(const QModelIndex &selectedTreeIndex)
    273 {
    274     setTableRootIndex(selectedTreeIndex);
    275 }
    276 
    277 void UIVisoHostBrowser::showHideHiddenObjects(bool bShow)
    278 {
    279     if (bShow)
    280     {
    281         m_pTreeModel->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::Hidden);
    282         m_pTableModel->setFilter(QDir::AllEntries | QDir::NoDot | QDir::Hidden | QDir::System);
    283     }
    284     else
    285     {
    286         m_pTreeModel->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);
    287         m_pTableModel->setFilter(QDir::AllEntries | QDir::NoDot);
    288     }
    289 }
    290 
    291 QString UIVisoHostBrowser::currentPath() const
    292 {
    293     if (!m_pTreeView || !m_pTreeModel)
    294         return QString();
    295     QModelIndex currentTreeIndex = m_pTreeView->selectionModel()->currentIndex();
    296     return QDir::fromNativeSeparators(m_pTreeModel->filePath(currentTreeIndex));
    297 }
    298 
    299 void UIVisoHostBrowser::setCurrentPath(const QString &strPath)
    300 {
    301     if (strPath.isEmpty() || !m_pTreeModel)
    302         return;
    303     QModelIndex index = m_pTreeModel->index(strPath);
    304     setTreeCurrentIndex(index);
    305280}
    306281
     
    341316void UIVisoHostBrowser::setTableRootIndex(QModelIndex index /* = QModelIndex */)
    342317{
    343     if (!m_pTreeView || !m_pTreeView->selectionModel() || !m_pTableView)
    344         return;
    345     QString strCurrentTreePath;
    346     if (!index.isValid())
    347     {
    348         QModelIndex currentTreeIndex = m_pTreeView->selectionModel()->currentIndex();
    349         strCurrentTreePath = m_pTreeModel->filePath(currentTreeIndex);
    350     }
    351     else
    352         strCurrentTreePath = m_pTreeModel->filePath(index);
    353     if (!strCurrentTreePath.isEmpty())
    354         m_pTableView->setRootIndex(m_pTableModel->index(strCurrentTreePath));
    355     updateLocationSelectorText(strCurrentTreePath);
     318    if (!m_pTableView)
     319        return;
     320    m_pTableView->setRootIndex(index);
    356321    m_pTableView->clearSelection();
    357322}
    358323
    359 void UIVisoHostBrowser::setTreeCurrentIndex(QModelIndex index /* = QModelIndex() */)
    360 {
    361     QString strCurrentTablePath;
    362     if (!index.isValid())
    363     {
    364         QModelIndex currentTableIndex = m_pTableView->selectionModel()->currentIndex();
    365         strCurrentTablePath = m_pTableModel->filePath(currentTableIndex);
    366     }
    367     else
    368         strCurrentTablePath = m_pTableModel->filePath(index);
    369     QModelIndex treeIndex = m_pTreeModel->index(strCurrentTablePath);
    370     m_pTreeView->setCurrentIndex(treeIndex);
    371     m_pTreeView->setExpanded(treeIndex, true);
    372     m_pTreeView->scrollTo(treeIndex, QAbstractItemView::PositionAtCenter);
    373 }
    374 
    375 
     324QModelIndex UIVisoHostBrowser::currentRootIndex() const
     325{
     326    if (!m_pTableView)
     327        return QModelIndex();
     328    return m_pTableView->rootIndex();
     329}
    376330#include "UIVisoHostBrowser.moc"
  • trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.h

    r100180 r100293  
    7070    virtual void tableViewItemDoubleClick(const QModelIndex &index) final override;
    7171    virtual void setTableRootIndex(QModelIndex index = QModelIndex()) final override;
    72     virtual void setTreeCurrentIndex(QModelIndex index = QModelIndex()) final override;
    73     virtual void treeSelectionChanged(const QModelIndex &selectedTreeIndex) final override;
    7472
    7573private slots:
     
    8179    void prepareObjects();
    8280    void prepareConnections();
    83 
     81    QModelIndex currentRootIndex() const;
    8482    /** We have two file system models (one for each item view) since we set different filters on each of these models. */
    85     UIVisoHostBrowserModel *m_pTreeModel;
    8683    UIVisoHostBrowserModel *m_pTableModel;
    8784    QTableView             *m_pTableView;
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