File indexing completed on 2024-04-14 03:46:36

0001 /*
0002  * create a KEduVocDocument from a text file
0003  * SPDX-FileCopyrightText: 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de>
0004  * SPDX-FileCopyrightText: 2005, 2007 Peter Hedlund <peter.hedlund@kdemail.net>
0005  * SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #include "keduvoccsvreader.h"
0009 
0010 #include <KLocalizedString>
0011 #include <QIODevice>
0012 #include <QTextStream>
0013 
0014 #include "keduvocexpression.h"
0015 #include "keduvoclesson.h"
0016 
0017 KEduVocCsvReader::KEduVocCsvReader(QIODevice &file)
0018 {
0019     // the file must be already open
0020     m_inputFile = &file;
0021 
0022     m_errorMessage = QLatin1String("");
0023 }
0024 
0025 KEduVocDocument::FileType KEduVocCsvReader::fileTypeHandled()
0026 {
0027     return KEduVocDocument::Csv;
0028 }
0029 
0030 KEduVocDocument::ErrorCode KEduVocCsvReader::read(KEduVocDocument &doc)
0031 {
0032     m_doc = &doc;
0033 
0034     QString separator = m_doc->csvDelimiter();
0035 
0036     QTextStream inputStream(m_inputFile);
0037 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0038     inputStream.setCodec("UTF-8");
0039 #endif
0040     inputStream.setAutoDetectUnicode(true);
0041     inputStream.seek(0);
0042 
0043     int languageCount = 0;
0044 
0045     KEduVocLesson *lesson = new KEduVocLesson(i18n("Vocabulary"), m_doc->lesson());
0046     m_doc->lesson()->appendChildContainer(lesson);
0047 
0048     while (!inputStream.atEnd()) {
0049         QString s = inputStream.readLine();
0050 
0051         if (!s.simplified().isEmpty()) {
0052             KEduVocExpression *expression = new KEduVocExpression(s.split(separator));
0053             languageCount = qMax(languageCount, expression->translationIndices().count());
0054             lesson->appendEntry(expression);
0055         }
0056     }
0057 
0058     for (int j = 0; j < languageCount; j++) {
0059         m_doc->appendIdentifier();
0060     }
0061 
0062     return KEduVocDocument::NoError;
0063 }