TemplateOrganizer::TemplateOrganizer(const ScreenieScene &screenieScene)
    : d(new TemplateOrganizerPrivate(screenieScene))
{
    for (ScreenieModelInterface *screenieModel : screenieScene.getModels()) {
        handleModelAdded(*screenieModel);
    }

    frenchConnection();
}
Exemple #2
0
void ScreenieControl::convertItemsToTemplate(ScreenieScene &screenieScene)
{
    QList<ScreenieModelInterface *> templateItems;
    QList<ScreenieModelInterface *> nonTemplateItems;
    for (ScreenieModelInterface *screenieModel : screenieScene.getModels()) {
        if (!qobject_cast<ScreenieTemplateModel *>(screenieModel)) {
            ScreenieTemplateModel *templateModel = new ScreenieTemplateModel();
            templateModel->convert(*screenieModel);
            templateItems.append(templateModel);
            nonTemplateItems.append(screenieModel);
        }
    }
    for (ScreenieModelInterface *screenieModel : nonTemplateItems) {
        screenieScene.removeModel(screenieModel);
    }
    for (ScreenieModelInterface *screenieModel : templateItems) {
        screenieScene.addModel(screenieModel);
    }
}
bool XmlScreenieSceneDao::writeScreenieModels(const ScreenieScene &screenieScene, ScreenieSceneSerializer::Mode mode)
{
    bool result = true;

    QList<ScreenieModelInterface *> screenieModels;
    switch (mode) {
    case ScreenieSceneSerializer::FullScene:
        screenieModels = screenieScene.getModels();
        break;
    case ScreenieSceneSerializer::SelectedItems:
        screenieModels = screenieScene.getSelectedModels();
        break;
    default:
#ifdef DEBUG
        qCritical("XmlScreenieSceneDao::writeScreenieModels: UNSUPPORTED mode: %d", mode);
#endif
        break;
    }

    foreach (ScreenieModelInterface *screenieModel, screenieModels) {
        ScreenieFilePathModel *screenieFilePathModel = qobject_cast<ScreenieFilePathModel *>(screenieModel);
        if (screenieFilePathModel != 0) {
            result = writeFilePathModel(*screenieFilePathModel);
        } else {
            ScreenieImageModel *screenieImageModel = qobject_cast<ScreenieImageModel *>(screenieModel);
            if (screenieImageModel != 0) {
                result = writePixmapModel(*screenieImageModel);
            } else {
                ScreenieTemplateModel *screenieTemplateModel = qobject_cast<ScreenieTemplateModel *>(screenieModel);
                if (screenieTemplateModel != 0) {
                    result = writeTemplateModel(*screenieTemplateModel);
                }
#ifdef DEBUG
                else {
                    qCritical("XmlScreenieSceneDao::writeScreenieModels: UNSUPPORTED: %s", screenieModel->metaObject()->className());
                }
#endif
            }
        }
    }
bool XmlScreenieSceneDao::writeScreenieScene(const ScreenieScene &screenieScene, ScreenieSceneSerializer::Mode mode)
{
    bool result = true;
    d->streamWriter->writeDTD("<!DOCTYPE screenie>");
    d->streamWriter->writeStartElement("screeniescene");

    QXmlStreamAttributes sceneAttributes;
    sceneAttributes.append("version", d->version.toString());
    sceneAttributes.append("template", screenieScene.isTemplate() ? "true" : "false");
    d->streamWriter->writeAttributes(sceneAttributes);
    {
        switch (mode) {
        case ScreenieSceneSerializer::FullScene:
            d->streamWriter->writeStartElement("background");
            {
                QXmlStreamAttributes backgroundAttributes;
                backgroundAttributes.append("enabled", screenieScene.isBackgroundEnabled() ? "true" : "false");
                backgroundAttributes.append("bgcolor", screenieScene.getBackgroundColor().name());
                d->streamWriter->writeAttributes(backgroundAttributes);
            }
            d->streamWriter->writeEndElement();
            result = writeScreenieModels(screenieScene, mode);
            break;
        case ScreenieSceneSerializer::SelectedItems:
            result = writeScreenieModels(screenieScene, mode);
            break;
        default:
#ifdef DEBUG
            qCritical("XmlScreenieSceneDao::writeScreenieScene: UNSUPPORTED mode: %d", mode);
#endif
            result = false;
        }
    }
    d->streamWriter->writeEndElement();
    return result;
}