Group dives by trips

Group dives according to the allocated dive trips.

Signed-off-by: Grace Karanja <gracie.karanja89@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Grace Karanja 2015-06-11 09:39:32 +03:00 committed by Dirk Hohndel
parent f0c7779753
commit ee9452ae8a
3 changed files with 51 additions and 20 deletions

View file

@ -72,21 +72,18 @@ ApplicationWindow {
//And other details at the bottom.
Row {
id: topLayout
x: 10; y: 10; height: 50; width: parent.width
x: 10; y: 10; height: 60; width: parent.width
spacing: 10
Column {
width: background.width; height: 50
width: background.width; height: 60
spacing: 5
Text {
text: diveNumber + ' (' + date + ')'
font.bold: true; font.pointSize: 16
}
Text {
text: location
}
Text { text: location; width: details.width }
Text { text: '<b>Depth:</b> ' + depth + ' <b>Duration:</b>' + duration; width: details.width }
}
}
@ -109,19 +106,8 @@ ApplicationWindow {
anchors { top: detailsTitle.bottom; bottom: parent.bottom }
contentHeight: detailsView.height
clip: true
Column {
Row {
Text { text: 'Duration: ' + duration; width: details.width }
}
Row {
Text { text: 'Depth: ' + depth; width: details.width }
}
Row {
Text { text: 'Notes: ' + notes; wrapMode: Text.WordWrap; width: details.width }
}
Row {
Text { text: 'Notes: ' + notes; wrapMode: Text.WordWrap; width: details.width }
}
}
}
@ -179,12 +165,31 @@ ApplicationWindow {
}
}
Component {
id: tripHeading
Rectangle {
width: page.width
height: childrenRect.height
color: "lightsteelblue"
Text {
text: section
font.bold: true
font.pointSize: 16
}
}
}
ListView {
id: diveListView
anchors.fill: parent
model: diveModel
delegate: diveDelegate
focus: true
section.property: "trip"
section.criteria: ViewSection.FullString
section.delegate: tripHeading
}
}
}

View file

@ -5,6 +5,14 @@ Dive::Dive(dive *d)
{
m_thisDive = d;
setDiveNumber(QString::number(d->number));
dive_trip *trip = d->divetrip;
if(trip) {
//trip is valid
setTrip(trip->location);
}
setDate(get_dive_date_string(d->when));
setDepth(get_depth_string(d->maxdepth));
setDuration(get_dive_duration_string(d->duration.seconds, "h:","min"));
@ -153,6 +161,16 @@ void Dive::setNotes(const QString &notes)
{
m_notes = notes;
}
QString Dive::trip() const
{
return m_trip;
}
void Dive::setTrip(const QString &trip)
{
m_trip = trip;
}
@ -184,6 +202,8 @@ QVariant DiveListModel::data(const QModelIndex &index, int role) const
if (role == DiveNumberRole)
return dive.diveNumber();
else if (role == DiveTripRole)
return dive.trip();
else if (role == DiveDateRole)
return dive.date();
else if (role == DiveRatingRole)
@ -217,6 +237,7 @@ QHash<int, QByteArray> DiveListModel::roleNames() const
{
QHash<int, QByteArray> roles;
roles[DiveNumberRole] = "diveNumber";
roles[DiveTripRole] = "trip";
roles[DiveDateRole] = "date";
roles[DiveRatingRole] = "rating";
roles[DiveDepthRole] = "depth";

View file

@ -50,8 +50,12 @@ public:
QString notes() const;
void setNotes(const QString &notes);
QString trip() const;
void setTrip(const QString &trip);
private:
QString m_diveNumber;
QString m_trip;
QString m_date;
QString m_rating;
QString m_depth;
@ -76,6 +80,7 @@ public:
enum DiveListRoles {
DiveNumberRole = Qt::UserRole + 1,
DiveTripRole,
DiveDateRole,
DiveRatingRole,
DiveDepthRole,