Searching for translation kind of working (from searching file side)
authorBartosz Szatkowski <bulislaw@linux.com>
Wed, 6 Oct 2010 09:56:52 +0000 (11:56 +0200)
committerBartosz Szatkowski <bulislaw@linux.com>
Wed, 6 Oct 2010 09:56:52 +0000 (11:56 +0200)
Still some compressed file reading dont really working

src/plugins/stardict/StarDialog.cpp
src/plugins/stardict/StarDictPlugin.cpp
src/plugins/stardict/StarDictPlugin.h
src/plugins/stardict/StarDictReaderFactory.cpp
src/plugins/stardict/TranslationStarDict.cpp

index e628b65..46a349f 100644 (file)
@@ -205,7 +205,10 @@ void StarDialog::saveSettings() {
         _settings->setValue("path", _dictionaryFilePath);
         _settings->setValue("ifoFileName", _dictName + ".ifo");
         _settings->setValue("idxFileName", _dictName + ".idx");
-        _settings->setValue("dictFileName", _dictName + ".dict");
+        if(QFile(_dictName + ".dict").exists())
+            _settings->setValue("dictFileName", _dictName + ".dict");
+        else
+            _settings->setValue("dictFileName", _dictName + ".dict.dz");
         if (QFile::exists(_dictName + ".syn") == true) {
                 _settings->setValue("synFileName", _dictName + ".syn");
         }
index 50a7dd8..8e27f51 100644 (file)
@@ -119,6 +119,7 @@ QList<Translation*> StarDictPlugin::searchWordList(QString word, int limit) {
 
         if(keyword.exactMatch(fkey)) {
             TranslationStarDict tran(fkey, infoNote(), this);
+            qDebug() << "off/len" << offset << len;
             int id = translations.indexOf(tran);
             if(id == -1) {
                 tran.add(offset, len);
@@ -140,8 +141,12 @@ QList<Translation*> StarDictPlugin::searchWordList(QString word, int limit) {
 
 
 
-QString StarDictPlugin::search(QString key) {
-    return "";
+QString StarDictPlugin::search(QString key, qint64 offset, qint32 len) {
+    if(!dictReader)
+        return "";
+
+    qDebug() << dictReader->readString(offset, len);
+    return dictReader->readString(offset, len);
 }
 
 
@@ -172,6 +177,8 @@ CommonDictInterface* StarDictPlugin::getNew(const Settings *settings) const {
         disconnect(plugin, SIGNAL(notify(Notify::NotifyType,QString)),
                 this, SIGNAL(notify(Notify::NotifyType,QString)));
         plugin->getDictionaryInfo();
+        plugin->dictReader = StarDictReaderFactory::
+                createReader(settings->value("dictFileName"));
         return plugin;
     }
     else {
index 65c4e02..89e38eb 100644 (file)
@@ -82,7 +82,15 @@ public:
     bool isAvailable() const;
 
     //! \returns a description of a word given by a QString
-    QString search(QString key);
+    QString search(QString key) {
+        return search(key, 0, 0);
+    }
+
+    /*! \return a description of a word given by a QString
+        \param offset offset of translation to be cut out
+        \param len lenght of translation to be cut out
+        */
+    QString search(QString key, qint64 offset, qint32 len);
 
     //! \returns current plugin settings
     Settings* settings();
@@ -174,6 +182,7 @@ private:
     Settings *_settings;
     StarDictDialog* _dictDialog;
     Settings* _ifoFileSettings;
+    StarDictReader * dictReader;
 };
 
 #endif // XDXFPLUGIN_H
index 498bdfc..3ae2242 100644 (file)
 #include "StarDictReaderFactory.h"
 #include "CompressedReader.h"
 #include "UncompressedReader.h"
+#include <QDebug>
 
 
 StarDictReader* StarDictReaderFactory::createReader(QString filename) {
     if(filename.endsWith(".gz", Qt::CaseInsensitive) ||
-       filename.endsWith(".dz", Qt::CaseInsensitive)) {
+           filename.endsWith(".dz", Qt::CaseInsensitive)) {
+       qDebug() << "compressed";
         return new CompressedReader(filename);
     }
     else {
+       qDebug() << "uncompressed";
         return new UncompressedReader(filename);
     }
 }
index 74cc0cb..f6720d3 100644 (file)
@@ -45,6 +45,7 @@ TranslationStarDict::TranslationStarDict(const TranslationStarDict &base) {
     _dictionaryInfo = base._dictionaryInfo;
     lengths = base.lengths;
     offsets = base.offsets;
+    starDictPlugin = base.starDictPlugin;
 }
 
 
@@ -59,17 +60,24 @@ QString TranslationStarDict::key() const {
 }
 
 QString TranslationStarDict::toXml() const {
+    qDebug() << "asdf" << _dictionaryInfo;
     QString result("");
     if(!starDictPlugin)
         return result;
-
-    result=result + "<dict> <info path=\"/usr/share/mdictionary/xdxf.png\" ";
-    if(isBookmark())
-        result+= " bookmark=\"true\" > \n";
-    else
-        result+= " bookmark=\"false\" > \n";
-    result+= _dictionaryInfo + "</info>" + starDictPlugin->search(_key) + "</dict>";
-    return result.replace("&","&amp;");
+    qDebug() << "asdf";
+    for(int i = 0; i < offsets.size(); i++) {
+        result=result + "<dict> <info path=\"/usr/share/mdictionary/xdxf.png\" ";
+        if(isBookmark())
+            result+= " bookmark=\"true\" > \n";
+        else
+            result+= " bookmark=\"false\" > \n";
+    qDebug() << "!!asdf";
+        result+= _dictionaryInfo + "</info>" +
+                starDictPlugin->search(_key, offsets.at(i), lengths.at(i))
+                + "</dict>";
+    qDebug() << "!!!!asdf";
+   }
+   return result.replace("&","&amp;");
 }
 
 void TranslationStarDict::setKey(QString _key) {