summaryrefslogtreecommitdiff
path: root/src/backend/rendering/cdisplayrendering.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/rendering/cdisplayrendering.cpp')
-rw-r--r--src/backend/rendering/cdisplayrendering.cpp86
1 files changed, 62 insertions, 24 deletions
diff --git a/src/backend/rendering/cdisplayrendering.cpp b/src/backend/rendering/cdisplayrendering.cpp
index cbcc046..283336a 100644
--- a/src/backend/rendering/cdisplayrendering.cpp
+++ b/src/backend/rendering/cdisplayrendering.cpp
@@ -2,20 +2,20 @@
*
* This file is part of BibleTime's source code, http://www.bibletime.info/.
*
-* Copyright 1999-2014 by the BibleTime developers.
+* Copyright 1999-2016 by the BibleTime developers.
* The BibleTime source code is licensed under the GNU General Public License version 2.0.
*
**********/
-#include "backend/rendering/cdisplayrendering.h"
+#include "cdisplayrendering.h"
-#include <QString>
#include <QRegExp>
-#include "backend/keys/cswordkey.h"
-#include "backend/keys/cswordversekey.h"
-#include "backend/managers/cdisplaytemplatemgr.h"
-#include "backend/managers/referencemanager.h"
-#include "backend/config/btconfig.h"
+#include <QString>
+#include "../config/btconfig.h"
+#include "../keys/cswordkey.h"
+#include "../keys/cswordversekey.h"
+#include "../managers/cdisplaytemplatemgr.h"
+#include "../managers/referencemanager.h"
namespace Rendering {
@@ -37,7 +37,7 @@ QString CDisplayRendering::entryLink(const KeyTreeItem &item,
vk.setIntros(true);
if (isBible) {
- vk.setKey(item.key());
+ vk.setKey(item.mappedKey() ? item.mappedKey()->key() : item.key());
}
if (isBible && (vk.getVerse() == 0)) {
@@ -51,16 +51,30 @@ QString CDisplayRendering::entryLink(const KeyTreeItem &item,
break; //no key is valid for all modules
}
- case KeyTreeItem::Settings::CompleteShort: {
- if (isBible) {
- linkText = QString::fromUtf8(vk.getShortText());
- break;
- }
+ case KeyTreeItem::Settings::ExpandedShort: {
+ if (isBible) {
+ linkText = module->name() + ':' + QString::fromUtf8(vk.getShortText());
+ break;
+ }
+ }
- //fall through for non-Bible modules
+ case KeyTreeItem::Settings::CompleteShort: {
+ if (isBible) {
+ linkText = QString::fromUtf8(vk.getShortText());
+ break;
}
- case KeyTreeItem::Settings::CompleteLong: {
+ //fall through for non-Bible modules
+ }
+
+ case KeyTreeItem::Settings::ExpandedLong: {
+ if (isBible) {
+ linkText = QString("%1 (%2)").arg(vk.key()).arg(module->name());
+ break;
+ }
+ }
+
+ case KeyTreeItem::Settings::CompleteLong: {
if (isBible) {
linkText = vk.key();
break;
@@ -69,14 +83,38 @@ QString CDisplayRendering::entryLink(const KeyTreeItem &item,
//fall through for non-Bible modules
}
- case KeyTreeItem::Settings::SimpleKey: {
+ case KeyTreeItem::Settings::SimpleKey:
if (isBible) {
- linkText = QString::number(vk.getVerse());
+ if(item.mappedKey() != nullptr) {
+ CSwordVerseKey baseKey(*item.modules().begin());
+ baseKey.setKey(item.key());
+
+ if (vk.book() != baseKey.book()) {
+ linkText = QString::fromUtf8(vk.getShortText());
+ } else if (vk.getChapter() != baseKey.getChapter()) {
+ linkText = QString("%1:%2").arg(vk.getChapter()).arg(vk.getVerse());
+ } else {
+ linkText = QString::number(vk.getVerse());
+ }
+
+ if(vk.isBoundSet()) {
+ linkText += "-";
+ sword::VerseKey const upper = vk.getUpperBound();
+ sword::VerseKey const lower = vk.getLowerBound();
+ if (upper.getBook() != lower.getBook()) {
+ linkText += QString::fromUtf8(upper.getShortText());
+ } else if(upper.getChapter() != lower.getChapter()) {
+ linkText += QString("%1:%2").arg(upper.getChapter())
+ .arg(lower.getVerse());
+ } else {
+ linkText += QString::number(upper.getVerse());
+ }
+ }
+ } else {
+ linkText = QString::number(vk.getVerse());
+ }
break;
- }
-
- //fall through for non-Bible modules
- }
+ } // else fall through for non-Bible modules
default: { //default behaviour to return the passed key
linkText = item.key();
@@ -107,7 +145,7 @@ QString CDisplayRendering::keyToHTMLAnchor(const QString& key) {
}
QString CDisplayRendering::finishText(const QString &text, const KeyTree &tree) {
- QList<const CSwordModuleInfo*> modules = collectModules(tree);
+ BtConstModuleList modules = collectModules(tree);
//marking words is very slow, we have to find a better solution
@@ -144,7 +182,7 @@ QString CDisplayRendering::finishText(const QString &text, const KeyTree &tree)
CDisplayTemplateMgr *tMgr = CDisplayTemplateMgr::instance();
- //Q_ASSERT(modules.count() >= 1);
+ //BT_ASSERT(modules.count() >= 1);
CDisplayTemplateMgr::Settings settings;
settings.modules = modules;