TemplateOrganizer::TemplateOrganizer(const ScreenieScene &screenieScene) : d(new TemplateOrganizerPrivate(screenieScene)) { for (ScreenieModelInterface *screenieModel : screenieScene.getModels()) { handleModelAdded(*screenieModel); } frenchConnection(); }
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; }