-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsitemanager.cpp
More file actions
97 lines (87 loc) · 2.59 KB
/
Copy pathsitemanager.cpp
File metadata and controls
97 lines (87 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include "sitemanager.h"
SiteManager* SiteManager::m_instance = 0;
SiteManager::SiteManager(QObject *parent) : QObject(parent){
QDir pluginsDir = QDir(qApp->applicationDirPath());
pluginsDir.cd("plugins");
foreach(QString fileName, pluginsDir.entryList(QDir::Files)){
QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
QObject *plugin = loader.instance();
if (plugin){
Plugin * elem = qobject_cast<Plugin *>(plugin);
if (elem){
pluginList << elem;
}
}
}
}
SiteManager::~SiteManager(){
//Rien de spécial à faire
}
SiteManager * SiteManager::instance()
{
if (m_instance==0) {
m_instance = new SiteManager();
}
return m_instance;
}
QStringList SiteManager::getPluginList(QString type){
QStringList liste;
foreach(Plugin * pg, pluginList){
if(!type.isEmpty()){
if(QString::compare(pg->getType(), type)==0){
liste.append(pg->getName());
langue.append(pg->getLanguage());
}
}
else{
liste.append(pg->getName());
}
}
return liste;
}
QStringList SiteManager::getLanguePlugins(){
return langue;
}
QStringList SiteManager::getPluginsByLangue(QString langue){
QStringList liste;
foreach(Plugin * pg, pluginList){
if((QString::compare(pg->getLanguage(), langue)==0) && (QString::compare(pg->getType(), currentType)==0)){
liste.append(pg->getName());
}
}
return liste;
}
QList< QMultiMap<QString,QString> > SiteManager::makeSearch(QString search, QString site, QString langue, QString type){
QList< QMultiMap<QString,QString> > resultats;
currentType = type;
if(!langue.isEmpty()){
QStringList pluginsLangue = this->getPluginsByLangue(langue);
for(int i=0; i<pluginsLangue.size(); ++i){
Plugin *pg = selectPlugin(pluginsLangue.at(i));
if(pg)
resultats.append(pg->makeSearch(search));
}
}
else{
Plugin *pg = selectPlugin(site);
if(pg)
resultats.append(pg->makeSearch(search));
}
return resultats;
}
QMultiMap<QString,QString> SiteManager::getBook( QString id, QString site ){
Plugin *pg = selectPlugin(site);
if(pg){
return pg->getBook(id);
}
return QMultiMap<QString,QString>();
}
Plugin* SiteManager::selectPlugin(QString nom){
foreach(Plugin* pg, pluginList){
if(pg->getName() == nom){
return pg;
}
}
//ERREUR!!!
return 0;
}