X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fmdictionary%2Fgui%2FDictManagerWidget.cpp;h=8519c936d56a069ddb2faad79458f8247fea740f;hb=5fc81a4ae588b2616381820b99a09b5f0669bc01;hp=c1f517d60289ea70ee06d280696dfbf01f4c79b1;hpb=013b7d08097a91b8b78c5d081ba5aa1260bd0e5d;p=mdictionary diff --git a/src/mdictionary/gui/DictManagerWidget.cpp b/src/mdictionary/gui/DictManagerWidget.cpp index c1f517d..8519c93 100644 --- a/src/mdictionary/gui/DictManagerWidget.cpp +++ b/src/mdictionary/gui/DictManagerWidget.cpp @@ -19,14 +19,17 @@ *******************************************************************************/ -//! \file DictManagerWidget.cpp -//! \brief Dictionaries management widget -//! \author Mateusz Półrola +/*! \file DictManagerWidget.cpp + \brief Implements dictionaries management widget + + \author Mateusz Półrola +*/ #include "DictManagerWidget.h" #include "DictTypeSelectDialog.h" #include #include "../../include/DictDialog.h" +#include "MenuWidget.h" DictManagerWidget::DictManagerWidget(GUIInterface *parent) : QDialog(parent) { @@ -34,17 +37,19 @@ DictManagerWidget::DictManagerWidget(GUIInterface *parent) : this->guiInterface = parent; initalizeUI(); + + setModal(true); } void DictManagerWidget::initalizeUI() { verticalLayout = new QVBoxLayout; setLayout(verticalLayout); - dictListWidget = new QListWidget; - verticalLayout->addWidget(dictListWidget); + dictList = new QListWidget; + verticalLayout->addWidget(dictList); - dictListWidget->setSelectionMode(QAbstractItemView::SingleSelection); - dictListWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + dictList->setSelectionMode(QAbstractItemView::SingleSelection); + dictList->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); addNewDictButton = new QPushButton(tr("Add")); removeDictButton = new QPushButton(tr("Remove")); @@ -77,18 +82,32 @@ void DictManagerWidget::initalizeUI() { connect(settingsButton, SIGNAL(clicked()), this, SLOT(settingsButtonClicked())); - connect(dictListWidget, SIGNAL(itemClicked(QListWidgetItem*)), + connect(dictList, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(itemSelected(QListWidgetItem*))); - connect(dictListWidget, SIGNAL(itemChanged(QListWidgetItem*)), + connect(dictList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(changed())); + #ifndef Q_WS_MAEMO_5 + connect(dictList, SIGNAL(itemActivated(QListWidgetItem*)), + this, SLOT(saveChanges())); + connect(dictList, SIGNAL(itemActivated(QListWidgetItem*)), + this, SLOT(itemSelected(QListWidgetItem*))); + connect(dictList, SIGNAL(itemActivated(QListWidgetItem*)), + settingsButton, SIGNAL(clicked())); + #endif + refreshDictsList(); #ifndef Q_WS_MAEMO_5 setMinimumSize(500,300); closeButton = new QPushButton(tr("Save")); buttonGroup->addWidget(closeButton); + + setMinimumWidth(sizeHint().width()*1.2); + setMaximumWidth(sizeHint().width()*2); + setMinimumHeight(sizeHint().height()); + setMaximumHeight(sizeHint().height()*2); connect(closeButton, SIGNAL(clicked()), this, SLOT(save())); #endif } @@ -96,7 +115,7 @@ void DictManagerWidget::initalizeUI() { void DictManagerWidget::refreshDictsList() { - dictListWidget->clear(); + dictList->clear(); dictsHash.clear(); removeDictButton->setEnabled(false); settingsButton->setEnabled(false); @@ -108,8 +127,15 @@ void DictManagerWidget::refreshDictsList() { while(i.hasNext()) { i.next(); QListWidgetItem* item = new QListWidgetItem(); - QString name = i.key()->langFrom() + " - " + i.key()->langTo() + " (" + - i.key()->type() + " " + i.key()->name() + ")"; + QString name; + if (i.key()->type() == "stardict") { + name = i.key()->name() + " (" + i.key()->type() + ")"; + } + else { + name = i.key()->langFrom() + " - " + i.key()->langTo() + + " (" + i.key()->type() + " " + + i.key()->name() + ")"; + } item->setText(name); item->setFlags(item->flags() | Qt::ItemIsUserCheckable); if(i.value()) { @@ -120,9 +146,11 @@ void DictManagerWidget::refreshDictsList() { } item->setIcon(*i.key()->icon()); - dictListWidget->addItem(item); + dictList->addItem(item); dictsHash.insert(item, i.key()); } + + dictList->sortItems(); } void DictManagerWidget::showEvent(QShowEvent *e) { @@ -146,8 +174,8 @@ void DictManagerWidget::saveChanges() { #endif QList checkedDicts; - for(int i=0; icount(); i++) { - QListWidgetItem* item = dictListWidget->item(i); + for(int i=0; icount(); i++) { + QListWidgetItem* item = dictList->item(i); if(item->checkState() == Qt::Checked) { checkedDicts.push_back(dictsHash[item]); } @@ -178,7 +206,7 @@ void DictManagerWidget::addNewDictButtonClicked() { DictTypeSelectDialog::addNewDict(guiInterface->getPlugins(),this); if(selectedPlugin) { Settings* settings = - selectedPlugin->dictDialog()->addNewDictionary(this); + selectedPlugin->dictDialog()->addNewDictionary(this->parentWidget()); if(settings) { CommonDictInterface* newDict = selectedPlugin->getNew(settings); @@ -194,6 +222,7 @@ void DictManagerWidget::addNewDictButtonClicked() { void DictManagerWidget::itemSelected(QListWidgetItem *) { removeDictButton->setEnabled(true); settingsButton->setEnabled(true); + dictList->setFocus(); } void DictManagerWidget::removeButtonClicked() { @@ -201,7 +230,7 @@ void DictManagerWidget::removeButtonClicked() { tr("Do you want to remove selected dictionary?"), QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) { - QList selected = dictListWidget->selectedItems(); + QList selected = dictList->selectedItems(); if(selected.count() > 0) { emit removeDictionary(dictsHash[selected[0]]); refreshDictsList(); @@ -219,9 +248,9 @@ void DictManagerWidget::settingsButtonClicked() { _save = false; } #endif - QList selected = dictListWidget->selectedItems(); + QList selected = dictList->selectedItems(); if(selected.count() > 0) { - dictsHash[selected[0]]->dictDialog()->changeSettings(this); + dictsHash[selected[0]]->dictDialog()->changeSettings(this->parentWidget()); } refreshDictsList(); } @@ -238,3 +267,19 @@ void DictManagerWidget::changed() { hide(); } #endif + + +void DictManagerWidget::keyPressEvent(QKeyEvent *e) { + if (!e->modifiers() || (e->modifiers() & Qt::KeypadModifier && e->key() == Qt::Key_Enter)) { + switch (e->key()) { + case Qt::Key_Escape: + reject(); + break; + default: + e->ignore(); + return; + } + } else { + e->ignore(); + } +}