X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fplugins%2Fxdxf%2FXdxfDictSelectDialog.cpp;h=4b4a0668887b8bca8b11aa134ec9f3df90019d51;hb=40b66a4f767628710059078e32e50b94e1bf1c5e;hp=897cae97ebfc618b1d4533e62e36c979c5c0e433;hpb=1277aea783f9b818fb81799f6c84ab496747af15;p=mdictionary diff --git a/src/plugins/xdxf/XdxfDictSelectDialog.cpp b/src/plugins/xdxf/XdxfDictSelectDialog.cpp index 897cae9..4b4a066 100644 --- a/src/plugins/xdxf/XdxfDictSelectDialog.cpp +++ b/src/plugins/xdxf/XdxfDictSelectDialog.cpp @@ -18,13 +18,18 @@ Copyright 2010 Comarch S.A. *******************************************************************************/ - -//Created by Mateusz Półrola +/*! + \file XdxfDictSelectDialog.cpp + \author Mateusz Półrola +*/ #include "XdxfDictSelectDialog.h" -XdxfDictSelectDialog::XdxfDictSelectDialog(QWidget *parent) : - QDialog(parent) { +XdxfDictSelectDialog::XdxfDictSelectDialog(QList dicts, + QWidget *parent) : + QDialog(parent) { + setWindowTitle(tr("Select dictionary")); + layout = new QVBoxLayout; setLayout(layout); @@ -34,22 +39,55 @@ XdxfDictSelectDialog::XdxfDictSelectDialog(QWidget *parent) : langFrom = new QComboBox; langTo = new QComboBox; - checkBoxLayout->addWidget(langFrom); - checkBoxLayout->addWidget(langTo); + langFrom->setInsertPolicy(QComboBox::InsertAlphabetically); + langTo->setInsertPolicy(QComboBox::InsertAlphabetically); + + langFromLabel = new QLabel(tr("From ")); + langToLabel = new QLabel(tr("To ")); + + checkBoxLayout->addWidget(langFromLabel); + checkBoxLayout->addWidget(langFrom, 10); + checkBoxLayout->addWidget(langToLabel); + checkBoxLayout->addWidget(langTo, 10); + + //here removing already added dictionary + + for (int i = 0; i < dicts.size(); i++){ + if(QFile::exists(QDir::homePath() + "/.mdictionary/" + dicts[i].title() + ".xdxf")){ + dicts.removeAt(i); + i--; + } + } + + model = new DictsModel(dicts, this); + + proxyModel = new DictsProxyModel; + proxyModel->setDynamicSortFilter(true); + proxyModel->setSourceModel(model); + + treeView = new QTreeView; + treeView->setModel(proxyModel); + treeView->setRootIsDecorated(false); + treeView->setExpandsOnDoubleClick(false); + + treeView->setSortingEnabled(true); + treeView->sortByColumn(0, Qt::AscendingOrder); + treeView->setWordWrap(true); - treeWidget = new QTreeWidget; - treeWidget->setRootIsDecorated(false); - treeWidget->setColumnCount(4); - QStringList headers; - headers << tr("From") << tr("To") << tr("Name") << tr("Size"); - treeWidget->setHeaderLabels(headers); - treeWidget->setColumnWidth(0, 100); - treeWidget->setColumnWidth(1, 100); - treeWidget->setColumnWidth(2, 100); - treeWidget->setColumnWidth(3, 100); - layout->addWidget(treeWidget); + #ifndef Q_WS_MAEMO_5 + treeView->resizeColumnToContents(0); + treeView->resizeColumnToContents(1); + treeView->setColumnWidth(2, 300); + treeView->resizeColumnToContents(3); + #else + treeView->setColumnWidth(0, 150); + treeView->setColumnWidth(1, 150); + treeView->setColumnWidth(2, 300); + treeView->setColumnWidth(3, 150); + #endif + layout->addWidget(treeView); connect(langFrom, SIGNAL(currentIndexChanged(int)), this, SLOT(refreshDictList())); @@ -57,18 +95,71 @@ XdxfDictSelectDialog::XdxfDictSelectDialog(QWidget *parent) : connect(langTo, SIGNAL(currentIndexChanged(int)), this, SLOT(refreshDictList())); + connect(treeView, SIGNAL(activated(QModelIndex)), + this, SLOT(itemClicked(QModelIndex))); + #ifndef Q_WS_MAEMO_5 - setMinimumSize(400,200); + setMinimumSize(800,500); #else setMinimumHeight(350); #endif - refreshDictList(); + initializeDicts(); +} + + +void XdxfDictSelectDialog::initializeDicts() { + //scan of all languages of dictionaries, using QSet to get only distinct languages + QSet languagesFrom; + QSet languagesTo; + + for(int i=0; i < model->rowCount(QModelIndex()); i++) { + languagesFrom.insert( + model->data(model->index(i, 0, QModelIndex())).toString()); + languagesTo.insert( + model->data(model->index(i, 1, QModelIndex())).toString()); + } + + //removes one dictionary which from and to languages are empty.... + //bug in site with dictionaries + languagesFrom.remove(QString()); + languagesTo.remove(QString()); + + //sorting of found languages + QList langFromList = languagesFrom.toList(); + qSort(langFromList); + + QList langToList = languagesTo.toList(); + qSort(langToList); + + //and adding them to combobox, first item in each combobox is "Any" + langFrom->addItem(tr("Any")); + for(int i=0; i < langFromList.count(); i++) { + langFrom->addItem(langFromList.at(i)); + } + + langTo->addItem(tr("Any")); + for(int i=0; i < langToList.count(); i++) { + langTo->addItem(langToList.at(i)); + } } void XdxfDictSelectDialog::refreshDictList() { - QStringList l; - l << "pies" << "kot"; - treeWidget->insertTopLevelItem(0, new QTreeWidgetItem(l)); + //if selected language is "Any"(index 0), from filter string is set to empty string, proxy model uses empty string as special case and don't filter by this field. + if(langTo->currentIndex() == 0) + proxyModel->setTo(QString()); + else + proxyModel->setTo(langTo->currentText()); + + if(langFrom->currentIndex() == 0) + proxyModel->setFrom(QString()); + else + proxyModel->setFrom(langFrom->currentText()); +} + + +void XdxfDictSelectDialog::itemClicked(QModelIndex index) { + _link = index.model()->data(index, Qt::UserRole).toString(); + accept(); }