return QList<Translation*>();
}
+class TranslationPtr {
+ Translation* _tr;
+public:
+ TranslationPtr(Translation* tr) :_tr(tr) {}
+ QString toHtml() const {return _tr->toHtml();}
+};
+
void Backbone::init() {
_interval = 250; //msec
dryRun = false;
void Backbone::searchHtml(QList<Translation *> translations) {
_timerHtmlSearch.stop();
_htmlResult.clear();
- _innerHtmlResult.clear();
- _timerHtmlSearch.start();
+ QList<TranslationPtr> dummy;
+ foreach(Translation* tr, translations)
+ dummy.append(TranslationPtr(tr));
+ _timerHtmlSearch.start(_interval);
- foreach(Translation* trans, translations)
- if(trans)
- _innerHtmlResult.append(
- QtConcurrent::run(trans, &Translation::toHtml));
+ _innerHtmlResult = QtConcurrent::mapped(dummy,
+ &TranslationPtr::toHtml);
}
void Backbone::htmlTranslationReady() {
- foreach(QFuture<QString> res, _innerHtmlResult) {
- if(!res.isFinished())
- continue;
- _htmlResult.append(res.result());
- _innerHtmlResult.removeOne(res);
- }
- if(!_innerHtmlResult.size()) {
- _timerHtmlSearch.stop();
- Q_EMIT htmlReady();
- }
+ if(!_innerHtmlResult.isFinished())
+ return;
+
+ _timerHtmlSearch.stop();
+ QFutureIterator<QString> it(_innerHtmlResult);
+ while(it.hasNext())
+ _htmlResult.append(it.next());
+
+ Q_EMIT htmlReady();
}
QHash<CommonDictInterface*, bool> _dicts;
QList<CommonDictInterface*> _plugins;
QFuture<QList<Translation*> > _innerResult;
- QList<QFuture<QString> > _innerHtmlResult;
+ QFuture<QString> _innerHtmlResult;
QMultiHash<QString, Translation*> _result;
QStringList _htmlResult;
QTimer _timerSearch, _timerHtmlSearch;