Changeset 100559 in vbox for trunk/src/VBox/Frontends/VirtualBox
- Timestamp:
- Jul 13, 2023 9:11:17 AM (20 months ago)
- svn:sync-xref-src-repo-rev:
- 158385
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/medium/viso
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.cpp
r100478 r100559 31 31 #include <QItemDelegate> 32 32 #include <QMimeData> 33 #include <QSortFilterProxyModel> 33 34 #include <QTextEdit> 34 35 #include <QTableView> … … 41 42 /* Other VBox includes: */ 42 43 #include <iprt/assert.h> 44 45 46 class SHARED_LIBRARY_STUFF UIHostBrowserProxyModel : public QSortFilterProxyModel 47 { 48 49 Q_OBJECT; 50 51 public: 52 53 UIHostBrowserProxyModel(QObject *pParent = 0) 54 : QSortFilterProxyModel(pParent) 55 { 56 } 57 58 // void setListDirectoriesOnTop(bool fListDirectoriesOnTop); 59 // bool listDirectoriesOnTop() const; 60 61 // void setShowHiddenObjects(bool fShowHiddenObjects); 62 // bool showHiddenObjects() const; 63 64 protected: 65 66 // virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const RT_OVERRIDE; 67 // /** Currently filters out hidden objects if options is set to "not showing them". */ 68 // virtual bool filterAcceptsRow(int iSourceRow, const QModelIndex &sourceParent) const RT_OVERRIDE; 69 70 private: 71 72 // bool m_fListDirectoriesOnTop; 73 // bool m_fShowHiddenObjects; 74 }; 43 75 44 76 … … 161 193 , m_pModel(0) 162 194 , m_pTableView(0) 195 , m_pProxyModel(0) 163 196 { 164 197 prepareObjects(); … … 183 216 184 217 m_pModel = new UIVisoHostBrowserModel(this); 218 AssertReturnVoid(m_pModel); 185 219 m_pModel->setRootPath(QDir::rootPath()); 186 220 m_pModel->setReadOnly(true); 187 221 m_pModel->setFilter(QDir::AllEntries | QDir::NoDot | QDir::Hidden | QDir::System); 188 222 223 m_pProxyModel = new UIHostBrowserProxyModel(this); 224 AssertReturnVoid(m_pProxyModel); 225 m_pProxyModel->setSourceModel(m_pModel); 226 189 227 m_pTableView = new QTableView; 190 if (m_pTableView) 191 { 192 m_pTableView->setContextMenuPolicy(Qt::CustomContextMenu); 193 m_pMainLayout->addWidget(m_pTableView, 2, 0, 8, 4); 194 m_pTableView->setShowGrid(false); 195 m_pTableView->setSelectionBehavior(QAbstractItemView::SelectRows); 196 m_pTableView->setEditTriggers(QAbstractItemView::NoEditTriggers); 197 m_pTableView->setAlternatingRowColors(true); 198 m_pTableView->setTabKeyNavigation(false); 199 m_pTableView->setItemDelegate(new UIHostBrowserDelegate(this)); 200 QHeaderView *pVerticalHeader = m_pTableView->verticalHeader(); 201 if (pVerticalHeader) 202 { 203 m_pTableView->verticalHeader()->setVisible(false); 204 /* Minimize the row height: */ 205 m_pTableView->verticalHeader()->setDefaultSectionSize(m_pTableView->verticalHeader()->minimumSectionSize()); 206 } 207 QHeaderView *pHorizontalHeader = m_pTableView->horizontalHeader(); 208 if (pHorizontalHeader) 209 { 210 pHorizontalHeader->setHighlightSections(false); 211 pHorizontalHeader->setSectionResizeMode(QHeaderView::Stretch); 212 } 213 214 m_pTableView->setModel(m_pModel); 215 216 /* Hide the "type" column: */ 217 m_pTableView->hideColumn(2); 218 219 m_pTableView->setSelectionMode(QAbstractItemView::ExtendedSelection); 220 m_pTableView->setDragDropMode(QAbstractItemView::DragOnly); 221 } 228 AssertReturnVoid(m_pTableView); 229 m_pTableView->setContextMenuPolicy(Qt::CustomContextMenu); 230 m_pMainLayout->addWidget(m_pTableView, 2, 0, 8, 4); 231 m_pTableView->setShowGrid(false); 232 m_pTableView->setSelectionBehavior(QAbstractItemView::SelectRows); 233 m_pTableView->setEditTriggers(QAbstractItemView::NoEditTriggers); 234 m_pTableView->setAlternatingRowColors(true); 235 m_pTableView->setTabKeyNavigation(false); 236 m_pTableView->setItemDelegate(new UIHostBrowserDelegate(this)); 237 238 QHeaderView *pVerticalHeader = m_pTableView->verticalHeader(); 239 QHeaderView *pHorizontalHeader = m_pTableView->horizontalHeader(); 240 AssertReturnVoid(pVerticalHeader); 241 AssertReturnVoid(pHorizontalHeader); 242 243 m_pTableView->verticalHeader()->setVisible(false); 244 /* Minimize the row height: */ 245 m_pTableView->verticalHeader()->setDefaultSectionSize(m_pTableView->verticalHeader()->minimumSectionSize()); 246 pHorizontalHeader->setHighlightSections(false); 247 pHorizontalHeader->setSectionResizeMode(QHeaderView::Stretch); 248 249 m_pTableView->setModel(m_pProxyModel); 250 251 /* Hide the "type" column: */ 252 m_pTableView->hideColumn(2); 253 254 m_pTableView->setSelectionMode(QAbstractItemView::ExtendedSelection); 255 m_pTableView->setDragDropMode(QAbstractItemView::DragOnly); 222 256 223 257 retranslateUi(); … … 318 352 { 319 353 AssertReturnVoid(m_pModel); 320 QModelIndex homeIndex = m_pModel->index(QDir::homePath()); 354 AssertReturnVoid(m_pProxyModel); 355 QModelIndex homeIndex = m_pProxyModel->mapFromSource(m_pModel->index(QDir::homePath())); 321 356 if (homeIndex.isValid()) 322 357 setTableRootIndex(homeIndex); … … 328 363 QDir currentDir = QDir(currentPath()); 329 364 currentDir.cdUp(); 330 QModelIndex upIndex = m_p Model->index(currentDir.absolutePath());365 QModelIndex upIndex = m_pProxyModel->mapFromSource(m_pModel->index(currentDir.absolutePath())); 331 366 if (upIndex.isValid()) 332 367 setTableRootIndex(upIndex); … … 338 373 return; 339 374 /* QFileInfo::isDir() returns true if QFileInfo is a folder or a symlink to folder: */ 340 QFileInfo fileInfo = m_pModel->fileInfo( index);375 QFileInfo fileInfo = m_pModel->fileInfo(m_pProxyModel->mapToSource(index)); 341 376 if (!fileInfo.isDir()) 342 377 return; … … 360 395 return QString(); 361 396 QModelIndex currentTableIndex = m_pTableView->rootIndex(); 362 return QDir::fromNativeSeparators(m_pModel->filePath( currentTableIndex));397 return QDir::fromNativeSeparators(m_pModel->filePath(m_pProxyModel->mapToSource(currentTableIndex))); 363 398 } 364 399 … … 367 402 if (strPath.isEmpty() || !m_pModel) 368 403 return; 369 QModelIndex index = m_p Model->index(strPath);404 QModelIndex index = m_pProxyModel->mapFromSource(m_pModel->index(strPath)); 370 405 setTableRootIndex(index); 371 406 } … … 397 432 for (int i = 0; i < selectedIndices.size(); ++i) 398 433 { 399 QString strPath = m_pModel->filePath( selectedIndices[i]);434 QString strPath = m_pModel->filePath(m_pProxyModel->mapToSource(selectedIndices[i])); 400 435 if (strPath.contains("..")) 401 436 continue; … … 411 446 m_pTableView->setRootIndex(index); 412 447 m_pTableView->clearSelection(); 413 updateNavigationWidgetPath(m_pModel->filePath(index)); 448 QString strPath = m_pModel->filePath(m_pProxyModel->mapToSource(index)); 449 updateNavigationWidgetPath(strPath); 414 450 if (m_pGoUp) 415 451 m_pGoUp->setEnabled(!isRoot()); … … 420 456 if (!m_pModel) 421 457 return; 422 QModelIndex index = m_p Model->index(strPath);458 QModelIndex index = m_pProxyModel->mapFromSource(m_pModel->index(strPath)); 423 459 if (!index.isValid()) 424 460 return; -
trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoHostBrowser.h
r100478 r100559 39 39 class QTableView; 40 40 class UIVisoHostBrowserModel; 41 class UIHostBrowserProxyModel; 41 42 42 43 /** A UIVisoBrowserBase extension to view host file system. Uses QFileSystemModel. */ … … 88 89 QModelIndex currentRootIndex() const; 89 90 /** We have two file system models (one for each item view) since we set different filters on each of these models. */ 90 UIVisoHostBrowserModel *m_pModel; 91 QTableView *m_pTableView; 91 UIVisoHostBrowserModel *m_pModel; 92 QTableView *m_pTableView; 93 UIHostBrowserProxyModel *m_pProxyModel; 92 94 }; 93 95
Note:
See TracChangeset
for help on using the changeset viewer.