Changeset 38e24512 in subsurface


Ignore:
Timestamp:
May 27, 2017, 11:07:20 AM (7 months ago)
Author:
Dirk Hohndel <dirk@…>
Branches:
master
Children:
5a4485b
Parents:
7858376
git-author:
Tomaz Canabrava <tcanabrava@…> (05/26/17 08:53:25)
git-committer:
Dirk Hohndel <dirk@…> (05/27/17 11:07:20)
Message:

QML UI: add the Downloaded Dive Model

Still to do:

  • select the dives to save
  • record the downloaded dives

but download is already working. :)

Signed-off-by: Tomaz Canabrava <tcanabrava@…>
Signed-off-by: Dirk Hohndel <dirk@…>

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • mobile-widgets/qml/DownloadFromDiveComputer.qml

    r7858376 r38e24512  
    4545                deviceData.saveDump : false
    4646                deviceData.saveLog : false
     47
     48                onFinished : {
     49                        importModel.repopulate()
     50                }
     51        }
     52
     53        DCImportModel {
     54                id: importModel
    4755        }
    4856
     
    99107                        Layout.fillHeight: true // all remaining vertical space
    100108                        height: parent.height   // on this screen
     109                        model : importModel
     110
    101111                        QQC1.TableViewColumn {
    102112                                width: parent.width / 2
  • qt-models/diveimportedmodel.cpp

    rdec47e1 r38e24512  
    88        diveTable(nullptr)
    99{
     10        // Defaults to downloadTable, can be changed later.
     11        diveTable = &downloadTable;
    1012}
    1113
     
    2628        if (orientation == Qt::Vertical)
    2729                return QVariant();
     30
     31        // widgets access the model via index.column(), qml via role.
     32        int column = section;
     33        if (role == DateTime || role == Duration || role == Depth) {
     34                column = role - DateTime;
     35                role = Qt::DisplayRole;
     36        }
     37
    2838        if (role == Qt::DisplayRole) {
    29                 switch (section) {
     39                switch (column) {
    3040                case 0:
    3141                        return QVariant(tr("Date/time"));
     
    4151void DiveImportedModel::setDiveTable(struct dive_table* table)
    4252{
    43     diveTable = table;
     53        diveTable = table;
    4454}
    4555
     
    5565        if (!d)
    5666                return QVariant();
     67
     68        // widgets access the model via index.column(), qml via role.
     69        int column = index.column();
     70        if (role == DateTime || role == Duration || role == Depth) {
     71                column = role - DateTime;
     72                role = Qt::DisplayRole;
     73        }
     74
    5775        if (role == Qt::DisplayRole) {
    58                 switch (index.column()) {
     76                switch (column) {
    5977                case 0:
    6078                        return QVariant(get_short_dive_date_string(d->when));
     
    120138        endInsertRows();
    121139}
     140
     141void DiveImportedModel::repopulate()
     142{
     143        setImportedDivesIndexes(0, diveTable->nr-1);
     144}
     145
     146QHash<int, QByteArray> DiveImportedModel::roleNames() const {
     147        static QHash<int, QByteArray> roles = {
     148                { DateTime, "datetime"},
     149                { Depth, "depth"},
     150                { Duration, "duration"}};
     151        return roles;
     152}
  • qt-models/diveimportedmodel.h

    rdec47e1 r38e24512  
    99        Q_OBJECT
    1010public:
    11         DiveImportedModel(QObject *o);
    12     void setDiveTable(struct dive_table *table);
     11        enum roleTypes { DateTime = Qt::UserRole + 1, Duration, Depth};
     12
     13        DiveImportedModel(QObject *parent = 0);
     14        void setDiveTable(struct dive_table *table);
    1315        int columnCount(const QModelIndex& index = QModelIndex()) const;
    1416        int rowCount(const QModelIndex& index = QModelIndex()) const;
     
    1820        Qt::ItemFlags flags(const QModelIndex &index) const;
    1921        void clearTable();
    20 
     22        QHash<int, QByteArray> roleNames() const;
     23        Q_INVOKABLE void repopulate();
    2124public
    2225slots:
     
    2932        int lastIndex;
    3033        bool *checkStates;
    31     struct dive_table *diveTable;
     34        struct dive_table *diveTable;
    3235};
    3336
  • subsurface-mobile-helper.cpp

    r7858376 r38e24512  
    2323#include "mobile-widgets/qmlprofile.h"
    2424#include "core/downloadfromdcthread.h"
     25#include "qt-models/diveimportedmodel.h"
    2526
    2627#include "mobile-widgets/qml/kirigami/src/kirigamiplugin.h"
     
    4041        qmlRegisterType<DCDeviceData>("org.subsurfacedivelog.mobile", 1, 0, "DCDeviceData");
    4142        qmlRegisterType<DownloadThread>("org.subsurfacedivelog.mobile", 1, 0, "DCDownloadThread");
     43        qmlRegisterType<DiveImportedModel>("org.subsurfacedivelog.mobile", 1, 0, "DCImportModel");
    4244
    4345        QQmlApplicationEngine engine;
Note: See TracChangeset for help on using the changeset viewer.