summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-07-16 11:19:31 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-07-16 12:22:56 -0700
commitf98ace681acbc3aba64779d639fef4686c6f3474 (patch)
tree68341813f61cd198149abf146ac6e515e7f3c130
parent4ec27b17513cd0c6ff6eeb8e55d6f4bd8cb11b5b (diff)
downloadsubsurface-f98ace681acbc3aba64779d639fef4686c6f3474.tar.gz
Dive site edit: add second "create" line without completion
We now have TWO special entries. One with just what the user has typed and one with the first completion of that text. This way both Henrik and Linus can get what they want. I'm not sure I love this, but it's easy to revert if the consensus is that this is too confusing. But it's much easier to discuss this if people can actually play with it. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--qt-models/divelocationmodel.cpp28
-rw-r--r--qt-ui/locationinformation.cpp4
-rw-r--r--qt-ui/modeldelegates.cpp3
3 files changed, 18 insertions, 17 deletions
diff --git a/qt-models/divelocationmodel.cpp b/qt-models/divelocationmodel.cpp
index 8d7faa890..778496a89 100644
--- a/qt-models/divelocationmodel.cpp
+++ b/qt-models/divelocationmodel.cpp
@@ -29,7 +29,7 @@ int LocationInformationModel::columnCount(const QModelIndex &parent) const
int LocationInformationModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
- return internalRowCount + 1;
+ return internalRowCount + 2;
}
QVariant LocationInformationModel::data(const QModelIndex &index, int role) const
@@ -38,17 +38,19 @@ QVariant LocationInformationModel::data(const QModelIndex &index, int role) cons
return QVariant();
// Special case to handle the 'create dive site' with name.
- if (index.row() == 0) {
+ if (index.row() < 2) {
if (index.column() == UUID)
return 0;
switch(role) {
case Qt::DisplayRole : {
- struct dive_site *ds;
- int i;
- for_each_dive_site(i, ds) {
- QString dsName(ds->name);
- if (dsName.startsWith(textField->text()))
- return dsName;
+ 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;
+ }
}
return textField->text();
}
@@ -60,8 +62,8 @@ QVariant LocationInformationModel::data(const QModelIndex &index, int role) cons
}
}
- // The dive sites are -1 because of the first item.
- struct dive_site *ds = get_dive_site(index.row()-1);
+ // The dive sites are -2 because of the first two items.
+ struct dive_site *ds = get_dive_site(index.row() - 2);
if (!ds)
return QVariant();
@@ -112,7 +114,7 @@ int32_t LocationInformationModel::addDiveSite(const QString& name, int lon, int
latitude.udeg = lat;
longitude.udeg = lon;
- beginInsertRows(QModelIndex(), dive_site_table.nr + 1, dive_site_table.nr + 1);
+ beginInsertRows(QModelIndex(), dive_site_table.nr + 2, dive_site_table.nr + 2);
uint32_t uuid = create_dive_site_with_gps(name.toUtf8().data(), latitude, longitude);
qSort(dive_site_table.dive_sites, dive_site_table.dive_sites + dive_site_table.nr, dive_site_less_than);
internalRowCount = dive_site_table.nr;
@@ -122,7 +124,7 @@ int32_t LocationInformationModel::addDiveSite(const QString& name, int lon, int
bool LocationInformationModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
- if (!index.isValid() || index.row() == 0)
+ if (!index.isValid() || index.row() < 2)
return false;
if (role != Qt::EditRole)
@@ -140,7 +142,7 @@ bool LocationInformationModel::removeRows(int row, int count, const QModelIndex
if(row >= rowCount())
return false;
- beginRemoveRows(QModelIndex(), row + 1, row + 1);
+ beginRemoveRows(QModelIndex(), row + 2, row + 2);
struct dive_site *ds = get_dive_site(row);
if (ds)
delete_dive_site(ds->uuid);
diff --git a/qt-ui/locationinformation.cpp b/qt-ui/locationinformation.cpp
index 39a8341cd..2e296450d 100644
--- a/qt-ui/locationinformation.cpp
+++ b/qt-ui/locationinformation.cpp
@@ -256,8 +256,8 @@ void LocationManagementEditHelper::handleActivation(const QModelIndex& activated
activated.row(), LocationInformationModel::UUID);
last_uuid = uuidIdx.data().toInt();
- // Special case: first option, add dive site.
- if (activated.row() == 0) {
+ // Special case: first two options: add dive site.
+ if (activated.row() < 2) {
qDebug() << "Setting to " << activated.data().toString();
emit setLineEditText(activated.data().toString());
}
diff --git a/qt-ui/modeldelegates.cpp b/qt-ui/modeldelegates.cpp
index 4a54eebf0..a3978ce54 100644
--- a/qt-ui/modeldelegates.cpp
+++ b/qt-ui/modeldelegates.cpp
@@ -503,9 +503,8 @@ void LocationFilterDelegate::paint(QPainter *painter, const QStyleOptionViewItem
struct dive_site *ds = get_dive_site_by_uuid(
index.model()->data(index.model()->index(index.row(),0)).toInt()
);
-
//Special case: do not show name, but instead, show
- if (index.row() == 0) {
+ if (index.row() < 2) {
diveSiteName = index.data().toString();
bottomText = index.data(Qt::ToolTipRole).toString();
goto print_part;