From 1e0b968e14f57f12ddd1b723194fea801c8fb11f Mon Sep 17 00:00:00 2001 From: Przemyslaw Wojtysiak Date: Tue, 5 Oct 2010 15:56:14 +0200 Subject: [PATCH] Work on the parsing of .ifo file --- src/plugins/stardict/StarDictPlugin.cpp | 61 +++++++++++++++++++++++++++++++ src/plugins/stardict/StarDictPlugin.h | 5 +++ 2 files changed, 66 insertions(+) diff --git a/src/plugins/stardict/StarDictPlugin.cpp b/src/plugins/stardict/StarDictPlugin.cpp index 9879e12..e3314f8 100644 --- a/src/plugins/stardict/StarDictPlugin.cpp +++ b/src/plugins/stardict/StarDictPlugin.cpp @@ -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() { diff --git a/src/plugins/stardict/StarDictPlugin.h b/src/plugins/stardict/StarDictPlugin.h index f371153..5c9c0a3 100644 --- a/src/plugins/stardict/StarDictPlugin.h +++ b/src/plugins/stardict/StarDictPlugin.h @@ -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 -- 1.7.9.5