On Mon, Jan 25, 2016 at 3:44 PM, Joakim Bygdell <[email protected]> wrote:
> Helper function that retrieved the total weight for a dive to be displayed > on the DiveDetials page. > > Signed-off-by: Joakim Bygdell <[email protected]> > --- > qt-mobile/qml/DiveDetailsView.qml | 2 +- > qt-mobile/qmlmanager.cpp | 20 ++++++++++++++++++++ > qt-mobile/qmlmanager.h | 1 + > 3 files changed, 22 insertions(+), 1 deletion(-) > > diff --git a/qt-mobile/qml/DiveDetailsView.qml > b/qt-mobile/qml/DiveDetailsView.qml > index 6c33359..df1d255 100644 > --- a/qt-mobile/qml/DiveDetailsView.qml > +++ b/qt-mobile/qml/DiveDetailsView.qml > @@ -13,6 +13,7 @@ Item { > id: detailsView > property int labelWidth: MobileComponents.Units.gridUnit * 10 > property string cylinder: manager.getCylinder(dive.id) > + property string weight: manager.getWeights(dive.id) > width: parent.width > height: mainLayout.implicitHeight + > MobileComponents.Units.iconSizes.large > Rectangle { > @@ -171,7 +172,6 @@ Item { > MobileComponents.Label { > id: txtWeight > text: weight > - Layout.fillWidth: true > wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere > Layout.alignment: Qt.AlignRight > } > diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp > index d2b5c47..a4cfd5f 100644 > --- a/qt-mobile/qmlmanager.cpp > +++ b/qt-mobile/qmlmanager.cpp > @@ -718,3 +718,23 @@ QString QMLManager::getCylinder(QString diveId) > cylinder = d->cylinder[0].type.description; > return cylinder; > } > + > +QString QMLManager::getWeights(QString diveId) > +{ > + int dive_id = diveId.toInt(); > + struct dive *d = get_dive_by_uniq_id(dive_id); > + int weight = 0; > + QString weights; > + if (d){ > + for (int i = 0; i < MAX_WEIGHTSYSTEMS; i++) > + weight += d->weightsystem[i].weight.grams; > + > + if (informational_prefs.unit_system == IMPERIAL){ > + weights = QString::number(grams_to_lbs(weight)) + > " lbs"; > + } > + else { > + weights = QString::number(weight/1000) + " kg"; > + } > + } > + return weights; > +} > I don't like very much what's happening to QMLManager at this point, it's becomming a godlike class. we already have a DiveObjectWrapper that's exported to Qml as 'Dive' so you can use a Dive object there directly, you can add a Q_INVOKABLE QString DiveObjectWrapper::weightsAsString() (or any other name) { your foreach code up there; } and call it on the QML as follows: model.dive.weightsAsString(); > diff --git a/qt-mobile/qmlmanager.h b/qt-mobile/qmlmanager.h > index 57b67c2..bcaf9c7 100644 > --- a/qt-mobile/qmlmanager.h > +++ b/qt-mobile/qmlmanager.h > @@ -85,6 +85,7 @@ public slots: > QString getDate(QString diveId); > QString getCurrentPosition(); > QString getCylinder(QString diveId); > + QString getWeights(QString diveId); > void deleteGpsFix(quint64 when); > void refreshDiveList(); > > -- > 2.4.9 (Apple Git-60) > > _______________________________________________ > subsurface mailing list > [email protected] > http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface >
_______________________________________________ subsurface mailing list [email protected] http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface
