Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Geyer <debfx@fobos.de>2010-08-31 18:18:45 +0400
committerFelix Geyer <debfx@fobos.de>2010-08-31 18:18:45 +0400
commit1cfc34361a76d60a6fc4945b529a0296892a5083 (patch)
treedf085dd3a0008ba43bc118c37c841bf683256979 /src
parentee4c2c3dd43e965eab19eb8b98f0081a4ddbbf27 (diff)
Add interface for database reader/writer.
Diffstat (limited to 'src')
-rw-r--r--src/format/DatabaseReader.h34
-rw-r--r--src/format/DatabaseWriter.h32
-rw-r--r--src/format/KeePass2XmlReader.cpp31
-rw-r--r--src/format/KeePass2XmlReader.h20
-rw-r--r--src/format/KeePass2XmlWriter.cpp17
-rw-r--r--src/format/KeePass2XmlWriter.h19
-rw-r--r--src/main.cpp5
7 files changed, 121 insertions, 37 deletions
diff --git a/src/format/DatabaseReader.h b/src/format/DatabaseReader.h
new file mode 100644
index 000000000..d9ea3b997
--- /dev/null
+++ b/src/format/DatabaseReader.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ *
+ * 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 or (at your option)
+ * version 3 of the License.
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_DATABASEREADER_H
+#define KEEPASSX_DATABASEREADER_H
+
+#include <QtCore/QString>
+
+class Database;
+class QIODevice;
+
+class DatabaseReader
+{
+public:
+ virtual Database* readDatabase(QIODevice* device) = 0;
+ virtual bool error() = 0;
+ virtual QString errorString() = 0;
+};
+
+#endif // KEEPASSX_DATABASEREADER_H
diff --git a/src/format/DatabaseWriter.h b/src/format/DatabaseWriter.h
new file mode 100644
index 000000000..1624fad30
--- /dev/null
+++ b/src/format/DatabaseWriter.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2010 Felix Geyer <debfx@fobos.de>
+ *
+ * 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 or (at your option)
+ * version 3 of the License.
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef KEEPASSX_DATABASEWRITER_H
+#define KEEPASSX_DATABASEWRITER_H
+
+#include <QtCore/QString>
+
+class Database;
+class QIODevice;
+
+class DatabaseWriter
+{
+public:
+ virtual void writeDatabase(QIODevice* device, Database* db) = 0;
+};
+
+#endif // KEEPASSX_DATABASEWRITER_H
diff --git a/src/format/KeePass2XmlReader.cpp b/src/format/KeePass2XmlReader.cpp
index bd54c077d..3be5ca094 100644
--- a/src/format/KeePass2XmlReader.cpp
+++ b/src/format/KeePass2XmlReader.cpp
@@ -23,17 +23,18 @@
#include "core/Database.h"
#include "core/Metadata.h"
-KeePass2XmlReader::KeePass2XmlReader(Database* db)
+KeePass2XmlReader::KeePass2XmlReader()
+ : m_db(0)
+ , m_meta(0)
{
- m_db = db;
- m_meta = db->metadata();
}
-bool KeePass2XmlReader::parse(const QString& filename)
+Database* KeePass2XmlReader::readDatabase(QIODevice* device)
{
- QFile file(filename);
- file.open(QIODevice::ReadOnly | QIODevice::Text);
- m_xml.setDevice(&file);
+ m_xml.setDevice(device);
+
+ m_db = new Database();
+ m_meta = m_db->metadata();
m_tmpParent = new Group();
m_tmpParent->setParent(m_db);
@@ -50,10 +51,22 @@ bool KeePass2XmlReader::parse(const QString& filename)
delete m_tmpParent;
- return !m_xml.error();
+ return m_db;
+}
+
+Database* KeePass2XmlReader::readDatabase(const QString& filename)
+{
+ QFile file(filename);
+ file.open(QIODevice::ReadOnly | QIODevice::Text);
+ return readDatabase(&file);
+}
+
+bool KeePass2XmlReader::error()
+{
+ return m_xml.hasError();
}
-QString KeePass2XmlReader::errorMsg()
+QString KeePass2XmlReader::errorString()
{
return QString("%1\nLine %2, column %3")
.arg(m_xml.errorString())
diff --git a/src/format/KeePass2XmlReader.h b/src/format/KeePass2XmlReader.h
index 6c6eaec69..c9e715ac9 100644
--- a/src/format/KeePass2XmlReader.h
+++ b/src/format/KeePass2XmlReader.h
@@ -15,13 +15,15 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KEEPASSX_PARSER_H
-#define KEEPASSX_PARSER_H
+#ifndef KEEPASSX_KEEPASS2XMLREADER_H
+#define KEEPASSX_KEEPASS2XMLREADER_H
+#include <QtCore/QCoreApplication>
#include <QtCore/QDateTime>
#include <QtCore/QXmlStreamReader>
#include <QtGui/QColor>
+#include "DatabaseReader.h"
#include "core/TimeInfo.h"
#include "core/Uuid.h"
@@ -30,14 +32,16 @@ class Entry;
class Group;
class Metadata;
-class KeePass2XmlReader : public QObject
+class KeePass2XmlReader : public DatabaseReader
{
- Q_OBJECT
+ Q_DECLARE_TR_FUNCTIONS(KeePass2XmlReader);
public:
- explicit KeePass2XmlReader(Database* db);
- bool parse(const QString& filename);
- QString errorMsg();
+ KeePass2XmlReader();
+ Database* readDatabase(QIODevice* device);
+ Database* readDatabase(const QString& filename);
+ bool error();
+ QString errorString();
private:
void parseKeePassFile();
@@ -80,4 +84,4 @@ private:
QList<Entry*> m_entries;
};
-#endif // KEEPASSX_PARSER_H
+#endif // KEEPASSX_KEEPASS2XMLREADER_H
diff --git a/src/format/KeePass2XmlWriter.cpp b/src/format/KeePass2XmlWriter.cpp
index 2e0b4c8f0..3b378c0bd 100644
--- a/src/format/KeePass2XmlWriter.cpp
+++ b/src/format/KeePass2XmlWriter.cpp
@@ -22,19 +22,20 @@
#include "core/Metadata.h"
-KeePass2XmlWriter::KeePass2XmlWriter(Database* db)
- : QObject(db)
- , m_db(db)
- , m_meta(db->metadata())
+KeePass2XmlWriter::KeePass2XmlWriter()
+ : m_db(0)
+ , m_meta(0)
{
m_xml.setAutoFormatting(true);
m_xml.setAutoFormattingIndent(-1); // 1 tab
m_xml.setCodec("UTF-8");
-
}
-void KeePass2XmlWriter::write(QIODevice* device)
+void KeePass2XmlWriter::writeDatabase(QIODevice* device, Database* db)
{
+ m_db = db;
+ m_meta = db->metadata();
+
m_xml.setDevice(device);
m_xml.writeStartDocument("1.0", true);
@@ -49,11 +50,11 @@ void KeePass2XmlWriter::write(QIODevice* device)
m_xml.writeEndDocument();
}
-void KeePass2XmlWriter::write(const QString& filename)
+void KeePass2XmlWriter::writeDatabase(const QString& filename, Database* db)
{
QFile file(filename);
file.open(QIODevice::WriteOnly);
- write(&file);
+ writeDatabase(&file, db);
}
void KeePass2XmlWriter::writeMetadata()
diff --git a/src/format/KeePass2XmlWriter.h b/src/format/KeePass2XmlWriter.h
index 0142f01c3..e2149d6ef 100644
--- a/src/format/KeePass2XmlWriter.h
+++ b/src/format/KeePass2XmlWriter.h
@@ -15,14 +15,15 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef KEEPASSX_WRITER_H
-#define KEEPASSX_WRITER_H
+#ifndef KEEPASSX_KEEPASS2XMLWRITER_H
+#define KEEPASSX_KEEPASS2XMLWRITER_H
#include <QtCore/QDateTime>
#include <QtCore/QXmlStreamWriter>
#include <QtGui/QColor>
#include <QtGui/QImage>
+#include "DatabaseWriter.h"
#include "core/Database.h"
#include "core/Entry.h"
#include "core/TimeInfo.h"
@@ -31,14 +32,14 @@
class Group;
class Metadata;
-class KeePass2XmlWriter : public QObject
+class KeePass2XmlWriter : public DatabaseWriter
{
- Q_OBJECT
-
public:
- KeePass2XmlWriter(Database* db);
- void write(QIODevice* device);
- void write(const QString& filename);
+ KeePass2XmlWriter();
+ void writeDatabase(QIODevice* device, Database* db);
+ void writeDatabase(const QString& filename, Database* db);
+ bool error();
+ QString errorString();
private:
void writeMetadata();
@@ -73,4 +74,4 @@ private:
Metadata* m_meta;
};
-#endif // KEEPASSX_WRITER_H
+#endif // KEEPASSX_KEEPASS2XMLWRITER_H
diff --git a/src/main.cpp b/src/main.cpp
index 6e4873414..6bd3a7739 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -28,9 +28,8 @@ int main(int argc, char **argv)
{
QApplication app(argc, argv);
- Database* db = new Database();
- KeePass2XmlReader* reader = new KeePass2XmlReader(db);
- reader->parse(QString(KEEPASSX_TEST_DIR).append("/NewDatabase.xml"));
+ KeePass2XmlReader* reader = new KeePass2XmlReader();
+ Database* db = reader->readDatabase(QString(KEEPASSX_TEST_DIR).append("/NewDatabase.xml"));
DatabaseWidget dbWidget(db);
dbWidget.show();