LyricsProvidersDialog::LyricsProvidersDialog(QString state, QWidget *parent) :
    QDialog(parent),
    ui(new Ui::LyricsProvidersDialog)
{
    ui->setupUi(this);

    ui->upButton->setIcon(QIcon::fromTheme("keyboard_move_up"));
    ui->checkButton->setIcon(QIcon::fromTheme("widgets_tickmark_grid"));
    ui->downButton->setIcon(QIcon::fromTheme("keyboard_move_down"));
    ui->providersList->setItemDelegate(new ProviderListItemDelegate(ui->providersList));

    QMap<QString,QString> availableProviders = LyricsManager::listProviders();
    QStringList configList = state.split(',', QString::SkipEmptyParts);

    foreach(QString config, configList) {
        bool active;

        if (active = config.startsWith('+'))
            config = config.mid(1);

        if (availableProviders.contains(config))
            addProvider(config, availableProviders.value(config), active);

        availableProviders.remove(config);
    }
void RequirementsExpert::visitOwnUnitBoundaryItem(OwnUnitBoundaryItem* item)
{
    // Recognize units which are building at the moment.
    if (item->provideUnit.isConnected()) {
        auto planitem = item->provideUnit.getConnectedPort()->getOwner();
        auto morph = dynamic_cast<MorphUnitPlanItem*>(planitem);
        if ((morph != NULL) && (morph->getUnitType() == item->getUnitType()) && morph->isActive())
            return;
        auto build = dynamic_cast<BuildPlanItem*>(planitem);
        if ((build != NULL) && (build->getUnitType() == item->getUnitType()) && build->isActive())
            return;
    }
    addProvider(item->getUnitType(), item);
}
QgsLayerTreeEmbeddedWidgetRegistry::QgsLayerTreeEmbeddedWidgetRegistry()
{
  // populate with default implementations
  addProvider( new QgsLayerTreeOpacityWidget::Provider() );
}
void RequirementsExpert::visitBuildPlanItem(BuildPlanItem* item)
{
    BasicPortExpert::visitBuildPlanItem(item);
    addProvider(item->getUnitType(), item);
}