QVariant KeyTreeModel::data(const QModelIndex& index, int role) const { if (!index.isValid()) return QVariant(); KeyTreeItem* item = static_cast<KeyTreeItem*>(index.internalPointer()); switch (role) { case Qt::DisplayRole: { return item->data(); } case Qt::FontRole: { QFont font; if (item->isDefault()) { font.setBold(true); } return font; } // case Qt::BackgroundRole: // { // std::cerr << "brush" << std::endl; // QBrush brush(Qt::white, Qt::SolidPattern); // if (index.row() % 2 == 0) { // brush.setColor(Qt::cyan); // } // return brush; // } default: return QVariant(); } }
const QString CPrinter::entryLink(const KeyTreeItem& item, CSwordModuleInfo* module) { Q_ASSERT(module); if (module->type() == CSwordModuleInfo::Bible) { CSwordVerseKey vk(module); vk = item.key(); switch (item.settings().keyRenderingFace) { case KeyTreeItem::Settings::CompleteShort: return QString::fromUtf8(vk.getShortText()); case KeyTreeItem::Settings::CompleteLong: return vk.key(); case KeyTreeItem::Settings::NoKey: return QString::null; case KeyTreeItem::Settings::SimpleKey: //fall through default: return QString::number(vk.Verse()); } } return item.key(); }
QString CrossRefRendering::entryLink(const KeyTreeItem &item, const CSwordModuleInfo *module) { QString linkText; const bool isBible = module && (module->type() == CSwordModuleInfo::Bible); CSwordVerseKey vk(module); //only valid for bible modules, i.e. isBible == true if (isBible) { vk.setKey(item.key()); } switch (item.settings().keyRenderingFace) { case KeyTreeItem::Settings::NoKey: { linkText = QString::null; break; //no key is valid for all modules } case KeyTreeItem::Settings::CompleteShort: { if (isBible) { linkText = QString::fromUtf8(vk.getShortText()); break; } //fall through for non-Bible modules } case KeyTreeItem::Settings::CompleteLong: { if (isBible) { linkText = vk.key(); break; } //fall through for non-Bible modules } case KeyTreeItem::Settings::SimpleKey: { if (isBible) { linkText = QString::number(vk.getVerse()); break; } //fall through for non-Bible modules } default: { //default behaviour to return the passed key linkText = item.key(); break; } } if (!linkText.isEmpty()) { //if we have a valid link text // qWarning("rendering"); return QString("<a href=\"%1\">%2</a>") .arg( ReferenceManager::encodeHyperlink( module->name(), item.key(), ReferenceManager::typeFromModule(module->type()) ) ) .arg(linkText); } return QString::null; }
QVariant KeyTreeModel::name(const QModelIndex& index, int role) const { if (!index.isValid()) return QVariant(); if (role != Qt::DisplayRole) return QVariant(); KeyTreeItem* item = static_cast<KeyTreeItem*>(index.internalPointer()); return item->name(); }
int KeyTreeModel::rowCount(const QModelIndex &parent) const { KeyTreeItem *parentItem; if (parent.column() > 0) return 0; if (!parent.isValid()) parentItem = m_rootItem; else parentItem = static_cast<KeyTreeItem*>(parent.internalPointer()); return parentItem->childCount(); }
QModelIndex KeyTreeModel::parent(const QModelIndex &index) const { if (!index.isValid()) return QModelIndex(); KeyTreeItem *childItem = static_cast<KeyTreeItem*>(index.internalPointer()); KeyTreeItem *parentItem = childItem->parentItem(); if (parentItem == m_rootItem) return QModelIndex(); return createIndex(parentItem->row(), 0, parentItem); }
QString CPrinter::renderEntry(const KeyTreeItem &i, CSwordKey * key) { Q_UNUSED(key); const CPrinter::KeyTreeItem* printItem = dynamic_cast<const CPrinter::KeyTreeItem*>(&i); Q_ASSERT(printItem); if (printItem && printItem->hasAlternativeContent()) { QString ret = QString::fromLatin1("<div class=\"entry\"><div class=\"rangeheading\">%1</div>").arg(printItem->getAlternativeContent()); if (!i.childList()->isEmpty()) { KeyTree const * tree = i.childList(); Q_FOREACH (const KeyTreeItem * const c, *tree) { ret.append( CDisplayRendering::renderEntry( *c ) ); } }
QModelIndex KeyTreeModel::index(int row, int column, const QModelIndex &parent) const { if (!hasIndex(row, column, parent)) return QModelIndex(); KeyTreeItem *parentItem; if (!parent.isValid()) parentItem = m_rootItem; else parentItem = static_cast<KeyTreeItem*>(parent.internalPointer()); KeyTreeItem *childItem = parentItem->child(row); if (childItem) return createIndex(row, column, childItem); else return QModelIndex(); }
const QString CPrinter::renderEntry( const KeyTreeItem& i, CSwordKey* ) { const CPrinter::KeyTreeItem* printItem = dynamic_cast<const CPrinter::KeyTreeItem*>(&i); Q_ASSERT(printItem); if (printItem && printItem->hasAlternativeContent()) { QString ret = QString::fromLatin1("<div class=\"entry\"><div class=\"rangeheading\">%1</div>").arg(printItem->getAlternativeContent()); if (i.hasChildItems()) { KeyTree const * tree = i.childList(); for ( KeyTreeItem* c = tree->first(); c; c = tree->next() ) { ret.append( CDisplayRendering::renderEntry( *c ) ); } } ret.append("</div>"); return ret; } return CDisplayRendering::renderEntry(i); }
CTextRendering::KeyTreeItem::KeyTreeItem(const KeyTreeItem& i) : m_settings( i.m_settings ), m_moduleList( i.m_moduleList ), m_key( i.m_key ), m_childList(), m_stopKey( i.m_stopKey ), m_alternativeContent( i.m_alternativeContent ) { const KeyTree &tree = *i.childList(); Q_FOREACH (const KeyTreeItem * const item, tree) { m_childList.append(new KeyTreeItem((*item))); //deep copy }
const QString CPlainTextExportRendering::renderEntry( const KeyTreeItem& i, CSwordKey* ) { if (!m_settings.addText) { return QString(i.key()).append("\n"); } ListCSwordModuleInfo modules = i.modules(); boost::scoped_ptr<CSwordKey> key( CSwordKey::createInstance(modules.first()) ); QString renderedText = QString(i.key()).append(":\n"); QString entry; // for (CSwordModuleInfo* m = modules.first(); m; m = modules.next()) { ListCSwordModuleInfo::iterator end_it = modules.end(); for (ListCSwordModuleInfo::iterator it(modules.begin()); it != end_it; ++it) { key->module(*it); key->key( i.key() ); //ToDo: Check this code entry.append(key->strippedText()).append("\n"); renderedText.append( entry ); } return renderedText; }
QString CDisplayRendering::entryLink(const KeyTreeItem &item, const CSwordModuleInfo * module) { QString linkText; const bool isBible = module && (module->type() == CSwordModuleInfo::Bible); CSwordVerseKey vk(module); //only valid for bible modules, i.e. isBible == true vk.setIntros(true); if (isBible) { vk.setKey(item.key()); } if (isBible && (vk.getVerse() == 0)) { return QString::null; //Warning: return already here } switch (item.settings().keyRenderingFace) { case KeyTreeItem::Settings::NoKey: { linkText = QString::null; break; //no key is valid for all modules } case KeyTreeItem::Settings::CompleteShort: { if (isBible) { linkText = QString::fromUtf8(vk.getShortText()); break; } //fall through for non-Bible modules } case KeyTreeItem::Settings::CompleteLong: { if (isBible) { linkText = vk.key(); break; } //fall through for non-Bible modules } case KeyTreeItem::Settings::SimpleKey: { if (isBible) { linkText = QString::number(vk.getVerse()); break; } //fall through for non-Bible modules } default: { //default behaviour to return the passed key linkText = item.key(); break; } } if (linkText.isEmpty()) { return QString("<a name=\"").append(keyToHTMLAnchor(item.key())).append("\"></a>"); } else { return QString("<a name=\"").append(keyToHTMLAnchor(item.key())).append("\" ") .append("href=\"") .append(ReferenceManager::encodeHyperlink( module->name(), item.key(), ReferenceManager::typeFromModule(module->type())) ) .append("\">").append(linkText).append("</a>\n"); } return QString::null; }