예제 #1
0
void NodeUpdateProxy::addAddress(
        const Device::NodePath& parentPath,
        const Device::AddressSettings& settings,
        int row)
{
    auto parentnode = parentPath.toNode(&devModel.rootNode());
    if(!parentnode)
        return;

    // Add in the device impl
    // Get the device node :
    // TODO row isn't managed here.
    const Device::Node& dev_node = devModel.rootNode().childAt(parentPath.at(0));
    ISCORE_ASSERT(dev_node.template is<Device::DeviceSettings>());

    // Make a full path
    Device::FullAddressSettings full = Device::FullAddressSettings::make<Device::FullAddressSettings::as_parent>(
                                   settings,
                                   Device::address(*parentnode));

    // Add in the device implementation
    devModel
            .list()
            .device(dev_node.template get<Device::DeviceSettings>().name)
            .addAddress(full);

    // Add in the device explorer
    addLocalAddress(*parentnode, settings, row);
}
예제 #2
0
void NodeUpdateProxy::removeNode(
        const Device::NodePath& parentPath,
        const Device::AddressSettings& settings)
{
    Device::Node* parentnode = parentPath.toNode(&devModel.rootNode());
    if(!parentnode)
        return;

    auto addr = Device::address(*parentnode);
    addr.path.append(settings.name);

    // Remove from the device implementation
    const auto& dev_node = devModel.rootNode().childAt(parentPath.at(0));
    devModel.list().device(
                dev_node.template get<Device::DeviceSettings>().name)
            .removeNode(addr);

    // Remove from the device explorer
    auto it = std::find_if(
                  parentnode->begin(), parentnode->end(),
                  [&] (const Device::Node& n) { return n.get<Device::AddressSettings>().name == settings.name; });
    ISCORE_ASSERT(it != parentnode->end());

    if(deviceExplorer)
    {
        deviceExplorer->removeNode(it);
    }
    else
    {
        parentnode->erase(it);
    }
}
예제 #3
0
void
DeviceExplorerModel::debug_printPath(const Device::NodePath& path)
{
    const int pathSize = path.size();

    for(int i = 0; i < pathSize; ++i)
    {
        std::cerr << path.at(i) << " ";
    }

    std::cerr << "\n";
}
예제 #4
0
QModelIndex
DeviceExplorerModel::convertPathToIndex(const Device::NodePath& path)
{
    QModelIndex iter;
    const int pathSize = path.size();

    for(int i = 0; i < pathSize; ++i)
    {
        iter = index(path.at(i), 0, iter);
    }

    return iter;
}