searchLimitv = 10;
}
+
+
Backbone::~Backbone()
{
+ QListIterator<CommonDictInterface*> it(dicts.keys());
+
+ while(it.hasNext())
+ delete it.next();
+
+ it = QListIterator<CommonDictInterface*>(plugins);
+ while(it.hasNext())
+ delete it.next();
+
+ QHashIterator<QString, Translation*> it2(_result);
+ while(it2.hasNext())
+ delete it2.next().value();
}
-Backbone::Backbone(const Backbone &b){
+
+
+
+Backbone::Backbone(const Backbone &b) :QObject(b.parent()) {
dicts = QHash<CommonDictInterface*, bool > (b.dicts);
plugins = QList<CommonDictInterface* > (b.plugins);
_result = QHash<QString, Translation* > (b._result);
searchLimitv = b.searchLimit();
}
+
+
+
int Backbone::searchLimit() const {
return searchLimitv;
}
+
+
+
QHash<CommonDictInterface*, bool > Backbone::getDictionaries() {
return dicts;
}
+
+
+
QList<CommonDictInterface* > Backbone::getPlugins() {
return plugins;
}
+
+
+
QList<QString> Backbone::getHistory() {
//TODO code needed
}
+
+
+
QMultiHash<QString, Translation*> Backbone::result() {
return _result;
}
+
+
+
void Backbone::stopSearching() {
foreach(CommonDictInterface* dict, dicts.keys())
dict->stop();
}
+
+
+
void Backbone::search(QString word) {
//TODO add running searches in new threads
_result.clear();
}
}
+
+
+
void Backbone::selectedDictionaries(QList<CommonDictInterface* > activeDicts) {
foreach(CommonDictInterface* dict, dicts.keys())
if(activeDicts.contains(dict))
dicts[dict] = 0;
}
+
+
+
void Backbone::addDictionary(CommonDictInterface* dict) {
dicts[dict] = 1;
connect(dict, SIGNAL(finalTranslation(QList<Translation*>)),
Qt::UniqueConnection);
}
+
+
void Backbone::quit() {
stopSearching();
Q_EMIT closeOk();
+
+void Backbone::loadPlugins() {
+ QObject *pl = QPluginLoader("xdxf.so").instance();
+ if(!pl)
+ return;
+ CommonDictInterface *plugin = qobject_cast<CommonDictInterface*>(pl);
+ plugins.append(plugin);
+ addDictionary(plugin);
+}
+
+
+
#include <QObject>
#include <QList>
#include <QHash>
+#include <QPluginLoader>
#include "../../includes/CommonDictInterface.h"
#include "../../includes/settings.h"
#include "../../includes/translation.h"
private:
+ void loadPlugins(); //< locate and load plugins
QHash<CommonDictInterface*, bool> dicts;
QList<CommonDictInterface*> plugins;
QMultiHash<QString, Translation*> _result;