}
backbone->selectedDictionaries(checkedDicts);
- qDebug()<<"asda";
-
QWidget::hideEvent(e);
}
QList<QListWidgetItem*> selected = dictListWidget->selectedItems();
if(selected.count() > 0) {
dictsHash[selected[0]]->dictDialog()->changeSettings(this);
+ refreshDictsList();
}
}
ui->menuBar->addAction(menuWidget);
+ connect(this, SIGNAL(searchWordList(QStringList)),
+ searchBarWidget, SLOT(searchWordList(QStringList)));
connect(wordListWidget, SIGNAL(showTranslation(QList<Translation*>)),
translationWidget, SLOT(show(QList<Translation*>)));
closingApplication = true;
close();*/
}
+
+void MainWindow::search(QStringList words) {
+ emit searchWordList(words);
+}
public:
explicit MainWindow(Backbone* backbone, QWidget *parent = 0);
~MainWindow();
+ void search(QStringList);
+
public Q_SLOTS:
//! Confirmation from backbone that we can close program
Q_SIGNALS:
//! Request to backbone to stop all it's activities
void quit();
+ void searchWordList(QStringList);
protected:
/*! When user wants to close application, we first sends signal to stop all
//connects request to backbone
- connect(this, SIGNAL(searchForTranslations(QString)),
- backbone, SLOT(search(QString)));
+ connect(this, SIGNAL(searchForTranslations(QStringList)),
+ backbone, SLOT(search(QStringList)));
connect(this, SIGNAL(stopSearching()),
backbone, SLOT(stopSearching()));
searchPushButton->setText(tr("Stop"));
setEnabled(false);
_isSearching = true;
- emit searchForTranslations(searchWordLineEdit->text());
+ QStringList searchWord;
+ searchWord << searchWordLineEdit->text();
+ emit searchForTranslations(searchWord);
+ }
+}
+
+void SearchBarWidget::searchWordList(QStringList words) {
+ if(!_isSearching) {
+ searchingProgressBar->show();
+ searchPushButton->setText(tr("Stop"));
+ setEnabled(false);
+ _isSearching = true;
+ emit searchForTranslations(words);
}
}
Q_SIGNALS:
//! Requests to search for translation of word passed as parameter
- void searchForTranslations(QString);
+ void searchForTranslations(QStringList);
//! Request to stop all active searchings
void stopSearching();
*/
void setEnabled(bool enabled = true);
void searchFinished();
+ void searchWordList(QStringList);
private Q_SLOTS:
void clearSearchWordToolButtonClicked();
this, SLOT(showContextMenu(QPoint)));
setWindowTitle(tr("Translation"));
-
}
#include "MainWindow.h"
#include "../backbone/backbone.h"
#include "../../includes/translation.h"
+#include <QDebug>
-int main(int argc, char *argv[])
-{
+
+QStringList parseParameters(int argc, char *argv[]) {
+ bool wordListStarted = false;
+ QStringList result;
+ for(int i=1; i<argc; i++) {
+ QString argument(argv[i]);
+ if(!wordListStarted) {
+ if(argument == "-s") {
+ wordListStarted = true;
+ }
+ }
+ else {
+ if(!argument.startsWith("-") &&
+ !argument.startsWith("--")) {
+ result << argument;
+ }
+ }
+ }
+
+ return result;
+}
+
+int main(int argc, char *argv[]) {
QApplication a(argc, argv);
+ QStringList search = parseParameters(argc, argv);
+
qRegisterMetaType<Translation*>("Translation*");
qRegisterMetaType<QList<Translation*> >("QList<Translation*>");
Backbone* backbone = new Backbone;
MainWindow* w = new MainWindow(backbone);
w->show();
+ if(search.count() > 0) {
+ w->search(search);
+ }
+
return a.exec();
}
//! emited after dictionary is ready to use afer being loaded
void loaded(CommonDictInterface*);
+
+ //! emited after change dictionary settings
+ void settingsChanged();
};
Q_DECLARE_INTERFACE(CommonDictInterface, "CommonDictInterface/0.1");
setModal(true);
- /* connect(browseButton, SIGNAL(clicked()),
+ connect(browseButton, SIGNAL(clicked()),
this, SLOT(selectFile()));
- connect(addButton, SIGNAL(clicked()),
- this, SLOT(addDictionary()));*/
+ connect(saveButton, SIGNAL(clicked()),
+ this, SLOT(accept()));
_dicitonaryFilePath = QString();
}
+void XdxfSettingsDialog::selectFile() {
+ QString fileName = QFileDialog::getOpenFileName(this,
+ tr("Select dictionary file"),
+ "",
+ tr("XDXF Files (*.xdxf)"),
+ NULL,
+ NULL);
+ if (!fileName.isEmpty()) {
+ browseLabel->setText(tr("Dictionary file: ") + fileName);
+ _dicitonaryFilePath = fileName;
+ }
+}
+
+QString XdxfSettingsDialog::dicitonaryFilePath() {
+ return _dicitonaryFilePath;
+}
+
Settings* XdxfSettingsDialog::getSettings(XdxfPlugin *plugin,
QWidget *parent) {
XdxfSettingsDialog settingsDialog(plugin, parent);
- //Settings* settings = new Settings;
-
- if(settingsDialog.exec()==QDialog::Accepted) {
+ if(settingsDialog.exec()==QDialog::Accepted) {
+ Settings* settings = new Settings;
+ settings->setValue("path", settingsDialog.dicitonaryFilePath());
+ plugin->setSettings(settings);
return NULL;
}
static Settings* getSettings(XdxfPlugin* plugin, QWidget *parent);
//! Returns choosen by user dictionary file path
- //QString dicitonaryFilePath();
+ QString dicitonaryFilePath();
//! Returns if user want to cache dictionary
// bool generateCache();
-signals:
-
-public slots:
+private Q_SLOTS:
+ void selectFile();
private:
QLabel* infoLabel;
_langFrom(tr("")), _langTo(tr("")),_name(tr("")),
_type(tr("xdxf")), _infoNote(tr("")) {
_settings = new Settings();
- _dictDialog = new XdxfDictDialog(this);
+ _dictDialog = new XdxfDictDialog(this, this);
_settings->setValue("type","xdxf");
if(isCached())
_settings->setValue("cached","true");
else
_settings->setValue("cached","false");
+ _wordsCount = 0;
+
setPath("/usr/lib/mdictionary/dict.xdxf");
stopped = false;
}
return translations.toList();
}
- /*read information about dictionary*/
QXmlStreamReader dictionaryReader(&dictionaryFile);
- dictionaryReader.readNextStartElement();
- if(dictionaryReader.name()=="xdxf") {
- if(dictionaryReader.attributes().hasAttribute("lang_from"))
- _langFrom = dictionaryReader.attributes().value("lang_from").toString();
- if(dictionaryReader.attributes().hasAttribute("lang_to"))
- _langTo = dictionaryReader.attributes().value("lang_to").toString();
- }
- dictionaryReader.readNextStartElement();
- if(dictionaryReader.name()=="full_name")
- _name=dictionaryReader.readElementText();
- dictionaryReader.readNextStartElement();
- if(dictionaryReader.name()=="description")
- _infoNote=dictionaryReader.readElementText();
-
/*search words list*/
QString a;
int i=0;
void XdxfPlugin::setPath(QString path){
this->path=path;
_settings->setValue("path",path);
+ getDictionaryInfo();
}
return false;
}
+void XdxfPlugin::setSettings(Settings *settings) {
+ _settings = settings;
+ setPath(_settings->value("path"));
+ emit settingsChanged();
+}
+
+
+void XdxfPlugin::getDictionaryInfo() {
+ QFile dictionaryFile(path);
+ if(!dictionaryFile.open(QFile::ReadOnly | QFile::Text)) {
+ qDebug()<<"Error: could not open file";
+ return;
+ }
+
+ QXmlStreamReader dictionaryReader(&dictionaryFile);
+ dictionaryReader.readNextStartElement();
+ if(dictionaryReader.name()=="xdxf") {
+ if(dictionaryReader.attributes().hasAttribute("lang_from"))
+ _langFrom = dictionaryReader.attributes().value("lang_from").toString();
+ if(dictionaryReader.attributes().hasAttribute("lang_to"))
+ _langTo = dictionaryReader.attributes().value("lang_to").toString();
+ }
+ dictionaryReader.readNextStartElement();
+ if(dictionaryReader.name()=="full_name")
+ _name=dictionaryReader.readElementText();
+ dictionaryReader.readNextStartElement();
+ if(dictionaryReader.name()=="description")
+ _infoNote=dictionaryReader.readElementText();
+
+ dictionaryFile.seek(0);
+
+ long wordsCount = 0;
+
+ QString line;
+ while(!dictionaryFile.atEnd()) {
+ line = dictionaryFile.readLine();
+ if(line.contains("<ar>")) {
+ wordsCount++;
+ }
+ }
+
+ dictionaryFile.close();
+}
+
+QString XdxfPlugin::removeAccents(QString string) {
+ QString normalized = string.normalized(QString::NormalizationForm_D);
+ for(int i=0; i<normalized.size(); i++) {
+ if(!normalized[i].isLetterOrNumber() && !normalized[i].isSpace()) {
+ normalized.remove(i,1);
+ }
+ }
+ return normalized;
+}
+
Q_EXPORT_PLUGIN2(xdxf, XdxfPlugin)
//! returns current plugin settings
Settings* settings();
+ //! returns words count in dictionary
+ long wordsCount();
+
+ //! Sets new settings
+ void setSettings(Settings*);
+
public Q_SLOTS:
/*! performs search in dictionary
\param word word to search in dictionary
//! stop current operation
void stop();
+
+protected:
+ QString removeAccents(QString);
+
private:
/*! returns true or false depending on whether the dictionary is cached
or not, not implemented yet
QString path;
uint _hash;
+ //! number of words in dicrionary
+ long _wordsCount;
+
+ //! scan dictionary file to get information about it
+ void getDictionaryInfo();
+
volatile bool stopped;
Settings *_settings;
XdxfDictDialog* _dictDialog;