X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fplugins%2Fxdxf%2FXdxfDialog.cpp;h=80af106b48c6090bc4e79781ae613fc3151eea6c;hb=0920a54ebc21e26ea44fab232832f45b7882da19;hp=cbacdd53ce0f818cb6aa39b2b8ca53e8d45e6b9c;hpb=2fb2196e9b6365cb5da2925d0abc5b4d3ffa4a15;p=mdictionary diff --git a/src/plugins/xdxf/XdxfDialog.cpp b/src/plugins/xdxf/XdxfDialog.cpp index cbacdd5..80af106 100644 --- a/src/plugins/xdxf/XdxfDialog.cpp +++ b/src/plugins/xdxf/XdxfDialog.cpp @@ -18,8 +18,12 @@ Copyright 2010 Comarch S.A. *******************************************************************************/ +/*! + \file XdxfDialog.cpp + \brief Implementation of xdxf plugin's dialogs. -//Created by Mateusz Półrola + \author Mateusz Półrola +*/ #include "XdxfDialog.h" #include @@ -27,26 +31,72 @@ XdxfDialog::XdxfDialog(XdxfPlugin *plugin, XdxfDialogType type, QWidget *parent) : - QDialog(parent) { + QDialog(parent) { + this->plugin = plugin; this->type = type; +#ifndef Q_WS_MAEMO_5 + + view= new QDeclarativeView(); + view->setSource(QUrl::fromLocalFile("/usr/share/mdictionary/qml/XdxfDialog.qml")); + view->setResizeMode(QDeclarativeView::SizeRootObjectToView); + view->setAlignment(Qt::AlignCenter); + view->show(); + + mainLayout = new QVBoxLayout; + mainLayout->addWidget(view); + setLayout(mainLayout); + view->setWindowTitle(tr("Xdxf Settings")); + + QGraphicsObject *rootObject = view->rootObject(); + + connect(this, SIGNAL(setPlugin(QVariant)), + rootObject, SLOT(setPlugin(QVariant))); + connect(this, SIGNAL(setFrom(QVariant)), + rootObject, SLOT(setFrom(QVariant))); + connect(this, SIGNAL(setTo(QVariant)), + rootObject, SLOT(setTo(QVariant))); + connect(this, SIGNAL(setDescription(QVariant)), + rootObject, SLOT(setDescription(QVariant))); + connect(this, SIGNAL(setInfo(QVariant)), + rootObject, SLOT(setInfo(QVariant))); + connect(this, SIGNAL(setCheckedOptimalize(QVariant)), + rootObject, SLOT(setCheckedOptimalize(QVariant))); + connect(this, SIGNAL(setCheckedStrip(QVariant)), + rootObject, SLOT(setCheckedStrip(QVariant))); + connect(this,SIGNAL(setButtonText(QVariant)), + rootObject, SLOT(setButtonText(QVariant))); + connect(this,SIGNAL(setNew(QVariant)), + rootObject, SLOT(setNew(QVariant))); + connect(this,SIGNAL(setPath(QVariant)), + rootObject, SLOT(setPath(QVariant))); + + connect(rootObject, SIGNAL(saveButtonClicked()), + this, SLOT(accept())); + connect(rootObject, SIGNAL(downloadButtonClicked()), + this, SLOT(downloadFile())); + connect(rootObject, SIGNAL(browseButtonClicked()), + this, SLOT(selectFile())); + + connect(rootObject, SIGNAL(optimalizeCheckboxChanged(bool)), + this, SLOT(setGenerateCache(bool))); + connect(rootObject, SIGNAL(stripCheckboxChanged(bool)), + this, SLOT(setAccents(bool))); + +#else 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 @@ -54,15 +104,66 @@ XdxfDialog::XdxfDialog(XdxfPlugin *plugin, if(type == New) { connect(browseButton, SIGNAL(clicked()), this, SLOT(selectFile())); + connect(downloadButton, SIGNAL(clicked()), + this, SLOT(downloadFile())); + connect(&XdxfPlugin::dictDownloader, SIGNAL(fileDownloaded(QString)), + this, SLOT(fileDownloaded(QString))); } - connect(confirmButton, SIGNAL(clicked()), this, SLOT(accept())); - +#endif + initializeUI(); } void XdxfDialog::initializeUI() { +#ifndef Q_WS_MAEMO_5 + + if(type != New){ + emit setNew(false); + emit setPlugin(plugin->type().toUpper()); + emit setFrom(plugin->langFrom()); + emit setTo(plugin->langTo()); + emit setDescription(plugin->name()); + emit setInfo(plugin->infoNote()); + emit setButtonText("Save settings"); + } + else{ + emit setButtonText("Add"); + emit setNew(true); + connect(&XdxfPlugin::dictDownloader, SIGNAL(fileDownloaded(QString)), + this, SLOT(fileDownloaded(QString))); + } + + if(!plugin) { + emit setCheckedOptimalize(true); + emit setCheckedStrip(true); +// accentsCheckBox->setEnabled(false); + _generateCache = true; + _accents = true; + _dictionaryFilePath = ""; + } + else if(plugin && plugin->settings()->value("cached") == "true") { + emit setCheckedOptimalize(true); + emit setCheckedStrip(true); +// accentsCheckBox->setEnabled(false); + _generateCache = true; + _accents = true; + } + else { + emit setCheckedOptimalize(false); + _generateCache = false; + if(plugin->settings()->value("strip_accents") == "true") { + emit setCheckedStrip(true); + _accents = true; + } + else { + emit setCheckedStrip(false); + _accents = false; + } + } + +#else mainVerticalLayout = new QVBoxLayout; widget = new QWidget; widget->setLayout(mainVerticalLayout); @@ -74,11 +175,21 @@ void XdxfDialog::initializeUI() { setWindowTitle(tr("Add new XDXF dictionary")); browseLayout = new QHBoxLayout; + + QVBoxLayout* buttonLayout = new QVBoxLayout; browseButton = new QPushButton(tr("Browse")); + browseButton->setMaximumWidth(150); + + downloadButton = new QPushButton(tr("Download")); + downloadButton->setMaximumWidth(150); + + infoLayout = new QHBoxLayout; infoLabel->setText(tr("Dictionary file: not selected")); - browseLayout->addWidget(infoLabel, 0, Qt::AlignLeft); - browseLayout->addWidget(browseButton, 0, Qt::AlignRight); + browseLayout->addWidget(infoLabel,0,Qt::AlignLeft); + browseLayout->addLayout(buttonLayout); + buttonLayout->addWidget(browseButton,0,Qt::AlignLeft); + buttonLayout->addWidget(downloadButton,0,Qt::AlignLeft); mainVerticalLayout->addLayout(browseLayout); } @@ -107,6 +218,7 @@ void XdxfDialog::initializeUI() { 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")); @@ -116,7 +228,6 @@ void XdxfDialog::initializeUI() { mainVerticalLayout->addLayout(cacheLayout); mainVerticalLayout->addLayout(accentsLayout); - //load old setting if exists if(!plugin) { cacheCheckBox->setChecked(true); @@ -149,18 +260,22 @@ void XdxfDialog::initializeUI() { 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); scrollArea->setWidgetResizable(true); + #ifdef Q_WS_MAEMO_5 scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + #else + if(type==New) { + infoLabel->setMinimumWidth(250); + scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + } #endif layout = new QHBoxLayout; @@ -168,7 +283,7 @@ void XdxfDialog::initializeUI() { setLayout(layout); #ifndef Q_WS_MAEMO_5 - setMinimumSize(400,200); + setMinimumSize(385,200); #else setMinimumHeight(350); #endif @@ -176,9 +291,7 @@ void XdxfDialog::initializeUI() { scrollArea->setLineWidth(0); scrollArea->setMidLineWidth(0); scrollArea->setFrameStyle(QFrame::NoFrame); - - setMinimumSize(sizeHint().width()*1.2, sizeHint().height()); - setMaximumSize(sizeHint().width()*2, sizeHint().height()*2); +#endif } @@ -186,19 +299,31 @@ void XdxfDialog::setAccents(bool accents) { _accents = accents; } + void XdxfDialog::setGenerateCache(bool generate) { _generateCache = generate; - +#ifndef Q_WS_MAEMO_5 + if(generate) { + _lastAccents = _accents; + emit setCheckedOptimalize(true); + emit setCheckedStrip(true); + } + else{ + emit setCheckedStrip(_lastAccents); + } +// accentsCheckBox->setEnabled(!generate); +#else if(generate) { _lastAccents = _accents; accentsCheckBox->setChecked(true); } else accentsCheckBox->setChecked(_lastAccents); - accentsCheckBox->setEnabled(!generate); +#endif } + void XdxfDialog::selectFile() { QString fileName = QFileDialog::getOpenFileName(this, tr("Select dictionary file"), @@ -206,23 +331,43 @@ void XdxfDialog::selectFile() { tr("XDXF Files (*.xdxf)"), NULL, NULL); - if (!fileName.isEmpty()) { - infoLabel->setText(tr("Dictionary file: %1").arg(fileName)); _dictionaryFilePath = fileName; + #ifndef Q_WS_MAEMO_5 + emit setPath(tr("Dictionary file: %1").arg(fileName)); + #else + infoLabel->setText(tr("Dictionary file: %1").arg(fileName)); + updateGeometry(); + #endif } } + +void XdxfDialog::fileDownloaded(QString) { +#ifndef Q_WS_MAEMO_5 + emit setPath(tr("Dictionary file: %1").arg(XdxfPlugin::dictDownloader.downloadedFile())); + _dictionaryFilePath = XdxfPlugin::dictDownloader.downloadedFile(); +#else + infoLabel->setText(tr("Dictionary file: %1").arg(XdxfPlugin::dictDownloader.downloadedFile())); + _dictionaryFilePath = XdxfPlugin::dictDownloader.downloadedFile(); + updateGeometry(); +#endif +} + + +void XdxfDialog::downloadFile() { + XdxfPlugin::dictDownloader.download(this); +} + + void XdxfDialog::saveSettings() { _settings = new Settings; if(plugin) { foreach(QString key, plugin->settings()->keys()) _settings->setValue(key, plugin->settings()->value(key)); } - else { + else _settings->setValue("path", _dictionaryFilePath); - } - if(_generateCache) _settings->setValue("generateCache", "true"); else @@ -234,10 +379,10 @@ void XdxfDialog::saveSettings() { _settings->setValue("strip_accents", "false"); } + void XdxfDialog::accept() { if(type == New && _dictionaryFilePath.isEmpty()) { Q_EMIT notify(Notify::Warning, tr("File path is not set")); - return; } @@ -245,15 +390,18 @@ void XdxfDialog::accept() { QDialog::accept(); } + Settings* XdxfDialog::getSettings() { return _settings; } + #ifdef Q_WS_MAEMO_5 void XdxfDialog::showCacheInfo() { Q_EMIT notify(Notify::Warning, cacheToolTip); } + void XdxfDialog::showAccentsInfo() { Q_EMIT notify(Notify::Warning, accentsToolTip); }