Changeset 71058 in vbox for trunk/src/VBox/Frontends/VirtualBox
- Timestamp:
- Feb 19, 2018 4:14:36 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 120921
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/guestctrl/UIInformationGuestSession.cpp
r71049 r71058 74 74 void contextMenuEvent(QContextMenuEvent *pEvent) /* override */ 75 75 { 76 QMenu *menu = new QMenu(this); 76 77 QList<QTreeWidgetItem *> selectedList = selectedItems(); 77 if (selectedList.isEmpty()) 78 return; 79 /* Always use the 0th item even if we have a multiple selection. */ 80 UIGuestSessionTreeItem *sessionTreeItem = dynamic_cast<UIGuestSessionTreeItem*>(selectedList[0]); 78 79 UIGuestSessionTreeItem *sessionTreeItem = 0; 80 if (!selectedList.isEmpty()) 81 sessionTreeItem = dynamic_cast<UIGuestSessionTreeItem*>(selectedList[0]); 82 QAction *pSessionCloseAction = 0; 83 81 84 /* Create a guest session related context menu */ 82 85 if (sessionTreeItem) 83 86 { 84 QMenu *menu = new QMenu(this); 85 QAction *pAction = menu->addAction(UIVMInformationDialog::tr("Close Session")); 86 87 if (pAction) 88 connect(pAction, &QAction::triggered, 87 pSessionCloseAction = menu->addAction(UIVMInformationDialog::tr("Close Session")); 88 if (pSessionCloseAction) 89 connect(pSessionCloseAction, &QAction::triggered, 89 90 this, &UIGuestControlTreeWidget::sigCloseSessionOrProcess); 90 91 menu->exec(pEvent->globalPos()); 92 93 if (pAction) 94 disconnect(pAction, &QAction::triggered, 91 } 92 UIGuestProcessTreeItem *processTreeItem = 0; 93 if (!selectedList.isEmpty()) 94 processTreeItem = dynamic_cast<UIGuestProcessTreeItem*>(selectedList[0]); 95 QAction *pProcessTerminateAction = 0; 96 if (processTreeItem) 97 { 98 pProcessTerminateAction = menu->addAction(UIVMInformationDialog::tr("Terminate Process")); 99 if (pProcessTerminateAction) 100 connect(pProcessTerminateAction, &QAction::triggered, 95 101 this, &UIGuestControlTreeWidget::sigCloseSessionOrProcess); 96 97 delete menu;98 return;99 }100 UIGuestProcessTreeItem *processTreeItem = dynamic_cast<UIGuestProcessTreeItem*>(selectedList[0]);101 if ( !processTreeItem)102 return;103 /* Create a guest process tree item */104 Q Menu *menu = new QMenu(this);105 QAction *pAction = menu->addAction(UIVMInformationDialog::tr("Terminate Process"));106 if (pAction)107 connect(pAction, &QAction::triggered,108 this, &UIGuestControlTreeWidget::sigCloseSessionOrProcess); 102 } 103 if (pProcessTerminateAction || pSessionCloseAction) 104 menu->addSeparator(); 105 // Add actions to expand/collapse all tree items 106 QAction *pExpandAllAction = menu->addAction(UIVMInformationDialog::tr("Expand All")); 107 if (pExpandAllAction) 108 connect(pExpandAllAction, &QAction::triggered, 109 this, &UIGuestControlTreeWidget::sltExpandAll); 110 QAction *pCollapseAllAction = menu->addAction(UIVMInformationDialog::tr("Collapse All")); 111 if (pCollapseAllAction) 112 connect(pCollapseAllAction, &QAction::triggered, 113 this, &UIGuestControlTreeWidget::sltCollapseAll); 114 109 115 menu->exec(pEvent->globalPos()); 110 116 111 if (pAction) 112 disconnect(pAction, &QAction::triggered, 113 this, &UIGuestControlTreeWidget::sigCloseSessionOrProcess); 117 if (pSessionCloseAction) 118 disconnect(pSessionCloseAction, &QAction::triggered, 119 this, &UIGuestControlTreeWidget::sigCloseSessionOrProcess); 120 if (pProcessTerminateAction) 121 disconnect(pProcessTerminateAction, &QAction::triggered, 122 this, &UIGuestControlTreeWidget::sigCloseSessionOrProcess); 123 124 if (pExpandAllAction) 125 disconnect(pExpandAllAction, &QAction::triggered, 126 this, &UIGuestControlTreeWidget::sltExpandAll); 127 128 if (pCollapseAllAction) 129 disconnect(pCollapseAllAction, &QAction::triggered, 130 this, &UIGuestControlTreeWidget::sltCollapseAll); 131 114 132 delete menu; 115 133 } 134 135 private slots: 136 137 void sltExpandAll(bool bExpand) 138 { 139 expandCollapseAll(true); 140 } 141 142 void sltCollapseAll() 143 { 144 expandCollapseAll(false); 145 } 146 147 void expandCollapseAll(bool bFlag) 148 { 149 for(int i = 0; i < topLevelItemCount(); ++i) 150 { 151 if (!topLevelItem(i)) 152 break; 153 topLevelItem(i)->setExpanded(bFlag); 154 for (int j = 0; j < topLevelItem(i)->childCount(); ++j) 155 { 156 if (topLevelItem(i)->child(j)) 157 { 158 topLevelItem(i)->child(j)->setExpanded(bFlag); 159 } 160 } 161 } 116 162 } 117 163
Note:
See TracChangeset
for help on using the changeset viewer.