void UIMachineSettingsNetwork::updateAlternativeList() { /* Block signals initially: */ m_pAdapterNameCombo->blockSignals(true); /* Repopulate alternative-name combo: */ m_pAdapterNameCombo->clear(); switch (attachmentType()) { case KNetworkAttachmentType_Bridged: m_pAdapterNameCombo->insertItems(0, m_pParent->bridgedAdapterList()); break; case KNetworkAttachmentType_Internal: m_pAdapterNameCombo->insertItems(0, m_pParent->internalNetworkList()); break; case KNetworkAttachmentType_HostOnly: m_pAdapterNameCombo->insertItems(0, m_pParent->hostInterfaceList()); break; case KNetworkAttachmentType_Generic: m_pAdapterNameCombo->insertItems(0, m_pParent->genericDriverList()); break; default: break; } /* Prepend 'empty' or 'default' item to alternative-name combo: */ if (m_pAdapterNameCombo->count() == 0) { switch (attachmentType()) { case KNetworkAttachmentType_Bridged: case KNetworkAttachmentType_HostOnly: { /* If adapter list is empty => add 'Not selected' item: */ int pos = m_pAdapterNameCombo->findData(pEmptyItemCode); if (pos == -1) m_pAdapterNameCombo->insertItem(0, tr("Not selected", "network adapter name"), pEmptyItemCode); else m_pAdapterNameCombo->setItemText(pos, tr("Not selected", "network adapter name")); break; } case KNetworkAttachmentType_Internal: { /* Internal network list should have a default item: */ if (m_pAdapterNameCombo->findText("intnet") == -1) m_pAdapterNameCombo->insertItem(0, "intnet"); break; } default: break; } } /* Unblock signals finally: */ m_pAdapterNameCombo->blockSignals(false); }
void ES3Checker::check (GLenum attPoint, const Attachment& att, const Image* image) { GLsizei imgSamples = imageNumSamples(*image); if (m_numSamples == -1) { m_numSamples = imgSamples; } else { // GLES3: "The value of RENDERBUFFER_SAMPLES is the same for all attached // renderbuffers and, if the attached images are a mix of renderbuffers // and textures, the value of RENDERBUFFER_SAMPLES is zero." // // On creating a renderbuffer: "If _samples_ is zero, then // RENDERBUFFER_SAMPLES is set to zero. Otherwise [...] the resulting // value for RENDERBUFFER_SAMPLES is guaranteed to be greater than or // equal to _samples_ and no more than the next larger sample count // supported by the implementation." // Either all attachments are zero-sample renderbuffers and/or // textures, or none of them are. if ((m_numSamples == 0) != (imgSamples == 0)) addFBOStatus(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, "Mixed multi- and single-sampled attachments"); // If the attachments requested a different number of samples, the // implementation is allowed to report this as incomplete. However, it // is also possible that despite the different requests, the // implementation allocated the same number of samples to both. Hence // reporting the framebuffer as complete is also legal. if (m_numSamples != imgSamples) addPotentialFBOStatus(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, "Number of samples differ"); } // "Depth and stencil attachments, if present, are the same image." if (attPoint == GL_DEPTH_ATTACHMENT || attPoint == GL_STENCIL_ATTACHMENT) { if (m_depthStencilImage == 0) { m_depthStencilImage = att.imageName; m_depthStencilType = attachmentType(att); } else { if (m_depthStencilImage != att.imageName || m_depthStencilType != attachmentType(att)) addFBOStatus(GL_FRAMEBUFFER_UNSUPPORTED, "Depth and stencil attachments are not the same image"); } } }
QString UIMachineSettingsNetwork::alternativeName(int iType) const { if (iType == -1) iType = attachmentType(); QString strResult; switch (iType) { case KNetworkAttachmentType_Bridged: strResult = m_strBridgedAdapterName; break; case KNetworkAttachmentType_Internal: strResult = m_strInternalNetworkName; break; case KNetworkAttachmentType_HostOnly: strResult = m_strHostInterfaceName; break; case KNetworkAttachmentType_Generic: strResult = m_strGenericDriverName; break; default: break; } Assert(strResult.isNull() || !strResult.isEmpty()); return strResult; }
void UIMachineSettingsNetwork::sltHandleAdvancedButtonStateChange() { /* Update visibility of advanced options: */ m_pAdapterTypeLabel->setVisible(m_pAdvancedArrow->isExpanded()); m_pAdapterTypeCombo->setVisible(m_pAdvancedArrow->isExpanded()); m_pPromiscuousModeLabel->setVisible(m_pAdvancedArrow->isExpanded()); m_pPromiscuousModeCombo->setVisible(m_pAdvancedArrow->isExpanded()); m_pGenericPropertiesLabel->setVisible(attachmentType() == KNetworkAttachmentType_Generic && m_pAdvancedArrow->isExpanded()); m_pGenericPropertiesTextEdit->setVisible(attachmentType() == KNetworkAttachmentType_Generic && m_pAdvancedArrow->isExpanded()); m_pMACLabel->setVisible(m_pAdvancedArrow->isExpanded()); m_pMACEditor->setVisible(m_pAdvancedArrow->isExpanded()); m_pMACButton->setVisible(m_pAdvancedArrow->isExpanded()); m_pCableConnectedCheckBox->setVisible(m_pAdvancedArrow->isExpanded()); m_pPortForwardingButton->setVisible(m_pAdvancedArrow->isExpanded()); }
void UIMachineSettingsNetwork::sltHandleAlternativeNameChange() { /* Remember new name if its changed, * Call for other pages update, if necessary: */ switch (attachmentType()) { case KNetworkAttachmentType_Bridged: { QString newName(m_pAdapterNameCombo->itemData(m_pAdapterNameCombo->currentIndex()).toString() == QString(pEmptyItemCode) || m_pAdapterNameCombo->currentText().isEmpty() ? QString() : m_pAdapterNameCombo->currentText()); if (m_strBridgedAdapterName != newName) m_strBridgedAdapterName = newName; break; } case KNetworkAttachmentType_Internal: { QString newName((m_pAdapterNameCombo->itemData(m_pAdapterNameCombo->currentIndex()).toString() == QString(pEmptyItemCode) && m_pAdapterNameCombo->currentText() == m_pAdapterNameCombo->itemText(m_pAdapterNameCombo->currentIndex())) || m_pAdapterNameCombo->currentText().isEmpty() ? QString() : m_pAdapterNameCombo->currentText()); if (m_strInternalNetworkName != newName) { m_strInternalNetworkName = newName; if (!m_strInternalNetworkName.isNull()) emit sigTabUpdated(); } break; } case KNetworkAttachmentType_HostOnly: { QString newName(m_pAdapterNameCombo->itemData(m_pAdapterNameCombo->currentIndex()).toString() == QString(pEmptyItemCode) || m_pAdapterNameCombo->currentText().isEmpty() ? QString() : m_pAdapterNameCombo->currentText()); if (m_strHostInterfaceName != newName) m_strHostInterfaceName = newName; break; } case KNetworkAttachmentType_Generic: { QString newName((m_pAdapterNameCombo->itemData(m_pAdapterNameCombo->currentIndex()).toString() == QString(pEmptyItemCode) && m_pAdapterNameCombo->currentText() == m_pAdapterNameCombo->itemText(m_pAdapterNameCombo->currentIndex())) || m_pAdapterNameCombo->currentText().isEmpty() ? QString() : m_pAdapterNameCombo->currentText()); if (m_strGenericDriverName != newName) { m_strGenericDriverName = newName; if (!m_strGenericDriverName.isNull()) emit sigTabUpdated(); } break; } default: break; } /* Revalidate if possible: */ if (m_pValidator) m_pValidator->revalidate(); }
void UIMachineSettingsNetwork::uploadAdapterCache(UICacheSettingsMachineNetworkAdapter &adapterCache) { /* Prepare adapter data: */ UIDataSettingsMachineNetworkAdapter adapterData = adapterCache.base(); /* Save adapter activity state: */ adapterData.m_fAdapterEnabled = m_pEnableAdapterCheckBox->isChecked(); /* Save attachment type & alternative name: */ adapterData.m_attachmentType = attachmentType(); switch (adapterData.m_attachmentType) { case KNetworkAttachmentType_Null: break; case KNetworkAttachmentType_NAT: break; case KNetworkAttachmentType_Bridged: adapterData.m_strBridgedAdapterName = alternativeName(); break; case KNetworkAttachmentType_Internal: adapterData.m_strInternalNetworkName = alternativeName(); break; case KNetworkAttachmentType_HostOnly: adapterData.m_strHostInterfaceName = alternativeName(); break; case KNetworkAttachmentType_Generic: adapterData.m_strGenericDriverName = alternativeName(); adapterData.m_strGenericProperties = m_pGenericPropertiesTextEdit->toPlainText(); break; default: break; } /* Save adapter type: */ adapterData.m_adapterType = (KNetworkAdapterType)m_pAdapterTypeCombo->itemData(m_pAdapterTypeCombo->currentIndex()).toInt(); /* Save promiscuous mode type: */ adapterData.m_promiscuousMode = (KNetworkAdapterPromiscModePolicy)m_pPromiscuousModeCombo->itemData(m_pPromiscuousModeCombo->currentIndex()).toInt(); /* Other options: */ adapterData.m_strMACAddress = m_pMACEditor->text().isEmpty() ? QString() : m_pMACEditor->text(); adapterData.m_fCableConnected = m_pCableConnectedCheckBox->isChecked(); /* Save port forwarding rules: */ adapterData.m_redirects = m_portForwardingRules; /* Cache adapter data: */ adapterCache.cacheCurrentData(adapterData); }
void UIMachineSettingsNetwork::updateAlternativeName() { /* Block signals initially: */ m_pAdapterNameCombo->blockSignals(true); switch (attachmentType()) { case KNetworkAttachmentType_Bridged: case KNetworkAttachmentType_Internal: case KNetworkAttachmentType_HostOnly: case KNetworkAttachmentType_Generic: { m_pAdapterNameCombo->setCurrentIndex(position(m_pAdapterNameCombo, alternativeName())); break; } default: break; } /* Unblock signals finally: */ m_pAdapterNameCombo->blockSignals(false); }
void UIMachineSettingsNetwork::sltHandleAttachmentTypeChange() { /* Update alternative-name combo-box availability: */ m_pAdapterNameLabel->setEnabled(attachmentType() != KNetworkAttachmentType_Null && attachmentType() != KNetworkAttachmentType_NAT); m_pAdapterNameCombo->setEnabled(attachmentType() != KNetworkAttachmentType_Null && attachmentType() != KNetworkAttachmentType_NAT); /* Update promiscuous-mode combo-box availability: */ m_pPromiscuousModeLabel->setEnabled(attachmentType() != KNetworkAttachmentType_Null && attachmentType() != KNetworkAttachmentType_Generic && attachmentType() != KNetworkAttachmentType_NAT); m_pPromiscuousModeCombo->setEnabled(attachmentType() != KNetworkAttachmentType_Null && attachmentType() != KNetworkAttachmentType_Generic && attachmentType() != KNetworkAttachmentType_NAT); /* Update generic-properties editor visibility: */ m_pGenericPropertiesLabel->setVisible(attachmentType() == KNetworkAttachmentType_Generic && m_pAdvancedArrow->isExpanded()); m_pGenericPropertiesTextEdit->setVisible(attachmentType() == KNetworkAttachmentType_Generic && m_pAdvancedArrow->isExpanded()); /* Update forwarding-rules button availability: */ m_pPortForwardingButton->setEnabled(attachmentType() == KNetworkAttachmentType_NAT); /* Update alternative-name combo-box whats-this and editable state: */ switch (attachmentType()) { case KNetworkAttachmentType_Bridged: { m_pAdapterNameCombo->setWhatsThis(tr("Selects the network adapter on the host system that traffic " "to and from this network card will go through.")); m_pAdapterNameCombo->setEditable(false); break; } case KNetworkAttachmentType_Internal: { m_pAdapterNameCombo->setWhatsThis(tr("Enter the name of the internal network that this network card " "will be connected to. You can create a new internal network by " "choosing a name which is not used by any other network cards " "in this virtual machine or others.")); m_pAdapterNameCombo->setEditable(true); break; } case KNetworkAttachmentType_HostOnly: { m_pAdapterNameCombo->setWhatsThis(tr("Selects the virtual network adapter on the host system that traffic " "to and from this network card will go through. " "You can create and remove adapters using the global network " "settings in the virtual machine manager window.")); m_pAdapterNameCombo->setEditable(false); break; } case KNetworkAttachmentType_Generic: { m_pAdapterNameCombo->setWhatsThis(tr("Selects the driver to be used with this network card.")); m_pAdapterNameCombo->setEditable(true); break; } default: { m_pAdapterNameCombo->setWhatsThis(QString()); break; } } /* Update alternative combo: */ reloadAlternative(); /* Handle alternative-name cange: */ sltHandleAlternativeNameChange(); }
void UIMachineSettingsNetwork::polishTab() { /* Basic attributes: */ m_pEnableAdapterCheckBox->setEnabled(m_pParent->isMachineOffline()); m_pAttachmentTypeLabel->setEnabled(m_pParent->isMachineInValidMode()); m_pAttachmentTypeComboBox->setEnabled(m_pParent->isMachineInValidMode()); m_pAdapterNameLabel->setEnabled(m_pParent->isMachineInValidMode() && attachmentType() != KNetworkAttachmentType_Null && attachmentType() != KNetworkAttachmentType_NAT); m_pAdapterNameCombo->setEnabled(m_pParent->isMachineInValidMode() && attachmentType() != KNetworkAttachmentType_Null && attachmentType() != KNetworkAttachmentType_NAT); m_pAdvancedArrow->setEnabled(m_pParent->isMachineInValidMode()); /* Advanced attributes: */ m_pAdapterTypeLabel->setEnabled(m_pParent->isMachineOffline()); m_pAdapterTypeCombo->setEnabled(m_pParent->isMachineOffline()); m_pPromiscuousModeLabel->setEnabled(m_pParent->isMachineInValidMode() && attachmentType() != KNetworkAttachmentType_Null && attachmentType() != KNetworkAttachmentType_Generic && attachmentType() != KNetworkAttachmentType_NAT); m_pPromiscuousModeCombo->setEnabled(m_pParent->isMachineInValidMode() && attachmentType() != KNetworkAttachmentType_Null && attachmentType() != KNetworkAttachmentType_Generic && attachmentType() != KNetworkAttachmentType_NAT); m_pMACLabel->setEnabled(m_pParent->isMachineOffline()); m_pMACEditor->setEnabled(m_pParent->isMachineOffline()); m_pMACButton->setEnabled(m_pParent->isMachineOffline()); m_pGenericPropertiesLabel->setEnabled(m_pParent->isMachineInValidMode()); m_pGenericPropertiesTextEdit->setEnabled(m_pParent->isMachineInValidMode()); m_pPortForwardingButton->setEnabled(m_pParent->isMachineInValidMode() && attachmentType() == KNetworkAttachmentType_NAT); /* Postprocessing: */ if ((m_pParent->isMachineSaved() || m_pParent->isMachineOnline()) && !m_pAdvancedArrow->isExpanded()) m_pAdvancedArrow->animateClick(); sltHandleAdvancedButtonStateChange(); }
bool UIMachineSettingsNetwork::validate(QString &strWarning, QString &strTitle) { /* Pass if adapter is disabled: */ if (!m_pEnableAdapterCheckBox->isChecked()) return true; /* Validate alternatives: */ bool fValid = true; switch (attachmentType()) { case KNetworkAttachmentType_Bridged: { if (alternativeName().isNull()) { strWarning = tr("no bridged network adapter is selected"); fValid = false; } break; } case KNetworkAttachmentType_Internal: { if (alternativeName().isNull()) { strWarning = tr("no internal network name is specified"); fValid = false; } break; } case KNetworkAttachmentType_HostOnly: { if (alternativeName().isNull()) { strWarning = tr("no host-only network adapter is selected"); fValid = false; } break; } case KNetworkAttachmentType_Generic: { if (alternativeName().isNull()) { strWarning = tr("no generic driver is selected"); fValid = false; } break; } default: break; } /* Validate MAC-address length: */ if (fValid && m_pMACEditor->text().size() < 12) { strWarning = tr("the MAC address must be 12 hexadecimal digits long."); fValid = false; } /* Make sure MAC-address is unicast: */ if (fValid && m_pMACEditor->text().size() >= 2) { QRegExp validator("^[0-9A-Fa-f][02468ACEace]"); if (validator.indexIn(m_pMACEditor->text()) != 0) { strWarning = tr("the second digit in the MAC address may not be odd " "as only unicast addresses are allowed."); fValid = false; } } if (!fValid) strTitle += ": " + vboxGlobal().removeAccelMark(tabTitle()); return fValid; }