Work on the parsing of .ifo file
authorPrzemyslaw Wojtysiak <pwojtysiak88@gmail.com>
Tue, 5 Oct 2010 13:56:14 +0000 (15:56 +0200)
committerPrzemyslaw Wojtysiak <pwojtysiak88@gmail.com>
Tue, 5 Oct 2010 13:56:14 +0000 (15:56 +0200)
src/plugins/stardict/StarDictPlugin.cpp
src/plugins/stardict/StarDictPlugin.h

index 9879e12..e3314f8 100644 (file)
@@ -100,6 +100,67 @@ QString StarDictPlugin::search(QString key) {
     return "";
 }
 
+StarDictSettings* StarDictPlugin::parseIfoFile()
+{
+    _ifoFileSettings = new StarDictSettings();
+
+    QFile file(settings()->value("path"));
+    if (!file.open(QIODevice::ReadOnly))
+    {
+        return 0;
+    }
+    QTextStream in(&file);
+    while (!in.atEnd()) {
+        QString line = in.readLine();
+        QStringList list = line.split("=");
+        if(line.contains("version"))
+        {
+            _ifoFileSettings->setVersion(list.at(1));
+        }
+        else if(line.contains("bookname"))
+        {
+            _ifoFileSettings->setBookname(list.at(1));
+        }
+        else if(line.contains("wordcount"))
+        {
+            _ifoFileSettings->setWordcount(list.at(1).toInt());
+        }
+        else if(line.contains("idxfilesize"))
+        {
+            _ifoFileSettings->setIdxfilesize(list.at(1).toInt());
+        }
+        else if(line.contains("idxoffsetbits"))
+        {
+            _ifoFileSettings->setidxoffsetbits(list.at(1).toInt());
+        }
+        else if(line.contains("author"))
+        {
+            _ifoFileSettings->setAuthor(list.at(1));
+        }
+        else if(line.contains("email"))
+        {
+            _ifoFileSettings->setEmail(list.at(1));
+        }
+        else if(line.contains("website"))
+        {
+            _ifoFileSettings->setWebsite(list.at(1));
+        }
+        else if(line.contains("description"))
+        {
+            _ifoFileSettings->setDescription(list.at(1));
+        }
+        else if(line.contains("date"))
+        {
+            _ifoFileSettings->setDate(list.at(1));
+        }
+        else if(line.contains("sametypesequence"))
+        {
+            _ifoFileSettings->setSametypesequence(list.at(1));
+        }
+    }
+    return _ifoFileSettings;
+
+}
 
 
 void StarDictPlugin::stop() {
index f371153..5c9c0a3 100644 (file)
@@ -43,6 +43,7 @@
 #include "../../include/settings.h"
 #include "StarDictDialog.h"
 #include "TranslationStarDict.h"
+#include "StarDictSettings.h"
 
 class TranslationXdxf;
 
@@ -93,6 +94,9 @@ public:
     //! Sets new settings
     bool setSettings(const Settings*);
 
+    //! \return object containing data parsed from .ifo file
+    StarDictSettings* parseIfoFile();
+
     //! \returns plugin icon
     QIcon* icon();
 
@@ -173,6 +177,7 @@ private:
     volatile bool stopped;
     Settings *_settings;
     StarDictDialog* _dictDialog;
+    StarDictSettings* _ifoFileSettings;
 };
 
 #endif // XDXFPLUGIN_H