void VBoxOSTypeSelectorWidget::onFamilyChanged (int aIndex) { /* Lock the signals of mCbType to prevent it's reaction on clearing */ mCbType->blockSignals (true); mCbType->clear(); /* Populate combo-box with OS Types related to currently selected Family ID */ QString familyId (mCbFamily->itemData (aIndex, RoleTypeID).toString()); QList <CGuestOSType> types (vboxGlobal().vmGuestOSTypeList (familyId)); for (int i = 0; i < types.size(); ++ i) { if (types [i].GetIs64Bit() && (!m_fSupportsHWVirtEx || !m_fSupportsLongMode)) continue; int index = mCbType->count(); mCbType->insertItem (index, types [i].GetDescription()); mCbType->setItemData (index, types [i].GetId(), RoleTypeID); } /* Select the most recently chosen item */ if (mCurrentIds.contains (familyId)) { QString typeId (mCurrentIds [familyId]); int typeIndex = mCbType->findData (typeId, RoleTypeID); if (typeIndex != -1) mCbType->setCurrentIndex (typeIndex); } /* Or select WinXP item for Windows family as default */ else if (familyId == "Windows") { int xpIndex = mCbType->findData ("WindowsXP", RoleTypeID); if (xpIndex != -1) mCbType->setCurrentIndex (xpIndex); } /* Or select Ubuntu item for Linux family as default */ else if (familyId == "Linux") { int ubIndex = mCbType->findData ("Ubuntu", RoleTypeID); if (ubIndex != -1) mCbType->setCurrentIndex (ubIndex); } /* Else simply select the first one present */ else mCbType->setCurrentIndex (0); /* Update all the stuff with new type */ onTypeChanged (mCbType->currentIndex()); /* Unlock the signals of mCbType */ mCbType->blockSignals (false); }
JVViewer::JVViewer(QWidget *parent) : QWidget(parent){ widget.setupUi(this); QObject::connect(widget.pComboBoxType, SIGNAL(currentIndexChanged(QString)), this, SLOT(onTypeChanged(QString))); }