~ubuntu-branches/ubuntu/trusty/bibletime/trusty

« back to all changes in this revision

Viewing changes to src/backend/rendering/ctextrendering.cpp

  • Committer: Package Import Robot
  • Author(s): Dmitrijs Ledkovs, Jonathan Marsden, Dmitrijs Ledkovs
  • Date: 2012-04-14 18:11:50 UTC
  • mfrom: (1.3.7)
  • Revision ID: package-import@ubuntu.com-20120414181150-17l2liq7bl7oaxjz
Tags: 2.9.1-1
[ Jonathan Marsden ]
* New upstream version 2.9.1
* debian/patches/*: Remove all patches (incorporated upstream)
* debian/control: bibletime now depends on a matching version of
  bibletime-data.

[ Dmitrijs Ledkovs ]
* Add more strict alternative build-dependency on the libqt4-dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
74
74
        m_key( i.m_key ),
75
75
        m_childList(),
76
76
        m_stopKey( i.m_stopKey ),
77
 
        m_alternativeContent( i.m_alternativeContent ) {
78
 
    foreach(KeyTreeItem* item, (*i.childList())) {
 
77
        m_alternativeContent( i.m_alternativeContent )
 
78
{
 
79
    const KeyTree &tree = *i.childList();
 
80
    Q_FOREACH (const KeyTreeItem * const item, tree) {
79
81
        m_childList.append(new KeyTreeItem((*item))); //deep copy
80
82
    }
81
83
 
134
136
    else {
135
137
        sword::VerseKey vk(startKey.toUtf8().constData(), stopKey.toUtf8().constData());
136
138
 
137
 
        if (vk.LowerBound().Book() != vk.UpperBound().Book()) {
 
139
        if (vk.LowerBound().getBook() != vk.UpperBound().getBook()) {
138
140
            m_alternativeContent = QString::fromUtf8(vk.getRangeText());
139
141
        }
140
 
        else if (vk.LowerBound().Chapter() != vk.UpperBound().Chapter()) {
 
142
        else if (vk.LowerBound().getChapter() != vk.UpperBound().getChapter()) {
141
143
            m_alternativeContent = QString("%1 - %2:%3")
142
144
                                   .arg(QString::fromUtf8(vk.LowerBound().getText()))
143
 
                                   .arg(vk.UpperBound().Chapter())
144
 
                                   .arg(vk.UpperBound().Verse());
 
145
                                   .arg(vk.UpperBound().getChapter())
 
146
                                   .arg(vk.UpperBound().getVerse());
145
147
        }
146
148
        else { //only verses differ (same book, same chapter)
147
149
            m_alternativeContent = QString("%1 - %2")
148
150
                                   .arg(QString::fromUtf8(vk.LowerBound().getText()))
149
 
                                   .arg(vk.UpperBound().Verse());
 
151
                                   .arg(vk.UpperBound().getVerse());
150
152
        }
151
153
    }
152
154
 
154
156
    m_alternativeContent.prepend("<div class=\"rangeheading\" dir=\"ltr\">").append("</div>"); //insert the right tags
155
157
}
156
158
 
157
 
const QString& CTextRendering::KeyTreeItem::getAlternativeContent() const {
158
 
    return m_alternativeContent;
159
 
}
160
 
 
161
 
const QList<const CSwordModuleInfo*> CTextRendering::collectModules(KeyTree* const tree) const {
 
159
QList<const CSwordModuleInfo*> CTextRendering::collectModules(const KeyTree &tree) const {
162
160
    //collect all modules which are available and used by child items
163
161
    QList<const CSwordModuleInfo*> modules;
164
162
 
165
 
    foreach (KeyTreeItem* c, (*tree)) {
166
 
        Q_ASSERT(c);
167
 
        foreach (const CSwordModuleInfo* mod, c->modules()) {
168
 
            if (!modules.contains(mod)) {
 
163
    Q_FOREACH (const KeyTreeItem * const c, tree) {
 
164
        Q_ASSERT(c != 0);
 
165
        Q_FOREACH (const CSwordModuleInfo * const mod, c->modules()) {
 
166
            if (!modules.contains(mod))
169
167
                modules.append(mod);
170
 
            }
171
168
        }
172
169
    }
173
170
    return modules;
174
171
}
175
172
 
176
 
const QString CTextRendering::renderKeyTree( KeyTree& tree ) {
 
173
const QString CTextRendering::renderKeyTree(const KeyTree &tree) {
177
174
    initRendering();
178
175
 
179
 
    QList<const CSwordModuleInfo*> modules = collectModules(&tree);
 
176
    const QList<const CSwordModuleInfo*> modules = collectModules(tree);
180
177
    QString t;
181
178
 
182
179
    //optimization for entries with the same key
185
182
    );
186
183
 
187
184
    if (modules.count() == 1) { //this optimizes the rendering, only one key created for all items
188
 
        foreach (KeyTreeItem* c, tree) {
 
185
        Q_FOREACH (const KeyTreeItem * const c, tree) {
189
186
            key->setKey(c->key());
190
187
            t.append( renderEntry( *c, key.data()) );
191
188
        }
192
189
    }
193
190
    else {
194
 
        foreach (KeyTreeItem* c, tree) {
 
191
        Q_FOREACH (const KeyTreeItem * const c, tree) {
195
192
            t.append( renderEntry( *c ) );
196
193
        }
197
194
    }
245
242
                      it should be displayed as one entry with the caption 1-5.
246
243
            */
247
244
 
248
 
            if (vk_start->Chapter() == 0) { //range was 0:0-1:x, render 0:0 first and jump to 1:0
249
 
                vk_start->Verse(0);
 
245
            if (vk_start->getChapter() == 0) { // range was 0:0-1:x, render 0:0 first and jump to 1:0
 
246
                vk_start->setVerse(0);
250
247
                tree.append( new KeyTreeItem(vk_start->key(), modules, settings) );
251
 
                vk_start->Chapter(1);
252
 
                vk_start->Verse(0);
 
248
                vk_start->setChapter(1);
 
249
                vk_start->setVerse(0);
253
250
            }
254
251
            tree.append( new KeyTreeItem(vk_start->key(), modules, settings) );
255
252
            ok = vk_start->next(CSwordVerseKey::UseVerse);
256
253
        }
257
 
        const QString renderedText = renderKeyTree(tree);
258
 
        qDeleteAll(tree);
259
 
        return renderedText;
 
254
        return renderKeyTree(tree);
260
255
    }
261
256
 
262
257
    return QString::null;
270
265
    KeyTree tree;
271
266
    tree.append( new KeyTreeItem(key, modules, settings) );
272
267
 
273
 
    const QString renderedText = renderKeyTree(tree);
274
 
    qDeleteAll(tree);
275
 
    return renderedText;
 
268
    return renderKeyTree(tree);
276
269
}