diff --git a/src/contents/ui/main.qml b/src/contents/ui/main.qml index 1706804687d75326f99977d0ea60fe2136ae3338..8e862251ac2dede05162c6810f5e87508f0989c3 100644 --- a/src/contents/ui/main.qml +++ b/src/contents/ui/main.qml @@ -145,7 +145,7 @@ Kirigami.ApplicationWindow { Charts.ChartView { id: chart antialiasing: true - backgroundColor: Kirigami.Theme.buttonBackgroundColor + backgroundColor: Kirigami.Theme.backgroundColor titleColor: Kirigami.Theme.textColor legend.visible: false anchors.fill: parent @@ -169,8 +169,10 @@ Kirigami.ApplicationWindow { id: valueAx labelFormat: "%d "+units labelsColor: Kirigami.Theme.textColor - min: yMin - max: yMax + Component.onCompleted: { + valueAx.min = yMin; + valueAx.max = yMax; + } } color: model.lineColor name: model.title @@ -188,6 +190,7 @@ Kirigami.ApplicationWindow { //Readjust graphs to show date range from earliest item. dateAx.max = new Date(); dateAx.min = qiflora.model.data(qiflora.model.index(0,0)); + valueAx.max = qiflora.model.maxValue(modelCol)*1.25; } } } diff --git a/src/main.cpp b/src/main.cpp index 3da592704a0da88c3697489ced88a2979601ecd1..0a7ab95bf2333205e949954b98a3998fd1c8cf46 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,7 +30,7 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) QQmlApplicationEngine engine; - qmlRegisterType<BluetoothDevices>(); + qmlRegisterAnonymousType<BluetoothDevices>("",1); qmlRegisterType<MiFlora>("org.eyecreate.qiflora",1,1,"QiFlora"); engine.rootContext()->setContextProperty(QStringLiteral("appAboutData"), QVariant::fromValue(aboutData)); engine.load(QUrl(QStringLiteral("qrc:///main.qml"))); diff --git a/src/miflora/florahistory.cpp b/src/miflora/florahistory.cpp index 50b1f8bb23cdc669faecd9606e15ae27f35e95ec..3257e24cfe1c58af6232b653d4ede655c411a8f3 100644 --- a/src/miflora/florahistory.cpp +++ b/src/miflora/florahistory.cpp @@ -55,6 +55,14 @@ int FloraHistory::rowCount(const QModelIndex& parent) const void FloraHistory::addData(QDateTime time, float temperature, quint32 brightness, quint8 moisture, quint16 conductivity) { beginInsertRows(QModelIndex(),tableData.size(),tableData.size()); + if( tableData.size() == 0 ) { + maxData = {time, temperature, brightness, moisture, conductivity}; + } else { + if( maxData.temperature < temperature ) maxData.temperature = temperature; + if( maxData.brightness < brightness ) maxData.brightness = brightness; + if( maxData.moisture < moisture ) maxData.moisture = moisture; + if( maxData.conductivity < conductivity ) maxData.conductivity = conductivity; + } tableData.append(flora_data{time, temperature, brightness, moisture, conductivity}); endInsertRows(); } @@ -65,4 +73,21 @@ void FloraHistory::clear() emit layoutChanged(); } +QVariant FloraHistory::maxValue(int Column ) +{ + if( Column == 1 ) { + return QVariant( std::round( maxData.temperature*10/10 )); + } else if( Column == 2 ) { + return QVariant( maxData.brightness ); + } else if( Column == 3 ) { + return QVariant( maxData.moisture ); + } else if( Column == 4 ) { + return QVariant( maxData.conductivity ); + } else if( Column == 5 ) { + return QVariant( std::round( (maxData.temperature*1.8+32)*10/10 )); + } else { + return QVariant(); + } +} + diff --git a/src/miflora/florahistory.h b/src/miflora/florahistory.h index 93cf3ba285f0a542d063dd5d19e66812103f214f..52ba15d60973afe173f364c73722fffbe5d543ab 100644 --- a/src/miflora/florahistory.h +++ b/src/miflora/florahistory.h @@ -41,6 +41,8 @@ public: void addData(QDateTime time, float temperature, quint32 brightness, quint8 moisture, quint16 conductivity); + Q_INVOKABLE QVariant maxValue(int Column); + private: struct flora_data { QDateTime time; @@ -51,6 +53,7 @@ private: }; QList<flora_data> tableData; + flora_data maxData; }; diff --git a/src/miflora/miflora.cpp b/src/miflora/miflora.cpp index 40f7c3961772d8291e982f3efd03e4ceff6c1454..923ab08237ae151c05ac52935098e7b1c66e6589 100644 --- a/src/miflora/miflora.cpp +++ b/src/miflora/miflora.cpp @@ -71,7 +71,7 @@ void MiFlora::foundDevice ( const QBluetoothDeviceInfo& device ) QQmlListProperty<BluetoothDevices> MiFlora::getDeviceList() { - return QQmlListProperty<BluetoothDevices>(this, devices); + return QQmlListProperty<BluetoothDevices>(this, &devices); } void MiFlora::logControllerError ( QLowEnergyController::Error err ) @@ -175,10 +175,10 @@ void MiFlora::historyServiceCharRead(QLowEnergyCharacteristic readChar, QByteArr connect(historyService, &QLowEnergyService::characteristicRead, this, &MiFlora::historyServiceCharReadData); disconnect(historyService, &QLowEnergyService::characteristicWritten, this, &MiFlora::historyServiceCharWritten); connect(historyService, &QLowEnergyService::characteristicWritten, this, &MiFlora::historyServiceCharWrittenData); - //Take size given and start by giving the last 48 numbers(if that many) to represent the last day of data. TODO: look to have amount of time be configurable. + //Take size given and start by giving the last 24 numbers(if that many) to represent the last day of data. TODO: look to have amount of time be configurable. lastHistoryEntry = 0; - if(size > 48) { - currentHistoryEntry = 48; + if(size > historySize) { + currentHistoryEntry = historySize; } else { currentHistoryEntry = size; } diff --git a/src/miflora/miflora.h b/src/miflora/miflora.h index a7aea5bb54895e80b17b869553666018a567d28e..912855debd238476ffcad092d9d2be339fa9fc53 100644 --- a/src/miflora/miflora.h +++ b/src/miflora/miflora.h @@ -96,7 +96,8 @@ private: const QByteArray magicBytes = QByteArray::fromHex("a01f"); const QByteArray historyReadInit = QByteArray::fromHex("a00000"); - + const quint16 historySize = 24; + float temp = 0.0; quint32 bright = 0; quint8 moisture = 0;