OSDN Git Service

Initial commit
[wordring-tm/wordring-tm.git] / proxy / tmservice.cpp
1 #include "tmservice.h"
2 #include "language.h"
3
4 #include <QDir>
5 #include <QMutex>
6 #include <QMutexLocker>
7
8 #include <QPluginLoader>
9
10 #include "debug.h"
11
12 TM::Service::Service(QSettings *settings, QObject *parent)
13         : QObject(parent)
14         , m_settings(settings)
15         , m_mutex(QMutex::Recursive)
16 {
17 }
18
19 void TM::Service::load_languages(QString const &path)
20 {
21         QMutexLocker lock(&m_mutex);
22
23         QDir pdir(path);
24         for(QString fname : pdir.entryList(QDir::Files))
25         {
26                 QPluginLoader loader(pdir.absoluteFilePath(fname));
27                 if(Language *language = qobject_cast<Language*>(loader.instance()))
28                 {
29                         int code = language->code();
30                         m_languages[code] = language;
31                         language->set_settings(m_settings);
32                         emit languageLoaded(code, language->name(), language->icon());
33                 }
34         }
35 }
36
37 Text::pointer TM::Service::divide_into_sentences(int code, QString string)
38 {
39         QMutexLocker lock(&m_mutex);
40
41         assert(m_languages.contains(code));
42         return m_languages[code]->divide_into_sentences(string);
43 }
44
45 Text::pointer TM::Service::divide_into_words(int code, Text::pointer sentence)
46 {
47         QMutexLocker lock(&m_mutex);
48
49         assert(m_languages.contains(code));
50         return m_languages[code]->divide_into_words(sentence);
51 }
52
53
54
55