Changeset 71172 in vbox
- Timestamp:
- Mar 2, 2018 10:28:13 AM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 121074
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/guestctrl
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/guestctrl/UIGuestControlFileManager.cpp ¶
r71169 r71172 36 36 # include "UIGuestControlFileManager.h" 37 37 # include "UIGuestControlFileTable.h" 38 # include "UIGuestControlFileTree.h"39 38 # include "UIGuestControlInterface.h" 40 39 # include "UIVMInformationDialog.h" … … 223 222 , m_pVerticalSplitter(0) 224 223 , m_pLogOutput(0) 225 , m_pGuestFileTree(0)226 224 , m_pSessionCreateWidget(0) 227 225 , m_pGuestFileTable(0) … … 291 289 292 290 293 //m_pGuestFileTree = new UIGuestControlFileTree;294 if (m_pGuestFileTree)295 {296 //m_pMainLayout->addWidget(m_pGuestFileTree, 1, 0, 4 /*rowSpan*/, 1 /*columnSpan*/);297 298 m_pGuestFileTree->setColumnCount(1);299 300 m_pGuestFileTree->header()->hide();301 }302 //303 304 305 291 m_pVerticalSplitter->setStretchFactor(0, 9); 306 292 m_pVerticalSplitter->setStretchFactor(1, 4); … … 321 307 this, &UIGuestControlFileManager::sltCloseSession); 322 308 } 323 if (m_pGuestFileTree)324 {325 326 connect(m_pGuestFileTree, &UIGuestControlFileTree::itemEntered,327 this, &UIGuestControlFileManager::sltTreeItemEntered);328 connect(m_pGuestFileTree, &UIGuestControlFileTree::itemExpanded,329 this, &UIGuestControlFileManager::sltTreeItemExpanded);330 connect(m_pGuestFileTree, &UIGuestControlFileTree::itemClicked,331 this, &UIGuestControlFileManager::sltTreeItemClicked);332 333 }334 }335 336 void UIGuestControlFileManager::sltTreeItemEntered(QTreeWidgetItem * item, int column)337 {338 }339 340 void UIGuestControlFileManager::sltTreeItemExpanded(QTreeWidgetItem * item)341 {342 UIGuestControlFileTreeItem *treeItem = dynamic_cast<UIGuestControlFileTreeItem*>(item);343 if(!treeItem)344 return;345 openSubTree(treeItem);346 const QList<UIGuestControlFileTreeItem*> children = treeItem->children();347 for(int i = 0; i < children.size(); ++i)348 openSubTree(children[i]);349 }350 351 void UIGuestControlFileManager::openSubTree(UIGuestControlFileTreeItem*treeItem)352 {353 /* Continue only for not-yet-opened directories: */354 if((treeItem->isDirectory() && treeItem->isOpened())355 || !treeItem->isDirectory())356 return;357 readDirectory(treeItem->path(), treeItem, treeItem->depth(), m_iMaxRecursionDepth);358 if(m_pGuestFileTree)359 m_pGuestFileTree->update();360 }361 362 void UIGuestControlFileManager::sltTreeItemClicked(QTreeWidgetItem * item, int column)363 {364 309 } 365 310 … … 413 358 if (m_comGuestSession.GetStatus() == KGuestSessionStatus_Started) 414 359 { 415 //initFileTree();416 360 initFileTable(); 417 361 } 418 362 else 419 363 { 420 m_pGuestFileTree->clear();421 364 m_pLogOutput->appendPlainText("Session status has changed"); 422 365 } … … 432 375 } 433 376 434 void UIGuestControlFileManager::initFileTree() 435 { 436 if (!m_comGuestSession.isOk() || m_comGuestSession.GetStatus() != KGuestSessionStatus_Started) 437 return; 438 if (!m_pGuestFileTree) 439 return; 440 m_pGuestFileTree->clear(); 441 QString rootPath("/"); 442 443 444 445 CGuestFsObjInfo fsObjectInfo = m_comGuestSession.FsObjQueryInfo(rootPath, false /*BOOL aFollowSymlinks*/); 446 if (!fsObjectInfo.isOk()) 447 { 448 m_pLogOutput->appendPlainText("Cannot get file object info"); 449 return; 450 } 451 const QStringList &strList = getFsObjInfoStringList<CGuestFsObjInfo>(fsObjectInfo); 452 453 UIGuestControlFileTreeItem *rootItem = new UIGuestControlFileTreeItem(m_pGuestFileTree, 0, rootPath, strList); 454 rootItem->setIsDirectory(true); 455 rootItem->setIcon(0, QIcon(":/sf_32px.png")); 456 rootItem->setIsOpened(false); 457 rootItem->setExpanded(true); 458 459 readDirectory(rootPath, rootItem, rootItem->depth(), m_iMaxRecursionDepth); 460 if(m_pGuestFileTree) 461 m_pGuestFileTree->update(); 462 } 463 464 void UIGuestControlFileManager::readDirectory(const QString& strPath, 465 UIGuestControlFileTreeItem* treeParent, 466 const int &startDepth, 467 int iMaxDepth) 468 { 469 if (!treeParent || treeParent->depth() - startDepth >= iMaxDepth || strPath.isEmpty()) 470 return; 471 QVector<KDirectoryOpenFlag> flag; 472 flag.push_back(KDirectoryOpenFlag_None); 473 CGuestDirectory directory; 474 directory = m_comGuestSession.DirectoryOpen(strPath, /*aFilter*/ "", flag); 475 treeParent->setIsOpened(true); 476 if (directory.isOk()) 477 { 478 CFsObjInfo fsInfo = directory.Read(); 479 while (fsInfo.isOk()) 480 { 481 if (fsInfo.GetName() != "." 482 && fsInfo.GetName() != "..") 483 { 484 QString path(strPath); 485 if (path.at(path.length() -1 ) != '/') 486 path.append(QString("/").append(fsInfo.GetName())); 487 else 488 path.append(fsInfo.GetName()); 489 UIGuestControlFileTreeItem *treeItem = 490 new UIGuestControlFileTreeItem(treeParent, treeParent->depth() + 1 /*depth */, 491 path, getFsObjInfoStringList<CFsObjInfo>(fsInfo)); 492 if (fsInfo.GetType() == KFsObjType_Directory) 493 { 494 treeItem->setIsDirectory(true); 495 treeItem->setIcon(0, QIcon(":/sf_32px.png")); 496 treeItem->setIsOpened(false); 497 readDirectory(path, treeItem, startDepth, iMaxDepth); 498 } 499 else 500 { 501 treeItem->setIsDirectory(false); 502 treeItem->setIsOpened(false); 503 treeItem->setIcon(0, QIcon(":/vm_open_filemanager_16px")); 504 treeItem->setHidden(true); 505 } 506 } 507 508 fsInfo = directory.Read(); 509 } 510 directory.Close(); 511 } 512 } 377 513 378 514 379 bool UIGuestControlFileManager::createSession(const QString& strUserName, const QString& strPassword, -
TabularUnified trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/guestctrl/UIGuestControlFileManager.h ¶
r71169 r71172 36 36 class QVBoxLayout; 37 37 class QSplitter; 38 class QTreeWidgetItem;39 38 class CGuestSessionStateChangedEvent; 40 class QITreeView;41 39 class UIGuestFileTable; 42 class UIGuestControlFileTree;43 class UIGuestControlFileTreeItem;44 40 class UIGuestSessionCreateWidget; 45 41 … … 62 58 void sltGuestSessionStateChanged(const CGuestSessionStateChangedEvent &cEvent); 63 59 64 void sltTreeItemEntered(QTreeWidgetItem *item, int column);65 void sltTreeItemExpanded(QTreeWidgetItem *item);66 void sltTreeItemClicked(QTreeWidgetItem *item, int column);67 68 60 private: 69 61 … … 81 73 CEventListener &comEventListener, 82 74 CEventSource comEventSource); 83 void initFileTree(); 75 84 76 void initFileTable(); 85 void openSubTree(UIGuestControlFileTreeItem *item);86 77 87 78 template<typename T> 88 79 QStringList getFsObjInfoStringList(const T &fsObjectInfo) const; 89 80 90 void readDirectory(const QString& strPath,91 UIGuestControlFileTreeItem* treeParent,92 const int &startDepth,93 int iMaxDepth);94 81 95 82 … … 102 89 QPlainTextEdit *m_pLogOutput; 103 90 104 UIGuestControlFileTree* m_pGuestFileTree;105 91 UIGuestSessionCreateWidget *m_pSessionCreateWidget; 106 92 UIGuestFileTable *m_pGuestFileTable;
Note:
See TracChangeset
for help on using the changeset viewer.