From d88d03dfa6ffb5ffb9d0a2b07496f6c6f68599b3 Mon Sep 17 00:00:00 2001 From: Jakub Jaszczynski Date: Thu, 7 Oct 2010 12:16:32 +0200 Subject: [PATCH] change in interpret function in starDict Plugin --- src/plugins/stardict/StarDictPlugin.cpp | 118 ++++++++++++++------------ src/plugins/stardict/StarDictPlugin.h | 4 +- src/plugins/stardict/TranslationStarDict.cpp | 13 +-- 3 files changed, 68 insertions(+), 67 deletions(-) diff --git a/src/plugins/stardict/StarDictPlugin.cpp b/src/plugins/stardict/StarDictPlugin.cpp index 3709ca4..14691e7 100644 --- a/src/plugins/stardict/StarDictPlugin.cpp +++ b/src/plugins/stardict/StarDictPlugin.cpp @@ -84,7 +84,7 @@ QString StarDictPlugin::type() const { QString StarDictPlugin::infoNote() const { - return _infoNote; + return _name; } @@ -108,7 +108,8 @@ QList StarDictPlugin::searchWordList(QString word, int limit) { QRegExp keyword(word, Qt::CaseInsensitive, QRegExp::Wildcard); int counter = 0; - while(counter < wordcount && counterreadKeyword(); if(is32b) @@ -118,6 +119,7 @@ QList StarDictPlugin::searchWordList(QString word, int limit) { len = reader->readInt32BigEndian(); if(keyword.exactMatch(fkey)) { + qDebug()<<"InfoNote"< StarDictPlugin::searchWordList(QString word, int limit) { translations.push_front(tran); } else translations[id].add(offset, len); + counterLimit++; } - - } QList ret; QListIterator it(translations); @@ -154,70 +155,77 @@ QByteArray StarDictPlugin::read(QByteArray::iterator it, QString StarDictPlugin::interpret(QByteArray::iterator it, - QByteArray::iterator end, QChar mode, bool last) { + QByteArray::iterator end, QChar mode,QString key, bool last) { QString result; - if(mode == 'm') - result += QString::fromUtf8(read(it++, end)); - else if(mode == 'l') - result += QString::fromUtf8(read(it++, end)); - else if(mode == 'g') - result += QString::fromUtf8(read(it++, end)); - else if(mode == 't') - result += QString::fromUtf8(read(it++, end)); - else if(mode == 'x') - result += QString::fromUtf8(read(it++, end)); - else if(mode == 'y') - result += QString::fromUtf8(read(it++, end)); - else if(mode == 'k') - result += QString::fromUtf8(read(it++, end)); - else if(mode == 'w') - result += QString::fromUtf8(read(it++, end)); - else if(mode == 'h') - result += QString::fromUtf8(read(it++, end)); - else if(mode == 'r') - result += QString::fromUtf8(read(it++, end)); - - else if(mode == 'W') { - if(!last) { - QByteArray tmp ; - tmp.append(*(it++)); - tmp.append(*(it++)); - tmp.append(*(it++)); - tmp.append(*(it)); - result += read(it++, end, (qint32)qFromBigEndian(tmp.data())); - } else - result += read(it++, end); - } else if(mode == 'P') { - if(!last) { - QByteArray tmp ; - tmp.append(*(it++)); - tmp.append(*(it++)); - tmp.append(*(it++)); - tmp.append(*(it)); - result += read(it++, end, (qint32)qFromBigEndian(tmp.data())); - } else - result += read(it++, end); - } - return result; + if(mode == 'm') + result += QString::fromUtf8(read(it++, end)); + else if(mode == 'l') + result += QString::fromUtf8(read(it++, end)); + else if(mode == 'g'){ + result += "" + key + ""; + result += QString::fromUtf8(read(it++, end)); + } + else if(mode == 't') + result += QString::fromUtf8(read(it++, end)); + else if(mode == 'x'){ + result += QString::fromUtf8(read(it++, end)); + result.replace("",""); + result.replace("",""); + int pos=result.indexOf(""); + if(pos!=-1) + result.remove(pos,4); + result+=""; + } + else if(mode == 'y') + result += QString::fromUtf8(read(it++, end)); + else if(mode == 'k') + result += QString::fromUtf8(read(it++, end)); + else if(mode == 'w') + result += QString::fromUtf8(read(it++, end)); + else if(mode == 'h') + result += QString::fromUtf8(read(it++, end)); + else if(mode == 'r') + result += QString::fromUtf8(read(it++, end)); + + else if(mode == 'W') { + if(!last) { + QByteArray tmp ; + tmp.append(*(it++)); + tmp.append(*(it++)); + tmp.append(*(it++)); + tmp.append(*(it)); + result += read(it++, end, (qint32)qFromBigEndian(tmp.data())); + } else + result += read(it++, end); + } else if(mode == 'P') { + if(!last) { + QByteArray tmp ; + tmp.append(*(it++)); + tmp.append(*(it++)); + tmp.append(*(it++)); + tmp.append(*(it)); + result += read(it++, end, (qint32)qFromBigEndian(tmp.data())); + } else + result += read(it++, end); + } + return result; } -QString StarDictPlugin::format(QByteArray raw, QString mode) { +QString StarDictPlugin::format(QByteArray raw, QString mode,QString key) { QString result; if(mode == "") { for(QByteArray::iterator it = raw.begin(); it != raw.end(); it++) { char tmp = *(++it); - result += interpret(--it, raw.end(), tmp); + result += interpret(--it, raw.end(), tmp, key); } } else { QByteArray::iterator it = raw.begin(); foreach(QChar tmp, mode) { - result += interpret(it, raw.end(), tmp); + result += interpret(it, raw.end(), tmp, key); } } - return result; - } @@ -225,9 +233,9 @@ QString StarDictPlugin::format(QByteArray raw, QString mode) { QString StarDictPlugin::search(QString key, qint64 offset, qint32 len) { if(!dictReader) return ""; - QByteArray raw = dictReader->readString(offset, len); - return format(raw, settings()->value("sametypesequence")); + qDebug()<<"mod"<value("sametypesequence"); + return format(raw, settings()->value("sametypesequence"),key); } diff --git a/src/plugins/stardict/StarDictPlugin.h b/src/plugins/stardict/StarDictPlugin.h index 632ecdc..c8efbae 100644 --- a/src/plugins/stardict/StarDictPlugin.h +++ b/src/plugins/stardict/StarDictPlugin.h @@ -190,7 +190,7 @@ private: \return converted translation \param QByteArray raw data to process \param mode StarDict parametr "sametypesequence" */ - QString format(QByteArray, QString mode); + QString format(QByteArray, QString mode,QString key); /*! Reads bytes bytes of data or reads until \0 \param it iterator to given data @@ -208,7 +208,7 @@ private: StarDict format description) \return QSting containing interpreted data chunk */ QString interpret(QByteArray::iterator it, QByteArray::iterator end, - QChar mode, bool last = false); + QChar mode,QString key, bool last = false); }; #endif // XDXFPLUGIN_H diff --git a/src/plugins/stardict/TranslationStarDict.cpp b/src/plugins/stardict/TranslationStarDict.cpp index 65c60a0..8ffd51e 100644 --- a/src/plugins/stardict/TranslationStarDict.cpp +++ b/src/plugins/stardict/TranslationStarDict.cpp @@ -77,16 +77,9 @@ QString TranslationStarDict::toXml() const { result+= _dictionaryInfo +""; /*przeformatowanie zwracanego stringu na oczekiwany format*/ - QString text =starDictPlugin->search(_key, offsets.at(i), lengths.at(i)); - text.replace("",""); - text.replace("",""); - int pos=text.indexOf(""); - if(pos!=-1) - text.remove(pos,4); - - result+= text; - result+= " "; - qDebug()<<"trans"<search(_key, offsets.at(i), lengths.at(i)); + result+= ""; + //qDebug()<<"trans"<