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

« back to all changes in this revision

Viewing changes to src/backend/managers/cdisplaytemplatemgr.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:
29
29
    namespace DU = util::directory;
30
30
 
31
31
    QStringList filter("*.tmpl");
 
32
    QStringList cssfilter("*.css");
32
33
 
33
34
    // Preload global display templates from disk:
34
35
    QDir td = DU::getDisplayTemplatesDir();
35
 
    Q_FOREACH(QString file, td.entryList(filter, QDir::Files | QDir::Readable))
 
36
    Q_FOREACH(const QString &file, td.entryList(filter, QDir::Files | QDir::Readable))
36
37
        loadTemplate(td.canonicalPath() + "/" + file);
 
38
        
 
39
    // Load app stylesheets
 
40
    Q_FOREACH(const QString &file, td.entryList(cssfilter, QDir::Files | QDir::Readable))
 
41
        loadCSSTemplate(td.canonicalPath() + "/" + file);
37
42
 
38
43
    /*
39
44
      Preload user display templates from disk, overriding any global templates
40
45
      with the same file name:
41
46
    */
42
47
    QDir utd = DU::getUserDisplayTemplatesDir();
43
 
    Q_FOREACH(QString file, utd.entryList(filter, QDir::Files | QDir::Readable))
 
48
    Q_FOREACH(const QString &file, utd.entryList(filter, QDir::Files | QDir::Readable))
44
49
        loadTemplate(utd.canonicalPath() + "/" + file);
45
50
 
46
 
    if (m_templateMap.contains(defaultTemplate())) {
 
51
    if (m_cssMap.contains(defaultTemplateName())) {
47
52
        errorMessage = QString::null;
48
53
    } else {
49
54
        errorMessage = QObject::tr("Default template \"%1\" not found!")
50
 
                       .arg(defaultTemplate());
 
55
                       .arg(defaultTemplateName());
51
56
    }
52
57
}
53
58
 
54
 
const QString CDisplayTemplateMgr::fillTemplate( const QString& name, const QString& content, Settings& settings ) {
55
 
    qDebug() << "CDisplayTemplateMgr::fillTemplate";
56
 
 
57
 
    const QString templateName = m_templateMap.contains(name) ? name : defaultTemplate();
 
59
QString CDisplayTemplateMgr::fillTemplate(const QString &name,
 
60
                                          const QString &content,
 
61
                                          const Settings &settings)
 
62
{
 
63
    const QString templateName = m_cssMap.contains(name) ? name : defaultTemplateName();
58
64
 
59
65
    QString displayTypeString;
 
66
    QString moduleName;
60
67
 
61
68
    if (!settings.pageCSS_ID.isEmpty()) {
62
69
        displayTypeString = settings.pageCSS_ID;
 
70
        moduleName = "";
63
71
    }
64
72
    else {
65
73
        if (settings.modules.count()) {
79
87
                    displayTypeString = "singleentry";
80
88
                    break;
81
89
            };
 
90
            moduleName = settings.modules.first()->name();
82
91
        }
83
92
        else { //use bible as default type if no modules are set
84
93
            displayTypeString = "bible";
 
94
            moduleName = "";
85
95
        };
86
96
    }
87
97
 
93
103
        qDebug() << "There were more than 1 module, create headers";
94
104
        QString header;
95
105
 
96
 
        QList<const CSwordModuleInfo*>::iterator end_it = settings.modules.end();
97
 
 
98
 
        for (QList<const CSwordModuleInfo*>::iterator it(settings.modules.begin()); it != end_it; ++it) {
 
106
        Q_FOREACH(const CSwordModuleInfo *mi, settings.modules) {
99
107
            header.append("<th style=\"width:")
100
108
            .append(QString::number(int( 100.0 / (float)moduleCount )))
101
109
            .append("%;\">")
102
 
            .append((*it)->name())
 
110
            .append(mi->name())
103
111
            .append("</th>");
104
112
        }
105
113
 
113
121
    QString langCSS;
114
122
    CLanguageMgr::LangMap langMap = CLanguageMgr::instance()->availableLanguages();
115
123
 
116
 
    qDebug() << "langMap length:" << langMap.count();
117
 
    qDebug() << "loop through langMap";
118
124
    foreach(const CLanguageMgr::Language* lang, langMap) {
119
125
        //const CLanguageMgr::Language* lang = *it;
120
 
        //qDebug() << "foreach, lang: ";
121
 
        //qDebug() << lang;
122
126
 
123
127
        //if (lang->isValid() && CBTConfig::get(lang).first) {
124
128
        if (!lang->abbrev().isEmpty() && CBTConfig::get(lang).first) {
154
158
            .arg(standardFont.italic() ? "italic" : "normal")
155
159
        );
156
160
    }
 
161
    
 
162
    // Template stylesheet
 
163
    
157
164
 
158
165
//     qWarning("Outputing unformated text");
159
 
    const QString t = QString(m_templateMap[ templateName ]) //don't change the map's content directly, use  a copy
 
166
    const QString t = QString(m_templateMap[ "Basic.tmpl" ]) //don't change the map's content directly, use  a copy
160
167
                      .replace("#TITLE#", settings.title)
161
168
                      .replace("#LANG_ABBREV#", settings.langAbbrev.isEmpty() ? QString("en") : settings.langAbbrev)
162
169
                      .replace("#DISPLAYTYPE#", displayTypeString)
163
170
                      .replace("#LANG_CSS#", langCSS)
164
171
                      .replace("#PAGE_DIRECTION#", settings.pageDirection)
165
 
                      .replace("#CONTENT#", newContent);
 
172
                      .replace("#CONTENT#", newContent)
 
173
                      .replace("#THEME_STYLE#", m_cssMap[ templateName ])
 
174
                      .replace("#MODTYPE#", displayTypeString)
 
175
                      .replace("#MODNAME#", moduleName)
 
176
                      .replace("#MODULE_STYLESHEET#", QString(""));     // Let's fix this!
166
177
 
167
178
    return t;
168
179
}
169
180
 
 
181
QString CDisplayTemplateMgr::activeTemplateName() {
 
182
    const QString tn = CBTConfig::get(CBTConfig::displayStyle);
 
183
    if (tn.isEmpty())
 
184
        return defaultTemplateName();
 
185
 
 
186
    return tn;
 
187
}
 
188
 
170
189
void CDisplayTemplateMgr::loadTemplate(const QString &filename) {
171
190
    QFile f(filename);
172
191
    if (f.open(QIODevice::ReadOnly)) {
177
196
        }
178
197
    }
179
198
}
 
199
 
 
200
void CDisplayTemplateMgr::loadCSSTemplate(const QString &filename) {
 
201
    QFile f(filename);
 
202
    m_cssMap[QFileInfo(f).fileName()] = QString("file://") + filename;
 
203
}