Changeset 100293 in vbox
- Timestamp:
- Jun 27, 2023 6:59:34 AM (21 months ago)
- svn:sync-xref-src-repo-rev:
- 158008
- 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 297 297 return; 298 298 QModelIndex selectedIndex = indices[0]; 299 treeSelectionChanged(selectedIndex);300 299 } 301 300 -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoBrowserBase.h
r100155 r100293 76 76 77 77 virtual void tableViewItemDoubleClick(const QModelIndex &index) = 0; 78 virtual void treeSelectionChanged(const QModelIndex &selectedTreeIndex) = 0;79 78 virtual void setTableRootIndex(QModelIndex index = QModelIndex()) = 0; 80 virtual void setTreeCurrentIndex(QModelIndex index = QModelIndex()) = 0;81 79 82 80 virtual void resizeEvent(QResizeEvent *pEvent) RT_OVERRIDE; -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.cpp
r100282 r100293 460 460 { 461 461 setTableRootIndex(currentRoot.parent()); 462 setTreeCurrentIndex(currentRoot.parent());463 462 } 464 463 } … … 467 466 importISOContentToViso(strISOPath, pClickedItem, pClickedItem->data(UICustomFileSystemModelData_LocalPath).toString()); 468 467 setTableRootIndex(index); 469 setTreeCurrentIndex(index);470 468 } 471 469 else … … 473 471 scanHostDirectory(pClickedItem); 474 472 setTableRootIndex(index); 475 setTreeCurrentIndex(index);476 473 } 477 474 } … … 714 711 } 715 712 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 else731 {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 // } 767 764 768 765 void UIVisoContentBrowser::showHideHiddenObjects(bool bShow) … … 808 805 } 809 806 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 // } 823 820 824 821 void UIVisoContentBrowser::scanHostDirectory(UICustomFileSystemItem *directoryItem) -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoContentBrowser.h
r100282 r100293 94 94 * @{ */ 95 95 virtual void setTableRootIndex(QModelIndex index = QModelIndex()) final override; 96 virtual void setTreeCurrentIndex(QModelIndex index = QModelIndex()) final override;97 96 /** @} */ 98 99 virtual void treeSelectionChanged(const QModelIndex &selectedTreeIndex) final override;100 97 101 98 private slots: … … 115 112 * @{ */ 116 113 QModelIndex convertIndexToTableIndex(const QModelIndex &index); 117 QModelIndex convertIndexToTreeIndex(const QModelIndex &index);114 // QModelIndex convertIndexToTreeIndex(const QModelIndex &index); 118 115 /** @} */ 119 116 /** 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 32 32 #include <QMimeData> 33 33 #include <QTextEdit> 34 #include <QTreeView>35 34 #include <QTableView> 36 35 … … 155 154 UIVisoHostBrowser::UIVisoHostBrowser(QWidget *pParent /* = 0 */) 156 155 : UIVisoBrowserBase(pParent) 157 , m_pTreeModel(0)158 156 , m_pTableModel(0) 159 157 , m_pTableView(0) … … 175 173 UIVisoBrowserBase::prepareObjects(); 176 174 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);181 175 m_pTableModel = new UIVisoHostBrowserModel(this); 182 176 m_pTableModel->setRootPath(QDir::rootPath()); 183 177 m_pTableModel->setReadOnly(true); 184 178 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 }196 179 197 180 m_pTableView = new QTableView; … … 221 204 222 205 m_pTableView->setModel(m_pTableModel); 223 setTableRootIndex();206 //setTableRootIndex(); 224 207 /* Hide the "type" column: */ 225 208 m_pTableView->hideColumn(2); … … 259 242 if (!index.isValid()) 260 243 return; 244 /* QFileInfo::isDir() returns true if QFileInfo is a folder or a symlink to folder: */ 261 245 QFileInfo fileInfo = m_pTableModel->fileInfo(index); 262 /* QFileInfo::isDir() returns true if QFileInfo is a folder or a symlink to folder: */263 246 if (!fileInfo.isDir()) 264 247 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 258 void 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 266 QString 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 274 void UIVisoHostBrowser::setCurrentPath(const QString &strPath) 275 { 276 if (strPath.isEmpty() || !m_pTableModel) 277 return; 278 QModelIndex index = m_pTableModel->index(strPath); 265 279 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 else285 {286 m_pTreeModel->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);287 m_pTableModel->setFilter(QDir::AllEntries | QDir::NoDot);288 }289 }290 291 QString UIVisoHostBrowser::currentPath() const292 {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);305 280 } 306 281 … … 341 316 void UIVisoHostBrowser::setTableRootIndex(QModelIndex index /* = QModelIndex */) 342 317 { 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); 356 321 m_pTableView->clearSelection(); 357 322 } 358 323 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 324 QModelIndex UIVisoHostBrowser::currentRootIndex() const 325 { 326 if (!m_pTableView) 327 return QModelIndex(); 328 return m_pTableView->rootIndex(); 329 } 376 330 #include "UIVisoHostBrowser.moc" -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.h
r100180 r100293 70 70 virtual void tableViewItemDoubleClick(const QModelIndex &index) final override; 71 71 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;74 72 75 73 private slots: … … 81 79 void prepareObjects(); 82 80 void prepareConnections(); 83 81 QModelIndex currentRootIndex() const; 84 82 /** 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;86 83 UIVisoHostBrowserModel *m_pTableModel; 87 84 QTableView *m_pTableView;
Note:
See TracChangeset
for help on using the changeset viewer.