summaryrefslogtreecommitdiffstats
path: root/kwordquiz/src/wqlreader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kwordquiz/src/wqlreader.cpp')
-rw-r--r--kwordquiz/src/wqlreader.cpp199
1 files changed, 199 insertions, 0 deletions
diff --git a/kwordquiz/src/wqlreader.cpp b/kwordquiz/src/wqlreader.cpp
new file mode 100644
index 00000000..5d60a186
--- /dev/null
+++ b/kwordquiz/src/wqlreader.cpp
@@ -0,0 +1,199 @@
+/***************************************************************************
+ wqlreader.cpp
+ -------------------
+ copyright : (C) 2004 by Peter Hedlund
+ email : 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.h>
+#include <qfile.h>
+
+#include <kmessagebox.h>
+#include <klocale.h>
+
+#include "wqlreader.h"
+
+KWqlDataItem::KWqlDataItem()
+{
+
+}
+
+KWqlDataItem::KWqlDataItem(const QString &front, const QString &back, int height)
+{
+ m_front = front;
+ m_back = back;
+ m_height = height;
+}
+
+KWqlDataItem::~KWqlDataItem()
+{
+
+}
+
+/*!
+ \fn WqlReader::WqlReader
+ */
+WqlReader::WqlReader()
+{
+
+}
+
+KWqlDataItemList WqlReader::parse(const QString &fileName)
+{
+ KWqlDataItemList list;
+ QFile file(fileName);
+ file.open(IO_ReadOnly);
+ QTextStream ts(&file);
+ ts.setEncoding(QTextStream::Latin1);
+
+ QString s = "";
+ s=ts.readLine();
+ if (s != "WordQuiz")
+ {
+ KMessageBox::error(0, i18n("This does not appear to be a (K)WordQuiz file") + s);
+ file.close();
+ return list;
+ }
+ s = ts.readLine();
+ s = s.left(1);
+ int iFV = s.toInt(0);
+ if (iFV != 5)
+ {
+ KMessageBox::error(0, i18n("KWordQuiz can only open files created by WordQuiz 5.x"));
+ file.close();
+ return list;
+ }
+
+ while (ts.readLine() != "[Font Info]");
+ s = ts.readLine();
+ int p = s.find("=", 0);
+ QString fam = s.right(s.length() - (p + 1));
+ fam = fam.mid(1, fam.length() - 2);
+ //g->font().setFamily(s);
+
+ s = ts.readLine();
+ p = s.find("=", 0);
+ s = s.right(s.length() - (p + 1));
+ int ps = s.toInt(0);
+
+ s = ts.readLine();
+ p = s.find("=", 0);
+ s = s.right(s.length() - (p + 1));
+ int b = 0;
+ if (s == "1")
+ {
+ b = QFont::Bold;
+ }
+
+ s = ts.readLine();
+ p = s.find("=", 0);
+ s = s.right(s.length() - (p + 1));
+ bool it = (s == "1");
+
+ QFont m_font(fam, ps, b, it);
+
+ while (ts.readLine() != "[Character Info]");
+ s = ts.readLine();
+ p = s.find("=", 0);
+ m_specialCharacters = s.right(s.length() - (p + 1));
+
+ while (ts.readLine() != "[Grid Info]");
+ ts.readLine(); //skip value for width of row headers
+
+ s = ts.readLine();
+ p = s.find("=", 0);
+ s = s.right(s.length() - (p + 1));
+ m_colWidth1 = s.toInt(0, 10);
+
+ s = ts.readLine();
+ p = s.find("=", 0);
+ s = s.right(s.length() - (p + 1));
+ m_colWidth2 = s.toInt(0, 10);
+
+ s = ts.readLine();
+ p = s.find("=", 0);
+ s = s.right(s.length() - (p + 1));
+ m_numRows = (s.toInt(0, 10) - 1); //We need to reduce by one since the header is not included
+
+ // Selection
+ s = ts.readLine();
+ p = s.find("=", 0);
+ s = s.right(s.length() - (p + 1));
+ m_topLeft =s.toInt(0, 10) - 1;
+
+ s = ts.readLine();
+ p = s.find("=", 0);
+ s = s.right(s.length() - (p + 1));
+ m_topRight =s.toInt(0, 10) - 1;
+
+ s = ts.readLine();
+ p = s.find("=", 0);
+ s = s.right(s.length() - (p + 1));
+ m_bottomLeft =s.toInt(0, 10) - 1;
+
+ s = ts.readLine();
+ p = s.find("=", 0);
+ s = s.right(s.length() - (p + 1));
+ m_bottomRight =s.toInt(0, 10) - 1 ;
+
+ while (ts.readLine() != "[Vocabulary]");
+
+ s = ts.readLine();
+ p = s.find(" [", 0);
+ s = s.left(p);
+ s = s.stripWhiteSpace();
+ m_language1 = s;
+ m_language2 = ts.readLine();
+
+ while (!s.isNull())
+ {
+ s = ts.readLine();
+ p = s.find("[", 0);
+ QString r = s.mid(p + 1, 10);
+ int h = r.toInt(0, 10);
+ s = s.left(p);
+ s = s.stripWhiteSpace();
+
+ QString b;
+ b = ts.readLine();
+
+ KWqlDataItem item(s, b, h /15);
+ list.append(item);
+ }
+ file.close();
+ return list;
+}
+
+
+/*!
+ \fn WqlReader::colWidth(int col)
+ */
+int WqlReader::colWidth(int col)
+{
+ if (col == 0)
+ return m_colWidth1;
+ else
+ return m_colWidth2;
+}
+
+
+/*!
+ \fn WqlReader::language(int col)
+ */
+QString WqlReader::language(int col)
+{
+ if (col == 0)
+ return m_language1;
+ else
+ return m_language2;
+}
+