fix bug's (translation color in stardict and kept settings after leave)
[mdictionary] / src / plugins / stardict / UncompressedReader.cpp
index 8bf95b7..5cc4b0e 100644 (file)
@@ -1,37 +1,53 @@
 #include "UncompressedReader.h"
 #include "QDebug"
 
+
 UncompressedReader::UncompressedReader(QObject *parent) :
         StarDictReader(parent) {
 
 }
 
+
 UncompressedReader::UncompressedReader(QString filename, QObject *parent) :
 StarDictReader(parent) {
     open(filename);
 }
 
+
 UncompressedReader::~UncompressedReader() {
     if(_file.isOpen())
         _file.close();
 }
 
+
 bool UncompressedReader::open(QString file) {
     _file.setFileName(file);
     _stream.setDevice(&_file);
     return _file.open(QFile::ReadOnly);
 }
 
+
 void UncompressedReader::close() {
     _file.close();
 }
 
+
 QChar UncompressedReader::readChar() {
     char c[4]={0};
     QString cha;
 
     _stream.readRawData(c,1);
-    if(((unsigned char)c[0])>127){
+    if(((unsigned char)c[0])>240)
+        _stream.readRawData(c+1,3);
+    else if(((unsigned char)c[0])>224)
+        _stream.readRawData(c+1,2);
+    else if(((unsigned char)c[0])>192)
+        _stream.readRawData(c+1,1);
+    else if(((unsigned char)c[0])>127)
+        qDebug()<<"error - starDict - read wordList from UTF-8";
+
+
+ /*   if(((unsigned char)c[0])>127){
         _stream.readRawData(c+1,1);
         if(((unsigned char)c[1])>127 && ((unsigned char)c[1])<192){
             _stream.readRawData(c+2,1);
@@ -39,11 +55,13 @@ QChar UncompressedReader::readChar() {
                 _stream.readRawData(c+3,1);
         }
     }
-
+ */
     cha=QString::fromUtf8(c);
+
     return cha.at(0);
 }
 
+
 QString UncompressedReader::readKeyword() {
     QString result;
     QChar c;
@@ -53,7 +71,6 @@ QString UncompressedReader::readKeyword() {
         result += c;
         c = readChar();
     }
-
     return result;
 }
 
@@ -70,6 +87,7 @@ QByteArray UncompressedReader::readString(qint64 offset, qint32 len) {
     return result;
 }
 
+
 qint32 UncompressedReader::readInt32BigEndian() {
     _stream.setByteOrder(QDataStream::BigEndian);
     qint32 value;
@@ -78,11 +96,11 @@ qint32 UncompressedReader::readInt32BigEndian() {
     return value;
 }
 
+
 qint64 UncompressedReader::readInt64BigEndian() {
     _stream.setByteOrder(QDataStream::BigEndian);
     qint64 value;
     _stream>>value;
     _stream.setByteOrder(QDataStream::LittleEndian);
-
     return value;
 }