diff --git a/daemon/src/devices/banglejsdevice.cpp b/daemon/src/devices/banglejsdevice.cpp index 36dea5ed..5e0f40b7 100644 --- a/daemon/src/devices/banglejsdevice.cpp +++ b/daemon/src/devices/banglejsdevice.cpp @@ -175,6 +175,24 @@ void BangleJSDevice::initialise() } setConnectionState("authenticated"); + + setTime(); +} + +void BangleJSDevice::setTime() { + UARTService *uart = qobject_cast(service(UARTService::UUID_SERVICE_UART)); + if (!uart){ + return; + } + + qint64 ts; + +#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0) + ts = QDateTime::currentSecsSinceEpoch(); +#else + ts = QDateTime::currentDateTime().toTime_t(); +#endif + uart->tx(QByteArray(1, 0x10) + QString("setTime(" + QString::number(ts) + ");\n").toUtf8()); } void BangleJSDevice::onPropertiesChanged(QString interface, QVariantMap map, QStringList list) diff --git a/daemon/src/devices/banglejsdevice.h b/daemon/src/devices/banglejsdevice.h index c2c2b512..37e06ec7 100644 --- a/daemon/src/devices/banglejsdevice.h +++ b/daemon/src/devices/banglejsdevice.h @@ -37,6 +37,8 @@ class BangleJSDevice : public AbstractDevice //Weather void sendWeather(CurrentWeather *weather) override; + void setTime(); + protected: virtual void onPropertiesChanged(QString interface, QVariantMap map, QStringList list); diff --git a/daemon/translations/harbour-amazfishd-cs.ts b/daemon/translations/harbour-amazfishd-cs.ts index 27a11f2f..1743eb21 100644 --- a/daemon/translations/harbour-amazfishd-cs.ts +++ b/daemon/translations/harbour-amazfishd-cs.ts @@ -12,7 +12,7 @@ AsteroidOSDevice - + Stored %1... Uloženo %1 ... @@ -61,27 +61,27 @@ Zařízení není platné, nemusí být podporované - + Amazfish Amazfish - + Connected Připojeno - + Phone and watch are connected Telefon a hodinky jsou propojeny - + Low Battery Slabá baterie - + Battery level now Stupeň nabití @@ -102,17 +102,17 @@ HuamiDevice - + Navigation Started Navigace spuštěna - + Navigation Stopped Navigace zastavena - + Progress Průbeh diff --git a/documentation/build-instructions.md b/documentation/build-instructions.md index 4af10c48..6946096e 100644 --- a/documentation/build-instructions.md +++ b/documentation/build-instructions.md @@ -42,12 +42,12 @@ sudo apt install -y qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libkdb3-de ``` Two dependencies can be found on git repos -https://git.sailfishos.org/mer-core/nemo-qml-plugin-dbus +https://github.com/sailfishos/nemo-qml-plugin-dbus and -https://git.sailfishos.org/mer-core/qtmpris +https://github.com/sailfishos/qtmpris.git/ ``` -git clone https://git.sailfishos.org/mer-core/qtmpris.git +git clone https://github.com/sailfishos/qtmpris.git/ cd qtmpris qmake make @@ -59,7 +59,7 @@ cd .. ``` ``` -git clone https://git.sailfishos.org/mer-core/nemo-qml-plugin-dbus.git +git clone https://github.com/sailfishos/nemo-qml-plugin-dbus cd nemo-qml-plugin-dbus qmake make @@ -143,7 +143,7 @@ clickable build --libs clickable desktop ``` -To build the application for ARM architecture and install it on your device, follow these steps: +To build the libraries and the application for the architecture of the connected device and install the app on your device, follow these steps: ``` clickable build --libs --app --arch detect --skip-review diff --git a/lib/src/amazfishconfig.h b/lib/src/amazfishconfig.h index 93f17fa0..eb0eecca 100644 --- a/lib/src/amazfishconfig.h +++ b/lib/src/amazfishconfig.h @@ -161,7 +161,7 @@ class AmazfishConfig : public QObject ENUM_OPTION(QStringLiteral("profile/gender"), profileGender, setProfileGender, ProfileGender, ProfileGenderMale) ENUM_OPTION(QStringLiteral("profile/wearlocation"), profileWearLocation, setProfileWearLocation, WearLocation, WearLocationLeftWrist) - UINT_OPTION(QStringLiteral("profile/height"), profileHeight, setProfileHeight, 200) + UINT_OPTION(QStringLiteral("profile/height"), profileHeight, setProfileHeight, 170) UINT_OPTION(QStringLiteral("profile/weight"), profileWeight, setProfileWeight, 70) UINT_OPTION(QStringLiteral("profile/alldayhrm"), profileAllDayHRM, setProfileAllDayHRM, 0) UINT_OPTION(QStringLiteral("profile/fitnessgoal"), profileFitnessGoal, setProfileFitnessGoal, 10000) diff --git a/ui/qml/components/platform.kirigami/ApplicationWindowPL.qml b/ui/qml/components/platform.kirigami/ApplicationWindowPL.qml index 0d3d1309..098c85e4 100644 --- a/ui/qml/components/platform.kirigami/ApplicationWindowPL.qml +++ b/ui/qml/components/platform.kirigami/ApplicationWindowPL.qml @@ -35,7 +35,7 @@ Kirigami.ApplicationWindow { pageStack.globalToolBar.showNavigationButtons: pages && pages.currentIndex > 0 ? Kirigami.ApplicationHeaderStyle.ShowBackButton : Kirigami.ApplicationHeaderStyle.NoNavigationButtons - + property var cover property real compassOrientationOffset: 0 property bool isConvergent: true property var initialPage diff --git a/ui/qml/components/platform.qtcontrols/ApplicationWindowPL.qml b/ui/qml/components/platform.qtcontrols/ApplicationWindowPL.qml index 6608f4ad..62857dd4 100644 --- a/ui/qml/components/platform.qtcontrols/ApplicationWindowPL.qml +++ b/ui/qml/components/platform.qtcontrols/ApplicationWindowPL.qml @@ -27,6 +27,7 @@ ApplicationWindow { height: 480 visible: true + property var cover property real compassOrientationOffset: 0 property alias initialPage: pageStack.initialItem property string menuPageUrl diff --git a/ui/qml/components/platform.uuitk/ApplicationWindowPL.qml b/ui/qml/components/platform.uuitk/ApplicationWindowPL.qml index e80e5e79..8ecdd799 100644 --- a/ui/qml/components/platform.uuitk/ApplicationWindowPL.qml +++ b/ui/qml/components/platform.uuitk/ApplicationWindowPL.qml @@ -28,6 +28,7 @@ ApplicationWindow { height: 480 visible: true + property var cover property real compassOrientationOffset: 0 property alias initialPage: pageStack.initialItem property string menuPageUrl diff --git a/ui/qml/cover/CoverPage.qml b/ui/qml/cover/CoverPage.qml index 9c34ddf7..b40e9136 100644 --- a/ui/qml/cover/CoverPage.qml +++ b/ui/qml/cover/CoverPage.qml @@ -70,7 +70,7 @@ CoverBackground { Image { id: imgSteps - source: "../pics/icon-m-steps.png" + source: "../pics/custom-icons/icon-m-steps.png" height: Theme.iconSizeMedium width: height } @@ -94,7 +94,7 @@ CoverBackground { Image { id: imgHeartrate - source: "../pics/icon-m-heartrate.png" + source: "../pics/custom-icons/icon-m-heartrate.png" height: Theme.iconSizeMedium width: height } diff --git a/ui/qml/harbour-amazfish.qml b/ui/qml/harbour-amazfish.qml index 91985d99..506543dd 100644 --- a/ui/qml/harbour-amazfish.qml +++ b/ui/qml/harbour-amazfish.qml @@ -13,7 +13,7 @@ ApplicationWindowPL id: app initialPage: Component { FirstPage { } } property var rootPage: null - //cover: Qt.resolvedUrl("cover/CoverPage.qml") + cover: Qt.resolvedUrl("cover/CoverPage.qml") //allowedOrientations: defaultAllowedOrientations property int _lastNotificationId: 0 diff --git a/ui/qml/pages/AnalysisPage.qml b/ui/qml/pages/AnalysisPage.qml index bcc10cef..4670a25f 100644 --- a/ui/qml/pages/AnalysisPage.qml +++ b/ui/qml/pages/AnalysisPage.qml @@ -40,7 +40,7 @@ PagePL { graphTitle: qsTr("Heartrate") graphHeight: 300 - axisY.units: "BPM" + axisY.units: qsTr("BPM") type: DataSource.Heartrate minY: 0 @@ -57,7 +57,7 @@ PagePL { graphTitle: qsTr("Steps") graphHeight: 300 - axisY.units: "Steps" + axisY.units: qsTr("Steps") type: DataSource.Steps minY: 0 diff --git a/ui/qml/pages/BipFirmwarePage.qml b/ui/qml/pages/BipFirmwarePage.qml index d9eaf496..fc5c4bb3 100644 --- a/ui/qml/pages/BipFirmwarePage.qml +++ b/ui/qml/pages/BipFirmwarePage.qml @@ -4,7 +4,7 @@ import "../components/platform" PagePL { id: page - title: qsTr("Download File") + title: qsTr("Install File") property string selectedFile: qsTr("None") property string fileVersion @@ -19,7 +19,7 @@ PagePL { LabelPL { width: parent.width - text: qsTr("Select a file to download."); + text: qsTr("Select a file to install."); } ValueButtonPL { diff --git a/ui/qml/pages/FirstPage.qml b/ui/qml/pages/FirstPage.qml index 6854c27b..ac72f1d5 100644 --- a/ui/qml/pages/FirstPage.qml +++ b/ui/qml/pages/FirstPage.qml @@ -30,7 +30,7 @@ PagePL { } } PageMenuItemPL { - text: qsTr("Download File") + text: qsTr("Install File") onClicked: app.pages.push(Qt.resolvedUrl("BipFirmwarePage.qml")) } PageMenuItemPL { @@ -199,6 +199,11 @@ PagePL { text: AmazfishConfig.profileFitnessGoal.toLocaleString() } } + Component.onCompleted: { + if (_connected) { + _InfoSteps = parseInt(DaemonInterfaceInstance.information(Amazfish.INFO_STEPS), 10) || 0; + } + } } SectionHeaderPL { diff --git a/ui/qml/pages/HeartratePage.qml b/ui/qml/pages/HeartratePage.qml index f820ea97..3aa8ba3e 100644 --- a/ui/qml/pages/HeartratePage.qml +++ b/ui/qml/pages/HeartratePage.qml @@ -69,7 +69,7 @@ PagePL { graphTitle: qsTr("BPM") graphHeight: 300 - axisY.units: "BPM" + axisY.units: qsTr("BPM") type: DataSource.Heartrate graphType: 2 @@ -85,45 +85,65 @@ PagePL { //Type summary Grid { - columns: 2 + columns: 3 spacing: styler.themePaddingMedium - width: parent.width - LabelPL { text: qsTr("Relaxed") } - Item { width: parent.width * 0.5; height: 50 + width: parent.width - (styler.themePaddingMedium * 2) + LabelPL {text: qsTr("Relaxed")} + Item { + width: parent.width * 0.5 + height: 50 Rectangle { color: "grey"; width: parent.width * (relaxed / total) ; height: parent.height } - LabelPL { text: Math.floor((relaxed / total) * 100) + "%"; anchors.centerIn: parent} + LabelPL { text: Math.round((relaxed / total) * 100) + "%"; anchors.centerIn: parent} } - LabelPL { text: qsTr("Light") } - Item { width: parent.width * 0.5; height: 50 + LabelPL {text: qsTr("≤ %1 BPM".arg(Math.round(maxHR()*0.5)))} + + LabelPL {text: qsTr("Light")} + Item { + width: parent.width * 0.5 + height: 50 Rectangle { color: "lightblue"; width: parent.width * (light / total) ; height: parent.height } - LabelPL { text: Math.floor((light / total) * 100) + "%"; anchors.centerIn: parent} + LabelPL { text: Math.round((light / total) * 100) + "%"; anchors.centerIn: parent} } - LabelPL { text: qsTr("Intensive")} - Item { width: parent.width * 0.5; height: 50 + LabelPL {text: qsTr("≤ %1 BPM".arg(Math.round(maxHR()*0.6)))} + + LabelPL {text: qsTr("Intensive")} + Item { + width: parent.width * 0.5 + height: 50 Rectangle { color: "green"; width: parent.width * (intensive / total) ; height: parent.height } - LabelPL { text: Math.floor((intensive / total) * 100) + "%"; anchors.centerIn: parent} + LabelPL { text: Math.round((intensive / total) * 100) + "%"; anchors.centerIn: parent} } - LabelPL { text: qsTr("Aerobic")} - Item { width: parent.width * 0.5; height: 50 + LabelPL {text: qsTr("≤ %1 BPM".arg(Math.round(maxHR()*0.7)))} + + LabelPL {text: qsTr("Aerobic")} + Item { + width: parent.width * 0.5 + height: 50 Rectangle { color: "yellow"; width: parent.width * (aerobic / total) ; height: parent.height } - LabelPL { text: Math.floor((aerobic / total) * 100) + "%"; anchors.centerIn: parent} + LabelPL { text: Math.round((aerobic / total) * 100) + "%"; anchors.centerIn: parent} } + LabelPL {text: qsTr("≤ %1 BPM".arg(Math.round(maxHR()*0.8)))} - LabelPL { text: qsTr("Anerobic")} - Item { width: parent.width * 0.5; height: 50 + LabelPL {text: qsTr("Anerobic")} + Item { + width: parent.width * 0.5 + height: 50 Rectangle { color: "orange"; width: parent.width * (anerobic / total) ; height: parent.height } - LabelPL { text: Math.floor((anerobic / total) * 100) + "%"; anchors.centerIn: parent} + LabelPL { text: Math.round((anerobic / total) * 100) + "%"; anchors.centerIn: parent} } + LabelPL {text: qsTr("≤ %1 BPM".arg(Math.round(maxHR()*0.9)))} - LabelPL { text: qsTr("VO2 Max") } - Item { width: parent.width * 0.5; height: 50 + LabelPL {text: qsTr("VO2 Max")} + Item { + width: parent.width * 0.5 + height: 50 Rectangle { color: "red"; width: parent.width * (vo2max / total) ; height: parent.height } - LabelPL { text: Math.floor((vo2max / total) * 100) + "%"; anchors.centerIn: parent} + LabelPL { text: Math.round((vo2max / total) * 100) + "%"; anchors.centerIn: parent} } + LabelPL {text: qsTr("≤ %1 BPM".arg(Math.round(maxHR())))} } } - function updateGraphs() { graphHR.updateGraph(day); calculateZones(); @@ -179,33 +199,23 @@ PagePL { function maxHR() { var dob = AmazfishConfig.profileDOB; + var gender = AmazfishConfig.profileGender; var diff_ms = Date.now() - dob.getTime(); var age_dt = new Date(diff_ms); var age = Math.abs(age_dt.getUTCFullYear() - 1970); - var max_hr = 200; - - if (age >= 70) { - max_hr = 150; - } else if (age >= 65) { - max_hr = 155; - } else if (age >= 60) { - max_hr = 160; - } else if (age >= 55) { - max_hr = 165; - } else if (age >= 50) { - max_hr = 170; - } else if (age >= 45) { - max_hr = 175; - } else if (age >= 40) { - max_hr = 180; - } else if (age >= 35) { - max_hr = 185; - } else if (age >= 30) { - max_hr = 190; - } else if (age >= 25) { - max_hr = 195; + var max_hr; + + // if no age is provided, use an average age + // this is to avoid providing too height values which may be a health risk + if (!age) { + age = 50 + } + // max HR calculated with Wingate formula as the most recent evaluation with a large test group + // for details see https://en.wikipedia.org/wiki/Heart_rate#Maximum_heart_rate + if (gender = 1) { // 1=male + max_hr = 208.609-(0.716*age) } else { - max_hr = 200; + max_hr = 209.273-(0.804*age) } console.log("Age is", age, "max hr is", max_hr); diff --git a/ui/qml/pages/StepsPage.qml b/ui/qml/pages/StepsPage.qml index 443158eb..e39c279a 100644 --- a/ui/qml/pages/StepsPage.qml +++ b/ui/qml/pages/StepsPage.qml @@ -25,7 +25,7 @@ PagePL { font.pixelSize: styler.themeFontSizeExtraLarge * 3 anchors.horizontalCenter: parent.horizontalCenter width: parent.width - text: _InfoSteps > 0 ? _InfoSteps : graphStepSummary.lastValue + text: _InfoSteps > 0 ? _InfoSteps.toLocaleString() : graphStepSummary.lastValue.toLocaleString() horizontalAlignment: Text.AlignHCenter } @@ -50,7 +50,7 @@ PagePL { graphHeight: 300 axisX.mask: "MM/dd" - axisY.units: "Steps" + axisY.units: qsTr("Steps") type: DataSource.StepSummary graphType: 2 diff --git a/ui/translations/harbour-amazfish-ui-cs.ts b/ui/translations/harbour-amazfish-ui-cs.ts index 2d9f6cb4..d1371dab 100644 --- a/ui/translations/harbour-amazfish-ui-cs.ts +++ b/ui/translations/harbour-amazfish-ui-cs.ts @@ -61,6 +61,10 @@ Intensity Intensita + + BPM + TEP/MIN + AuthKeyDialog @@ -88,11 +92,11 @@ Download File - Stáhnout soubor + Stáhnout soubor Select a file to download. - Vybrat soubor ke stažení. + Vybrat soubor ke stažení. None @@ -110,6 +114,14 @@ File not supported on this device Soubor není podporavný na tomto zařízení + + Install File + Nainstalovat soubor + + + Select a file to install. + Vybrat soubor k instalaci. + DaemonInterface @@ -268,7 +280,7 @@ Download File - Stáhnout soubor + Stáhnout soubor Data Graphs @@ -298,6 +310,10 @@ Enable on boot Povolit při startu + + Install File + Nainstalovat soubor + GraphData @@ -938,11 +954,11 @@ %1 hrs - %1 hodin + %1 hodin Deep %1 hrs - Hluboký spánek %1 hodin + Hluboký spánek %1 hodin Sleep Summary @@ -957,6 +973,18 @@ Hours Hodin + + Total %1 + Celkem %1 + + + Light %1 + Lehký %1 + + + Deep %1 + Hluboký %1 + SportPage diff --git a/ui/translations/harbour-amazfish-ui-de.ts b/ui/translations/harbour-amazfish-ui-de.ts index 01ddec36..b69b16f9 100644 --- a/ui/translations/harbour-amazfish-ui-de.ts +++ b/ui/translations/harbour-amazfish-ui-de.ts @@ -61,6 +61,10 @@ Intensity Intensität + + BPM + BPM + AuthKeyDialog @@ -88,11 +92,11 @@ Download File - Datei herunterladen + Datei herunterladen Select a file to download. - Wähle eine Datei zum herunterladen aus. + Wähle eine Datei zum herunterladen aus. None @@ -110,6 +114,14 @@ File not supported on this device Datei für dieses Gerät nicht unterstützt + + Install File + + + + Select a file to install. + + DaemonInterface @@ -256,7 +268,7 @@ Download File - Datei herunterladen + Datei herunterladen Settings @@ -298,6 +310,10 @@ Enable on boot Beim Booten aktivieren + + Install File + + GraphData @@ -951,11 +967,23 @@ %1 hrs - %1 Std + %1 Std Deep %1 hrs - Tiefe %1 Std + Tiefe %1 Std + + + Total %1 + + + + Light %1 + + + + Deep %1 + diff --git a/ui/translations/harbour-amazfish-ui-es.ts b/ui/translations/harbour-amazfish-ui-es.ts index edfe6a69..2f314e56 100644 --- a/ui/translations/harbour-amazfish-ui-es.ts +++ b/ui/translations/harbour-amazfish-ui-es.ts @@ -61,6 +61,10 @@ Intensity Intensidad + + BPM + BPM + AuthKeyDialog @@ -88,11 +92,11 @@ Download File - Enviar archivo + Enviar archivo Select a file to download. - Selecciona archivo para enviar. + Selecciona archivo para enviar. None @@ -110,6 +114,14 @@ File not supported on this device Archivo no soportado en este dispositivo + + Install File + Archivo de instalación + + + Select a file to install. + Seleccione un archivo para instalar. + DaemonInterface @@ -256,7 +268,7 @@ Download File - Enviar archivo + Enviar archivo Settings @@ -298,6 +310,10 @@ Enable on boot Activar al arrancar + + Install File + Archivo de instalación + GraphData @@ -951,11 +967,23 @@ %1 hrs - %1 hrs. + %1 hrs. Deep %1 hrs - Profundo %1 hrs + Profundo %1 hrs + + + Total %1 + Total %1 + + + Light %1 + Ligero %1 + + + Deep %1 + Profundo %1 diff --git a/ui/translations/harbour-amazfish-ui-fa.ts b/ui/translations/harbour-amazfish-ui-fa.ts new file mode 100644 index 00000000..f3457d61 --- /dev/null +++ b/ui/translations/harbour-amazfish-ui-fa.ts @@ -0,0 +1,1263 @@ + + + + + AddCityPage + + Set Location + + + + + Alarm + + Enabled + + + + Mon + + + + Tue + + + + Wed + + + + Thu + + + + Fri + + + + Sat + + + + Sun + + + + + AnalysisPage + + Analysis + + + + Heartrate + + + + Steps + + + + Intensity + + + + BPM + + + + + AuthKeyDialog + + Enter auth key + + + + + BatteryPage + + Battery + + + + %1 % + + + + + BipFirmwarePage + + Send file + + + + None + + + + Choose File + + + + File type/version: + + + + File not supported on this device + + + + Install File + + + + Select a file to install. + + + + + DaemonInterface + + Unexpected error + + + + + DebugInfo + + Refresh + + + + Address: + + + + Serial No: + + + + Hardware Rev: + + + + Software Rev: + + + + Connection State: + + + + GPS Ver: + + + + Test Notification + + + + Test Email + + + + Test Call + + + + Fetch debug log + + + + Test Popup + + + + Debugging + + + + Information + + + + Model: + + + + Firmware Rev: + + + + Manufacturer: + + + + A: + + + + S: + + + + Function Tests + + + + Send Weather + + + + Update Calendar + + + + Music Control + + + + Request Screenshot + + + + Somebody + + + + Title + + + + Hello from Sailfish OS. This is a long message sent over BLE! + + + + Donald Duck + + + + Hello, this is an email from Sailfish OS! + + + + Test Immediate Alert Service + + + + + DownloadDataMenuItem + + Download Data + + + + + FirstPage + + Pair with watch + + + + Settings + + + + Disconnect from watch + + + + Connect to watch + + + + Data Graphs + + + + %1% + + + + Steps + + + + Heartrate + + + + %1 bpm + + + + Service + + + + Enable on boot + + + + Install File + + + + + GraphData + + No data + + + + + HeartratePage + + Heartrate + + + + %1 bpm + + + + BPM + + + + Relaxed + + + + Light + + + + Intensive + + + + Aerobic + + + + Anerobic + + + + VO2 Max + + + + + JSTools + + Empty + + + + Heartrate + + + + Pace + + + + Speed + + + + Altitude + + + + Distance + + + + Pause + + + + Duration + + + + + PairPage + + Pair Device + + + + No devices found + + + + Stop scanning + + + + Scan for devices + + + + Scanning for devices… + + + + Pairing… + + + + Bluetooth adapter is not available + + + + + PairSelectDeviceType + + Select Device Type + + + + + QObject + + %1s + + + + %1m %2s + + + + %1h %2m %3s + + + + + Settings-alarms + + Alarms + + + + Save Settings + + + + Alarm 1 + + + + Alarm 2 + + + + Alarm 3 + + + + Alarm 4 + + + + Alarm 5 + + + + + Settings-app + + Notify on connect + + + + Save Settings + + + + Sync activity data each hour + + + + Application Settings + + + + BT Adapter + + + + Notifications + + + + Low battery notification + + + + Navigation notifications + + + + Simulate event reminder support + + + + Refresh rates + + + + Refresh weather every (%1) minutes + + + + Refresh calendar every (%1) minutes + + + + Amazfish Service + + + + Start service on boot + + + + Start/Stop the Amazfish Background Service + + + + Start + + + + Stop + + + + Button Actions + + + + Transliterate notifications + + + + + Settings-button-action + + Button Actions + + + + Double Press Action + + + + Triple Press Action + + + + Quad Press Action + + + + Save Settings + + + + No Action + + + + Next Track + + + + Previous Track + + + + Volume Up + + + + Volume Down + + + + Custom Script + + + + + Settings-device + + Device Settings + + + + en_US + + + + es_ES + + + + zh_CN + + + + zh_TW + + + + Date Display + + + + Time + + + + Date/Time + + + + Time Format + + + + 12hr + + + + 24hr + + + + Save Settings + + + + Distance Unit + + + + Metric + + + + Imperial + + + + ru_RU + + + + Language + + + + de_DE + + + + it_IT + + + + fr_FR + + + + tr_TR + + + + nl_NL + + + + Disconnect Notification + + + + Huami Display Items + + + + Realtime HRM measurement + + + + + Settings-huami-shortcuts + + Huami Display Items + + + + Save Settings + + + + Status + + + + Heartrate + + + + Workout + + + + Weather + + + + Notifications + + + + More + + + + Do Not Disturb + + + + Alarms + + + + Music + + + + Time + + + + Mute Phone + + + + Settings + + + + Activity + + + + Event Reminder + + + + PAI + + + + World Clock + + + + Stress + + + + Period + + + + SPO2 + + + + Alexa + + + + Compass + + + + AliPay + + + + Timer + + + + + Settings-menu + + Settings Menu + + + + User Settings + + + + Device Settings + + + + Application Settings + + + + Alarms + + + + Donate + + + + Weather + + + + Strava + + + + Debug Info + + + + + Settings-profile + + Profile Settings + + + + Name: + + + + Birthday + + + + Gender + + + + Male + + + + Female + + + + Height (cm): + + + + Weight (kg): + + + + Wear Location + + + + Left + + + + Right + + + + Display on lift wrist + + + + Goal (steps): + + + + Alert on fitness goal + + + + Use HRM for Sleep Detection + + + + All day HRM interval (minutes): + + + + Save Profile + + + + Personal data + + + + Personal preferences + + + + Heartrate usage + + + + Off + + + + On + + + + Schedule + + + + + SleepPage + + Sleep Summary + + + + Sleep + + + + MM/dd + Format for day on the sleep summary graph + + + + Hours + + + + Total %1 + + + + Light %1 + + + + Deep %1 + + + + + SportPage + + Send to Strava + + + + Data: + + + + Steps + + + + Active Seconds + + + + Calories + + + + Distance + + + + Ascent + + + + Descent + + + + Max Altitude + + + + Min Altitude + + + + Min Pace + + + + Max Pace + + + + Average HR + + + + Average Pace + + + + Average Stride + + + + Max HR + + + + Time Ascending + + + + Time Descending + + + + Time Flat + + + + Average Stroke + + + + Average Stroke/s + + + + Average Lap Pace + + + + Strokes + + + + SWOLF Index + + + + Swim Style + + + + Laps + + + + Max Latitude + + + + Min Latitude + + + + Max Longitude + + + + Min Longitude + + + + Max Speed + + + + Total Stride + + + + steps + + + + seconds + + + + kcal + + + + meters + + + + seconds/m + + + + bpm + + + + seconds/km + + + + cm + + + + strokes/s + + + + strokes + + + + swolf + + + + + SportsSummaryPage + + Sports Activities + + + + Download Next Activity + + + + Remove + + + + + StepsPage + + Steps + + + + + StravaSettingsPage + + Strava settings + + + + Logout + + + + Login + + + + User Name: + + + + Country: + + + + not logged in + + + + + StravaUploadPage + + Strava Upload + + + + Activity name for Strava + + + + Name + + + + Description + + + + Activity description for Strava + + + + Type (Strava) + + + + Private + + + + Commute + + + + Upload + + + + Uploading data... + + + + Checking upload... + + + + TCX uploaded... + + + + Activity upload complete + + + + An unknown error occurred + + + + + UnpairDeviceDialog + + Unpair + + + + Before proceeding you need to unpair your current device. + + + + diff --git a/ui/translations/harbour-amazfish-ui-fr.ts b/ui/translations/harbour-amazfish-ui-fr.ts index e2d5550a..708c1083 100644 --- a/ui/translations/harbour-amazfish-ui-fr.ts +++ b/ui/translations/harbour-amazfish-ui-fr.ts @@ -61,6 +61,10 @@ Intensity Intensité + + BPM + + AuthKeyDialog @@ -88,11 +92,11 @@ Download File - Télécharger un fichier + Télécharger un fichier Select a file to download. - Sélectionner un fichier à télécharger. + Sélectionner un fichier à télécharger. None @@ -110,6 +114,14 @@ File not supported on this device Fichier non supporté sur cet appareil + + Install File + + + + Select a file to install. + + DaemonInterface @@ -256,7 +268,7 @@ Download File - Télécharger fichier + Télécharger fichier Settings @@ -298,6 +310,10 @@ Enable on boot + + Install File + + GraphData @@ -941,20 +957,24 @@ Sommeil - %1 hrs + MM/dd + Format for day on the sleep summary graph - Deep %1 hrs + Hours - MM/dd - Format for day on the sleep summary graph + Total %1 - Hours + Light %1 + + + + Deep %1 diff --git a/ui/translations/harbour-amazfish-ui-nb_NO.ts b/ui/translations/harbour-amazfish-ui-nb_NO.ts index c1c818c6..9d529584 100644 --- a/ui/translations/harbour-amazfish-ui-nb_NO.ts +++ b/ui/translations/harbour-amazfish-ui-nb_NO.ts @@ -55,12 +55,16 @@ Steps - + Skritt Intensity + + BPM + + AuthKeyDialog @@ -88,11 +92,11 @@ Download File - Last ned fil + Last ned fil Select a file to download. - Velg fil å laste ned + Velg fil å laste ned None @@ -110,6 +114,14 @@ File not supported on this device + + Install File + + + + Select a file to install. + + DaemonInterface @@ -256,7 +268,7 @@ Download File - Last ned fil + Last ned fil Settings @@ -298,6 +310,10 @@ Enable on boot + + Install File + + GraphData @@ -422,7 +438,7 @@ QObject %1s - + %1% {1s?} %1m %2s @@ -437,7 +453,7 @@ Settings-alarms Alarms - + Alarmer Save Settings @@ -547,7 +563,7 @@ Settings-button-action Button Actions - + Knappehandlinger Double Press Action @@ -563,7 +579,7 @@ Save Settings - + Lagre innstillinger No Action @@ -941,21 +957,25 @@ - %1 hrs + MM/dd + Format for day on the sleep summary graph - Deep %1 hrs + Hours + Timer + + + Total %1 - MM/dd - Format for day on the sleep summary graph + Light %1 - Hours - Timer + Deep %1 + diff --git a/ui/translations/harbour-amazfish-ui-nl.ts b/ui/translations/harbour-amazfish-ui-nl.ts index 67ac1536..60335049 100644 --- a/ui/translations/harbour-amazfish-ui-nl.ts +++ b/ui/translations/harbour-amazfish-ui-nl.ts @@ -61,6 +61,10 @@ Intensity Intensiteit + + BPM + BPM + AuthKeyDialog @@ -88,11 +92,11 @@ Download File - Download bestand + Download bestand Select a file to download. - Selecteer een bestand om te downloaden. + Selecteer een bestand om te downloaden. None @@ -110,6 +114,14 @@ File not supported on this device Bestand niet ondersteund op dit apparaat + + Install File + + + + Select a file to install. + + DaemonInterface @@ -256,7 +268,7 @@ Download File - Download bestand + Download bestand Settings @@ -298,6 +310,10 @@ Enable on boot Inschakelen bij opstarten + + Install File + + GraphData @@ -942,11 +958,11 @@ %1 hrs - %1 uur + %1 uur Deep %1 hrs - Diep %1 uur + Diep %1 uur MM/dd @@ -957,6 +973,18 @@ Hours Uur + + Total %1 + + + + Light %1 + + + + Deep %1 + + SportPage diff --git a/ui/translations/harbour-amazfish-ui-pl.ts b/ui/translations/harbour-amazfish-ui-pl.ts index 6140b246..2167ec23 100644 --- a/ui/translations/harbour-amazfish-ui-pl.ts +++ b/ui/translations/harbour-amazfish-ui-pl.ts @@ -61,6 +61,10 @@ Intensity Intensywność + + BPM + + AuthKeyDialog @@ -88,11 +92,11 @@ Download File - Pobież plik + Pobież plik Select a file to download. - Wybierz plik do pobrania + Wybierz plik do pobrania None @@ -110,6 +114,14 @@ File not supported on this device + + Install File + + + + Select a file to install. + + DaemonInterface @@ -256,7 +268,7 @@ Download File - Pobierz plik + Pobierz plik Settings @@ -298,6 +310,10 @@ Enable on boot + + Install File + + GraphData @@ -941,20 +957,24 @@ Sen - %1 hrs + MM/dd + Format for day on the sleep summary graph - Deep %1 hrs + Hours - MM/dd - Format for day on the sleep summary graph + Total %1 - Hours + Light %1 + + + + Deep %1 diff --git a/ui/translations/harbour-amazfish-ui-ru.ts b/ui/translations/harbour-amazfish-ui-ru.ts index e81954ca..8742ce6a 100644 --- a/ui/translations/harbour-amazfish-ui-ru.ts +++ b/ui/translations/harbour-amazfish-ui-ru.ts @@ -61,6 +61,10 @@ Intensity Нагрузка + + BPM + + AuthKeyDialog @@ -88,11 +92,11 @@ Download File - Загрузка файлов + Загрузка файлов Select a file to download. - Выберите файл для загрузки + Выберите файл для загрузки None @@ -110,6 +114,14 @@ File not supported on this device + + Install File + + + + Select a file to install. + + DaemonInterface @@ -256,7 +268,7 @@ Download File - Загрузка файлов + Загрузка файлов Settings @@ -298,6 +310,10 @@ Enable on boot + + Install File + + GraphData @@ -950,11 +966,15 @@ - %1 hrs + Total %1 + + + + Light %1 - Deep %1 hrs + Deep %1 diff --git a/ui/translations/harbour-amazfish-ui-sv.ts b/ui/translations/harbour-amazfish-ui-sv.ts index f4c7a881..cceb3641 100644 --- a/ui/translations/harbour-amazfish-ui-sv.ts +++ b/ui/translations/harbour-amazfish-ui-sv.ts @@ -61,6 +61,10 @@ Intensity Intensitet + + BPM + BPM + AuthKeyDialog @@ -88,11 +92,11 @@ Download File - Ladda ner fil + Ladda ner fil Select a file to download. - Välj en fil att ladda ner. + Välj en fil att ladda ner. None @@ -110,6 +114,14 @@ File not supported on this device Filformatet stöds inte på denna enhet + + Install File + + + + Select a file to install. + + DaemonInterface @@ -256,7 +268,7 @@ Download File - Ladda ner fil + Ladda ner fil Settings @@ -298,6 +310,10 @@ Enable on boot Aktivera vid systemstart + + Install File + + GraphData @@ -951,11 +967,23 @@ %1 hrs - %1 tim + %1 tim Deep %1 hrs - Djup %1 tim + Djup %1 tim + + + Total %1 + + + + Light %1 + + + + Deep %1 + diff --git a/ui/translations/harbour-amazfish-ui-zh_CN.ts b/ui/translations/harbour-amazfish-ui-zh_CN.ts index 180f6f2d..a2e71485 100644 --- a/ui/translations/harbour-amazfish-ui-zh_CN.ts +++ b/ui/translations/harbour-amazfish-ui-zh_CN.ts @@ -64,8 +64,14 @@ Heartrate 心率 + + + BPM + + + Steps 步数 @@ -106,14 +112,22 @@ - Download File - 下载文件 + 下载文件 - Select a file to download. - 选择要下载的文件。 + 选择要下载的文件。 + + + + Install File + + + + + Select a file to install. + @@ -321,9 +335,13 @@ 配对手表 - Download File - 下载文件 + 下载文件 + + + + Install File + @@ -346,32 +364,32 @@ 连接到手表 - + %1% - + Steps 步数 - + Heartrate 心率 - + %1 bpm - + Service - + Enable on boot @@ -398,6 +416,7 @@ + BPM @@ -407,27 +426,27 @@ - + Light - + Intensive - + Aerobic - + Anerobic - + VO2 Max @@ -593,27 +612,27 @@ Settings-app - + Notifications 通知 - + Notify on connect 连接时通知 - + Refresh rates 刷新频率 - + Sync activity data each hour 每小时同步活动数据 - + Low battery notification 低电量通知 @@ -628,62 +647,62 @@ - + Navigation notifications - + Transliterate notifications - + Simulate event reminder support - + Refresh weather every (%1) minutes - + Refresh calendar every (%1) minutes - + Amazfish Service - + Start service on boot 启动时开启服务 - + Start/Stop the Amazfish Background Service 开启/停止 Amazfish 后台服务 - + Start 开启 - + Stop 停止 - + Button Actions - + Save Settings 保存设置 @@ -1182,27 +1201,32 @@ - %1 hrs + Total %1 - Deep %1 hrs + Light %1 + + + + + Deep %1 - + MM/dd Format for day on the sleep summary graph - + Hours - + Sleep Summary 睡眠摘要 @@ -1215,213 +1239,213 @@ - + Data: - + Steps 步数 - + Active Seconds - + Calories - + Distance - + Ascent - + Descent - + Max Altitude - + Min Altitude - + Min Pace - + Max Pace - + Average HR - + Average Pace - + Average Stride - + Max HR - + Time Ascending - + Time Descending - + Time Flat - + Average Stroke - + Average Stroke/s - + Average Lap Pace - + Strokes - + SWOLF Index - + Swim Style - + Laps - + Max Latitude - + Min Latitude - + Max Longitude - + Min Longitude - + Max Speed - + Total Stride - + steps - + seconds - + kcal - + meters - + seconds/m - + bpm - + seconds/km - + cm - + strokes/s - + strokes - - + + swolf @@ -1449,6 +1473,7 @@ + Steps 步数 diff --git a/ui/translations/harbour-amazfish-ui.ts b/ui/translations/harbour-amazfish-ui.ts index 27b56f73..e40be225 100644 --- a/ui/translations/harbour-amazfish-ui.ts +++ b/ui/translations/harbour-amazfish-ui.ts @@ -61,6 +61,10 @@ Intensity + + BPM + + AuthKeyDialog @@ -87,27 +91,27 @@ - Download File + None - Select a file to download. + Choose File - None + File type/version: - Choose File + File not supported on this device - File type/version: + Install File - File not supported on this device + Select a file to install. @@ -254,10 +258,6 @@ Pair with watch - - Download File - - Settings @@ -298,6 +298,10 @@ Enable on boot + + Install File + + GraphData @@ -941,20 +945,24 @@ - %1 hrs + MM/dd + Format for day on the sleep summary graph - Deep %1 hrs + Hours - MM/dd - Format for day on the sleep summary graph + Total %1 - Hours + Light %1 + + + + Deep %1