diff options
author | Arno <am@disconnect.de> | 2011-07-01 15:58:56 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2011-07-01 15:58:56 +0200 |
commit | 35774a402027714ed6f93041aea1ebe5f5391205 (patch) | |
tree | 72e90eca0f4bbb20fb9ff69ece1b7429714d0767 /mappingtablewidget.cpp | |
parent | a06a6425d0ebd982a4fa34502dbb20b06806af49 (diff) | |
download | SheMov-35774a402027714ed6f93041aea1ebe5f5391205.tar.gz SheMov-35774a402027714ed6f93041aea1ebe5f5391205.tar.bz2 SheMov-35774a402027714ed6f93041aea1ebe5f5391205.zip |
Added partial search for MappingTableModel
Added a search button to NewMovieWizard to do partial searches on
the according table. Selected items will be inserted into the
QLineEdit of the Wizard page.
Diffstat (limited to 'mappingtablewidget.cpp')
-rw-r--r-- | mappingtablewidget.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/mappingtablewidget.cpp b/mappingtablewidget.cpp index dc406b4..1fe2a12 100644 --- a/mappingtablewidget.cpp +++ b/mappingtablewidget.cpp @@ -46,11 +46,14 @@ MappingTableWidget::MappingTableWidget(const QString &table, QWidget *parent) : //buttons QHBoxLayout *buttonLayout = new QHBoxLayout; + mSearchItem = new QPushButton(tr("&Search...")); + buttonLayout->addWidget(mSearchItem); buttonLayout->addStretch(); mAddItem = new QPushButton(tr("&Add item")); mRemoveItem = new QPushButton(tr("Remove item")); buttonLayout->addWidget(mAddItem); buttonLayout->addWidget(mRemoveItem); + connect(mSearchItem, SIGNAL(clicked()), this, SLOT(searchItem())); connect(mAddItem, SIGNAL(clicked()), this, SLOT(addItem())); connect(mRemoveItem, SIGNAL(clicked()), this, SLOT(removeItem())); @@ -77,6 +80,18 @@ void MappingTableWidget::setEditEnabled(bool enabled){ mRemoveItem->setEnabled(enabled); mItemEdit->setEnabled(enabled); } + +void MappingTableWidget::searchItem(){ + QStringList res = mMappingModel->findPartialName(mItemEdit->text()); + if(res.isEmpty()){ + return; + } + MappingTableResultDialog dlg(res, this); + if(dlg.exec() == QDialog::Accepted){ + mItemEdit->setText(dlg.selectedText()); + } +} + void MappingTableWidget::addItem(){ QString value = mItemEdit->text().toLower().trimmed(); if(mModel->stringList().contains(value)){ @@ -150,3 +165,38 @@ QModelIndex MappingTableItemModel::find(const QString &value) const{ } return index(row, 0); } + +MappingTableResultDialog::MappingTableResultDialog(const QStringList &results, QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){ + mModel = new QStringListModel(results, this); + mView = new QTreeView(this); + mView->setModel(mModel); + mView->setRootIsDecorated(false); + mView->setSelectionMode(QAbstractItemView::SingleSelection); + mView->setHeaderHidden(true); + mView->setEditTriggers(QAbstractItemView::NoEditTriggers); + mOk = new QPushButton(tr("Ok")); + connect(mOk, SIGNAL(clicked()), this, SLOT(accept())); + mCancel = new QPushButton(tr("Cancel")); + connect(mCancel, SIGNAL(clicked()), this, SLOT(reject())); + QLabel *caption = new QLabel(tr("Search results")); + + //layout + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(caption); + mainLayout->addWidget(mView); + QHBoxLayout *buttonLayout = new QHBoxLayout; + buttonLayout->setAlignment(Qt::AlignCenter); + buttonLayout->addWidget(mOk); + buttonLayout->addWidget(mCancel); + mainLayout->addLayout(buttonLayout); + + setLayout(mainLayout); +} + +void MappingTableResultDialog::accept(){ + QModelIndex cur = mView->selectionModel()->currentIndex(); + if(cur.isValid()){ + mSelectedText = cur.data(Qt::DisplayRole).toString(); + } + return QDialog::accept(); +} |