示例#1
0
/** Recurses through a list of objects */
QList<QHalSignal *> QHalGroup::recurseObjects(const QObjectList &list) const
{
    QList<QHalSignal*> halSignals;

    foreach (QObject *object, list)
    {
        QHalSignal *halSignal;
        halSignal = qobject_cast<QHalSignal*>(object);
        if (halSignal != NULL)
        {
            halSignals.append(halSignal);
        }

        if (object->children().size() > 0)
        {
            halSignals.append(recurseObjects(object->children()));
        }
    }
/** Scans all children of the container item for pins and adds them to a map */
void QHalRemoteComponent::addPins()
{
    QObjectList halObjects;

    if (m_containerItem == NULL)
    {
        return;
    }

    halObjects = recurseObjects(m_containerItem->children());
    foreach (QObject *object, halObjects)
    {
        QHalPin *pin = static_cast<QHalPin *>(object);
        if (pin->name().isEmpty()  || (pin->enabled() == false))    // ignore pins with empty name and disabled pins
        {
            continue;
        }
        m_pinsByName[pin->name()] = pin;
        connect(pin, SIGNAL(valueChanged(QVariant)),
                this, SLOT(pinChange(QVariant)));
#ifdef QT_DEBUG
        DEBUG_TAG(1, m_name, "pin added: " << pin->name())
#endif
    }