summaryrefslogtreecommitdiff
path: root/src/dictionary/DicCsvReader.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/dictionary/DicCsvReader.h')
-rw-r--r--src/dictionary/DicCsvReader.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/dictionary/DicCsvReader.h b/src/dictionary/DicCsvReader.h
new file mode 100644
index 0000000..9e990dd
--- /dev/null
+++ b/src/dictionary/DicCsvReader.h
@@ -0,0 +1,41 @@
+#ifndef DICCSVREADER_H
+#define DICCSVREADER_H
+
+#include <QFile>
+#include <QString>
+#include <QStringList>
+#include <QRegExp>
+#include <QTextStream>
+
+#include "../export-import/CsvData.h"
+
+class Dictionary;
+class DicRecord;
+
+class DicCsvReader
+{
+public:
+ DicCsvReader( Dictionary* aDict );
+ DicCsvReader(); // For reading entries
+
+ QFile::FileError readDict( const QString aCsvFilePath, const CsvImportData& aImportData );
+ QList<DicRecord*> readEntries( QString aCsvEntries, const CsvImportData& aImportData );
+ QStringList fieldNames() { return m_fieldNames; } // Last read field names
+ QString unescapeString( QString aString );
+
+private:
+ void initData( const CsvImportData& aImportData );
+ int readLines( QTextStream& aInStream ); // Returns max number of fields
+ QStringList readFields( const QString aCsvLine );
+
+private:
+ Dictionary* m_dict; // Not own
+ CsvImportData m_params;
+ QRegExp m_fieldSepRx;
+ QRegExp m_chunkEndRx;
+ QRegExp m_singleDelimiterRx;
+ QStringList m_fieldNames;
+ QList<DicRecord*> m_entries; // Created, but ownership is transfered to the client
+};
+
+#endif // DICCSVREADER_H