-shlibs:Depends=libc6 (>= 2.5.0-1), libgcc1 (>= 1:4.2.1), libqt4-core (>= 4.6.2~git20100401), libqt4-gui (>= 4.6.2~git20100401), libqt4-xml (>= 4.6.2~git20100401), libstdc++6 (>= 4.2.1)
+shlibs:Depends=libc6 (>= 2.1.3), libc6 (>= 2.3.6-6~), libgcc1 (>= 1:4.1.1), libqt4-xml (>= 4:4.5.3), libqtcore4 (>= 4:4.6.1), libqtgui4 (>= 4:4.6.1), libstdc++6 (>= 4.1.1)
+misc:Depends=
//Created by Mateusz Półrola
#include "DictManagerWidget.h"
+#include "DictTypeSelectDialog.h"
#include <QDebug>
+#include "../../includes/DictDialog.h"
DictManagerWidget::DictManagerWidget(Backbone* backbone, QWidget *parent) :
QWidget(parent) {
verticalLayout->addWidget(addNewDictButton, Qt::AlignBottom);
- QListWidgetItem *it = new QListWidgetItem("XDXF");
+ connect(addNewDictButton, SIGNAL(clicked()),
+ this, SLOT(addNewDictButtonClicked()));
}
-void DictManagerWidget::showEvent(QShowEvent *e) {
-
-
+void DictManagerWidget::refreshDictsList() {
QHash<CommonDictInterface*, bool> dicts = backbone->getDictionaries();
dictListWidget->clear();
dictListWidget->addItem(item);
}
+}
+
+void DictManagerWidget::showEvent(QShowEvent *e) {
+
+ refreshDictsList();
QWidget::showEvent(e);
}
void DictManagerWidget::addNewDictButtonClicked() {
-
+ CommonDictInterface* selectedPlugin =
+ DictTypeSelectDialog::addNewDict(backbone->getPlugins(),this);
+ if(selectedPlugin != NULL) {
+ qDebug()<< selectedPlugin->type();
+ Settings* settings =
+ selectedPlugin->dictDialog()->addNewDictionary(this);
+
+ if(settings != NULL) {
+ CommonDictInterface* newDict = selectedPlugin->getNew(settings);
+ backbone->addDictionary(newDict);
+ refreshDictsList();
+ }
+ }
}
QListWidget* dictListWidget;
Backbone* backbone;
+ void refreshDictsList();
+
};
#endif // DICTMANAGERWIDGET_H
DictTypeSelectDialog::DictTypeSelectDialog(QList<CommonDictInterface *> plugins, QWidget *parent) :
QDialog(parent) {
+ setWindowTitle(tr("Select dictionary type"));
+
this->plugins = plugins;
- CommonDictInterface* i;
- foreach(i, plugins) {
- QListWidgetItem* item = new QListWidgetItem(i->type());
+ verticalLayout = new QVBoxLayout;
+ setLayout(verticalLayout);
+
+ pluginsListWidget = new QListWidget;
+
+ verticalLayout->addWidget(pluginsListWidget);
+
+ for(int i=0; i<plugins.count(); i++) {
+ QListWidgetItem* item = new QListWidgetItem(plugins[i]->type());
+ item->setData(PLUGIN_ROW_ROLE, i);
pluginsListWidget->addItem(item);
}
+ _selectedPlugin = NULL;
+ connect(pluginsListWidget, SIGNAL(itemClicked(QListWidgetItem*)),
+ this, SLOT(pluginSelected(QListWidgetItem*)));
+}
+
+void DictTypeSelectDialog::pluginSelected(QListWidgetItem *item) {
+ _selectedPlugin = plugins[item->data(PLUGIN_ROW_ROLE).toInt()];
+ accept();
+}
+
+CommonDictInterface* DictTypeSelectDialog::selectedPlugin() {
+ return _selectedPlugin;
+}
+
+CommonDictInterface* DictTypeSelectDialog::addNewDict(
+ QList<CommonDictInterface *> plugins,
+ QWidget *parent) {
+ DictTypeSelectDialog dictSelect(plugins, parent);
+
+ if(dictSelect.exec() == QDialog::Accepted) {
+ return dictSelect.selectedPlugin();
+ }
+ else {
+ return NULL;
+ }
}
#include <QtGui>
#include "../../includes/settings.h"
+#define PLUGIN_ROW_ROLE 99
+
class DictTypeSelectDialog : public QDialog {
Q_OBJECT
public:
- static Settings* addNewDict(QList<CommonDictInterface* > plugins,
- QWidget *parent = 0);
+ static CommonDictInterface* addNewDict(
+ QList<CommonDictInterface* > plugins,
+ QWidget *parent = 0);
+
+ CommonDictInterface* selectedPlugin();
protected:
explicit DictTypeSelectDialog(QList<CommonDictInterface* > plugins,
QWidget *parent = 0);
-
private Q_SLOTS:
- //void pluginSelected
+ void pluginSelected(QListWidgetItem* item);
+
private:
QListWidget* pluginsListWidget;
QList<CommonDictInterface*> plugins;
-
+ QVBoxLayout* verticalLayout;
+ CommonDictInterface* _selectedPlugin;
};
#endif // DICTTYPESELECTDIALOG_H
ui->menuBar->addAction(menuWidget);
- connect(wordListWidget, SIGNAL(clicked(QModelIndex)),
- translationWidget, SLOT(show(QModelIndex)));
+ connect(wordListWidget, SIGNAL(showTranslation(QList<Translation*>)),
+ translationWidget, SLOT(show(QList<Translation*>)));
ui->centralWidget->layout()->addWidget(wordListWidget);
ui->centralWidget->layout()->addWidget(searchBarWidget);
this, SLOT(closeOk()));
closingApplication = false;
+
+ setWindowTitle("mDictionary");
}
MainWindow::~MainWindow() {
connect(textEdit, SIGNAL(customContextMenuRequested(QPoint)),
this, SLOT(showContextMenu(QPoint)));
+ setWindowTitle(tr("Translation"));
}
QWidget::show();
}
-void TranslationWidget::show(QModelIndex index) {
+void TranslationWidget::show(QList<Translation*> translations) {
show();
- QString v = index.model()->data(index, Qt::DisplayRole).toString();
- Translation* t = backbone->result().value(v);
textEdit->clear();
- textEdit->setPlainText(t->toHtml());
+ QString trans;
+ Translation* t;
+ foreach(t, translations) {
+ trans += t->toHtml() + "\n";
+ }
+
+ textEdit->setPlainText(trans);
textEdit->repaint(this->rect());
public Q_SLOTS:
//! Request to show translation of word passed as QModelIndex from word list
void show();
- void show(QModelIndex);
+ void show(QList<Translation*>);
private Q_SLOTS:
void showContextMenu(QPoint pos);
#include "WordListWidget.h"
#include <QDebug>
#include "../../includes/translation.h"
+#include <QMultiHash>
+
WordListWidget::WordListWidget(Backbone *backbone, QWidget *parent):
QListView(parent) {
connect(backbone, SIGNAL(ready()),
this, SLOT(showSearchResults()));
+ connect(this, SIGNAL(clicked(QModelIndex)),
+ this, SLOT(itemClicked(QModelIndex)));
+
setModel(wordListModel);
}
-void WordListWidget::addWord(QString word, Translation* trans) {
+void WordListWidget::addWord(QString word) {
int wordsCount = wordListModel->rowCount();
wordListModel->insertRow(wordsCount);
QModelIndex newWordIndex = wordListModel->index(wordsCount);
wordListModel->setData(newWordIndex, word);
- qDebug()<<wordListModel->setData(newWordIndex, QVariant::fromValue(trans),
- Qt::DecorationRole);
}
void WordListWidget::clear() {
void WordListWidget::showSearchResults() {
clear();
- searchResult = backbone->result();
-
- QHash<QString, Translation*>::iterator i;
- for(i = searchResult.begin(); i != searchResult.end(); i++) {
- addWord(i.key(), i.value());
+ QMultiHash<QString, Translation*> result = backbone->result();
+
+ QMultiHash<QString, Translation*>::iterator i;
+ for(i = result.begin(); i != result.end(); i++) {
+ if(!searchResult.contains(i.key())) {
+ addWord(i.key());
+ }
+ searchResult[i.key()].push_back(i.value());
}
wordListModel->sort(0, Qt::AscendingOrder);
}
+
+void WordListWidget::itemClicked(QModelIndex index) {
+ emit showTranslation(searchResult[index.model()->data(index).toString()]);
+}
public:
explicit WordListWidget(Backbone* backbone, QWidget *parent = 0);
+Q_SIGNALS:
+ void showTranslation(QList<Translation*>);
public Q_SLOTS:
/*! Request to show search results, requested by backbone when it finished
search*/
void showSearchResults();
+private Q_SLOTS:
+ void itemClicked(QModelIndex index);
+
private:
Backbone *backbone;
//words are keeping as QStringListModel which allow to sort them
QStringListModel *wordListModel;
- void addWord(QString word, Translation* trans);
+ void addWord(QString word);
//clears all list of words
void clear();
- QHash<QString, Translation*> searchResult;
+ QHash<QString, QList<Translation*> > searchResult;
};
#endif // WORDLISTWIDGET_H
*******************************************************************************/
#include "TranslationXdxf.h"
-
+#include <QDebug>
TranslationXdxf::TranslationXdxf() {
}
Settings* settings = new Settings;
if(loadDialog.exec()==QDialog::Accepted) {
- settings->setValue("dictionaryFile", loadDialog.dicitonaryFilePath());
+ settings->setValue("path", loadDialog.dicitonaryFilePath());
if(loadDialog.generateCache()) {
settings->setValue("cache", "true");
}
_settings->setValue("cached","true");
else
_settings->setValue("cached","false");
+
setPath("/usr/lib/mdictionary/dict.xdxf");
stopped = false;
}
return "";
}
QXmlStreamReader dictionaryReader(&dictionaryFile);
+
+
QString a;
bool match =false;