summaryrefslogtreecommitdiffstats
path: root/qt-models/divelocationmodel.cpp
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2015-07-16 18:08:08 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-07-16 18:33:57 -0700
commit56240cff5ba2e8b762d3ba85cf62aafdc874d693 (patch)
treee8ff7ed5a3ac98aeaa2f1a1fa1d8840a83b51369 /qt-models/divelocationmodel.cpp
parent86bd9c7a90b9cced6fb5cee5faa21954d02f3662 (diff)
downloadsubsurface-56240cff5ba2e8b762d3ba85cf62aafdc874d693.tar.gz
Show only 1 possibility if string is unique
We should only show one possibility if the dive_site name string is unique - we don't have that dive_site yet - so we pass to the Completer filter a Dummy string that will surelly not be a dive site - konami code. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models/divelocationmodel.cpp')
-rw-r--r--qt-models/divelocationmodel.cpp33
1 files changed, 25 insertions, 8 deletions
diff --git a/qt-models/divelocationmodel.cpp b/qt-models/divelocationmodel.cpp
index 778496a89..05d7df709 100644
--- a/qt-models/divelocationmodel.cpp
+++ b/qt-models/divelocationmodel.cpp
@@ -32,6 +32,18 @@ int LocationInformationModel::rowCount(const QModelIndex &parent) const
return internalRowCount + 2;
}
+static struct dive_site *get_dive_site_name_start_which_str(const QString& str) {
+ struct dive_site *ds;
+ int i;
+ for_each_dive_site(i,ds) {
+ QString dsName(ds->name);
+ if (dsName.startsWith(str)) {
+ return ds;
+ }
+ }
+ return NULL;
+}
+
QVariant LocationInformationModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
@@ -44,20 +56,25 @@ QVariant LocationInformationModel::data(const QModelIndex &index, int role) cons
switch(role) {
case Qt::DisplayRole : {
if (index.row() == 1) {
- struct dive_site *ds;
- int i;
- for_each_dive_site(i, ds) {
- QString dsName(ds->name);
- if (dsName.startsWith(textField->text()))
- return dsName;
- }
+ struct dive_site *ds = get_dive_site_name_start_which_str(textField->text());
+ if(ds)
+ return ds->name;
}
return textField->text();
}
case Qt::ToolTipRole : {
return QString(tr("Create dive site with this name"));
}
- case Qt::EditRole : return textField->text();
+ case Qt::EditRole : {
+ if (index.row() == 1) {
+ struct dive_site *ds = get_dive_site_name_start_which_str(textField->text());
+ if (!ds)
+ return "NOT HERE";
+ if (QString(ds->name) == textField->text())
+ return "NOT HERE";
+ }
+ return textField->text();
+ }
case Qt::DecorationRole : return QIcon(":plus");
}
}