• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.12
  • kdeedu
  • marble
  • src
  • lib
  • marble
TemplateDocument.cpp
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Project.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2012 Illya Kovalevskyy <illya.kovalevskyy@gmail.com>
9 //
10 
11 #include "TemplateDocument.h"
12 
13 #include <QMap>
14 #include <QString>
15 #include <QDir>
16 #include <QRegExp>
17 
18 #include "MarbleDebug.h"
19 
20 namespace Marble
21 {
22 
23 class TemplateDocumentPrivate
24 {
25 public:
26  TemplateDocumentPrivate()
27  {
28  }
29  QString templateText;
30  QMap<QString, QString> templateEntries;
31  void processTemplateIncludes(QString &input) const;
32 };
33 
34 void TemplateDocumentPrivate::processTemplateIncludes(QString &input) const
35 {
36  QRegExp rx("%!\\{([^}]*)\\}%");
37 
38  QStringList includes;
39  int pos = 0;
40 
41  while ((pos = rx.indexIn(input, pos)) != -1) {
42  includes << rx.cap(1);
43  pos += rx.matchedLength();
44  }
45 
46  foreach (const QString &include, includes) {
47  QFile includeFile(":/htmlfeatures/includes/"+include+".inc");
48  if (includeFile.open(QIODevice::ReadOnly)) {
49  input.replace("%!{" + include + "}%", includeFile.readAll());
50  } else {
51  mDebug() << "[WARNING] Can't process template include" << include;
52  }
53  }
54 }
55 
56 TemplateDocument::TemplateDocument() :
57  d(new TemplateDocumentPrivate)
58 {
59 }
60 
61 TemplateDocument::TemplateDocument(const QString &templateText) :
62  d(new TemplateDocumentPrivate)
63 {
64  setTemplate(templateText);
65 }
66 
67 TemplateDocument::~TemplateDocument()
68 {
69  delete d;
70 }
71 
72 void TemplateDocument::setTemplate(const QString &newTemplateText)
73 {
74  d->templateText = newTemplateText;
75 }
76 
77 QString TemplateDocument::value(const QString &key) const
78 {
79  return d->templateEntries[key];
80 }
81 
82 void TemplateDocument::setValue(const QString &key, const QString &value)
83 {
84  d->templateEntries[key] = value;
85 }
86 
87 QString& TemplateDocument::operator[](const QString &key)
88 {
89  return d->templateEntries[key];
90 }
91 
92 QString TemplateDocument::finalText() const
93 {
94  QString ready = d->templateText;
95  foreach (const QString &key, d->templateEntries.keys()) {
96  ready.replace("%" + key + "%", d->templateEntries[key]);
97  }
98  d->processTemplateIncludes(ready);
99  return ready;
100 }
101 
102 } // namespace Marble
Marble::TemplateDocument::value
QString value(const QString &key) const
Returns the current template value of key.
Definition: TemplateDocument.cpp:77
Marble::TemplateDocument::setTemplate
void setTemplate(const QString &newTemplateText)
Set template text.
Definition: TemplateDocument.cpp:72
Marble::TemplateDocument::TemplateDocument
TemplateDocument()
Definition: TemplateDocument.cpp:56
Marble::TemplateDocument::~TemplateDocument
~TemplateDocument()
Definition: TemplateDocument.cpp:67
MarbleDebug.h
Marble::TemplateDocument::operator[]
QString & operator[](const QString &key)
Indexator for template values.
Definition: TemplateDocument.cpp:87
Marble::TemplateDocument::finalText
QString finalText() const
Final proceed text.
Definition: TemplateDocument.cpp:92
TemplateDocument.h
Marble::TemplateDocument::setValue
void setValue(const QString &key, const QString &value)
Change set template value into new one.
Definition: TemplateDocument.cpp:82
Marble::mDebug
QDebug mDebug()
a function to replace qDebug() in Marble library code
Definition: MarbleDebug.cpp:31
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:38:53 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal