summaryrefslogtreecommitdiff
path: root/bibletime/backend/ctextrendering.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'bibletime/backend/ctextrendering.cpp')
-rw-r--r--bibletime/backend/ctextrendering.cpp278
1 files changed, 0 insertions, 278 deletions
diff --git a/bibletime/backend/ctextrendering.cpp b/bibletime/backend/ctextrendering.cpp
deleted file mode 100644
index f3f5a9c..0000000
--- a/bibletime/backend/ctextrendering.cpp
+++ /dev/null
@@ -1,278 +0,0 @@
-//
-// C++ Implementation: ctextrendering
-//
-// Description:
-//
-//
-// Author: The BibleTime team <info@bibletime.info>, (C) 2004
-//
-// Copyright: See COPYING file that comes with this distribution
-//
-//
-#include "ctextrendering.h"
-
-//BibleTime includes
-#include "backend/cswordkey.h"
-#include "backend/cswordversekey.h"
-#include "backend/cswordmoduleinfo.h"
-#include "backend/cdisplaytemplatemgr.h"
-#include "backend/creferencemanager.h"
-
-#include "util/scoped_resource.h"
-#include "util/ctoolclass.h"
-
-//Sword includes
-#include <swkey.h>
-
-//Qt includes
-#include <qregexp.h>
-
-//KDE includes
-#include <klocale.h>
-#include <kurl.h>
-
-using namespace Rendering;
-
-CTextRendering::KeyTreeItem::KeyTreeItem(const QString& key, CSwordModuleInfo const * mod, const Settings settings )
-: m_settings( settings ),
-m_moduleList(),
-m_key( key ),
-m_childList( 0 ),
-m_stopKey( QString::null ),
-m_alternativeContent( QString::null ) {
- m_moduleList.append( const_cast<CSwordModuleInfo*>(mod) ); //BAD CODE
-}
-
-CTextRendering::KeyTreeItem::KeyTreeItem(const QString& content, const Settings settings )
-: m_settings( settings ),
-m_moduleList(),
-m_key( QString::null ),
-m_childList( 0 ),
-m_stopKey( QString::null ),
-m_alternativeContent( content ) {}
-
-CTextRendering::KeyTreeItem::KeyTreeItem(const QString& key, const ListCSwordModuleInfo& mods, const Settings settings )
-: m_settings( settings ),
-m_moduleList( mods ),
-m_key( key ),
-m_childList( 0 ),
-m_stopKey( QString::null ),
-m_alternativeContent( QString::null ) {}
-
-CTextRendering::KeyTreeItem::KeyTreeItem()
-: m_settings(),
-m_moduleList(),
-m_key(QString::null),
-m_childList(0),
-m_stopKey(QString::null),
-m_alternativeContent(QString::null) {}
-
-CTextRendering::KeyTreeItem::KeyTreeItem(const KeyTreeItem& i)
-: m_settings( i.m_settings ),
-m_moduleList( i.m_moduleList ),
-m_key( i.m_key ),
-m_childList( 0 ),
-m_stopKey( i.m_stopKey ),
-m_alternativeContent( i.m_alternativeContent ) {
- if (i.hasChildItems()) {
- m_childList = new KeyTree();
- *m_childList = *(i.childList()); //deep copy
- }
-
-}
-
-CTextRendering::KeyTreeItem::~KeyTreeItem() {
- delete m_childList;
- m_childList = 0;
-}
-
-CTextRendering::KeyTreeItem::KeyTreeItem(const QString& startKey, const QString& stopKey, CSwordModuleInfo* module, const Settings settings)
-: m_settings( settings ),
-m_moduleList(),
-m_key( startKey ),
-m_childList( 0 ),
-m_stopKey( stopKey ),
-m_alternativeContent( QString::null ) {
- Q_ASSERT(module);
- m_moduleList.append(module);
-
- //use the start and stop key to ceate our child items
-
- if (module->type() == CSwordModuleInfo::Bible) {
- CSwordVerseKey start(module);
- start = startKey;
-
- CSwordVerseKey stop(module);
- stop = stopKey;
-
- if (!m_key.isEmpty() && !m_stopKey.isEmpty()) { //we have a range of keys
- bool ok = true;
-
- while (ok && ((start < stop) || (start == stop)) ) { //range
- childList()->append(
- new KeyTreeItem(start.key(), module, KeyTreeItem::Settings(false, settings.keyRenderingFace))
- );
-
-
- ok = start.next(CSwordVerseKey::UseVerse);
- }
- }
- else if (m_key.isEmpty()) {
- childList()->append( new KeyTreeItem(startKey, module, KeyTreeItem::Settings(false, settings.keyRenderingFace)) );
- }
- }
- else if ((module->type() == CSwordModuleInfo::Lexicon) || (module->type() == CSwordModuleInfo::Commentary) ) {
- childList()->append( new KeyTreeItem(startKey, module, KeyTreeItem::Settings(false, KeyTreeItem::Settings::NoKey)) );
- }
- else if (module->type() == CSwordModuleInfo::GenericBook) {
- childList()->append( new KeyTreeItem(startKey, module, KeyTreeItem::Settings(false, KeyTreeItem::Settings::NoKey)) );
- }
-
- //make it into "<simple|range> (modulename)"
-
- if (startKey == stopKey) {
- m_alternativeContent = startKey;
- }
- else {
- sword::VerseKey vk(startKey.utf8(), stopKey.utf8());
-
- if (vk.LowerBound().Book() != vk.UpperBound().Book()) {
- m_alternativeContent = QString::fromUtf8(vk.getRangeText());
- }
- else if (vk.LowerBound().Chapter() != vk.UpperBound().Chapter()) {
- m_alternativeContent = QString("%1 - %2:%3")
- .arg(QString::fromUtf8(vk.LowerBound().getText()))
- .arg(vk.UpperBound().Chapter())
- .arg(vk.UpperBound().Verse());
- }
- else { //only verses differ (same book, same chapter)
- m_alternativeContent = QString("%1 - %2")
- .arg(QString::fromUtf8(vk.LowerBound().getText()))
- .arg(vk.UpperBound().Verse());
- }
- }
-
- m_alternativeContent.append(" (").append(module->name()).append(")");
- m_alternativeContent.prepend("<div class=\"rangeheading\" dir=\"ltr\">").append("</div>"); //insert the right tags
-}
-
-const QString& CTextRendering::KeyTreeItem::getAlternativeContent() const {
- return m_alternativeContent;
-}
-
-ListCSwordModuleInfo CTextRendering::KeyTree::collectModules() const {
- //collect all modules which are available and used by child items
- ListCSwordModuleInfo modules;
-
- for (KeyTreeItem* c = first(); c; c = next()) {
- Q_ASSERT(c);
-
- ListCSwordModuleInfo childMods = c->modules();
-
- /*ToDo: Use the const iterators as soon as we use Qt > 3.1
- const ListCSwordModuleInfo::const_iterator c_end = childMods.end();
- for (ListCSwordModuleInfo::const_iterator c_it = childMods.constBegin(); c_it != c_end; ++c_it) {
- if (!modules.contains(*c_it)) {
- modules.append(*c_it);
- }
- }*/
-
- // for (CSwordModuleInfo* m = childMods.first(); m; m = childMods.next()) {
- ListCSwordModuleInfo::iterator end_it = childMods.end();
-
- for (ListCSwordModuleInfo::iterator it(childMods.begin()); it != end_it; ++it) {
- if (!modules.contains(*it)) {
- modules.append(*it);
- }
- }
-
- }
-
- return modules;
-}
-
-const QString CTextRendering::renderKeyTree( KeyTree& tree ) {
- initRendering();
-
- ListCSwordModuleInfo modules = tree.collectModules();
- QString t;
-
- //optimization for entries with the same key
- util::scoped_ptr<CSwordKey> key(
- (modules.count() == 1) ? CSwordKey::createInstance(modules.first()) : 0
- );
-
- for (KeyTreeItem* c = tree.first(); c; c = tree.next()) {
- if (modules.count() == 1) { //this optimizes the rendering, only one key created for all items
- key->key( c->key() );
- t.append( renderEntry( *c, key) );
- }
- else {
- t.append( renderEntry( *c ) );
- }
- }
-
- return finishText(t, tree);
-}
-
-const QString CTextRendering::renderKeyRange( const QString& start, const QString& stop, const ListCSwordModuleInfo& modules, const QString& highlightKey, const KeyTreeItem::Settings& keySettings ) {
-
- CSwordModuleInfo* module = modules.first();
- //qWarning( "renderKeyRange start %s stop %s \n", start.latin1(), stop.latin1() );
-
- util::scoped_ptr<CSwordKey> lowerBound( CSwordKey::createInstance(module) );
- lowerBound->key(start);
-
- util::scoped_ptr<CSwordKey> upperBound( CSwordKey::createInstance(module) );
- upperBound->key(stop);
-
- sword::SWKey* sw_start = dynamic_cast<sword::SWKey*>(lowerBound.get());
- sword::SWKey* sw_stop = dynamic_cast<sword::SWKey*>(upperBound.get());
-
- Q_ASSERT((*sw_start == *sw_stop) || (*sw_start < *sw_stop));
-
- if (*sw_start == *sw_stop) { //same key, render single key
- return renderSingleKey(lowerBound->key(), modules);
- }
- else if (*sw_start < *sw_stop) { // Render range
- KeyTree tree;
- KeyTreeItem::Settings settings = keySettings;
-
- CSwordVerseKey* vk_start = dynamic_cast<CSwordVerseKey*>(lowerBound.get());
- Q_ASSERT(vk_start);
-
- CSwordVerseKey* vk_stop = dynamic_cast<CSwordVerseKey*>(upperBound.get());
- Q_ASSERT(vk_stop);
-
- bool ok = true;
- while (ok && ((*vk_start < *vk_stop) || (*vk_start == *vk_stop))) {
- //make sure the key given by highlightKey gets marked as current key
- settings.highlight = (!highlightKey.isEmpty() ? (vk_start->key() == highlightKey) : false);
-
- /*TODO: We need to take care of linked verses if we render one or (esp) more modules
- If the verses 2,3,4,5 are linked to 1, it should be displayed as one entry with the caption 1-5 */
-
- if (vk_start->Chapter() == 0){ //range was 0:0-1:x, render 0:0 first and jump to 1:0
- vk_start->Verse(0);
- tree.append( new KeyTreeItem(vk_start->key(), modules, settings) );
- vk_start->Chapter(1);
- vk_start->Verse(0);
- }
- tree.append( new KeyTreeItem(vk_start->key(), modules, settings) );
- ok = vk_start->next(CSwordVerseKey::UseVerse);
- }
-
- return renderKeyTree(tree);
- }
-
- return QString::null;
-}
-
-const QString CTextRendering::renderSingleKey( const QString& key, const ListCSwordModuleInfo& moduleList, const KeyTreeItem::Settings& settings ) {
- KeyTree tree;
- tree.append( new KeyTreeItem(key, moduleList, settings) );
-
- return renderKeyTree(tree);
-}
-
-