stopped = false;
_icon = QIcon(":/icons/xdxf.png");
+ initAccents();
}
+
+
XdxfPlugin::~XdxfPlugin()
{
// QString connection(db.connectionName());
delete _settings;
}
+void XdxfPlugin::initAccents() {
+ letters['a'] = QRegExp("[ÀàÁáÂÂâÃãÄäÅåæÆĀāĂ㥹]", Qt::CaseInsensitive);
+ letters['c'] = QRegExp("[ÇçÈçŒĆćĈĉĊċČč]", Qt::CaseInsensitive);
+ letters['d'] = QRegExp("[ÐĐđĎď]", Qt::CaseInsensitive);
+ letters['e'] = QRegExp("[ÈéèÉÊêËëĒēĔĕĖėĘęĚěē]", Qt::CaseInsensitive);
+ letters['f'] = QRegExp("[ſ]", Qt::CaseInsensitive);
+ letters['g'] = QRegExp("[ĠġĢģĜĝĞğ]", Qt::CaseInsensitive);
+ letters['h'] = QRegExp("[ħĤĥĦ]", Qt::CaseInsensitive);
+ letters['i'] = QRegExp("[ÌìÍíÎîÏïİijĨĩĪīĬĭĮį]", Qt::CaseInsensitive);
+ letters['j'] = QRegExp("[Ĵĵ]", Qt::CaseInsensitive);
+ letters['k'] = QRegExp("[Ķķĸ]", Qt::CaseInsensitive);
+ letters['l'] = QRegExp("[ŀŁłĹĺĻļĽľĿ]", Qt::CaseInsensitive);
+ letters['n'] = QRegExp("[ÑñŃńŅņŇňʼnŊŋ]", Qt::CaseInsensitive);
+ letters['o'] = QRegExp("[ÒòÓóÔÕõÖöØøŐőœŌōŎŏ]", Qt::CaseInsensitive);
+ letters['r'] = QRegExp("[ŕŖŖŗŘř]", Qt::CaseInsensitive);
+ letters['s'] = QRegExp("[ߊšŚśŜŝŞş]", Qt::CaseInsensitive);
+ letters['t'] = QRegExp("[ŢţŤťŦŧ]", Qt::CaseInsensitive);
+ letters['u'] = QRegExp("[ÙùÚúÛûÜüŰűŲųŨũŪūŬŮů]", Qt::CaseInsensitive);
+ letters['w'] = QRegExp("[Ŵŵ]", Qt::CaseInsensitive);
+ letters['y'] = QRegExp("[ÿÝýŶŷŸ]", Qt::CaseInsensitive);
+ letters['z'] = QRegExp("[ŹźŻżŽž]", Qt::CaseInsensitive);
+ noLetter = QRegExp("[^a-z ]", Qt::CaseInsensitive);
+}
+
QString XdxfPlugin::langFrom() const {
return _langFrom;
}
QXmlStreamReader reader(&dictionaryFile);
/*search words list*/
QString a;
- QRegExp regexp(removeAccents(a), Qt::CaseInsensitive, QRegExp::Wildcard);
- regexp.setMinimal(true);
int i=0;
while(!reader.atEnd() && !stopped){
reader.readNextStartElement();
if(!reader.atEnd())
a = reader.readElementText();
- regexp.setPattern(a);
- if((regWord.exactMatch(a) || regexp.exactMatch(
- word.left(word.size()-1))) &&
+ if((regWord.exactMatch(a) || regWord.exactMatch(removeAccents(a))) &&
(i<limit || limit==0)) {
bool ok=true;
Translation *tran;
if(reader.tokenType()==QXmlStreamReader::StartElement)
temp+=tr("<");
temp+=reader.name().toString();
- if(reader.name().toString()=="c" && reader.tokenType()==QXmlStreamReader::StartElement)
- temp= temp + tr(" c=\"") + reader.attributes().value(tr("c")).toString() + tr("\"");
+ if(reader.name().toString()=="c" &&
+ reader.tokenType()==QXmlStreamReader::StartElement)
+ temp= temp + tr(" c=\"") + reader.attributes().
+ value(tr("c")).toString() + tr("\"");
temp+=tr(">");
}
- temp+= reader.text().toString().replace("<","<").replace(">",">");
+ temp+= reader.text().toString().replace("<","<").
+ replace(">",">");
reader.readNext();
}
if(temp.at(0)==QChar('\n'))
QString format = "png";
QString initialPath = QDir::currentPath() + tr("/xdxf.") + format;
- _infoNote="path=\""+initialPath+"\">"+"\n" + _name + " [" + _langFrom + "-" + _langTo + "] "+ "(" + _type + ")";
+ _infoNote="path=\""+initialPath+"\">"+"\n" + _name + " [" + _langFrom +
+ "-" + _langTo + "] "+ "(" + _type + ")";
dictionaryFile.close();
}
-QString XdxfPlugin::removeAccents(QString string, QChar wildcard) {
- QString normalized = string.toLower();
- for(int i=0; i<normalized.size(); i++) {
- if(normalized[i].isLetterOrNumber() && ((normalized.at(1) < QChar('a'))
- || (normalized.at(i) > QChar('z'))))
- normalized[i] = wildcard;
- }
+
+
+QString XdxfPlugin::removeAccents(QString string) {
+ string = string.toLower();
+ QString normalized = string.normalized(QString::NormalizationForm_KD);
+ foreach(QChar let, letters.keys())
+ normalized.replace(letters[let], QString(let));
+
+ normalized.replace(noLetter, "");
+ //qDebug() << "NORMALIZED: " << normalized;
return normalized;
+ return string;
}
+
+
QIcon* XdxfPlugin::icon() {
return &_icon;
}
match=false;
cur.prepare("insert into dict values(?,?,?)");
cur.addBindValue(a);
- cur.addBindValue(removeAccents(a,'_'));
+ cur.addBindValue(removeAccents(a));
cur.addBindValue(temp);
cur.exec();
counter++;