summaryrefslogtreecommitdiffstats
path: root/src/template.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/template.cpp')
-rw-r--r--src/template.cpp175
1 files changed, 175 insertions, 0 deletions
diff --git a/src/template.cpp b/src/template.cpp
new file mode 100644
index 0000000..8c5090d
--- /dev/null
+++ b/src/template.cpp
@@ -0,0 +1,175 @@
+/***************************************************************************
+ File: template.cpp
+ Project: Kio-Sword -- An ioslave for SWORD and KDE
+ Copyright: Copyright (C) 2005 Luke Plant
+ ***************************************************************************/
+
+/***************************************************************************
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#include "template.h"
+#include "utils.h"
+#include "swordoptions.h"
+
+#include <kglobal.h>
+#include <klocale.h>
+#include <kstandarddirs.h>
+
+#include <qstring.h>
+
+namespace KioSword {
+
+
+ // placeholders
+ static const char* PAGETITLE = "{$pagetitle}";
+ static const char* BASECSS = "{$basecss}";
+ static const char* CONTENT = "{$content}";
+ static const char* HOMELINK = "{$homelink}";
+ static const char* HOMELINKCAPTION = "{$homelinkcaption}";
+ static const char* SEARCHLINK = "{$searchlink}";
+ static const char* SEARCHLINKCAPTION = "{$searchlinkcaption}";
+ static const char* SETTINGSLINK = "{$settingslink}";
+ static const char* SETTINGSLINKCAPTION = "{$settingslinkcaption}";
+ static const char* HELPLINK = "{$helplink}";
+ static const char* HELPLINKCAPTION = "{$helplinkcaption}";
+ static const char* TOPNAV = "{$topnav}";
+ static const char* BOTTOMNAV = "{$bottomnav}";
+ static const char* TOGGLES = "{$toggles}";
+
+ // static HTML fragments -------------------------------------------------------------------------------------------------------
+ static const QString &html_page(QString("") +
+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" " // make W3C valid
+ "\"http://www.w3.org/TR/html4/strict.dtd\">\n"
+ "<html><head>\n"
+ "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>\n"
+ "<title>" + PAGETITLE + "</title>\n"
+ "<link rel=\"StyleSheet\" href=\"file:" + BASECSS + "\" TYPE=\"text/css\">\n"
+ "</head>\n"
+ "<body class=\"kiosword\">"
+ "<div class=\"page\"><div class='inner'>"
+ " " + TOPNAV + "\n"
+ " <div class=\"content\"><div class='inner'>" + CONTENT + "</div></div>\n"
+ " " + TOGGLES + "\n"
+ " " + BOTTOMNAV + "\n"
+ " <div class=\"links\"><div class='inner'>\n"
+ " <ul>\n"
+ " <li><a accesskey=\"t\" href=\"" + HOMELINK + "\">" + HOMELINKCAPTION + "</a></li>\n"
+ " <li><a href=\"" + SEARCHLINK + "\">" + SEARCHLINKCAPTION + "</a></li>\n"
+ " <li><a href=\"" + SETTINGSLINK + "\">" + SETTINGSLINKCAPTION + "</a></li>\n"
+ " <li><a href=\"" + HELPLINK + "\">" + HELPLINKCAPTION + "</a></li>\n"
+ " </ul>\n"
+ " </div></div>\n"
+ "</div></div>\n"
+ "</body>\n"
+ "</html>\n");
+
+ Template::Template()
+ {
+ m_showToggles = false;
+ }
+
+ QCString Template::render(const SwordOptions& options) const
+ {
+
+ QString cssdir = KGlobal::dirs()->findResourceDir("data", "kio_sword/kio_sword.css") + "kio_sword/";
+
+ QString output = html_page;
+ output = output
+ .replace(HOMELINK, swordUrl("", options))
+ .replace(HOMELINKCAPTION, i18n("Module list"))
+ .replace(SEARCHLINK, swordUrlForPage("search", options))
+ .replace(SEARCHLINKCAPTION, i18n("Search"))
+ .replace(SETTINGSLINK, swordUrlForSettings(m_currentPath, options))
+ .replace(SETTINGSLINKCAPTION, i18n("Settings"))
+ .replace(HELPLINK, swordUrlForPage("help", options))
+ .replace(HELPLINKCAPTION, i18n("Help"))
+ .replace(BASECSS, cssdir + "kio_sword.css")
+ .replace(PAGETITLE, m_title)
+ .replace(CONTENT, m_content);
+ if (!m_nav.isEmpty())
+ {
+ output = output
+ .replace(TOPNAV, "<div class='navtop'><div class='inner'>" + m_nav + "</div></div>")
+ .replace(BOTTOMNAV, "<div class='navbottom'><div class='inner'>" + m_nav + "</div></div>");
+ }
+ else
+ {
+ output = output
+ .replace(TOPNAV, "")
+ .replace(BOTTOMNAV, "");
+ }
+ if (m_showToggles)
+ {
+ QString toggles;
+ SwordOptions toggledOptions(options);
+
+ toggledOptions.verseNumbers.set(!toggledOptions.verseNumbers());
+ toggles += "<li><a href=\"" + swordUrl(m_currentPath, toggledOptions) + "\" accesskey='v'>"
+ + i18n("Verse Numbers") + "</a></li>";
+ toggledOptions.verseNumbers.set(!toggledOptions.verseNumbers());
+
+ toggledOptions.verseLineBreaks.set(!toggledOptions.verseLineBreaks());
+ toggles += "<li><a href=\"" + swordUrl(m_currentPath, toggledOptions) + "\" accesskey='l'>"
+ + i18n("Verse Line Breaks") + "</a></li>";
+ toggledOptions.verseLineBreaks.set(!toggledOptions.verseLineBreaks());
+
+ toggledOptions.strongs.set(!toggledOptions.strongs());
+ toggles += "<li><a href=\"" + swordUrl(m_currentPath, toggledOptions) + "\" accesskey='s'>"
+ + i18n("Strongs") + "</a></li>";
+ toggledOptions.strongs.set(!toggledOptions.strongs());
+
+ toggledOptions.morph.set(!toggledOptions.morph());
+ toggles += "<li><a href=\"" + swordUrl(m_currentPath, toggledOptions) + "\" accesskey='m'>"
+ + i18n("Morphological tags") + "</a></li>";
+ toggledOptions.morph.set(!toggledOptions.morph());
+
+ output = output.replace(TOGGLES, "<div class='toggles'><div class='inner'><ul>" + toggles + "</ul></div></div>");
+
+ }
+ else
+ {
+ output = output.replace(TOGGLES, "");
+ }
+ return output.utf8();
+ }
+
+ void Template::setTitle(const QString& title)
+ {
+ m_title = title;
+ }
+
+ void Template::setContent(const QString& content)
+ {
+ m_content = content;
+ }
+
+ void Template::setNav(const QString& nav)
+ {
+ m_nav = nav;
+ }
+
+ void Template::setCurrentPath(const QString& currentPath)
+ {
+ m_currentPath = currentPath;
+ }
+
+ void Template::setShowToggles(bool showToggles)
+ {
+ m_showToggles = showToggles;
+ }
+}
+