Remove xmlpatterns.

This commit is contained in:
Martin Rotter 2013-12-24 16:13:43 +01:00
parent 81ec000e48
commit 2fdd613805
5 changed files with 40 additions and 28 deletions

View file

@ -422,7 +422,7 @@ if(${USE_QT_5})
Sql
Network
Xml
XmlPatterns
#XmlPatterns
WebKit
WebKitWidgets
)
@ -443,7 +443,7 @@ else(${USE_QT_5})
${QT_QTNETWORK_LIBRARY}
${QT_QTSQL_LIBRARY}
${QT_QTXML_LIBRARY}
${QT_QTXMLPATTERNS_LIBRARY}
#${QT_QTXMLPATTERNS_LIBRARY}
${QT_QTMAIN_LIBRARY}
${QT_QTWEBKIT_LIBRARY}
)

View file

@ -17,6 +17,10 @@ class Message {
QString m_author;
QString m_contents;
QDateTime m_created;
// Is true if "created" date was obtained directly
// from the feed, otherwise is false
bool m_createdFromFeed;
};
class MessagesModel : public QSqlTableModel {

View file

@ -9,9 +9,15 @@
ParsingFactory::ParsingFactory() {
}
QList<Message> ParsingFactory::parseAsATOM10(const QString &data) {
// TODO: Implement this.
return QList<Message>();
}
QList<Message> ParsingFactory::parseAsRSS20(const QString &data) {
QList<Message> messages;
QDomDocument xml_file;
QDateTime current_time = QDateTime::currentDateTime();
xml_file.setContent(data, true);
QDomNodeList messages_in_xml = xml_file.elementsByTagName("item");
@ -49,6 +55,13 @@ QList<Message> ParsingFactory::parseAsRSS20(const QString &data) {
}
new_message.m_created = TextFactory::parseDateTime(elem_updated.text());
new_message.m_createdFromFeed = !new_message.m_created.isNull();
if (!new_message.m_createdFromFeed) {
// Date was NOT obtained from the feed,
// set current date as creation date for the message.
new_message.m_created = current_time;
}
messages.append(new_message);
}

View file

@ -10,8 +10,10 @@
// parse input Unicode textual data into
// another objects.
//
// NOTE: Each parsed message MUST CONTAINT THESE FIELDS.
// NOTE: Each parsed message MUST CONTAINT THESE FIELDS (fields
// of Message class:
// a) m_created,
// b) m_title.
class ParsingFactory {
private:
// Constructors and destructors.
@ -20,6 +22,7 @@ class ParsingFactory {
public:
// Parses input textual data into Message objects.
// NOTE: Input is correctly encoded in Unicode.
static QList<Message> parseAsATOM10(const QString &data);
static QList<Message> parseAsRSS20(const QString &data);
};

View file

@ -6,8 +6,9 @@
#include <QApplication>
#include <QDomDocument>
#include <QDir>
#include <QXmlQuery>
#include <QStyleFactory>
#include <QDomDocument>
#include <QDomElement>
QPointer<SkinFactory> SkinFactory::s_instance;
@ -43,7 +44,7 @@ void SkinFactory::loadCurrentSkin() {
else {
// TODO: Change this to qFatal once code is stable.
qWarning("Skin '%s' not loaded because its data are corrupted. No skin is loaded now!",
qPrintable(skin_name_from_settings));
qPrintable(skin_name_from_settings));
}
}
@ -105,11 +106,11 @@ QString SkinFactory::getCurrentMarkup() {
Skin SkinFactory::getSkinInfo(const QString &skin_name, bool *ok) {
Skin skin;
QXmlQuery query;
QString styles;
QFile skin_file(APP_SKIN_PATH + QDir::separator() + skin_name);
QDomDocument dokument;
if (!skin_file.open(QIODevice::Text | QIODevice::ReadOnly) || !query.setFocus(&skin_file)) {
if (!skin_file.open(QIODevice::Text | QIODevice::ReadOnly) || !dokument.setContent(&skin_file, true)) {
if (ok) {
*ok = false;
}
@ -117,39 +118,30 @@ Skin SkinFactory::getSkinInfo(const QString &skin_name, bool *ok) {
return skin;
}
QDomNode skin_node = dokument.namedItem("skin");
// Obtain visible skin name.
query.setQuery("string(skin/name)");
query.evaluateTo(&skin.m_visibleName);
skin.m_visibleName = skin.m_visibleName.remove('\n');
skin.m_visibleName = skin_node.namedItem("name").toElement().text();
// Obtain skin raw data.
query.setQuery("string(skin/data)");
query.evaluateTo(&skin.m_rawData);
skin.m_rawData = skin_node.namedItem("data").toElement().text();
skin.m_rawData = QByteArray::fromBase64(skin.m_rawData.toLocal8Bit());
// Obtain style name.
query.setQuery("string(/skin/style)");
query.evaluateTo(&styles);
skin.m_stylesNames = styles.remove('\n').split(',', QString::SkipEmptyParts);
styles = skin_node.namedItem("style").toElement().text();
skin.m_stylesNames = styles.split(',', QString::SkipEmptyParts);
// Obtain author.
query.setQuery("string(/skin/author/name)");
query.evaluateTo(&skin.m_author);
skin.m_author = skin.m_author.remove('\n');
skin.m_author = skin_node.namedItem("author").namedItem("name").toElement().text();
// Obtain email.
query.setQuery("string(/skin/author/email)");
query.evaluateTo(&skin.m_email);
skin.m_email = skin.m_email.remove('\n');
skin.m_email = skin_node.namedItem("author").namedItem("email").toElement().text();
// Obtain version.
query.setQuery("string(/skin/@version)");
query.evaluateTo(&skin.m_version);
skin.m_version = skin.m_version.remove('\n');
skin.m_version = skin_node.attributes().namedItem("version").toAttr().value();
// Obtain layout markup.
query.setQuery("string(/skin/markup)");
query.evaluateTo(&skin.m_layoutMarkup);
skin.m_layoutMarkup = skin_node.namedItem("markup").toElement().text();
skin.m_layoutMarkup = QByteArray::fromBase64(skin.m_layoutMarkup.toLocal8Bit());
// Obtain other information.
@ -180,7 +172,7 @@ QList<Skin> SkinFactory::getInstalledSkins() {
foreach (const QString &base_directory, skin_directories) {
// Check skins installed in this base directory.
QStringList skin_files = QDir(APP_SKIN_PATH + QDir::separator() + base_directory).entryList(QStringList() << "*.xml",
QDir::Files | QDir::Readable | QDir::NoDotAndDotDot | QDir::NoSymLinks);
QDir::Files | QDir::Readable | QDir::NoDotAndDotDot | QDir::NoSymLinks);
foreach (const QString &skin_file, skin_files) {
// Check if skin file is valid and add it if it is valid.