Changeset 80139 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Aug 5, 2019 6:21:53 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 132580
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDetailsGenerator.cpp
r80129 r80139 726 726 if (!comFilterObject.isNull() && comMachine.GetUSBProxyAvailable()) 727 727 { 728 const QString strAnchorType = QString("usb_controller_type"); 728 729 const CUSBControllerVector controllers = comMachine.GetUSBControllers(); 729 730 if (!controllers.isEmpty()) … … 732 733 if (fOptions & UIExtraDataMetaDefs::DetailsElementOptionTypeUsb_Controller) 733 734 { 735 QStringList controllerInternal; 734 736 QStringList controllersReadable; 735 737 foreach (const CUSBController &comController, controllers) 736 controllersReadable << gpConverter->toString(comController.GetType()); 738 { 739 const KUSBControllerType enmType = comController.GetType(); 740 controllerInternal << QString::number((int)enmType); 741 controllersReadable << gpConverter->toString(enmType); 742 } 737 743 table << UITextTableLine(QApplication::translate("UIDetails", "USB Controller", "details (usb)"), 738 controllersReadable.join(", ")); 744 QString("<a href=#%1,%2>%3</a>") 745 .arg(strAnchorType) 746 .arg(controllerInternal.join(';')) 747 .arg(controllersReadable.join(", "))); 739 748 } 740 749 … … 752 761 } 753 762 else 754 table << UITextTableLine(QApplication::translate("UIDetails", "Disabled", "details (usb)"), QString()); 763 table << UITextTableLine(QString("<a href=#%1,%2>%3</a>") 764 .arg(strAnchorType) 765 .arg(QString::number((int)KUSBControllerType_Null)) 766 .arg(QApplication::translate("UIDetails", "Disabled", "details (usb)")), 767 QString()); 755 768 } 756 769 else -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMachineAttributeSetter.cpp
r80083 r80139 27 27 /* COM includes: */ 28 28 #include "CAudioAdapter.h" 29 29 #include "CUSBController.h" 30 31 32 void removeUSBControllers(CMachine &comMachine, const UIUSBControllerTypeSet &controllerSet = UIUSBControllerTypeSet()) 33 { 34 /* Get controllers for further activities: */ 35 const CUSBControllerVector &controllers = comMachine.GetUSBControllers(); 36 if (!comMachine.isOk()) 37 return; 38 39 /* For each controller: */ 40 foreach (const CUSBController &comController, controllers) 41 { 42 /* Get controller type&name for further activities: */ 43 const KUSBControllerType enmType = comController.GetType(); 44 const QString strName = comController.GetName(); 45 46 /* Pass only if requested types were not defined or contains the one we found: */ 47 if (!controllerSet.isEmpty() && !controllerSet.contains(enmType)) 48 continue; 49 50 /* Remove controller: */ 51 comMachine.RemoveUSBController(strName); 52 if (!comMachine.isOk()) 53 break; 54 } 55 } 56 57 void createUSBControllers(CMachine &comMachine, const UIUSBControllerTypeSet &controllerSet) 58 { 59 /* For each requested USB controller type: */ 60 foreach (const KUSBControllerType &enmType, controllerSet) 61 { 62 switch (enmType) 63 { 64 case KUSBControllerType_OHCI: comMachine.AddUSBController("OHCI", KUSBControllerType_OHCI); break; 65 case KUSBControllerType_EHCI: comMachine.AddUSBController("EHCI", KUSBControllerType_EHCI); break; 66 case KUSBControllerType_XHCI: comMachine.AddUSBController("xHCI", KUSBControllerType_XHCI); break; 67 default: break; 68 } 69 } 70 } 30 71 31 72 void UIMachineAttributeSetter::setMachineAttribute(const CMachine &comConstMachine, … … 174 215 break; 175 216 } 217 case MachineAttribute_USBControllerType: 218 { 219 /* Remove all existing controller first of all: */ 220 removeUSBControllers(comMachine); 221 if (!comMachine.isOk()) 222 { 223 msgCenter().cannotChangeMachineAttribute(comMachine); 224 fErrorHappened = true; 225 break; 226 } 227 /* Add new controllers afterwards: */ 228 const UIUSBControllerTypeSet controllerSet = guiAttribute.value<UIUSBControllerTypeSet>(); 229 if (!controllerSet.contains(KUSBControllerType_Null)) 230 { 231 createUSBControllers(comMachine, controllerSet); 232 if (!comMachine.isOk()) 233 { 234 msgCenter().cannotChangeMachineAttribute(comMachine); 235 fErrorHappened = true; 236 } 237 } 238 break; 239 } 176 240 default: 177 241 break; -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMachineAttributeSetter.h
r80083 r80139 39 39 MachineAttribute_AudioHostDriverType, 40 40 MachineAttribute_AudioControllerType, 41 MachineAttribute_USBControllerType, 41 42 }; 43 44 /** A set of USB controller types. */ 45 typedef QSet<KUSBControllerType> UIUSBControllerTypeSet; 46 Q_DECLARE_METATYPE(UIUSBControllerTypeSet); 42 47 43 48 /** Namespace used to assign CMachine attributes on more convenient basis. */ -
trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp
r80131 r80139 62 62 AnchorRole_AudioHostDriverType, 63 63 AnchorRole_AudioControllerType, 64 AnchorRole_USBControllerType, 64 65 #ifndef VBOX_WS_MAC 65 66 AnchorRole_MenuBar, … … 178 179 m_pTextPane->setAnchorRoleRestricted("#audio_host_driver_type", cal != ConfigurationAccessLevel_Full); 179 180 m_pTextPane->setAnchorRoleRestricted("#audio_controller_type", cal != ConfigurationAccessLevel_Full); 181 m_pTextPane->setAnchorRoleRestricted("#usb_controller_type", cal != ConfigurationAccessLevel_Full); 180 182 #ifndef VBOX_WS_MAC 181 183 m_pTextPane->setAnchorRoleRestricted("#menu_bar", cal == ConfigurationAccessLevel_Null); … … 473 475 roles["#audio_host_driver_type"] = AnchorRole_AudioHostDriverType; 474 476 roles["#audio_controller_type"] = AnchorRole_AudioControllerType; 477 roles["#usb_controller_type"] = AnchorRole_USBControllerType; 475 478 #ifndef VBOX_WS_MAC 476 479 roles["#menu_bar"] = AnchorRole_MenuBar; … … 758 761 break; 759 762 } 763 case AnchorRole_USBControllerType: 764 { 765 /* Parse controller type list: */ 766 UIUSBControllerTypeSet controllerSet; 767 const QStringList controllerInternals = strData.section(',', 0, 0).split(';'); 768 foreach (const QString &strControllerType, controllerInternals) 769 { 770 /* Parse each internal controller description: */ 771 bool fParsed = false; 772 KUSBControllerType enmType = static_cast<KUSBControllerType>(strControllerType.toInt(&fParsed)); 773 if (!fParsed) 774 enmType = KUSBControllerType_Null; 775 controllerSet << enmType; 776 } 777 778 /* Prepare existing controller sets: */ 779 QMap<int, UIUSBControllerTypeSet> controllerSets; 780 controllerSets[0] = UIUSBControllerTypeSet(); 781 controllerSets[1] = UIUSBControllerTypeSet() << KUSBControllerType_OHCI; 782 controllerSets[2] = UIUSBControllerTypeSet() << KUSBControllerType_OHCI << KUSBControllerType_EHCI; 783 controllerSets[3] = UIUSBControllerTypeSet() << KUSBControllerType_XHCI; 784 785 /* Fill menu with actions: */ 786 UIMenu menu; 787 QActionGroup group(&menu); 788 QMap<int, QAction*> actions; 789 actions[0] = menu.addAction(QApplication::translate("UIDetails", "Disabled", "details (usb)")); 790 group.addAction(actions.value(0)); 791 actions.value(0)->setCheckable(true); 792 actions[1] = menu.addAction(QApplication::translate("UIDetails", "USB 1.1 (OHCI) Controller", "details (usb)")); 793 group.addAction(actions.value(1)); 794 actions.value(1)->setCheckable(true); 795 actions[2] = menu.addAction(QApplication::translate("UIDetails", "USB 2.0 (OHCI + EHCI) Controller", "details (usb)")); 796 group.addAction(actions.value(2)); 797 actions.value(2)->setCheckable(true); 798 actions[3] = menu.addAction(QApplication::translate("UIDetails", "USB 3.0 (xHCI) Controller", "details (usb)")); 799 group.addAction(actions.value(3)); 800 actions.value(3)->setCheckable(true); 801 802 /* Mark current one: */ 803 for (int i = 0; i <= 3; ++i) 804 actions.value(i)->setChecked(controllerSets.key(controllerSet) == i); 805 806 /* Execute menu, look for result: */ 807 QAction *pTriggeredAction = menu.exec(QCursor::pos()); 808 if (pTriggeredAction) 809 { 810 const int iTriggeredIndex = actions.key(pTriggeredAction); 811 if (controllerSets.key(controllerSet) != iTriggeredIndex) 812 setMachineAttribute(machine(), MachineAttribute_USBControllerType, QVariant::fromValue(controllerSets.value(iTriggeredIndex))); 813 } 814 break; 815 } 760 816 #ifndef VBOX_WS_MAC 761 817 case AnchorRole_MenuBar:
Note:
See TracChangeset
for help on using the changeset viewer.