Add DiveListModel

This model will be used to show the dives in QML. This commit adds
the model, and the means to link it to QML.

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-09 22:20:44 +03:00 committed by Dirk Hohndel
parent bf882416f9
commit b7e4b35cde
6 changed files with 392 additions and 4 deletions

View file

@ -37,4 +37,53 @@ ApplicationWindow {
}
}
}
Rectangle {
width: parent.width; height: parent.height
anchors.fill: parent
Component {
id: diveDelegate
Item {
id: wrapper
width: parent.width; height: 55
Column {
Text { text: '#:' + diveNumber + "(" + location + ")" }
Text { text: date }
Text { text: duration + " " + depth }
}
MouseArea { anchors.fill: parent; onClicked: diveListView.currentIndex = index }
states: State {
name: "Current"
when: wrapper.ListView.isCurrentItem
PropertyChanges { target: wrapper; x:20 }
}
transitions: Transition {
NumberAnimation { properties: "x"; duration: 200 }
}
}
}
Component {
id: highlightBar
Rectangle {
width: parent.width; height: 50
color: "#FFFF88"
y: diveListView.currentItem.y;
Behavior on y { SpringAnimation { spring: 2; damping: 0.1 } }
}
}
ListView {
id: diveListView
width: parent.width; height: parent.height
anchors.fill: parent
model: diveModel
delegate: diveDelegate
focus: true
highlight: highlightBar
highlightFollowsCurrentItem: false
}
}
}

View file

@ -1,15 +1,15 @@
#include "qmlmanager.h"
#include <QUrl>
#include "../qt-models/divelistmodel.h"
QMLManager::QMLManager()
{
}
QMLManager::~QMLManager()
{
}
QString QMLManager::filename()
@ -20,12 +20,21 @@ QString QMLManager::filename()
void QMLManager::setFilename(const QString &f)
{
m_fileName = f;
emit filenameChanged();
loadFile();
emit filenameChanged();
}
void QMLManager::loadFile()
{
QUrl url(m_fileName);
QString strippedFileName = url.toLocalFile();
parse_file(strippedFileName.toUtf8().data());
int i;
struct dive *d;
for_each_dive(i, d) {
DiveListModel::instance()->addDive(d);
}
}