void MainWindow::generateCpp() { Grantlee::Template headerTemplate = m_engine->loadByName("header.h"); if (headerTemplate->error()) { createOutputTab("Header", headerTemplate->errorString()); return; } Grantlee::Context c = m_designWidget->getContext(); QString output; QTextStream textStream(&output); NoEscapeOutputStream stream(&textStream); headerTemplate->render(&stream, &c); createOutputTab("Header", headerTemplate->error() ? headerTemplate->errorString() : output); if (headerTemplate->error()) return; output.clear(); Grantlee::Template implementationTemplate = m_engine->loadByName("implementation.cpp"); if (implementationTemplate->error()) { createOutputTab("Implementation", implementationTemplate->errorString()); return; } implementationTemplate->render(&stream, &c); createOutputTab("Implementation", implementationTemplate->error() ? implementationTemplate->errorString() : output); if (implementationTemplate->error()) return; output.clear(); if (c.lookup("pimpl").toBool()) { Grantlee::Template privateHeaderTemplate = m_engine->loadByName("private_header.h"); if (privateHeaderTemplate->error()) { createOutputTab("Private Header", privateHeaderTemplate->errorString()); return; } c.insert("className", Grantlee::getSafeString(c.lookup("className")) + QString("Private")); c.insert("baseClass", QVariant()); privateHeaderTemplate->render(&stream, &c); createOutputTab("Private Header", privateHeaderTemplate->error() ? privateHeaderTemplate->errorString() : output); if (privateHeaderTemplate->error()) return; } }
QString TemplateLayout::generate() { int progress = 0; int totalWork = getTotalWork(PrintOptions); QString htmlContent; delete m_engine; m_engine = new Grantlee::Engine(this); QSharedPointer<Grantlee::FileSystemTemplateLoader> m_templateLoader = QSharedPointer<Grantlee::FileSystemTemplateLoader>(new Grantlee::FileSystemTemplateLoader()); m_templateLoader->setTemplateDirs(QStringList() << getPrintingTemplatePathUser()); m_engine->addTemplateLoader(m_templateLoader); Grantlee::registerMetaType<template_options>(); Grantlee::registerMetaType<print_options>(); QVariantList diveList; struct dive *dive; int i; for_each_dive (i, dive) { //TODO check for exporting selected dives only if (!dive->selected && PrintOptions->print_selected) continue; DiveObjectHelper *d = new DiveObjectHelper(dive); diveList.append(QVariant::fromValue(d)); progress++; emit progressUpdated(progress * 100.0 / totalWork); } Grantlee::Context c; c.insert("dives", diveList); c.insert("template_options", QVariant::fromValue(*templateOptions)); c.insert("print_options", QVariant::fromValue(*PrintOptions)); Grantlee::Template t = m_engine->loadByName(PrintOptions->p_template); if (!t || t->error()) { qDebug() << "Can't load template"; return htmlContent; } htmlContent = t->render(&c); if (t->error()) { qDebug() << "Can't render template"; } return htmlContent; }
QString TemplateLayout::generate() { int progress = 0; int totalWork = getTotalWork(PrintOptions); QString htmlContent; delete m_engine; m_engine = new Grantlee::Engine(this); Grantlee::registerMetaType<template_options>(); Grantlee::registerMetaType<print_options>(); QVariantList diveList; struct dive *dive; int i; for_each_dive (i, dive) { //TODO check for exporting selected dives only if (!dive->selected && PrintOptions->print_selected) continue; DiveObjectHelper *d = new DiveObjectHelper(dive); diveList.append(QVariant::fromValue(d)); progress++; emit progressUpdated(lrint(progress * 100.0 / totalWork)); } Grantlee::Context c; c.insert("dives", diveList); c.insert("template_options", QVariant::fromValue(*templateOptions)); c.insert("print_options", QVariant::fromValue(*PrintOptions)); /* don't use the Grantlee loader API */ QString templateContents = readTemplate(PrintOptions->p_template); QString preprocessed = preprocessTemplate(templateContents); /* create the template from QString; is this thing allocating memory? */ Grantlee::Template t = m_engine->newTemplate(preprocessed, PrintOptions->p_template); if (!t || t->error()) { qDebug() << "Can't load template"; return htmlContent; } htmlContent = t->render(&c); if (t->error()) { qDebug() << "Can't render template"; } return htmlContent; }
QString TemplateLayout::generateStatistics() { QString htmlContent; delete m_engine; m_engine = new Grantlee::Engine(this); QSharedPointer<Grantlee::FileSystemTemplateLoader> m_templateLoader = QSharedPointer<Grantlee::FileSystemTemplateLoader>(new Grantlee::FileSystemTemplateLoader()); m_templateLoader->setTemplateDirs(QStringList() << getPrintingTemplatePathUser() + QDir::separator() + QString("statistics")); m_engine->addTemplateLoader(m_templateLoader); Grantlee::registerMetaType<YearInfo>(); Grantlee::registerMetaType<template_options>(); Grantlee::registerMetaType<print_options>(); QVariantList years; int i = 0; while (stats_yearly != NULL && stats_yearly[i].period) { YearInfo year(stats_yearly[i]); years.append(QVariant::fromValue(year)); i++; } Grantlee::Context c; c.insert("years", years); c.insert("template_options", QVariant::fromValue(*templateOptions)); c.insert("print_options", QVariant::fromValue(*PrintOptions)); Grantlee::Template t = m_engine->loadByName(PrintOptions->p_template); if (!t || t->error()) { qDebug() << "Can't load template"; return htmlContent; } htmlContent = t->render(&c); if (t->error()) { qDebug() << "Can't render template"; return htmlContent; } emit progressUpdated(100); return htmlContent; }
QString ApplicationPGPKeyFormatter::render(const PgpKeyMessagePart &mp) const { GrantleeTheme::Engine engine; engine.localizer()->setApplicationDomain(QByteArrayLiteral("messageviewer_application_gnupgwks_plugin")); engine.addTemplateLoader(QSharedPointer<GrantleeTheme::QtResourceTemplateLoader>::create()); Grantlee::Template tpl = engine.loadByName(QStringLiteral(":/pgpkeymessagepart.html")); Grantlee::Context ctx; ctx.setLocalizer(engine.localizer()); QObject block; block.setProperty("showKeyDetails", mp.source()->showSignatureDetails()); block.setProperty("error", mp.error()); block.setProperty("importUrl", mp.part()->makeLink(QStringLiteral("pgpkey?action=import"))); const auto key = mp.key(); if (key.isNull()) { block.setProperty("uid", mp.userID()); block.setProperty("fingerprint", mp.fingerprint()); block.setProperty("created", mp.keyDate().toString(Qt::SystemLocaleDate)); } else { const auto uid = key.userID(0); block.setProperty("hasKey", true); if (uid.email() && *uid.email() && uid.name() && *uid.name()) { block.setProperty("uid", QStringLiteral("%1 <%2>").arg(QString::fromUtf8(uid.name()), QString::fromUtf8(uid.email()))); } else if (uid.name() && *uid.name()) { block.setProperty("uid", QString::fromUtf8(uid.name())); } else if (uid.email() && *uid.email()) { block.setProperty("uid", QString::fromUtf8(uid.email())); } else { block.setProperty("uid", i18n("Unknown identity")); } block.setProperty("created", QDateTime::fromTime_t(key.subkey(0).creationTime()).toString(Qt::SystemLocaleDate)); block.setProperty("fingerprint", QString::fromLatin1(key.primaryFingerprint())); block.setProperty("keyUrl", QStringLiteral("kmail:showCertificate#GpgME ### gpgme ### %1").arg(QString::fromLatin1(key.keyID()))); } QObject style; const auto bgColor = QApplication::palette().color(QPalette::Base); if (bgColor.value() < 128) { // HSV value (brightness): 0 = darkest, 255 = brightest style.setProperty("borderColor", QColor(Qt::white).name()); style.setProperty("frameTextColor", QColor(Qt::black).name()); } else { style.setProperty("borderColor", QColor(Qt::black).name()); style.setProperty("frameTextColor", QColor(Qt::white).name()); } ctx.insert(QStringLiteral("block"), &block); ctx.insert(QStringLiteral("style"), &style); return tpl->render(&ctx); }