_settings->setValue("path", _dictionaryFilePath);
_settings->setValue("ifoFileName", _dictName + ".ifo");
_settings->setValue("idxFileName", _dictName + ".idx");
- _settings->setValue("dictFileName", _dictName + ".dict");
+ if(QFile(_dictName + ".dict").exists())
+ _settings->setValue("dictFileName", _dictName + ".dict");
+ else
+ _settings->setValue("dictFileName", _dictName + ".dict.dz");
if (QFile::exists(_dictName + ".syn") == true) {
_settings->setValue("synFileName", _dictName + ".syn");
}
if(keyword.exactMatch(fkey)) {
TranslationStarDict tran(fkey, infoNote(), this);
+ qDebug() << "off/len" << offset << len;
int id = translations.indexOf(tran);
if(id == -1) {
tran.add(offset, len);
-QString StarDictPlugin::search(QString key) {
- return "";
+QString StarDictPlugin::search(QString key, qint64 offset, qint32 len) {
+ if(!dictReader)
+ return "";
+
+ qDebug() << dictReader->readString(offset, len);
+ return dictReader->readString(offset, len);
}
disconnect(plugin, SIGNAL(notify(Notify::NotifyType,QString)),
this, SIGNAL(notify(Notify::NotifyType,QString)));
plugin->getDictionaryInfo();
+ plugin->dictReader = StarDictReaderFactory::
+ createReader(settings->value("dictFileName"));
return plugin;
}
else {
bool isAvailable() const;
//! \returns a description of a word given by a QString
- QString search(QString key);
+ QString search(QString key) {
+ return search(key, 0, 0);
+ }
+
+ /*! \return a description of a word given by a QString
+ \param offset offset of translation to be cut out
+ \param len lenght of translation to be cut out
+ */
+ QString search(QString key, qint64 offset, qint32 len);
//! \returns current plugin settings
Settings* settings();
Settings *_settings;
StarDictDialog* _dictDialog;
Settings* _ifoFileSettings;
+ StarDictReader * dictReader;
};
#endif // XDXFPLUGIN_H
#include "StarDictReaderFactory.h"
#include "CompressedReader.h"
#include "UncompressedReader.h"
+#include <QDebug>
StarDictReader* StarDictReaderFactory::createReader(QString filename) {
if(filename.endsWith(".gz", Qt::CaseInsensitive) ||
- filename.endsWith(".dz", Qt::CaseInsensitive)) {
+ filename.endsWith(".dz", Qt::CaseInsensitive)) {
+ qDebug() << "compressed";
return new CompressedReader(filename);
}
else {
+ qDebug() << "uncompressed";
return new UncompressedReader(filename);
}
}
_dictionaryInfo = base._dictionaryInfo;
lengths = base.lengths;
offsets = base.offsets;
+ starDictPlugin = base.starDictPlugin;
}
}
QString TranslationStarDict::toXml() const {
+ qDebug() << "asdf" << _dictionaryInfo;
QString result("");
if(!starDictPlugin)
return result;
-
- result=result + "<dict> <info path=\"/usr/share/mdictionary/xdxf.png\" ";
- if(isBookmark())
- result+= " bookmark=\"true\" > \n";
- else
- result+= " bookmark=\"false\" > \n";
- result+= _dictionaryInfo + "</info>" + starDictPlugin->search(_key) + "</dict>";
- return result.replace("&","&");
+ qDebug() << "asdf";
+ for(int i = 0; i < offsets.size(); i++) {
+ result=result + "<dict> <info path=\"/usr/share/mdictionary/xdxf.png\" ";
+ if(isBookmark())
+ result+= " bookmark=\"true\" > \n";
+ else
+ result+= " bookmark=\"false\" > \n";
+ qDebug() << "!!asdf";
+ result+= _dictionaryInfo + "</info>" +
+ starDictPlugin->search(_key, offsets.at(i), lengths.at(i))
+ + "</dict>";
+ qDebug() << "!!!!asdf";
+ }
+ return result.replace("&","&");
}
void TranslationStarDict::setKey(QString _key) {