mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-06-24 14:40:53 -04:00
Move core/Parser to format/KeePass2XmlReader and core/Writer to format/KeePass2XmlWriter.
This commit is contained in:
parent
3bf0564436
commit
ee4c2c3dd4
9 changed files with 82 additions and 83 deletions
|
@ -22,10 +22,10 @@ set(keepassx_SOURCES
|
||||||
core/Entry.cpp
|
core/Entry.cpp
|
||||||
core/Group.cpp
|
core/Group.cpp
|
||||||
core/Metadata.cpp
|
core/Metadata.cpp
|
||||||
core/Parser.cpp
|
|
||||||
core/TimeInfo.cpp
|
core/TimeInfo.cpp
|
||||||
core/Uuid.cpp
|
core/Uuid.cpp
|
||||||
core/Writer.cpp
|
format/KeePass2XmlReader.cpp
|
||||||
|
format/KeePass2XmlWriter.cpp
|
||||||
gui/DatabaseWidget.cpp
|
gui/DatabaseWidget.cpp
|
||||||
gui/EntryModel.cpp
|
gui/EntryModel.cpp
|
||||||
gui/EntryView.cpp
|
gui/EntryView.cpp
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#include <QtCore/QXmlStreamReader>
|
#include <QtCore/QXmlStreamReader>
|
||||||
|
|
||||||
#include "Metadata.h"
|
#include "Metadata.h"
|
||||||
#include "Parser.h"
|
|
||||||
|
|
||||||
Database::Database()
|
Database::Database()
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,21 +15,21 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Parser.h"
|
#include "KeePass2XmlReader.h"
|
||||||
|
|
||||||
#include <QtCore/QDebug>
|
#include <QtCore/QDebug>
|
||||||
#include <QtCore/QFile>
|
#include <QtCore/QFile>
|
||||||
|
|
||||||
#include "Database.h"
|
#include "core/Database.h"
|
||||||
#include "Metadata.h"
|
#include "core/Metadata.h"
|
||||||
|
|
||||||
Parser::Parser(Database* db)
|
KeePass2XmlReader::KeePass2XmlReader(Database* db)
|
||||||
{
|
{
|
||||||
m_db = db;
|
m_db = db;
|
||||||
m_meta = db->metadata();
|
m_meta = db->metadata();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Parser::parse(const QString& filename)
|
bool KeePass2XmlReader::parse(const QString& filename)
|
||||||
{
|
{
|
||||||
QFile file(filename);
|
QFile file(filename);
|
||||||
file.open(QIODevice::ReadOnly | QIODevice::Text);
|
file.open(QIODevice::ReadOnly | QIODevice::Text);
|
||||||
|
@ -53,7 +53,7 @@ bool Parser::parse(const QString& filename)
|
||||||
return !m_xml.error();
|
return !m_xml.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Parser::errorMsg()
|
QString KeePass2XmlReader::errorMsg()
|
||||||
{
|
{
|
||||||
return QString("%1\nLine %2, column %3")
|
return QString("%1\nLine %2, column %3")
|
||||||
.arg(m_xml.errorString())
|
.arg(m_xml.errorString())
|
||||||
|
@ -61,7 +61,7 @@ QString Parser::errorMsg()
|
||||||
.arg(m_xml.columnNumber());
|
.arg(m_xml.columnNumber());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseKeePassFile()
|
void KeePass2XmlReader::parseKeePassFile()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "KeePassFile");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "KeePassFile");
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ void Parser::parseKeePassFile()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseMeta()
|
void KeePass2XmlReader::parseMeta()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Meta");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Meta");
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ void Parser::parseMeta()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseMemoryProtection()
|
void KeePass2XmlReader::parseMemoryProtection()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "MemoryProtection");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "MemoryProtection");
|
||||||
|
|
||||||
|
@ -172,7 +172,7 @@ void Parser::parseMemoryProtection()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseCustomIcons()
|
void KeePass2XmlReader::parseCustomIcons()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "CustomIcons");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "CustomIcons");
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ void Parser::parseCustomIcons()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseIcon()
|
void KeePass2XmlReader::parseIcon()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Icon");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Icon");
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ void Parser::parseIcon()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseCustomData()
|
void KeePass2XmlReader::parseCustomData()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "CustomData");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "CustomData");
|
||||||
|
|
||||||
|
@ -220,7 +220,7 @@ void Parser::parseCustomData()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseCustomDataItem()
|
void KeePass2XmlReader::parseCustomDataItem()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Item");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Item");
|
||||||
|
|
||||||
|
@ -238,7 +238,7 @@ void Parser::parseCustomDataItem()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseRoot()
|
void KeePass2XmlReader::parseRoot()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Root");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Root");
|
||||||
|
|
||||||
|
@ -258,7 +258,7 @@ void Parser::parseRoot()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Group* Parser::parseGroup()
|
Group* KeePass2XmlReader::parseGroup()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Group");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Group");
|
||||||
|
|
||||||
|
@ -359,7 +359,7 @@ Group* Parser::parseGroup()
|
||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseDeletedObjects()
|
void KeePass2XmlReader::parseDeletedObjects()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "DeletedObjects");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "DeletedObjects");
|
||||||
|
|
||||||
|
@ -373,7 +373,7 @@ void Parser::parseDeletedObjects()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseDeletedObject()
|
void KeePass2XmlReader::parseDeletedObject()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "DeletedObject");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "DeletedObject");
|
||||||
|
|
||||||
|
@ -400,7 +400,7 @@ void Parser::parseDeletedObject()
|
||||||
m_db->addDeletedObject(delObj);
|
m_db->addDeletedObject(delObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
Entry* Parser::parseEntry(bool history)
|
Entry* KeePass2XmlReader::parseEntry(bool history)
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Entry");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Entry");
|
||||||
|
|
||||||
|
@ -472,7 +472,7 @@ Entry* Parser::parseEntry(bool history)
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseEntryString(Entry *entry)
|
void KeePass2XmlReader::parseEntryString(Entry *entry)
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "String");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "String");
|
||||||
|
|
||||||
|
@ -490,7 +490,7 @@ void Parser::parseEntryString(Entry *entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseEntryBinary(Entry *entry)
|
void KeePass2XmlReader::parseEntryBinary(Entry *entry)
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Binary");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Binary");
|
||||||
|
|
||||||
|
@ -508,7 +508,7 @@ void Parser::parseEntryBinary(Entry *entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseAutoType(Entry* entry)
|
void KeePass2XmlReader::parseAutoType(Entry* entry)
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "AutoType");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "AutoType");
|
||||||
|
|
||||||
|
@ -531,7 +531,7 @@ void Parser::parseAutoType(Entry* entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseAutoTypeAssoc(Entry *entry)
|
void KeePass2XmlReader::parseAutoTypeAssoc(Entry *entry)
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Association");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Association");
|
||||||
|
|
||||||
|
@ -550,7 +550,7 @@ void Parser::parseAutoTypeAssoc(Entry *entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::parseEntryHistory(Entry* entry)
|
void KeePass2XmlReader::parseEntryHistory(Entry* entry)
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "History");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "History");
|
||||||
|
|
||||||
|
@ -565,7 +565,7 @@ void Parser::parseEntryHistory(Entry* entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeInfo Parser::parseTimes()
|
TimeInfo KeePass2XmlReader::parseTimes()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Times");
|
Q_ASSERT(m_xml.isStartElement() && m_xml.name() == "Times");
|
||||||
|
|
||||||
|
@ -600,12 +600,12 @@ TimeInfo Parser::parseTimes()
|
||||||
return timeInfo;
|
return timeInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Parser::readString()
|
QString KeePass2XmlReader::readString()
|
||||||
{
|
{
|
||||||
return m_xml.readElementText();
|
return m_xml.readElementText();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Parser::readBool()
|
bool KeePass2XmlReader::readBool()
|
||||||
{
|
{
|
||||||
QString str = readString();
|
QString str = readString();
|
||||||
|
|
||||||
|
@ -621,7 +621,7 @@ bool Parser::readBool()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QDateTime Parser::readDateTime()
|
QDateTime KeePass2XmlReader::readDateTime()
|
||||||
{
|
{
|
||||||
QString str = readString();
|
QString str = readString();
|
||||||
QDateTime dt = QDateTime::fromString(str, Qt::ISODate);
|
QDateTime dt = QDateTime::fromString(str, Qt::ISODate);
|
||||||
|
@ -633,7 +633,7 @@ QDateTime Parser::readDateTime()
|
||||||
return dt;
|
return dt;
|
||||||
}
|
}
|
||||||
|
|
||||||
QColor Parser::readColor()
|
QColor KeePass2XmlReader::readColor()
|
||||||
{
|
{
|
||||||
QString colorStr = readString();
|
QString colorStr = readString();
|
||||||
|
|
||||||
|
@ -670,7 +670,7 @@ QColor Parser::readColor()
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Parser::readNumber()
|
int KeePass2XmlReader::readNumber()
|
||||||
{
|
{
|
||||||
bool ok;
|
bool ok;
|
||||||
int result = readString().toInt(&ok);
|
int result = readString().toInt(&ok);
|
||||||
|
@ -680,7 +680,7 @@ int Parser::readNumber()
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
Uuid Parser::readUuid()
|
Uuid KeePass2XmlReader::readUuid()
|
||||||
{
|
{
|
||||||
QByteArray uuidBin = readBinary();
|
QByteArray uuidBin = readBinary();
|
||||||
if (uuidBin.length() != Uuid::length) {
|
if (uuidBin.length() != Uuid::length) {
|
||||||
|
@ -692,12 +692,12 @@ Uuid Parser::readUuid()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray Parser::readBinary()
|
QByteArray KeePass2XmlReader::readBinary()
|
||||||
{
|
{
|
||||||
return QByteArray::fromBase64(readString().toAscii());
|
return QByteArray::fromBase64(readString().toAscii());
|
||||||
}
|
}
|
||||||
|
|
||||||
Group* Parser::getGroup(const Uuid& uuid)
|
Group* KeePass2XmlReader::getGroup(const Uuid& uuid)
|
||||||
{
|
{
|
||||||
if (uuid.isNull()) {
|
if (uuid.isNull()) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -716,7 +716,7 @@ Group* Parser::getGroup(const Uuid& uuid)
|
||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
|
|
||||||
Entry* Parser::getEntry(const Uuid& uuid)
|
Entry* KeePass2XmlReader::getEntry(const Uuid& uuid)
|
||||||
{
|
{
|
||||||
if (uuid.isNull()) {
|
if (uuid.isNull()) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -735,13 +735,13 @@ Entry* Parser::getEntry(const Uuid& uuid)
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::raiseError()
|
void KeePass2XmlReader::raiseError()
|
||||||
{
|
{
|
||||||
m_xml.raiseError(tr("Invalid database file"));
|
m_xml.raiseError(tr("Invalid database file"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Parser::skipCurrentElement()
|
void KeePass2XmlReader::skipCurrentElement()
|
||||||
{
|
{
|
||||||
qDebug() << "Parser::skipCurrentElement(): skip: " << m_xml.name();
|
qDebug() << "KeePass2XmlReader::skipCurrentElement(): skip: " << m_xml.name();
|
||||||
m_xml.skipCurrentElement();
|
m_xml.skipCurrentElement();
|
||||||
}
|
}
|
|
@ -22,20 +22,20 @@
|
||||||
#include <QtCore/QXmlStreamReader>
|
#include <QtCore/QXmlStreamReader>
|
||||||
#include <QtGui/QColor>
|
#include <QtGui/QColor>
|
||||||
|
|
||||||
#include "TimeInfo.h"
|
#include "core/TimeInfo.h"
|
||||||
#include "Uuid.h"
|
#include "core/Uuid.h"
|
||||||
|
|
||||||
class Database;
|
class Database;
|
||||||
class Entry;
|
class Entry;
|
||||||
class Group;
|
class Group;
|
||||||
class Metadata;
|
class Metadata;
|
||||||
|
|
||||||
class Parser : public QObject
|
class KeePass2XmlReader : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit Parser(Database* db);
|
explicit KeePass2XmlReader(Database* db);
|
||||||
bool parse(const QString& filename);
|
bool parse(const QString& filename);
|
||||||
QString errorMsg();
|
QString errorMsg();
|
||||||
|
|
|
@ -15,14 +15,14 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Writer.h"
|
#include "KeePass2XmlWriter.h"
|
||||||
|
|
||||||
#include <QtCore/QBuffer>
|
#include <QtCore/QBuffer>
|
||||||
#include <QtCore/QFile>
|
#include <QtCore/QFile>
|
||||||
|
|
||||||
#include "core/Metadata.h"
|
#include "core/Metadata.h"
|
||||||
|
|
||||||
Writer::Writer(Database* db)
|
KeePass2XmlWriter::KeePass2XmlWriter(Database* db)
|
||||||
: QObject(db)
|
: QObject(db)
|
||||||
, m_db(db)
|
, m_db(db)
|
||||||
, m_meta(db->metadata())
|
, m_meta(db->metadata())
|
||||||
|
@ -33,7 +33,7 @@ Writer::Writer(Database* db)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::write(QIODevice* device)
|
void KeePass2XmlWriter::write(QIODevice* device)
|
||||||
{
|
{
|
||||||
m_xml.setDevice(device);
|
m_xml.setDevice(device);
|
||||||
|
|
||||||
|
@ -49,14 +49,14 @@ void Writer::write(QIODevice* device)
|
||||||
m_xml.writeEndDocument();
|
m_xml.writeEndDocument();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::write(const QString& filename)
|
void KeePass2XmlWriter::write(const QString& filename)
|
||||||
{
|
{
|
||||||
QFile file(filename);
|
QFile file(filename);
|
||||||
file.open(QIODevice::WriteOnly);
|
file.open(QIODevice::WriteOnly);
|
||||||
write(&file);
|
write(&file);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeMetadata()
|
void KeePass2XmlWriter::writeMetadata()
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("Meta");
|
m_xml.writeStartElement("Meta");
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ void Writer::writeMetadata()
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeMemoryProtection()
|
void KeePass2XmlWriter::writeMemoryProtection()
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("MemoryProtection");
|
m_xml.writeStartElement("MemoryProtection");
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ void Writer::writeMemoryProtection()
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeCustomIcons()
|
void KeePass2XmlWriter::writeCustomIcons()
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("CustomIcons");
|
m_xml.writeStartElement("CustomIcons");
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ void Writer::writeCustomIcons()
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeIcon(const Uuid& uuid, const QImage& image)
|
void KeePass2XmlWriter::writeIcon(const Uuid& uuid, const QImage& image)
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("Icon");
|
m_xml.writeStartElement("Icon");
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ void Writer::writeIcon(const Uuid& uuid, const QImage& image)
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeCustomData()
|
void KeePass2XmlWriter::writeCustomData()
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("CustomData");
|
m_xml.writeStartElement("CustomData");
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ void Writer::writeCustomData()
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeCustomDataItem(const QString& key, const QString& value)
|
void KeePass2XmlWriter::writeCustomDataItem(const QString& key, const QString& value)
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("Item");
|
m_xml.writeStartElement("Item");
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ void Writer::writeCustomDataItem(const QString& key, const QString& value)
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeRoot()
|
void KeePass2XmlWriter::writeRoot()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_db->rootGroup());
|
Q_ASSERT(m_db->rootGroup());
|
||||||
|
|
||||||
|
@ -158,7 +158,7 @@ void Writer::writeRoot()
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeGroup(const Group* group)
|
void KeePass2XmlWriter::writeGroup(const Group* group)
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("Group");
|
m_xml.writeStartElement("Group");
|
||||||
|
|
||||||
|
@ -212,7 +212,7 @@ void Writer::writeGroup(const Group* group)
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeTimes(const TimeInfo& ti)
|
void KeePass2XmlWriter::writeTimes(const TimeInfo& ti)
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("Times");
|
m_xml.writeStartElement("Times");
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ void Writer::writeTimes(const TimeInfo& ti)
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeDeletedObjects()
|
void KeePass2XmlWriter::writeDeletedObjects()
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("DeletedObjects");
|
m_xml.writeStartElement("DeletedObjects");
|
||||||
|
|
||||||
|
@ -238,7 +238,7 @@ void Writer::writeDeletedObjects()
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeDeletedObject(const DeletedObject& delObj)
|
void KeePass2XmlWriter::writeDeletedObject(const DeletedObject& delObj)
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("DeletedObject");
|
m_xml.writeStartElement("DeletedObject");
|
||||||
|
|
||||||
|
@ -248,7 +248,7 @@ void Writer::writeDeletedObject(const DeletedObject& delObj)
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeEntry(const Entry* entry)
|
void KeePass2XmlWriter::writeEntry(const Entry* entry)
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("Entry");
|
m_xml.writeStartElement("Entry");
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ void Writer::writeEntry(const Entry* entry)
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeAutoType(const Entry* entry)
|
void KeePass2XmlWriter::writeAutoType(const Entry* entry)
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("AutoType");
|
m_xml.writeStartElement("AutoType");
|
||||||
|
|
||||||
|
@ -297,7 +297,7 @@ void Writer::writeAutoType(const Entry* entry)
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeAutoTypeAssoc(const AutoTypeAssociation& assoc)
|
void KeePass2XmlWriter::writeAutoTypeAssoc(const AutoTypeAssociation& assoc)
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("Association");
|
m_xml.writeStartElement("Association");
|
||||||
|
|
||||||
|
@ -307,7 +307,7 @@ void Writer::writeAutoTypeAssoc(const AutoTypeAssociation& assoc)
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeEntryHistory(const Entry* entry)
|
void KeePass2XmlWriter::writeEntryHistory(const Entry* entry)
|
||||||
{
|
{
|
||||||
m_xml.writeStartElement("History");
|
m_xml.writeStartElement("History");
|
||||||
|
|
||||||
|
@ -319,17 +319,17 @@ void Writer::writeEntryHistory(const Entry* entry)
|
||||||
m_xml.writeEndElement();
|
m_xml.writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeString(const QString& qualifiedName, const QString& string)
|
void KeePass2XmlWriter::writeString(const QString& qualifiedName, const QString& string)
|
||||||
{
|
{
|
||||||
m_xml.writeTextElement(qualifiedName, string);
|
m_xml.writeTextElement(qualifiedName, string);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeNumber(const QString& qualifiedName, int number)
|
void KeePass2XmlWriter::writeNumber(const QString& qualifiedName, int number)
|
||||||
{
|
{
|
||||||
writeString(qualifiedName, QString::number(number));
|
writeString(qualifiedName, QString::number(number));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeBool(const QString& qualifiedName, bool b)
|
void KeePass2XmlWriter::writeBool(const QString& qualifiedName, bool b)
|
||||||
{
|
{
|
||||||
if (b) {
|
if (b) {
|
||||||
writeString(qualifiedName, "True");
|
writeString(qualifiedName, "True");
|
||||||
|
@ -339,17 +339,17 @@ void Writer::writeBool(const QString& qualifiedName, bool b)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeDateTime(const QString& qualifiedName, const QDateTime& dateTime)
|
void KeePass2XmlWriter::writeDateTime(const QString& qualifiedName, const QDateTime& dateTime)
|
||||||
{
|
{
|
||||||
writeString(qualifiedName, dateTime.toUTC().toString(Qt::ISODate).append('Z'));
|
writeString(qualifiedName, dateTime.toUTC().toString(Qt::ISODate).append('Z'));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeUuid(const QString& qualifiedName, const Uuid& uuid)
|
void KeePass2XmlWriter::writeUuid(const QString& qualifiedName, const Uuid& uuid)
|
||||||
{
|
{
|
||||||
writeString(qualifiedName, uuid.toBase64());
|
writeString(qualifiedName, uuid.toBase64());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeUuid(const QString& qualifiedName, const Group* group)
|
void KeePass2XmlWriter::writeUuid(const QString& qualifiedName, const Group* group)
|
||||||
{
|
{
|
||||||
if (group) {
|
if (group) {
|
||||||
writeUuid(qualifiedName, group->uuid());
|
writeUuid(qualifiedName, group->uuid());
|
||||||
|
@ -359,7 +359,7 @@ void Writer::writeUuid(const QString& qualifiedName, const Group* group)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeUuid(const QString& qualifiedName, const Entry* entry)
|
void KeePass2XmlWriter::writeUuid(const QString& qualifiedName, const Entry* entry)
|
||||||
{
|
{
|
||||||
if (entry) {
|
if (entry) {
|
||||||
writeUuid(qualifiedName, entry->uuid());
|
writeUuid(qualifiedName, entry->uuid());
|
||||||
|
@ -369,12 +369,12 @@ void Writer::writeUuid(const QString& qualifiedName, const Entry* entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeBinary(const QString& qualifiedName, const QByteArray& ba)
|
void KeePass2XmlWriter::writeBinary(const QString& qualifiedName, const QByteArray& ba)
|
||||||
{
|
{
|
||||||
writeString(qualifiedName, QString::fromAscii(ba.toBase64()));
|
writeString(qualifiedName, QString::fromAscii(ba.toBase64()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Writer::writeColor(const QString& qualifiedName, const QColor& color)
|
void KeePass2XmlWriter::writeColor(const QString& qualifiedName, const QColor& color)
|
||||||
{
|
{
|
||||||
QString colorStr = QString("#%1%2%3").arg(colorPartToString(color.red()))
|
QString colorStr = QString("#%1%2%3").arg(colorPartToString(color.red()))
|
||||||
.arg(colorPartToString(color.green()))
|
.arg(colorPartToString(color.green()))
|
||||||
|
@ -383,7 +383,7 @@ void Writer::writeColor(const QString& qualifiedName, const QColor& color)
|
||||||
writeString(qualifiedName, colorStr);
|
writeString(qualifiedName, colorStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Writer::colorPartToString(int value)
|
QString KeePass2XmlWriter::colorPartToString(int value)
|
||||||
{
|
{
|
||||||
QString str = QString::number(value, 16).toUpper();
|
QString str = QString::number(value, 16).toUpper();
|
||||||
if (str.length() == 1) {
|
if (str.length() == 1) {
|
|
@ -31,12 +31,12 @@
|
||||||
class Group;
|
class Group;
|
||||||
class Metadata;
|
class Metadata;
|
||||||
|
|
||||||
class Writer : public QObject
|
class KeePass2XmlWriter : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Writer(Database* db);
|
KeePass2XmlWriter(Database* db);
|
||||||
void write(QIODevice* device);
|
void write(QIODevice* device);
|
||||||
void write(const QString& filename);
|
void write(const QString& filename);
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#include <QtGui/QTreeView>
|
#include <QtGui/QTreeView>
|
||||||
|
|
||||||
#include "core/Database.h"
|
#include "core/Database.h"
|
||||||
#include "core/Parser.h"
|
#include "format/KeePass2XmlReader.h"
|
||||||
#include "gui/DatabaseWidget.h"
|
#include "gui/DatabaseWidget.h"
|
||||||
|
|
||||||
#include "../tests/config-keepassx-tests.h"
|
#include "../tests/config-keepassx-tests.h"
|
||||||
|
@ -28,9 +28,9 @@ int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
|
||||||
Database* db= new Database();
|
Database* db = new Database();
|
||||||
Parser* parser = new Parser(db);
|
KeePass2XmlReader* reader = new KeePass2XmlReader(db);
|
||||||
parser->parse(QString(KEEPASSX_TEST_DIR).append("/NewDatabase.xml"));
|
reader->parse(QString(KEEPASSX_TEST_DIR).append("/NewDatabase.xml"));
|
||||||
|
|
||||||
DatabaseWidget dbWidget(db);
|
DatabaseWidget dbWidget(db);
|
||||||
dbWidget.show();
|
dbWidget.show();
|
||||||
|
|
|
@ -66,8 +66,8 @@ endmacro (ADD_UNIT_TEST)
|
||||||
add_unit_test( testgroup TestGroup.cpp )
|
add_unit_test( testgroup TestGroup.cpp )
|
||||||
target_link_libraries( testgroup keepassx_core ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTTEST_LIBRARY} )
|
target_link_libraries( testgroup keepassx_core ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTTEST_LIBRARY} )
|
||||||
|
|
||||||
add_unit_test( testparser TestParser.cpp )
|
add_unit_test( testkeepass2xmlreader TestKeePass2XmlReader.cpp )
|
||||||
target_link_libraries( testparser keepassx_core ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTTEST_LIBRARY} )
|
target_link_libraries( testkeepass2xmlreader keepassx_core ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTTEST_LIBRARY} )
|
||||||
|
|
||||||
add_unit_test( testgroupmodel TestGroupModel.cpp modeltest.cpp )
|
add_unit_test( testgroupmodel TestGroupModel.cpp modeltest.cpp )
|
||||||
target_link_libraries( testgroupmodel keepassx_core ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTTEST_LIBRARY} )
|
target_link_libraries( testgroupmodel keepassx_core ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTTEST_LIBRARY} )
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
#include "core/Database.h"
|
#include "core/Database.h"
|
||||||
#include "core/Metadata.h"
|
#include "core/Metadata.h"
|
||||||
#include "core/Parser.h"
|
#include "format/KeePass2XmlReader.h"
|
||||||
#include "config-keepassx-tests.h"
|
#include "config-keepassx-tests.h"
|
||||||
|
|
||||||
namespace QTest {
|
namespace QTest {
|
||||||
|
@ -66,9 +66,9 @@ QDateTime TestParser::genDT(int year, int month, int day, int hour, int min, int
|
||||||
void TestParser::initTestCase()
|
void TestParser::initTestCase()
|
||||||
{
|
{
|
||||||
m_db = new Database();
|
m_db = new Database();
|
||||||
Parser* parser = new Parser(m_db);
|
KeePass2XmlReader* reader = new KeePass2XmlReader(m_db);
|
||||||
QString xmlFile = QString(KEEPASSX_TEST_DIR).append("/NewDatabase.xml");
|
QString xmlFile = QString(KEEPASSX_TEST_DIR).append("/NewDatabase.xml");
|
||||||
QVERIFY(parser->parse(xmlFile));
|
QVERIFY(reader->parse(xmlFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestParser::testMetadata()
|
void TestParser::testMetadata()
|
Loading…
Add table
Add a link
Reference in a new issue