Example #1
0
void ConnectionDiagram::setupGraphicsScene()
{
    Core::IBoardType *board = m_configSource->getControllerType();
    if (!board)
        return;
    QString diagram = board->getConnectionDiagram();
    m_renderer = new QSvgRenderer();
    if (QFile::exists(diagram) && m_renderer->load(diagram) && m_renderer->isValid()) {

        m_scene = new QGraphicsScene(this);
        ui->connectionDiagram->setScene(m_scene);

        m_background = new QGraphicsSvgItem();
        m_background->setSharedRenderer(m_renderer);
        m_background->setElementId("background");
        m_background->setOpacity(0);
        m_background->setZValue(-1);
        m_scene->addItem(m_background);

        QList<QString> elementsToShow;

        Core::IBoardType* type = m_configSource->getControllerType();
        if (type != NULL)
            elementsToShow << QString("controller-").append(type->shortName().toLower());

        switch (m_configSource->getVehicleType()) {
        case VehicleConfigurationSource::VEHICLE_MULTI:
            switch (m_configSource->getVehicleSubType()) {
            case VehicleConfigurationSource::MULTI_ROTOR_TRI_Y:
                elementsToShow << "tri";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_QUAD_X:
                elementsToShow << "quad-x";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS:
                elementsToShow << "quad-p";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_HEXA:
                elementsToShow << "hexa";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_HEXA_COAX_Y:
                elementsToShow << "hexa-y";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_HEXA_H:
                elementsToShow << "hexa-h";
                break;
            default:
                break;
            }
            break;
        case VehicleConfigurationSource::VEHICLE_FIXEDWING:
        case VehicleConfigurationSource::VEHICLE_HELI:
        case VehicleConfigurationSource::VEHICLE_SURFACE:
        default:
            break;
        }

        switch (m_configSource->getInputType()) {
        case Core::IBoardType::INPUT_TYPE_PWM:
            elementsToShow << "pwm";
            break;
        case Core::IBoardType::INPUT_TYPE_PPM:
            elementsToShow << "ppm";
            break;
        case Core::IBoardType::INPUT_TYPE_SBUS:
            elementsToShow << "sbus";
            break;
        case Core::IBoardType::INPUT_TYPE_DSM:
            elementsToShow << "satellite";
            break;
        case Core::IBoardType::INPUT_TYPE_HOTTSUMD:
        case Core::IBoardType::INPUT_TYPE_HOTTSUMH:
            elementsToShow << "hott";
            break;
        default:
            break;
        }

        setupGraphicsSceneItems(elementsToShow);

        ui->connectionDiagram->setSceneRect(m_background->boundingRect());
        ui->connectionDiagram->fitInView(m_background, Qt::KeepAspectRatio);

        qDebug() << "Scene complete";
    }
}
void ConnectionDiagram::setupGraphicsScene()
{
    m_renderer = new QSvgRenderer();
    if (QFile::exists(QString(":/setupwizard/resources/connection-diagrams.svg")) &&
        m_renderer->load(QString(":/setupwizard/resources/connection-diagrams.svg")) &&
        m_renderer->isValid()) {
        m_scene = new QGraphicsScene(this);
        ui->connectionDiagram->setScene(m_scene);
        // ui->connectionDiagram->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);

        m_background = new QGraphicsSvgItem();
        m_background->setSharedRenderer(m_renderer);
        m_background->setElementId("background");
        m_background->setOpacity(0);
        // m_background->setFlags(QGraphicsItem::ItemClipsToShape);
        m_background->setZValue(-1);
        m_scene->addItem(m_background);

        QList<QString> elementsToShow;

        switch (m_configSource->getControllerType()) {
        case VehicleConfigurationSource::CONTROLLER_CC:
        case VehicleConfigurationSource::CONTROLLER_CC3D:
            elementsToShow << "controller-cc";
            break;
        case VehicleConfigurationSource::CONTROLLER_REVO:
            elementsToShow << "controller-revo";
            break;
        case VehicleConfigurationSource::CONTROLLER_BRAINYFLY:
			elementsToShow << "controller-brainyfly";
			break;
        case VehicleConfigurationSource::CONTROLLER_OPLINK:
        default:
            elementsToShow << "controller-cc";
            break;
        }

        switch (m_configSource->getVehicleType()) {
        case VehicleConfigurationSource::VEHICLE_MULTI:
            switch (m_configSource->getVehicleSubType()) {
            case VehicleConfigurationSource::MULTI_ROTOR_TRI_Y:
                elementsToShow << "tri";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_QUAD_X:
                elementsToShow << "quad-x";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS:
                elementsToShow << "quad-p";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_HEXA:
                elementsToShow << "hexa";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_HEXA_COAX_Y:
                elementsToShow << "hexa-y";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_HEXA_H:
                elementsToShow << "hexa-h";
                break;
            default:
                break;
            }
            break;
        case VehicleConfigurationSource::VEHICLE_FIXEDWING:
        case VehicleConfigurationSource::VEHICLE_HELI:
        case VehicleConfigurationSource::VEHICLE_SURFACE:
        default:
            break;
        }

        switch (m_configSource->getInputType()) {
        case VehicleConfigurationSource::INPUT_PWM:
            elementsToShow << "pwm";
            break;
        case VehicleConfigurationSource::INPUT_PPM:
            elementsToShow << "ppm";
            break;
        case VehicleConfigurationSource::INPUT_SBUS:
            elementsToShow << "sbus";
            break;
        case VehicleConfigurationSource::INPUT_DSMX10:
        case VehicleConfigurationSource::INPUT_DSMX11:
        case VehicleConfigurationSource::INPUT_DSM2:
            elementsToShow << "satellite";
            break;
        default:
            break;
        }

        setupGraphicsSceneItems(elementsToShow);

        ui->connectionDiagram->setSceneRect(m_background->boundingRect());
        ui->connectionDiagram->fitInView(m_background, Qt::KeepAspectRatio);

        qDebug() << "Scene complete";
    }
}
void ConnectionDiagram::setupGraphicsScene()
{
    m_renderer = new QSvgRenderer();
    if (QFile::exists(QString(FILE_NAME)) &&
        m_renderer->load(QString(FILE_NAME)) &&
        m_renderer->isValid()) {
        m_scene = new QGraphicsScene(this);
        ui->connectionDiagram->setScene(m_scene);

        QList<QString> elementsToShow;

        switch (m_configSource->getControllerType()) {
        case VehicleConfigurationSource::CONTROLLER_CC:
            elementsToShow << "controller-cc";
            break;
        case VehicleConfigurationSource::CONTROLLER_CC3D:
            elementsToShow << "controller-cc3d";
            break;
        case VehicleConfigurationSource::CONTROLLER_REVO:
            elementsToShow << "controller-revo";
            break;
        case VehicleConfigurationSource::CONTROLLER_NANO:
            elementsToShow << "controller-nano";
            break;
        case VehicleConfigurationSource::CONTROLLER_OPLINK:
        default:
            elementsToShow << "controller-cc";
            break;
        }

        switch (m_configSource->getVehicleType()) {
        case VehicleConfigurationSource::VEHICLE_MULTI:
            switch (m_configSource->getVehicleSubType()) {
            case VehicleConfigurationSource::MULTI_ROTOR_TRI_Y:
                elementsToShow << "tri";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_QUAD_X:
                elementsToShow << "quad-x";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_QUAD_PLUS:
                elementsToShow << "quad-p";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_HEXA:
                elementsToShow << "hexa";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_HEXA_X:
                elementsToShow << "hexa-x";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_HEXA_COAX_Y:
                elementsToShow << "hexa-y";
                break;
            case VehicleConfigurationSource::MULTI_ROTOR_HEXA_H:
                elementsToShow << "hexa-h";
                break;
            default:
                break;
            }
            break;
        case VehicleConfigurationSource::VEHICLE_FIXEDWING:
            switch (m_configSource->getVehicleSubType()) {
            case VehicleConfigurationSource::FIXED_WING_DUAL_AILERON:
                elementsToShow << "aileron";
                break;
            case VehicleConfigurationSource::FIXED_WING_AILERON:
                elementsToShow << "aileron-single";
                break;
            case VehicleConfigurationSource::FIXED_WING_ELEVON:
                elementsToShow << "elevon";
                break;
            case VehicleConfigurationSource::FIXED_WING_VTAIL:
                elementsToShow << "vtail";
                break;
            default:
                break;
            }
        case VehicleConfigurationSource::VEHICLE_SURFACE:
            switch (m_configSource->getVehicleSubType()) {
            case VehicleConfigurationSource::GROUNDVEHICLE_CAR:
                elementsToShow << "car";
                break;
            case VehicleConfigurationSource::GROUNDVEHICLE_DIFFERENTIAL:
                elementsToShow << "tank";
                break;
            case VehicleConfigurationSource::GROUNDVEHICLE_MOTORCYCLE:
                elementsToShow << "motorbike";
                break;
            default:
                break;
            }
        case VehicleConfigurationSource::VEHICLE_HELI:
        default:
            break;
        }

        QString prefix = "";
        QString suffix = "";
        switch (m_configSource->getControllerType()) {
        case VehicleConfigurationSource::CONTROLLER_CC:
        case VehicleConfigurationSource::CONTROLLER_CC3D:
            prefix = "cc-";
            if (m_configSource->getEscType() == VehicleConfigurationSource::ESC_ONESHOT ||
                m_configSource->getEscType() == VehicleConfigurationSource::ESC_SYNCHED) {
                suffix = "-oneshot";
            }
            break;
        case VehicleConfigurationSource::CONTROLLER_REVO:
            prefix = "revo-";
            break;
        case VehicleConfigurationSource::CONTROLLER_NANO:
            prefix = "nano-";
            break;
        default:
            break;
        }

        switch (m_configSource->getInputType()) {
        case VehicleConfigurationSource::INPUT_PWM:
            elementsToShow << QString("%1pwm").arg(prefix);
            break;
        case VehicleConfigurationSource::INPUT_PPM:
            elementsToShow << QString("%1ppm%2").arg(prefix).arg(suffix);
            break;
        case VehicleConfigurationSource::INPUT_SBUS:
            elementsToShow << QString("%1sbus").arg(prefix);
            break;
        case VehicleConfigurationSource::INPUT_SRXL:
            elementsToShow << QString("%1srxl").arg(prefix);
            break;
        case VehicleConfigurationSource::INPUT_DSM:
            elementsToShow << QString("%1satellite").arg(prefix);
            break;
        default:
            break;
        }

        if (m_configSource->getVehicleType() == VehicleConfigurationSource::VEHICLE_FIXEDWING &&
            m_configSource->getAirspeedType() != VehicleConfigurationSource::AIRSPEED_ESTIMATE) {
            switch (m_configSource->getAirspeedType()) {
            case VehicleConfigurationSource::AIRSPEED_EAGLETREE:
                elementsToShow << QString("%1eagletree-speed-sensor").arg(prefix);
                break;
            case VehicleConfigurationSource::AIRSPEED_MS4525:
                elementsToShow << QString("%1ms4525-speed-sensor").arg(prefix);
                break;
            default:
                break;
            }
        }

        if (m_configSource->getInputType() == VehicleConfigurationSource::INPUT_SBUS) {
            prefix = QString("flexi-%1").arg(prefix);
        }
        switch (m_configSource->getGpsType()) {
        case VehicleConfigurationSource::GPS_DISABLED:
            break;
        case VehicleConfigurationSource::GPS_NMEA:
            elementsToShow << QString("%1generic-nmea").arg(prefix);
            break;
        case VehicleConfigurationSource::GPS_PLATINUM:
            elementsToShow << QString("%1OPGPS-v9").arg(prefix);
            break;
        case VehicleConfigurationSource::GPS_UBX:
            elementsToShow << QString("%1OPGPS-v8-ublox").arg(prefix);
            break;
        default:
            break;
        }

        setupGraphicsSceneItems(elementsToShow);
        fitInView();
        qDebug() << "Scene complete";
    }
}