QString StarDictPlugin::infoNote() const {
- return _infoNote;
+ return _name;
}
QRegExp keyword(word, Qt::CaseInsensitive, QRegExp::Wildcard);
int counter = 0;
- while(counter < wordcount && counter<limit) {
+ int counterLimit = 0;
+ while(counter < wordcount && (counterLimit<limit || limit==0)) {
counter++;
fkey = reader->readKeyword();
if(is32b)
len = reader->readInt32BigEndian();
if(keyword.exactMatch(fkey)) {
+ qDebug()<<"InfoNote"<<infoNote();
TranslationStarDict tran(fkey, infoNote(), this);
qDebug() << "off/len" << offset << len;
int id = translations.indexOf(tran);
translations.push_front(tran);
} else
translations[id].add(offset, len);
+ counterLimit++;
}
-
-
}
QList<Translation*> ret;
QListIterator<TranslationStarDict> it(translations);
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>" + key + "</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("</k>","</key><t>");
+ result.replace("<k>","</t><key>");
+ int pos=result.indexOf("</t>");
+ if(pos!=-1)
+ result.remove(pos,4);
+ result+="</t>";
+ }
+ 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;
-
}
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"<<settings()->value("sametypesequence");
+ return format(raw, settings()->value("sametypesequence"),key);
}