]> Git trees. - libqmvoc.git/commitdiff
A simple import filter for delimited text.
authorPeter Hedlund <peter@peterandlinda.com>
Wed, 21 Feb 2007 22:35:14 +0000 (22:35 +0000)
committerPeter Hedlund <peter@peterandlinda.com>
Wed, 21 Feb 2007 22:35:14 +0000 (22:35 +0000)
svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=636100

kdeeducore/CMakeLists.txt
kdeeducore/keduvoccsvreader.cpp [new file with mode: 0644]
kdeeducore/keduvoccsvreader.h [new file with mode: 0644]
kdeeducore/keduvocdocument.cpp
kdeeducore/keduvocpaukerreader.cpp

index 56ab42848f6e82cd4406f652d1eb192fb1901919..e61d7e9ea84cdafed8af2cb50f5a452117ba1111 100644 (file)
@@ -2,6 +2,7 @@
 ########### next target ###############
 
 set(kdeeducore_LIB_SRCS
+   keduvoccsvreader.cpp
    keduvocdocument.cpp
    keduvocexpression.cpp
    keduvocgrammar.cpp
@@ -35,6 +36,7 @@ install(TARGETS kdeeducore  DESTINATION ${LIB_INSTALL_DIR} )
 
 install(FILES
    libkdeedu_core_export.h
+   keduvoccsvreader.h
    keduvocdocument.h
    keduvocexpression.h
    keduvocgrammar.h
diff --git a/kdeeducore/keduvoccsvreader.cpp b/kdeeducore/keduvoccsvreader.cpp
new file mode 100644 (file)
index 0000000..4c644a1
--- /dev/null
@@ -0,0 +1,71 @@
+/***************************************************************************
+
+                    create a KEduVocDocument from a text file
+
+    -----------------------------------------------------------------------
+
+    begin        : Sat Sep 06 11:00:53 MET 1999
+
+    copyright    : (C) 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de>
+                   (C) 2001 The KDE-EDU team
+                   (C) 2005, 2007 Peter Hedlund <peter.hedlund@kdemail.net>
+
+    -----------------------------------------------------------------------
+
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   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 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#include <QTextStream>
+
+#include <klocale.h>
+
+#include "keduvocdocument.h"
+#include "keduvoccsvreader.h"
+
+KEduVocCsvReader::KEduVocCsvReader(QIODevice *file)
+{
+  // the file must be already open
+  m_inputFile = file;
+  m_errorMessage = "";
+}
+
+
+bool KEduVocCsvReader::readDoc(KEduVocDocument *doc)
+{
+  m_doc = doc;
+
+  QString separator = QString(",");
+
+  QTextStream inputStream(m_inputFile);
+  inputStream.setCodec("UTF-8");
+  inputStream.setAutoDetectUnicode(true);
+  inputStream.seek(0);
+
+  int languageCount = 0;
+
+  while (!inputStream.atEnd()) {
+    QString s = inputStream.readLine();
+
+    if (!s.simplified().isEmpty()) {
+      KEduVocExpression expression(s, separator);
+      languageCount = qMax(languageCount, expression.numTranslations() + 1);
+      m_doc->appendEntry(&expression);
+    }
+  }
+
+  for (int j = 0; j < languageCount; j++)
+    if (j == 0)
+      m_doc->appendIdentifier(i18n("Original"));
+    else
+      m_doc->appendIdentifier(i18n("Translation %1", j));
+
+  return true;
+}
diff --git a/kdeeducore/keduvoccsvreader.h b/kdeeducore/keduvoccsvreader.h
new file mode 100644 (file)
index 0000000..6386fa5
--- /dev/null
@@ -0,0 +1,41 @@
+/***************************************************************************
+                  create a KEduVocDocument from a text file
+    -----------------------------------------------------------------------
+    copyright     : (C) 2007 Peter Hedlund <peter.hedlund@kdemail.net>
+
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   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 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#ifndef KEDUVOCCSVREADER_H
+#define KEDUVOCCSVREADER_H
+
+#include <libkdeedu_core_export.h>
+
+#include <QIODevice>
+
+class KEduVocDocument;
+
+class KDEEDUCORE_EXPORT KEduVocCsvReader : public QObject
+{
+public:
+  KEduVocCsvReader(QIODevice *file);
+
+  bool readDoc(KEduVocDocument *doc);
+
+  QString errorMessage() const {return m_errorMessage;};
+
+private:
+  QIODevice *m_inputFile;
+  KEduVocDocument *m_doc;
+  QString m_errorMessage;
+};
+
+#endif
index 18f3a16fba34d204fdfd3315c5ba5afb6611b7c5..90ff4615d41c0b45af9eca9b336c5d448b8d7ea3 100644 (file)
@@ -32,6 +32,7 @@
 #include <kfilterdev.h>
 
 #include "keduvockvtmlwriter.h"
+#include "keduvoccsvreader.h"
 #include "keduvockvtmlreader.h"
 #include "keduvocwqlwriter.h"
 #include "keduvocwqlreader.h"
@@ -126,7 +127,6 @@ void KEduVocDocument::Init ()
 KEduVocDocument::FileType KEduVocDocument::detectFileType(const QString &fileName)
 {
   QIODevice * f = KFilterDev::deviceForFile(fileName);
-  //QFile f(fileName);
   if (!f->open(QIODevice::ReadOnly))
     return csv;
 
@@ -185,9 +185,8 @@ bool KEduVocDocument::open(const KUrl& url, bool /*append*/)
   QString temporaryFile;
   if (KIO::NetAccess::download(url, temporaryFile, 0))
   {
-    ///@todo We need to work with the QIODevice directly for the compressed Pauker files
     QIODevice * f = KFilterDev::deviceForFile(temporaryFile);
-    //QFile f(temporaryFile);
+
     if (!f->open(QIODevice::ReadOnly))
     {
       KMessageBox::error(0, errorMessage);
@@ -236,8 +235,10 @@ bool KEduVocDocument::open(const KUrl& url, bool /*append*/)
 
         case csv:
         {
-          //QTextStream is(&f);
-          //TODO read = loadFromCsv(is);
+          KEduVocCsvReader csvReader(f);
+          read = csvReader.readDoc(this);
+          if (!read)
+            errorMessage = csvReader.errorMessage();
         }
         break;
 
index ee4d330fe4304469b780d8bc27cb1cd14cd112b0..a79e5d399d106664879a2b4320444699eae0c889 100644 (file)
@@ -49,6 +49,7 @@ bool KEduVocPaukerReader::readDoc(KEduVocDocument * doc)
     return false;
   }
 
+  m_doc->setAuthor("http://pauker.sf.net");
   ///Pauker does not provide any column titles
   m_doc->appendIdentifier(i18n("Front Side"));
   m_doc->appendIdentifier(i18n("Reverse Side"));