summaryrefslogtreecommitdiffstats
path: root/mappingtablewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mappingtablewidget.cpp')
-rw-r--r--mappingtablewidget.cpp50
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();
+}