1 /*******************************************************************************
3 This file is part of mDictionary.
5 mDictionary is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
10 mDictionary is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with mDictionary. If not, see <http://www.gnu.org/licenses/>.
18 Copyright 2010 Comarch S.A.
20 *******************************************************************************/
22 /*! \file stardictplugin.cpp
25 #include "StarDictPlugin.h"
27 #include "../../include/Notify.h"
28 #include <QTranslator>
29 #include <QCoreApplication>
32 StarDictPlugin::StarDictPlugin(QObject *parent) : CommonDictInterface(parent),
33 _langFrom(""), _langTo(""),_name(""), _infoNote("") {
34 _settings = new Settings();
35 _dictDialog = new StarDictDialog(this, this);
37 connect(_dictDialog, SIGNAL(notify(Notify::NotifyType,QString)),
38 this, SIGNAL(notify(Notify::NotifyType,QString)));
41 _settings->setValue("type","stardict");
42 _icon = QIcon("/usr/share/mdictionary/xdxf.png");
49 void StarDictPlugin::retranslate() {
50 QString locale = QLocale::system().name();
52 QTranslator *translator = new QTranslator(this);
54 if(!translator->load(":/xdxf/translations/" + locale)) {
55 translator->load(":/xdxf/translations/en_US");
57 QCoreApplication::installTranslator(translator);
61 StarDictPlugin::~StarDictPlugin() {
67 QString StarDictPlugin::langFrom() const {
72 QString StarDictPlugin::langTo() const {
77 QString StarDictPlugin::name() const {
82 QString StarDictPlugin::type() const {
83 return QString("stardict");
87 QString StarDictPlugin::infoNote() const {
92 QList<Translation*> StarDictPlugin::searchWordList(QString word, int limit) {
93 QSet<Translation*> translations;
94 return translations.toList();
99 QString StarDictPlugin::search(QString key) {
103 StarDictSettings* StarDictPlugin::parseIfoFile()
105 _ifoFileSettings = new StarDictSettings();
107 QFile file(settings()->value("path"));
108 if (!file.open(QIODevice::ReadOnly))
112 QTextStream in(&file);
113 while (!in.atEnd()) {
114 QString line = in.readLine();
115 QStringList list = line.split("=");
116 if(line.contains("version"))
118 _ifoFileSettings->setVersion(list.at(1));
120 else if(line.contains("bookname"))
122 _ifoFileSettings->setBookname(list.at(1));
124 else if(line.contains("wordcount"))
126 _ifoFileSettings->setWordcount(list.at(1).toInt());
128 else if(line.contains("idxfilesize"))
130 _ifoFileSettings->setIdxfilesize(list.at(1).toInt());
132 else if(line.contains("idxoffsetbits"))
134 _ifoFileSettings->setidxoffsetbits(list.at(1).toInt());
136 else if(line.contains("author"))
138 _ifoFileSettings->setAuthor(list.at(1));
140 else if(line.contains("email"))
142 _ifoFileSettings->setEmail(list.at(1));
144 else if(line.contains("website"))
146 _ifoFileSettings->setWebsite(list.at(1));
148 else if(line.contains("description"))
150 _ifoFileSettings->setDescription(list.at(1));
152 else if(line.contains("date"))
154 _ifoFileSettings->setDate(list.at(1));
156 else if(line.contains("sametypesequence"))
158 _ifoFileSettings->setSametypesequence(list.at(1));
161 return _ifoFileSettings;
166 void StarDictPlugin::stop() {
171 DictDialog* StarDictPlugin::dictDialog() {
176 CommonDictInterface* StarDictPlugin::getNew(const Settings *settings) const {
177 StarDictPlugin *plugin = new StarDictPlugin();
179 connect(plugin, SIGNAL(notify(Notify::NotifyType,QString)),
180 this, SIGNAL(notify(Notify::NotifyType,QString)));
182 ((StarDictDialog*)plugin->dictDialog())->setLastDialogParent(_dictDialog->lastDialogParent());
186 if(settings && plugin->setSettings(settings)) {
188 disconnect(plugin, SIGNAL(notify(Notify::NotifyType,QString)),
189 this, SIGNAL(notify(Notify::NotifyType,QString)));
193 disconnect(plugin, SIGNAL(notify(Notify::NotifyType,QString)),
194 this, SIGNAL(notify(Notify::NotifyType,QString)));
201 bool StarDictPlugin::isAvailable() const {
206 Settings* StarDictPlugin::settings() {
211 bool StarDictPlugin::isCached() {
216 bool StarDictPlugin::setSettings(const Settings *settings) {
221 Q_EMIT settingsChanged();
226 bool StarDictPlugin::getDictionaryInfo() {
227 QFile dictionaryFile(_settings->value("path"));
228 if(!QFile::exists(_settings->value("path"))
229 || !dictionaryFile.open(QFile::ReadOnly | QFile::Text)) {
230 Q_EMIT notify(Notify::Warning,
231 QString(tr("StarDict dictionary cannot be read from file")));
232 qDebug()<<"Error: could not open the file";
240 QIcon* StarDictPlugin::icon() {
245 int StarDictPlugin::countWords() {
251 void StarDictPlugin::clean() {
256 Q_EXPORT_PLUGIN2(stardict, StarDictPlugin)