1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
/*********
*
* This file is part of BibleTime's source code, http://www.bibletime.info/.
*
* Copyright 1999-2014 by the BibleTime developers.
* The BibleTime source code is licensed under the GNU General Public License version 2.0.
*
**********/
#include "backend/rendering/cchapterdisplay.h"
#include "backend/drivers/cswordbiblemoduleinfo.h"
#include "backend/keys/cswordversekey.h"
#include "backend/rendering/cdisplayrendering.h"
const QString Rendering::CChapterDisplay::text(
const QList<const CSwordModuleInfo*> &modules,
const QString &keyName,
const DisplayOptions &displayOptions,
const FilterOptions &filterOptions)
{
typedef CSwordBibleModuleInfo CSBMI;
Q_ASSERT( modules.count() >= 1 );
Q_ASSERT( !keyName.isEmpty() );
const CSwordModuleInfo *module = modules.first();
if (modules.count() == 1) module->module()->setSkipConsecutiveLinks( true ); //skip empty, linked verses
CTextRendering::KeyTreeItem::Settings settings;
settings.keyRenderingFace =
displayOptions.verseNumbers
? CTextRendering::KeyTreeItem::Settings::SimpleKey
: CTextRendering::KeyTreeItem::Settings::NoKey;
QString startKey = keyName;
QString endKey = startKey;
//check whether there's an intro we have to include
Q_ASSERT((module->type() == CSwordModuleInfo::Bible));
if (module->type() == CSwordModuleInfo::Bible) {
((sword::VerseKey*)(module->module()->getKey()))->setIntros(true); //HACK: enable headings for VerseKeys
Q_ASSERT(dynamic_cast<const CSBMI*>(module) != 0);
const CSBMI *bible = static_cast<const CSBMI*>(module);
CSwordVerseKey k1(module);
k1.setIntros(true);
k1.setKey(keyName);
if (k1.getChapter() == 1)
k1.setChapter(0); // Chapter 1, start with 0:0, otherwise X:0
k1.setVerse(0);
startKey = k1.key();
if (k1.getChapter() == 0)
k1.setChapter(1);
k1.setVerse(bible->verseCount(k1.book(), k1.getChapter()));
endKey = k1.key();
}
CDisplayRendering render(displayOptions, filterOptions);
return render.renderKeyRange( startKey, endKey, modules, keyName, settings );
}
|