Repair choice StarDict dictionary files.
authorPrzemyslaw Wojtysiak <pwojtysiak88@gmail.com>
Wed, 6 Oct 2010 09:44:49 +0000 (11:44 +0200)
committerPrzemyslaw Wojtysiak <pwojtysiak88@gmail.com>
Wed, 6 Oct 2010 09:44:49 +0000 (11:44 +0200)
src/plugins/stardict/StarDialog.cpp

index e628b65..13168da 100644 (file)
@@ -205,7 +205,13 @@ void StarDialog::saveSettings() {
         _settings->setValue("path", _dictionaryFilePath);
         _settings->setValue("ifoFileName", _dictName + ".ifo");
         _settings->setValue("idxFileName", _dictName + ".idx");
-        _settings->setValue("dictFileName", _dictName + ".dict");
+        if (QFile::exists(_dictName + ".dict.dz") == true) {
+                _settings->setValue("dictFileName", _dictName + ".dict.dz");
+        }
+        else {
+                _settings->setValue("dictFileName", _dictName + ".dict");
+        }
+
         if (QFile::exists(_dictName + ".syn") == true) {
                 _settings->setValue("synFileName", _dictName + ".syn");
         }
@@ -233,19 +239,27 @@ void StarDialog::accept() {
 }
 
 bool StarDialog::checkFiles() {
-        if (!_isCompressed){
-               _dictName = _dictionaryFilePath.left(_dictionaryFilePath.lastIndexOf("."));
-               if (QFile::exists(_dictName + ".idx") == false && QFile::exists(_dictName + ".idx.gz") == false) {
-                       return false;
-               }
-               if (QFile::exists(_dictName + ".dict") == false && QFile::exists(_dictName + ".dict.dz") == false) {
-                       return false;
-               }
-               return true;
+        if (!_isCompressed) {
+
+            if (_dictionaryFilePath.right(2) == "dz") {
+                _dictName = _dictionaryFilePath.left(_dictionaryFilePath.lastIndexOf("."));
+                _dictName = _dictName.left(_dictName.lastIndexOf("."));
+            }
+            else {
+                _dictName = _dictionaryFilePath.left(_dictionaryFilePath.lastIndexOf("."));
+            }
+
+            if (QFile::exists(_dictName + ".idx") == false && QFile::exists(_dictName + ".idx.gz") == false) {
+                return false;
+            }
+            if (QFile::exists(_dictName + ".dict") == false && QFile::exists(_dictName + ".dict.dz") == false) {
+                return false;
+            }
+            return true;
         }
         else {
-                //TODO: untar files (?)
-                return false;
+            //TODO: untar files (?)
+            return false;
         }
 }