Changeset 66559 in vbox
- Timestamp:
- Apr 13, 2017 2:06:28 PM (7 years ago)
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine
- Files:
-
- 6 edited
-
UIMachineSettingsNetwork.cpp (modified) (6 diffs)
-
UIMachineSettingsNetwork.h (modified) (1 diff)
-
UIMachineSettingsParallel.cpp (modified) (7 diffs)
-
UIMachineSettingsParallel.h (modified) (2 diffs)
-
UIMachineSettingsSerial.cpp (modified) (7 diffs)
-
UIMachineSettingsSerial.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp
r66555 r66559 138 138 { 139 139 /** Constructs data. */ 140 UIDataSettingsMachineNetwork() 141 : m_adapters(QList<UIDataSettingsMachineNetworkAdapter>()) 142 {} 140 UIDataSettingsMachineNetwork() {} 143 141 144 142 /** Returns whether the @a other passed data is equal to this one. */ 145 bool equal(const UIDataSettingsMachineNetwork &other) const 146 { 147 return true 148 && (m_adapters == other.m_adapters) 149 ; 150 } 151 152 /** Returns whether the @a other passed data is equal to this one. */ 153 bool operator==(const UIDataSettingsMachineNetwork &other) const { return equal(other); } 143 bool operator==(const UIDataSettingsMachineNetwork & /* other */) const { return true; } 154 144 /** Returns whether the @a other passed data is different from this one. */ 155 bool operator!=(const UIDataSettingsMachineNetwork &other) const { return !equal(other); } 156 157 /** Holds the adapter list. */ 158 QList<UIDataSettingsMachineNetworkAdapter> m_adapters; 145 bool operator!=(const UIDataSettingsMachineNetwork & /* other */) const { return false; } 159 146 }; 160 147 … … 1081 1068 1082 1069 /* Cache old adapter data: */ 1083 oldNetworkData.m_adapters << oldAdapterData;1070 m_pCache->child(iSlot).cacheInitialData(oldAdapterData); 1084 1071 } 1085 1072 … … 1105 1092 1106 1093 /* Load old adapter data from the cache: */ 1107 pTab->loadAdapterData(m_pCache-> base().m_adapters.at(iSlot));1094 pTab->loadAdapterData(m_pCache->child(iSlot).base()); 1108 1095 1109 1096 /* Setup tab order: */ … … 1139 1126 1140 1127 /* Cache new adapter data: */ 1141 newNetworkData.m_adapters << newAdapterData;1128 m_pCache->child(iSlot).cacheCurrentData(newAdapterData); 1142 1129 } 1143 1130 … … 1194 1181 isMachineOffline() || 1195 1182 (isMachineInValidMode() && 1196 m_pCache-> base().m_adapters.size() > iSlot &&1197 m_pCache-> base().m_adapters.at(iSlot).m_fAdapterEnabled));1183 m_pCache->childCount() > iSlot && 1184 m_pCache->child(iSlot).base().m_fAdapterEnabled)); 1198 1185 UIMachineSettingsNetwork *pTab = qobject_cast<UIMachineSettingsNetwork*>(m_pTabWidget->widget(iSlot)); 1199 1186 pTab->polishTab(); … … 1492 1479 bool fSuccess = true; 1493 1480 /* Save adapter settings from the cache: */ 1494 if (fSuccess )1481 if (fSuccess && m_pCache->child(iSlot).wasChanged()) 1495 1482 { 1496 1483 /* Get old network data from the cache: */ 1497 const UIDataSettingsMachineNetworkAdapter &oldAdapterData = m_pCache-> base().m_adapters.at(iSlot);1484 const UIDataSettingsMachineNetworkAdapter &oldAdapterData = m_pCache->child(iSlot).base(); 1498 1485 /* Get new network data from the cache: */ 1499 const UIDataSettingsMachineNetworkAdapter &newAdapterData = m_pCache->data().m_adapters.at(iSlot); 1500 1501 /* Make sure adapter data was changed: */ 1502 if (newAdapterData != oldAdapterData) 1503 { 1504 /* Get network adapter for further activities: */ 1505 CNetworkAdapter comAdapter = m_machine.GetNetworkAdapter(iSlot); 1506 fSuccess = m_machine.isOk() && comAdapter.isNotNull(); 1486 const UIDataSettingsMachineNetworkAdapter &newAdapterData = m_pCache->child(iSlot).data(); 1487 1488 /* Get network adapter for further activities: */ 1489 CNetworkAdapter comAdapter = m_machine.GetNetworkAdapter(iSlot); 1490 fSuccess = m_machine.isOk() && comAdapter.isNotNull(); 1491 1492 /* Show error message if necessary: */ 1493 if (!fSuccess) 1494 msgCenter().cannotSaveNetworkSettings(m_machine, this); 1495 else 1496 { 1497 /* Save whether the adapter is enabled: */ 1498 if (fSuccess && isMachineOffline() && newAdapterData.m_fAdapterEnabled != oldAdapterData.m_fAdapterEnabled) 1499 { 1500 comAdapter.SetEnabled(newAdapterData.m_fAdapterEnabled); 1501 fSuccess = comAdapter.isOk(); 1502 } 1503 /* Save adapter type: */ 1504 if (fSuccess && isMachineOffline() && newAdapterData.m_adapterType != oldAdapterData.m_adapterType) 1505 { 1506 comAdapter.SetAdapterType(newAdapterData.m_adapterType); 1507 fSuccess = comAdapter.isOk(); 1508 } 1509 /* Save adapter MAC address: */ 1510 if (fSuccess && isMachineOffline() && newAdapterData.m_strMACAddress != oldAdapterData.m_strMACAddress) 1511 { 1512 comAdapter.SetMACAddress(newAdapterData.m_strMACAddress); 1513 fSuccess = comAdapter.isOk(); 1514 } 1515 /* Save adapter attachment type: */ 1516 switch (newAdapterData.m_attachmentType) 1517 { 1518 case KNetworkAttachmentType_Bridged: 1519 { 1520 if (fSuccess && newAdapterData.m_strBridgedAdapterName != oldAdapterData.m_strBridgedAdapterName) 1521 { 1522 comAdapter.SetBridgedInterface(newAdapterData.m_strBridgedAdapterName); 1523 fSuccess = comAdapter.isOk(); 1524 } 1525 break; 1526 } 1527 case KNetworkAttachmentType_Internal: 1528 { 1529 if (fSuccess && newAdapterData.m_strInternalNetworkName != oldAdapterData.m_strInternalNetworkName) 1530 { 1531 comAdapter.SetInternalNetwork(newAdapterData.m_strInternalNetworkName); 1532 fSuccess = comAdapter.isOk(); 1533 } 1534 break; 1535 } 1536 case KNetworkAttachmentType_HostOnly: 1537 { 1538 if (fSuccess && newAdapterData.m_strHostInterfaceName != oldAdapterData.m_strHostInterfaceName) 1539 { 1540 comAdapter.SetHostOnlyInterface(newAdapterData.m_strHostInterfaceName); 1541 fSuccess = comAdapter.isOk(); 1542 } 1543 break; 1544 } 1545 case KNetworkAttachmentType_Generic: 1546 { 1547 if (fSuccess && newAdapterData.m_strGenericDriverName != oldAdapterData.m_strGenericDriverName) 1548 { 1549 comAdapter.SetGenericDriver(newAdapterData.m_strGenericDriverName); 1550 fSuccess = comAdapter.isOk(); 1551 } 1552 if (fSuccess && newAdapterData.m_strGenericProperties != oldAdapterData.m_strGenericProperties) 1553 fSuccess = saveGenericProperties(comAdapter, newAdapterData.m_strGenericProperties); 1554 break; 1555 } 1556 case KNetworkAttachmentType_NATNetwork: 1557 { 1558 if (fSuccess && newAdapterData.m_strNATNetworkName != oldAdapterData.m_strNATNetworkName) 1559 { 1560 comAdapter.SetNATNetwork(newAdapterData.m_strNATNetworkName); 1561 fSuccess = comAdapter.isOk(); 1562 } 1563 break; 1564 } 1565 default: 1566 break; 1567 } 1568 if (fSuccess && newAdapterData.m_attachmentType != oldAdapterData.m_attachmentType) 1569 { 1570 comAdapter.SetAttachmentType(newAdapterData.m_attachmentType); 1571 fSuccess = comAdapter.isOk(); 1572 } 1573 /* Save adapter promiscuous mode: */ 1574 if (fSuccess && newAdapterData.m_promiscuousMode != oldAdapterData.m_promiscuousMode) 1575 { 1576 comAdapter.SetPromiscModePolicy(newAdapterData.m_promiscuousMode); 1577 fSuccess = comAdapter.isOk(); 1578 } 1579 /* Save whether the adapter cable connected: */ 1580 if (fSuccess && newAdapterData.m_fCableConnected != oldAdapterData.m_fCableConnected) 1581 { 1582 comAdapter.SetCableConnected(newAdapterData.m_fCableConnected); 1583 fSuccess = comAdapter.isOk(); 1584 } 1585 /* Save adapter redirect options: */ 1586 if ( fSuccess && newAdapterData.m_redirects != oldAdapterData.m_redirects 1587 && ( oldAdapterData.m_attachmentType == KNetworkAttachmentType_NAT 1588 || newAdapterData.m_attachmentType == KNetworkAttachmentType_NAT)) 1589 { 1590 foreach (const QString &strOldRedirect, comAdapter.GetNATEngine().GetRedirects()) 1591 comAdapter.GetNATEngine().RemoveRedirect(strOldRedirect.section(',', 0, 0)); 1592 foreach (const UIPortForwardingData &newRedirect, newAdapterData.m_redirects) 1593 comAdapter.GetNATEngine().AddRedirect(newRedirect.name, newRedirect.protocol, 1594 newRedirect.hostIp, newRedirect.hostPort.value(), 1595 newRedirect.guestIp, newRedirect.guestPort.value()); 1596 } 1507 1597 1508 1598 /* Show error message if necessary: */ 1509 1599 if (!fSuccess) 1510 msgCenter().cannotSaveNetworkSettings(m_machine, this); 1511 else 1512 { 1513 /* Save whether the adapter is enabled: */ 1514 if (fSuccess && isMachineOffline() && newAdapterData.m_fAdapterEnabled != oldAdapterData.m_fAdapterEnabled) 1515 { 1516 comAdapter.SetEnabled(newAdapterData.m_fAdapterEnabled); 1517 fSuccess = comAdapter.isOk(); 1518 } 1519 /* Save adapter type: */ 1520 if (fSuccess && isMachineOffline() && newAdapterData.m_adapterType != oldAdapterData.m_adapterType) 1521 { 1522 comAdapter.SetAdapterType(newAdapterData.m_adapterType); 1523 fSuccess = comAdapter.isOk(); 1524 } 1525 /* Save adapter MAC address: */ 1526 if (fSuccess && isMachineOffline() && newAdapterData.m_strMACAddress != oldAdapterData.m_strMACAddress) 1527 { 1528 comAdapter.SetMACAddress(newAdapterData.m_strMACAddress); 1529 fSuccess = comAdapter.isOk(); 1530 } 1531 /* Save adapter attachment type: */ 1532 switch (newAdapterData.m_attachmentType) 1533 { 1534 case KNetworkAttachmentType_Bridged: 1535 { 1536 if (fSuccess && newAdapterData.m_strBridgedAdapterName != oldAdapterData.m_strBridgedAdapterName) 1537 { 1538 comAdapter.SetBridgedInterface(newAdapterData.m_strBridgedAdapterName); 1539 fSuccess = comAdapter.isOk(); 1540 } 1541 break; 1542 } 1543 case KNetworkAttachmentType_Internal: 1544 { 1545 if (fSuccess && newAdapterData.m_strInternalNetworkName != oldAdapterData.m_strInternalNetworkName) 1546 { 1547 comAdapter.SetInternalNetwork(newAdapterData.m_strInternalNetworkName); 1548 fSuccess = comAdapter.isOk(); 1549 } 1550 break; 1551 } 1552 case KNetworkAttachmentType_HostOnly: 1553 { 1554 if (fSuccess && newAdapterData.m_strHostInterfaceName != oldAdapterData.m_strHostInterfaceName) 1555 { 1556 comAdapter.SetHostOnlyInterface(newAdapterData.m_strHostInterfaceName); 1557 fSuccess = comAdapter.isOk(); 1558 } 1559 break; 1560 } 1561 case KNetworkAttachmentType_Generic: 1562 { 1563 if (fSuccess && newAdapterData.m_strGenericDriverName != oldAdapterData.m_strGenericDriverName) 1564 { 1565 comAdapter.SetGenericDriver(newAdapterData.m_strGenericDriverName); 1566 fSuccess = comAdapter.isOk(); 1567 } 1568 if (fSuccess && newAdapterData.m_strGenericProperties != oldAdapterData.m_strGenericProperties) 1569 fSuccess = saveGenericProperties(comAdapter, newAdapterData.m_strGenericProperties); 1570 break; 1571 } 1572 case KNetworkAttachmentType_NATNetwork: 1573 { 1574 if (fSuccess && newAdapterData.m_strNATNetworkName != oldAdapterData.m_strNATNetworkName) 1575 { 1576 comAdapter.SetNATNetwork(newAdapterData.m_strNATNetworkName); 1577 fSuccess = comAdapter.isOk(); 1578 } 1579 break; 1580 } 1581 default: 1582 break; 1583 } 1584 if (fSuccess && newAdapterData.m_attachmentType != oldAdapterData.m_attachmentType) 1585 { 1586 comAdapter.SetAttachmentType(newAdapterData.m_attachmentType); 1587 fSuccess = comAdapter.isOk(); 1588 } 1589 /* Save adapter promiscuous mode: */ 1590 if (fSuccess && newAdapterData.m_promiscuousMode != oldAdapterData.m_promiscuousMode) 1591 { 1592 comAdapter.SetPromiscModePolicy(newAdapterData.m_promiscuousMode); 1593 fSuccess = comAdapter.isOk(); 1594 } 1595 /* Save whether the adapter cable connected: */ 1596 if (fSuccess && newAdapterData.m_fCableConnected != oldAdapterData.m_fCableConnected) 1597 { 1598 comAdapter.SetCableConnected(newAdapterData.m_fCableConnected); 1599 fSuccess = comAdapter.isOk(); 1600 } 1601 /* Save adapter redirect options: */ 1602 if ( fSuccess && newAdapterData.m_redirects != oldAdapterData.m_redirects 1603 && ( oldAdapterData.m_attachmentType == KNetworkAttachmentType_NAT 1604 || newAdapterData.m_attachmentType == KNetworkAttachmentType_NAT)) 1605 { 1606 foreach (const QString &strOldRedirect, comAdapter.GetNATEngine().GetRedirects()) 1607 comAdapter.GetNATEngine().RemoveRedirect(strOldRedirect.section(',', 0, 0)); 1608 foreach (const UIPortForwardingData &newRedirect, newAdapterData.m_redirects) 1609 comAdapter.GetNATEngine().AddRedirect(newRedirect.name, newRedirect.protocol, 1610 newRedirect.hostIp, newRedirect.hostPort.value(), 1611 newRedirect.guestIp, newRedirect.guestPort.value()); 1612 } 1613 1614 /* Show error message if necessary: */ 1615 if (!fSuccess) 1616 msgCenter().cannotSaveNetworkAdapterSettings(comAdapter, this); 1617 } 1600 msgCenter().cannotSaveNetworkAdapterSettings(comAdapter, this); 1618 1601 } 1619 1602 } -
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.h
r66497 r66559 27 27 class QITabWidget; 28 28 struct UIDataSettingsMachineNetwork; 29 typedef UISettingsCache<UIDataSettingsMachineNetwork> UISettingsCacheMachineNetwork; 29 struct UIDataSettingsMachineNetworkAdapter; 30 typedef UISettingsCache<UIDataSettingsMachineNetworkAdapter> UISettingsCacheMachineNetworkAdapter; 31 typedef UISettingsCachePool<UIDataSettingsMachineNetwork, UISettingsCacheMachineNetworkAdapter> UISettingsCacheMachineNetwork; 30 32 31 33 -
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsParallel.cpp
r66555 r66559 82 82 { 83 83 /** Constructs data. */ 84 UIDataSettingsMachineParallel() 85 : m_ports(QList<UIDataSettingsMachineParallelPort>()) 86 {} 84 UIDataSettingsMachineParallel() {} 87 85 88 86 /** Returns whether the @a other passed data is equal to this one. */ 89 bool equal(const UIDataSettingsMachineParallel &other) const 90 { 91 return true 92 && (m_ports == other.m_ports) 93 ; 94 } 95 96 /** Returns whether the @a other passed data is equal to this one. */ 97 bool operator==(const UIDataSettingsMachineParallel &other) const { return equal(other); } 87 bool operator==(const UIDataSettingsMachineParallel & /* other */) const { return true; } 98 88 /** Returns whether the @a other passed data is different from this one. */ 99 bool operator!=(const UIDataSettingsMachineParallel &other) const { return !equal(other); } 100 101 /** Holds the port list. */ 102 QList<UIDataSettingsMachineParallelPort> m_ports; 89 bool operator!=(const UIDataSettingsMachineParallel & /* other */) const { return false; } 103 90 }; 104 91 … … 340 327 341 328 /* Cache old port data: */ 342 oldParallelData.m_ports << oldPortData;329 m_pCache->child(iSlot).cacheInitialData(oldPortData); 343 330 } 344 331 … … 358 345 359 346 /* For each port: */ 360 for (int i Port = 0; iPort < m_pTabWidget->count(); ++iPort)347 for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot) 361 348 { 362 349 /* Get port page: */ 363 UIMachineSettingsParallel *pPage = qobject_cast<UIMachineSettingsParallel*>(m_pTabWidget->widget(i Port));350 UIMachineSettingsParallel *pPage = qobject_cast<UIMachineSettingsParallel*>(m_pTabWidget->widget(iSlot)); 364 351 365 352 /* Load old port data from the cache: */ 366 pPage->loadPortData(m_pCache-> base().m_ports.at(iPort));353 pPage->loadPortData(m_pCache->child(iSlot).base()); 367 354 368 355 /* Setup tab order: */ … … 386 373 387 374 /* For each port: */ 388 for (int i Port = 0; iPort < m_pTabWidget->count(); ++iPort)375 for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot) 389 376 { 390 377 /* Getting port page: */ 391 UIMachineSettingsParallel *pTab = qobject_cast<UIMachineSettingsParallel*>(m_pTabWidget->widget(i Port));378 UIMachineSettingsParallel *pTab = qobject_cast<UIMachineSettingsParallel*>(m_pTabWidget->widget(iSlot)); 392 379 393 380 /* Prepare new port data: */ … … 398 385 399 386 /* Cache new port data: */ 400 newParallelData.m_ports << newPortData;387 m_pCache->child(iSlot).cacheCurrentData(newPortData); 401 388 } 402 389 … … 496 483 { 497 484 /* Get the count of parallel port tabs: */ 498 for (int i Port = 0; iPort < m_pTabWidget->count(); ++iPort)499 { 500 m_pTabWidget->setTabEnabled(i Port,485 for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot) 486 { 487 m_pTabWidget->setTabEnabled(iSlot, 501 488 isMachineOffline() || 502 489 (isMachineInValidMode() && 503 m_pCache-> base().m_ports.size() > iPort &&504 m_pCache-> base().m_ports.at(iPort).m_fPortEnabled));505 UIMachineSettingsParallel *pTab = qobject_cast<UIMachineSettingsParallel*>(m_pTabWidget->widget(i Port));490 m_pCache->childCount() > iSlot && 491 m_pCache->child(iSlot).base().m_fPortEnabled)); 492 UIMachineSettingsParallel *pTab = qobject_cast<UIMachineSettingsParallel*>(m_pTabWidget->widget(iSlot)); 506 493 pTab->polishTab(); 507 494 } … … 568 555 } 569 556 570 bool UIMachineSettingsParallelPage::savePortData(int i Port)557 bool UIMachineSettingsParallelPage::savePortData(int iSlot) 571 558 { 572 559 /* Prepare result: */ 573 560 bool fSuccess = true; 574 561 /* Save adapter settings from the cache: */ 575 if (fSuccess )562 if (fSuccess && m_pCache->child(iSlot).wasChanged()) 576 563 { 577 564 /* Get old parallel data from the cache: */ 578 const UIDataSettingsMachineParallelPort &oldPortData = m_pCache-> base().m_ports.at(iPort);565 const UIDataSettingsMachineParallelPort &oldPortData = m_pCache->child(iSlot).base(); 579 566 /* Get new parallel data from the cache: */ 580 const UIDataSettingsMachineParallelPort &newPortData = m_pCache->data().m_ports.at(iPort); 581 582 /* Make sure port data was changed: */ 583 if (newPortData != oldPortData) 584 { 585 /* Get parallel port for further activities: */ 586 CParallelPort comPort = m_machine.GetParallelPort(iPort); 587 fSuccess = m_machine.isOk() && comPort.isNotNull(); 567 const UIDataSettingsMachineParallelPort &newPortData = m_pCache->child(iSlot).data(); 568 569 /* Get parallel port for further activities: */ 570 CParallelPort comPort = m_machine.GetParallelPort(iSlot); 571 fSuccess = m_machine.isOk() && comPort.isNotNull(); 572 573 /* Show error message if necessary: */ 574 if (!fSuccess) 575 msgCenter().cannotSaveParallelSettings(m_machine, this); 576 else 577 { 578 /* Save whether the port is enabled: */ 579 if (fSuccess && isMachineOffline() && newPortData.m_fPortEnabled != oldPortData.m_fPortEnabled) 580 { 581 comPort.SetEnabled(newPortData.m_fPortEnabled); 582 fSuccess = comPort.isOk(); 583 } 584 /* Save port IRQ: */ 585 if (fSuccess && isMachineOffline() && newPortData.m_uIRQ != oldPortData.m_uIRQ) 586 { 587 comPort.SetIRQ(newPortData.m_uIRQ); 588 fSuccess = comPort.isOk(); 589 } 590 /* Save port IO base: */ 591 if (fSuccess && isMachineOffline() && newPortData.m_uIOBase != oldPortData.m_uIOBase) 592 { 593 comPort.SetIOBase(newPortData.m_uIOBase); 594 fSuccess = comPort.isOk(); 595 } 596 /* Save port path: */ 597 if (fSuccess && isMachineOffline() && newPortData.m_strPath != oldPortData.m_strPath) 598 { 599 comPort.SetPath(newPortData.m_strPath); 600 fSuccess = comPort.isOk(); 601 } 588 602 589 603 /* Show error message if necessary: */ 590 604 if (!fSuccess) 591 msgCenter().cannotSaveParallelSettings(m_machine, this); 592 else 593 { 594 /* Save whether the port is enabled: */ 595 if (fSuccess && isMachineOffline() && newPortData.m_fPortEnabled != oldPortData.m_fPortEnabled) 596 { 597 comPort.SetEnabled(newPortData.m_fPortEnabled); 598 fSuccess = comPort.isOk(); 599 } 600 /* Save port IRQ: */ 601 if (fSuccess && isMachineOffline() && newPortData.m_uIRQ != oldPortData.m_uIRQ) 602 { 603 comPort.SetIRQ(newPortData.m_uIRQ); 604 fSuccess = comPort.isOk(); 605 } 606 /* Save port IO base: */ 607 if (fSuccess && isMachineOffline() && newPortData.m_uIOBase != oldPortData.m_uIOBase) 608 { 609 comPort.SetIOBase(newPortData.m_uIOBase); 610 fSuccess = comPort.isOk(); 611 } 612 /* Save port path: */ 613 if (fSuccess && isMachineOffline() && newPortData.m_strPath != oldPortData.m_strPath) 614 { 615 comPort.SetPath(newPortData.m_strPath); 616 fSuccess = comPort.isOk(); 617 } 618 619 /* Show error message if necessary: */ 620 if (!fSuccess) 621 msgCenter().cannotSaveParallelPortSettings(comPort, this); 622 } 605 msgCenter().cannotSaveParallelPortSettings(comPort, this); 623 606 } 624 607 } -
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsParallel.h
r66501 r66559 27 27 class UIMachineSettingsParallelPage; 28 28 struct UIDataSettingsMachineParallel; 29 typedef UISettingsCache<UIDataSettingsMachineParallel> UISettingsCacheMachineParallel; 29 struct UIDataSettingsMachineParallelPort; 30 typedef UISettingsCache<UIDataSettingsMachineParallelPort> UISettingsCacheMachineParallelPort; 31 typedef UISettingsCachePool<UIDataSettingsMachineParallel, UISettingsCacheMachineParallelPort> UISettingsCacheMachineParallel; 30 32 31 33 … … 80 82 bool saveParallelData(); 81 83 /** Saves existing port data from the cache. */ 82 bool savePortData(int i Port);84 bool savePortData(int iSlot); 83 85 84 86 /** Holds the tab-widget instance. */ -
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp
r66555 r66559 91 91 { 92 92 /** Constructs data. */ 93 UIDataSettingsMachineSerial() 94 : m_ports(QList<UIDataSettingsMachineSerialPort>()) 95 {} 93 UIDataSettingsMachineSerial() {} 96 94 97 95 /** Returns whether the @a other passed data is equal to this one. */ 98 bool equal(const UIDataSettingsMachineSerial &other) const 99 { 100 return true 101 && (m_ports == other.m_ports) 102 ; 103 } 104 105 /** Returns whether the @a other passed data is equal to this one. */ 106 bool operator==(const UIDataSettingsMachineSerial &other) const { return equal(other); } 96 bool operator==(const UIDataSettingsMachineSerial & /* other */) const { return true; } 107 97 /** Returns whether the @a other passed data is different from this one. */ 108 bool operator!=(const UIDataSettingsMachineSerial &other) const { return !equal(other); } 109 110 /** Holds the port list. */ 111 QList<UIDataSettingsMachineSerialPort> m_ports; 98 bool operator!=(const UIDataSettingsMachineSerial & /* other */) const { return false; } 112 99 }; 113 100 … … 390 377 391 378 /* Cache old port data: */ 392 oldSerialData.m_ports << oldPortData;379 m_pCache->child(iSlot).cacheInitialData(oldPortData); 393 380 } 394 381 … … 408 395 409 396 /* For each port: */ 410 for (int i Port = 0; iPort < m_pTabWidget->count(); ++iPort)397 for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot) 411 398 { 412 399 /* Get port page: */ 413 UIMachineSettingsSerial *pPage = qobject_cast<UIMachineSettingsSerial*>(m_pTabWidget->widget(i Port));400 UIMachineSettingsSerial *pPage = qobject_cast<UIMachineSettingsSerial*>(m_pTabWidget->widget(iSlot)); 414 401 415 402 /* Load old port data from the cache: */ 416 pPage->loadPortData(m_pCache-> base().m_ports.at(iPort));403 pPage->loadPortData(m_pCache->child(iSlot).base()); 417 404 418 405 /* Setup tab order: */ … … 436 423 437 424 /* For each port: */ 438 for (int i Port = 0; iPort < m_pTabWidget->count(); ++iPort)425 for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot) 439 426 { 440 427 /* Getting port page: */ 441 UIMachineSettingsSerial *pTab = qobject_cast<UIMachineSettingsSerial*>(m_pTabWidget->widget(i Port));428 UIMachineSettingsSerial *pTab = qobject_cast<UIMachineSettingsSerial*>(m_pTabWidget->widget(iSlot)); 442 429 443 430 /* Prepare new port data: */ … … 448 435 449 436 /* Cache new port data: */ 450 newSerialData.m_ports << newPortData;437 m_pCache->child(iSlot).cacheCurrentData(newPortData); 451 438 } 452 439 … … 553 540 { 554 541 /* Get the count of serial port tabs: */ 555 for (int i Port = 0; iPort < m_pTabWidget->count(); ++iPort)556 { 557 m_pTabWidget->setTabEnabled(i Port,542 for (int iSlot = 0; iSlot < m_pTabWidget->count(); ++iSlot) 543 { 544 m_pTabWidget->setTabEnabled(iSlot, 558 545 isMachineOffline() || 559 546 (isMachineInValidMode() && 560 m_pCache-> base().m_ports.size() > iPort &&561 m_pCache-> base().m_ports.at(iPort).m_fPortEnabled));562 UIMachineSettingsSerial *pTab = qobject_cast<UIMachineSettingsSerial*>(m_pTabWidget->widget(i Port));547 m_pCache->childCount() > iSlot && 548 m_pCache->child(iSlot).base().m_fPortEnabled)); 549 UIMachineSettingsSerial *pTab = qobject_cast<UIMachineSettingsSerial*>(m_pTabWidget->widget(iSlot)); 563 550 pTab->polishTab(); 564 551 } … … 625 612 } 626 613 627 bool UIMachineSettingsSerialPage::savePortData(int i Port)614 bool UIMachineSettingsSerialPage::savePortData(int iSlot) 628 615 { 629 616 /* Prepare result: */ 630 617 bool fSuccess = true; 631 618 /* Save adapter settings from the cache: */ 632 if (fSuccess )619 if (fSuccess && m_pCache->child(iSlot).wasChanged()) 633 620 { 634 621 /* Get old serial data from the cache: */ 635 const UIDataSettingsMachineSerialPort &oldPortData = m_pCache-> base().m_ports.at(iPort);622 const UIDataSettingsMachineSerialPort &oldPortData = m_pCache->child(iSlot).base(); 636 623 /* Get new serial data from the cache: */ 637 const UIDataSettingsMachineSerialPort &newPortData = m_pCache->data().m_ports.at(iPort); 638 639 /* Make sure port data was changed: */ 640 if (newPortData != oldPortData) 624 const UIDataSettingsMachineSerialPort &newPortData = m_pCache->child(iSlot).data(); 625 626 /* Get serial port for further activities: */ 627 CSerialPort comPort = m_machine.GetSerialPort(iSlot); 628 fSuccess = m_machine.isOk() && comPort.isNotNull(); 629 630 /* Show error message if necessary: */ 631 if (!fSuccess) 632 msgCenter().cannotSaveSerialSettings(m_machine, this); 633 else 641 634 { 642 /* Get serial port for further activities: */ 643 CSerialPort comPort = m_machine.GetSerialPort(iPort); 644 fSuccess = m_machine.isOk() && comPort.isNotNull(); 635 // This *must* be first. 636 // If the requested host mode is changed to disconnected we should do it first. 637 // That allows to automatically fulfill the requirements for some of the settings below. 638 /* Save port host mode: */ 639 if ( fSuccess && isMachineOffline() 640 && newPortData.m_hostMode != oldPortData.m_hostMode 641 && newPortData.m_hostMode == KPortMode_Disconnected) 642 { 643 comPort.SetHostMode(newPortData.m_hostMode); 644 fSuccess = comPort.isOk(); 645 } 646 /* Save whether the port is enabled: */ 647 if (fSuccess && isMachineOffline() && newPortData.m_fPortEnabled != oldPortData.m_fPortEnabled) 648 { 649 comPort.SetEnabled(newPortData.m_fPortEnabled); 650 fSuccess = comPort.isOk(); 651 } 652 /* Save port IRQ: */ 653 if (fSuccess && isMachineOffline() && newPortData.m_uIRQ != oldPortData.m_uIRQ) 654 { 655 comPort.SetIRQ(newPortData.m_uIRQ); 656 fSuccess = comPort.isOk(); 657 } 658 /* Save port IO base: */ 659 if (fSuccess && isMachineOffline() && newPortData.m_uIOBase != oldPortData.m_uIOBase) 660 { 661 comPort.SetIOBase(newPortData.m_uIOBase); 662 fSuccess = comPort.isOk(); 663 } 664 /* Save whether the port is server: */ 665 if (fSuccess && isMachineOffline() && newPortData.m_fServer != oldPortData.m_fServer) 666 { 667 comPort.SetServer(newPortData.m_fServer); 668 fSuccess = comPort.isOk(); 669 } 670 /* Save port path: */ 671 if (fSuccess && isMachineOffline() && newPortData.m_strPath != oldPortData.m_strPath) 672 { 673 comPort.SetPath(newPortData.m_strPath); 674 fSuccess = comPort.isOk(); 675 } 676 // This *must* be last. 677 // The host mode will be changed to disconnected if some of the necessary 678 // settings above will not meet the requirements for the selected mode. 679 /* Save port host mode: */ 680 if ( fSuccess && isMachineOffline() 681 && newPortData.m_hostMode != oldPortData.m_hostMode 682 && newPortData.m_hostMode != KPortMode_Disconnected) 683 { 684 comPort.SetHostMode(newPortData.m_hostMode); 685 fSuccess = comPort.isOk(); 686 } 645 687 646 688 /* Show error message if necessary: */ 647 689 if (!fSuccess) 648 msgCenter().cannotSaveSerialSettings(m_machine, this); 649 else 650 { 651 // This *must* be first. 652 // If the requested host mode is changed to disconnected we should do it first. 653 // That allows to automatically fulfill the requirements for some of the settings below. 654 /* Save port host mode: */ 655 if ( fSuccess && isMachineOffline() 656 && newPortData.m_hostMode != oldPortData.m_hostMode 657 && newPortData.m_hostMode == KPortMode_Disconnected) 658 { 659 comPort.SetHostMode(newPortData.m_hostMode); 660 fSuccess = comPort.isOk(); 661 } 662 /* Save whether the port is enabled: */ 663 if (fSuccess && isMachineOffline() && newPortData.m_fPortEnabled != oldPortData.m_fPortEnabled) 664 { 665 comPort.SetEnabled(newPortData.m_fPortEnabled); 666 fSuccess = comPort.isOk(); 667 } 668 /* Save port IRQ: */ 669 if (fSuccess && isMachineOffline() && newPortData.m_uIRQ != oldPortData.m_uIRQ) 670 { 671 comPort.SetIRQ(newPortData.m_uIRQ); 672 fSuccess = comPort.isOk(); 673 } 674 /* Save port IO base: */ 675 if (fSuccess && isMachineOffline() && newPortData.m_uIOBase != oldPortData.m_uIOBase) 676 { 677 comPort.SetIOBase(newPortData.m_uIOBase); 678 fSuccess = comPort.isOk(); 679 } 680 /* Save whether the port is server: */ 681 if (fSuccess && isMachineOffline() && newPortData.m_fServer != oldPortData.m_fServer) 682 { 683 comPort.SetServer(newPortData.m_fServer); 684 fSuccess = comPort.isOk(); 685 } 686 /* Save port path: */ 687 if (fSuccess && isMachineOffline() && newPortData.m_strPath != oldPortData.m_strPath) 688 { 689 comPort.SetPath(newPortData.m_strPath); 690 fSuccess = comPort.isOk(); 691 } 692 // This *must* be last. 693 // The host mode will be changed to disconnected if some of the necessary 694 // settings above will not meet the requirements for the selected mode. 695 /* Save port host mode: */ 696 if ( fSuccess && isMachineOffline() 697 && newPortData.m_hostMode != oldPortData.m_hostMode 698 && newPortData.m_hostMode != KPortMode_Disconnected) 699 { 700 comPort.SetHostMode(newPortData.m_hostMode); 701 fSuccess = comPort.isOk(); 702 } 703 704 /* Show error message if necessary: */ 705 if (!fSuccess) 706 msgCenter().cannotSaveSerialPortSettings(comPort, this); 707 } 690 msgCenter().cannotSaveSerialPortSettings(comPort, this); 708 691 } 709 692 } -
trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.h
r66502 r66559 27 27 class UIMachineSettingsSerialPage; 28 28 struct UIDataSettingsMachineSerial; 29 typedef UISettingsCache<UIDataSettingsMachineSerial> UISettingsCacheMachineSerial; 29 struct UIDataSettingsMachineSerialPort; 30 typedef UISettingsCache<UIDataSettingsMachineSerialPort> UISettingsCacheMachineSerialPort; 31 typedef UISettingsCachePool<UIDataSettingsMachineSerial, UISettingsCacheMachineSerialPort> UISettingsCacheMachineSerial; 30 32 31 33 … … 80 82 bool saveSerialData(); 81 83 /** Saves existing port data from the cache. */ 82 bool savePortData(int i Port);84 bool savePortData(int iSlot); 83 85 84 86 /** Holds the tab-widget instance. */
Note:
See TracChangeset
for help on using the changeset viewer.

