Copyright 2010 Comarch S.A.
*******************************************************************************/
+/*!
+ \file StarDialog.cpp
+ \brief Implementation of stardict plugin's dialogs.
-//Created by Mateusz Półrola
+ \author Mateusz Półrola <mateusz.polrola@gmail.com>
+*/
-#include "XdxfDialog.h"
+#include "StarDialog.h"
#include <QDebug>
-
-XdxfDialog::XdxfDialog(XdxfPlugin *plugin,
- XdxfDialogType type,
- QWidget *parent) :
- QDialog(parent) {
- this->plugin = plugin;
- this->type = type;
-
-
- cacheToolTip = tr("Optimize for quicker searches (may take some time)");
- accentsToolTip = tr("Strip accents (searching takes more time, but spelling doesn't have to be exact)");
-
- initializeUI();
-
- connect(cacheCheckBox, SIGNAL(toggled(bool)),
- this, SLOT(setGenerateCache(bool)));
-
- connect(accentsCheckBox, SIGNAL(toggled(bool)),
- this, SLOT(setAccents(bool)));
-
- #ifdef Q_WS_MAEMO_5
- connect(accentsInfoToolButton, SIGNAL(clicked()),
- this, SLOT(showAccentsInfo()));
-
- connect(cacheInfoToolButton, SIGNAL(clicked()),
- this, SLOT(showCacheInfo()));
- #endif
-
- if(type == New) {
- connect(browseButton, SIGNAL(clicked()),
- this, SLOT(selectFile()));
- }
-
- connect(confirmButton, SIGNAL(clicked()),
- this, SLOT(accept()));
-
+#include <QFile>
+
+StarDialog::StarDialog(StarDictPlugin *plugin, StarDialogType type,
+ QWidget *parent) : QDialog(parent) {
+ this->plugin = plugin;
+ this->type = type;
+ initializeUI();
+ if(type == New)
+ connect(browseButton, SIGNAL(clicked()),this, SLOT(selectFile()));
+ connect(confirmButton, SIGNAL(clicked()),this, SLOT(accept()));
}
-void XdxfDialog::initializeUI() {
+void StarDialog::initializeUI() {
mainVerticalLayout = new QVBoxLayout;
widget = new QWidget;
widget->setLayout(mainVerticalLayout);
-
infoLabel = new QLabel;
infoLabel->setWordWrap(true);
+ QVBoxLayout* buttonLayout = new QVBoxLayout;
if(type == New) {
- setWindowTitle(tr("Add new XDXF dictionary"));
-
browseLayout = new QHBoxLayout;
browseButton = new QPushButton(tr("Browse"));
+ browseButton->setMaximumWidth(150);
+ infoLabel->setText(tr("Dictionary file: not selected"));
+ setWindowTitle(tr("Add new StarDict dictionary"));
infoLabel->setText(tr("Dictionary file: not selected"));
-
browseLayout->addWidget(infoLabel, 0, Qt::AlignLeft);
+ browseLayout->addLayout(buttonLayout);
browseLayout->addWidget(browseButton, 0, Qt::AlignRight);
-
mainVerticalLayout->addLayout(browseLayout);
}
else {
- setWindowTitle(tr("XDXF Settings"));
-
+ setWindowTitle(tr("StarDict Settings"));
infoLabel->setText(tr("Plugin: ") + plugin->type().toUpper() +"\n" +
- tr("From: ") + plugin->langFrom() + "\n" +
- tr("To: ") + plugin->langTo() + "\n" +
- tr("Description: ") + plugin->name() + "\n" +
- plugin->infoNote());
+ tr("Book name: ") + plugin->settings()->value("bookname")
+ + "\n" +
+ tr("Version: ") + plugin->settings()->value("version") + "\n" +
+ tr("Word count: ") + plugin->settings()->value("wordcount")
+ + "\n" +
+ tr("Author: ") + plugin->settings()->value("author") + "\n" +
+ tr("E-mail: ") + plugin->settings()->value("email") + "\n" +
+ tr("Website: ") + plugin->settings()->value("website") + "\n" +
+ tr("Description: ") + plugin->settings()->value("description")
+ + "\n" +
+ tr("Date: ") + plugin->settings()->value("date"));
mainVerticalLayout->addWidget(infoLabel);
}
- accentsLayout = new QHBoxLayout;
- accentsCheckBox = new QCheckBox(tr("Strip accents"));
- accentsCheckBox->setToolTip(accentsToolTip);
- accentsLayout->addWidget(accentsCheckBox);
- #ifdef Q_WS_MAEMO_5
- accentsInfoToolButton = new QToolButton;
- accentsInfoToolButton->setIcon(QIcon::fromTheme("general_information"));
- accentsLayout->addWidget(accentsInfoToolButton);
- #endif
-
- cacheLayout = new QHBoxLayout;
- cacheCheckBox = new QCheckBox(tr("Optimize"));
- cacheCheckBox->setToolTip(cacheToolTip);
- cacheLayout->addWidget(cacheCheckBox);
- #ifdef Q_WS_MAEMO_5
- cacheInfoToolButton = new QToolButton;
- cacheInfoToolButton->setIcon(QIcon::fromTheme("general_information"));
- cacheLayout->addWidget(cacheInfoToolButton);
- #endif
-
- mainVerticalLayout->addLayout(cacheLayout);
- mainVerticalLayout->addLayout(accentsLayout);
-
-
- //load old setting if exists
- if(!plugin) {
- cacheCheckBox->setChecked(true);
- accentsCheckBox->setChecked(true);
- accentsCheckBox->setEnabled(false);
- _generateCache = true;
- _accents = true;
+ if(!plugin)
_dictionaryFilePath = "";
- }
- else if(plugin && plugin->settings()->value("cached") == "true") {
- cacheCheckBox->setChecked(true);
- accentsCheckBox->setChecked(true);
- accentsCheckBox->setEnabled(false);
- _generateCache = true;
- _accents = true;
- }
- else {
- cacheCheckBox->setChecked(false);
- _generateCache = false;
-
- if(plugin->settings()->value("strip_accents") == "true") {
- accentsCheckBox->setChecked(true);
- _accents = true;
- }
- else {
- accentsCheckBox->setChecked(false);
- _accents = false;
- }
- }
confirmButton = new QPushButton;
mainVerticalLayout->addWidget(confirmButton);
- if(type == New) {
+ if(type == New)
confirmButton->setText(tr("Add"));
- }
- else {
+ else
confirmButton->setText(tr("Save settings"));
- }
scrollArea = new QScrollArea;
scrollArea->setWidget(widget);
#else
if(type==New) {
infoLabel->setMinimumWidth(200);
- setMinimumSize(sizeHint().width()*1.5, sizeHint().height()*1.2);
- setMaximumSize(sizeHint().width()*1.7, sizeHint().height()*1.5);
+// setMinimumSize(sizeHint().width()*1.5, sizeHint().height()*1.2);
+// setMaximumSize(sizeHint().width()*1.7, sizeHint().height()*1.5);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}
#endif
scrollArea->setLineWidth(0);
scrollArea->setMidLineWidth(0);
scrollArea->setFrameStyle(QFrame::NoFrame);
-
-
-}
-
-
-void XdxfDialog::setAccents(bool accents) {
- _accents = accents;
}
-void XdxfDialog::setGenerateCache(bool generate) {
- _generateCache = generate;
-
- if(generate) {
- _lastAccents = _accents;
- accentsCheckBox->setChecked(true);
- }
- else
- accentsCheckBox->setChecked(_lastAccents);
-
- accentsCheckBox->setEnabled(!generate);
-}
-void XdxfDialog::selectFile() {
+void StarDialog::selectFile() {
QString fileName = QFileDialog::getOpenFileName(this,
- tr("Select dictionary file"),
- _dictionaryFilePath,
- tr("XDXF Files (*.xdxf)"),
- NULL,
- NULL);
-
+ tr("Select dictionary file"),
+ _dictionaryFilePath,
+ tr("StarDict Files (*.dict *dict.dz *.idx *idx.gz *.ifo)"),
+ NULL,
+ NULL);
if (!fileName.isEmpty()) {
infoLabel->setText(tr("Dictionary file: %1").arg(fileName));
_dictionaryFilePath = fileName;
+ if (_dictionaryFilePath.endsWith(".tar.bz2"))
+ _isCompressed = true;
+ else
+ _isCompressed = false;
updateGeometry();
}
}
-void XdxfDialog::saveSettings() {
+
+void StarDialog::saveSettings() {
_settings = new Settings;
- if(plugin) {
+
+ if(plugin)
foreach(QString key, plugin->settings()->keys())
_settings->setValue(key, plugin->settings()->value(key));
- }
- else {
+
+ if(_settings->value("path")=="")
_settings->setValue("path", _dictionaryFilePath);
- }
- if(_generateCache)
- _settings->setValue("generateCache", "true");
- else
- _settings->setValue("generateCache", "false");
+ if(_settings->value("ifoFileName")=="")
+ _settings->setValue("ifoFileName", _dictName + ".ifo");
- if(_accents)
- _settings->setValue("strip_accents", "true");
- else
- _settings->setValue("strip_accents", "false");
+ if(_settings->value("idxFileName")=="")
+ _settings->setValue("idxFileName", _dictName + ".idx");
+
+ if(_settings->value("dictFileName")==""){
+ if (QFile::exists(_dictName + ".dict.dz") == true)
+ _settings->setValue("dictFileName", _dictName + ".dict.dz");
+ else
+ _settings->setValue("dictFileName", _dictName + ".dict");
+ }
+
+ if(_settings->value("synFileName")=="")
+ if (QFile::exists(_dictName + ".syn") == true)
+ _settings->setValue("synFileName", _dictName + ".syn");
}
-void XdxfDialog::accept() {
+
+void StarDialog::accept() {
if(type == New && _dictionaryFilePath.isEmpty()) {
Q_EMIT notify(Notify::Warning, tr("File path is not set"));
+ return;
+ }
+ if(type == New && !_dictionaryFilePath.isEmpty() && !checkFiles()) {
+ Q_EMIT notify(Notify::Warning, tr("Dictionary files are not complete"));
return;
}
QDialog::accept();
}
-Settings* XdxfDialog::getSettings() {
- return _settings;
-}
-#ifdef Q_WS_MAEMO_5
- void XdxfDialog::showCacheInfo() {
- Q_EMIT notify(Notify::Warning, cacheToolTip);
- }
+bool StarDialog::checkFiles() {
+ if (!_isCompressed) {
+ if (_dictionaryFilePath.right(2) == "dz") {
+ _dictName = _dictionaryFilePath.left(_dictionaryFilePath.lastIndexOf("."));
+ _dictName = _dictName.left(_dictName.lastIndexOf("."));
+ }
+ else{
+ _dictName = _dictionaryFilePath.left(_dictionaryFilePath.lastIndexOf("."));
+ }
- void XdxfDialog::showAccentsInfo() {
- Q_EMIT notify(Notify::Warning, accentsToolTip);
+ if (QFile::exists(_dictName + ".idx") == false
+ && QFile::exists(_dictName + ".idx.gz") == false) {
+ return false;
+ }
+ if (QFile::exists(_dictName + ".dict") == false
+ && QFile::exists(_dictName + ".dict.dz") == false) {
+ return false;
+ }
+ return true;
}
-#endif
+ else
+ return false;
+}
+
+
+Settings* StarDialog::getSettings() {
+ return _settings;
+}