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);
}
Exemplo n.º 2
0
JVViewer::JVViewer(QWidget *parent) : QWidget(parent){
    widget.setupUi(this);
    
    QObject::connect(widget.pComboBoxType,
           SIGNAL(currentIndexChanged(QString)), this, SLOT(onTypeChanged(QString)));
}