← Back to team overview

ubuntu-touch-coreapps-reviewers team mailing list archive

[Merge] lp:~nik90/ubuntu-weather-app/fix-ota10-sdk-issues into lp:ubuntu-weather-app

 

Nekhelesh Ramananthan has proposed merging lp:~nik90/ubuntu-weather-app/fix-ota10-sdk-issues into lp:ubuntu-weather-app.

Commit message:
- Migrated Settings Page (and its child settings pages) to ListItemLayouts and PageHeader which fixes lot of the colouring issues. Also, in UC 1.3, the page.head, page.title and page.flickable is deprecated.

- Updated framework to ubuntu-sdk-15.04.3-qml

Requested reviews:
  Ubuntu Weather Developers (ubuntu-weather-dev)
Related bugs:
  Bug #1550507 in Ubuntu Weather App: "Potential weather app updates needed due to a change in theming/UI toolkit in OTA10"
  https://bugs.launchpad.net/ubuntu-weather-app/+bug/1550507

For more details, see:
https://code.launchpad.net/~nik90/ubuntu-weather-app/fix-ota10-sdk-issues/+merge/287421

- Migrated Settings Page (and its child settings pages) to ListItemLayouts and PageHeader which fixes lot of the colouring issues. Also, in UC 1.3, the page.head, page.title and page.flickable is deprecated.

- Updated framework to ubuntu-sdk-15.04.3-qml
-- 
Your team Ubuntu Weather Developers is requested to review the proposed merge of lp:~nik90/ubuntu-weather-app/fix-ota10-sdk-issues into lp:ubuntu-weather-app.
=== modified file 'app/components/ExpandableListItem.qml'
--- app/components/ExpandableListItem.qml	2015-11-02 21:28:34 +0000
+++ app/components/ExpandableListItem.qml	2016-02-28 22:59:00 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Canonical Ltd
+ * Copyright (C) 2015-2016 Canonical Ltd
  *
  * This file is part of Ubuntu Weather App
  *
@@ -18,31 +18,27 @@
 
 import QtQuick 2.4
 import Ubuntu.Components 1.3
-import Ubuntu.Components.ListItems 1.0 as ListItem
 
 /*
  Component which extends the SDK Expandable list item and provides a easy
- to use component where the title, subtitle and listview can be displayed. It
+ to use component where the title, subtitle and a listview can be displayed. It
  matches the design specification provided for clock.
 */
 
-ListItem.Expandable {
+ListItem {
     id: expandableListItem
 
+    // Public APIs
     property ListModel model
     property Component delegate
-    property alias text: expandableHeader.text
-    property alias subText: expandableHeader.subText
+    property alias title: expandableHeader.title
+    property alias subText: expandableHeader.subtitle
     property alias listViewHeight: expandableList.height
 
-    anchors {
-        left: parent.left
-        right: parent.right
-        margins: units.gu(-2)
-    }
-
-    collapseOnClick: true
-    expandedHeight: contentColumn.height + units.gu(1)
+    highlightColor: "Transparent"
+    height: expandableHeader.height + divider.height
+    expansion.height: contentColumn.height
+    onClicked: expansion.expanded = !expansion.expanded
 
     Column {
         id: contentColumn
@@ -52,25 +48,21 @@
             right: parent.right
         }
 
-        Item {
-            width: parent.width
-            height: expandableListItem.collapsedHeight
-
-            ListItem.Subtitled {
+        ListItem {
+            height: expandableHeader.height + divider.height
+            ListItemLayout {
                 id: expandableHeader
-                onClicked: expandableListItem.expanded = true
 
                 Icon {
                     id: arrow
 
                     width: units.gu(2)
                     height: width
-                    anchors.right: parent.right
+                    SlotsLayout.position: SlotsLayout.Trailing
+                    SlotsLayout.overrideVerticalPositioning: true
                     anchors.verticalCenter: parent.verticalCenter
-
                     name: "go-down"
-                    color: "Grey"
-                    rotation: expandableListItem.expanded ? 180 : 0
+                    rotation: expandableListItem.expansion.expanded ? 180 : 0
 
                     Behavior on rotation {
                         UbuntuNumberAnimation {}
@@ -88,3 +80,4 @@
         }
     }
 }
+

=== modified file 'app/components/NoAPIKeyErrorStateComponent.qml'
--- app/components/NoAPIKeyErrorStateComponent.qml	2015-11-12 01:45:36 +0000
+++ app/components/NoAPIKeyErrorStateComponent.qml	2016-02-28 22:59:00 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Canonical Ltd
+ * Copyright (C) 2015-2016 Canonical Ltd
  *
  * This file is part of Ubuntu Weather App
  *
@@ -17,10 +17,9 @@
  */
 
 import QtQuick 2.4
-import Ubuntu.Components 1.5
+import Ubuntu.Components 1.3
 import "../components"
 
-
 Rectangle {
     color: "white"
     anchors.fill: parent

=== modified file 'app/components/StandardListItem.qml'
--- app/components/StandardListItem.qml	2015-11-02 21:28:34 +0000
+++ app/components/StandardListItem.qml	2016-02-28 22:59:00 +0000
@@ -17,32 +17,26 @@
  */
 
 import QtQuick 2.4
-import QtQuick.Layouts 1.1
 import Ubuntu.Components 1.3
 
 ListItem {
     id: listItem
 
-    property alias title: _title.text
-    property alias icon: _icon.name
-    property alias showIcon: _icon.visible
-
-    RowLayout {
-        anchors { left: parent.left; right: parent.right; verticalCenter: parent.verticalCenter; margins: units.gu(2) }
-        height: _icon.height
-        spacing: units.gu(2)
-        
-        Label {
-            id: _title
-            anchors.verticalCenter: _icon.verticalCenter
-            elide: Text.ElideRight
-            Layout.fillWidth: true
-        }
-        
+    property alias title: listitemlayout.title
+    property alias icon: _icon
+
+    height: listitemlayout.height + divider.height
+
+    ListItemLayout {
+        id: listitemlayout
+
+        title.text: ""
+
         Icon {
             id: _icon
             height: units.gu(2); width: height
             name: "go-next"
+            SlotsLayout.position: SlotsLayout.Last
         }
     }
 }

=== modified file 'app/ui/AddLocationPage.qml'
--- app/ui/AddLocationPage.qml	2015-11-02 21:28:34 +0000
+++ app/ui/AddLocationPage.qml	2016-02-28 22:59:00 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Canonical Ltd
+ * Copyright (C) 2015-2016 Canonical Ltd
  *
  * This file is part of Ubuntu Weather App
  *
@@ -26,65 +26,60 @@
 Page {
     id: addLocationPage
     objectName: "addLocationPage"
-    title: i18n.tr("Select a city")
+
     visible: false
 
-    /*
-      Flickable is set to null to stop page header from hiding since the fast
-      scroll component hides top anchor margin is incorrect.
-    */
-    flickable: null
-
     property bool searching: citiesModel.loading || searchTimer.running
 
-    state: "default"
-    states: [
-        PageHeadState {
-            name: "default"
-            head: addLocationPage.head
-            backAction: Action {
-                iconName: "back"
-                text: i18n.tr("Back")
-                onTriggered: mainPageStack.pop()
+    header: standardHeader
+
+    PageHeader {
+        id: standardHeader
+        title: i18n.tr("Select a city")
+        /*
+          Flickable is set to null to stop page header from hiding since the fast
+          scroll component hides top anchor margin is incorrect.
+        */
+        flickable: null
+        visible: addLocationPage.header === standardHeader
+        trailingActionBar.actions: [
+            Action {
+                iconName: "search"
+                objectName: "search"
+                text: i18n.tr("City")
+                onTriggered: {
+                    addLocationPage.header = searchHeader
+                    searchComponentLoader.sourceComponent = searchComponent
+                    searchComponentLoader.item.forceActiveFocus()
+                }
             }
-            actions: [
-                Action {
-                    iconName: "search"
-                    objectName: "search"
-                    text: i18n.tr("City")
-                    onTriggered: {
-                        addLocationPage.state = "search"
-                        searchComponentLoader.sourceComponent = searchComponent
-                        searchComponentLoader.item.forceActiveFocus()
-                    }
-                }
-            ]
-        },
+        ]
+    }
 
-        PageHeadState {
-            name: "search"
-            head: addLocationPage.head
-            backAction: Action {
+    PageHeader {
+        id: searchHeader
+        visible: addLocationPage.header === searchHeader
+        leadingActionBar.actions: [
+            Action {
                 iconName: "back"
                 text: i18n.tr("Back")
                 onTriggered: {
                     locationList.forceActiveFocus()
                     searchComponentLoader.item.text = ""
-                    addLocationPage.state = "default"
+                    addLocationPage.header = standardHeader
                     searchComponentLoader.sourceComponent = undefined
                 }
             }
-
-            contents: Loader {
-                id: searchComponentLoader
-                anchors {
-                    left: parent ? parent.left : undefined
-                    right: parent ? parent.right : undefined
-                    rightMargin: units.gu(2)
-                }
+        ]
+        contents: Loader {
+            id: searchComponentLoader
+            anchors {
+                left: parent ? parent.left : undefined
+                right: parent ? parent.right : undefined
+                verticalCenter: parent ? parent.verticalCenter : undefined
             }
         }
-    ]
+    }
 
     // Outside component so property can bind to for autopilot
     Timer {
@@ -181,9 +176,12 @@
     ListView {
         id: locationList
         anchors {
-            fill: parent
+            top: addLocationPage.header.bottom
+            topMargin: units.gu(2)
+            left: parent.left
+            right: parent.right
             rightMargin: fastScroll.showing ? fastScroll.width - units.gu(1) : 0
-            topMargin: units.gu(2)
+            bottom: parent.bottom
         }
 
         objectName: "locationList"
@@ -224,30 +222,14 @@
         delegate: ListItem {
             divider.visible: false
             objectName: "addLocation" + index
-            Column {
-                anchors {
-                    left: parent.left
-                    leftMargin: units.gu(2)
-                    right: parent.right
-                    rightMargin: units.gu(2)
-                    verticalCenter: parent.verticalCenter
-                }
-
-                Label {
-                    color: UbuntuColors.darkGrey
-                    elide: Text.ElideRight
-                    fontSize: "medium"
-                    text: name
-                    width: parent.width
-                }
-
-                Label {
-                    color: UbuntuColors.lightGrey
-                    elide: Text.ElideRight
-                    fontSize: "xx-small"
-                    text: areaLabel
-                    width: parent.width
-                }
+
+            height: listDelegateLayout.height
+
+            ListItemLayout {
+                id: listDelegateLayout
+                title.text: name
+                subtitle.text: areaLabel
+                subtitle.textSize: Label.Small
             }
 
             onClicked: {

=== modified file 'app/ui/HomePage.qml'
--- app/ui/HomePage.qml	2015-11-26 02:05:13 +0000
+++ app/ui/HomePage.qml	2016-02-28 22:59:00 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Canonical Ltd
+ * Copyright (C) 2015-2016 Canonical Ltd
  *
  * This file is part of Ubuntu Weather App
  *
@@ -85,8 +85,7 @@
     }
 
     // Do not show the Page Header
-    head {
-        locked: true
+    header: PageHeader {
         visible: false
     }
 

=== modified file 'app/ui/SettingsPage.qml'
--- app/ui/SettingsPage.qml	2015-11-02 21:28:34 +0000
+++ app/ui/SettingsPage.qml	2016-02-28 22:59:00 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Canonical Ltd
+ * Copyright (C) 2015-2016 Canonical Ltd
  *
  * This file is part of Ubuntu Weather App
  *
@@ -21,31 +21,53 @@
 import "../components"
 
 Page {
-    title: i18n.tr("Settings")
+    id: settingsPage
+
+    header: PageHeader {
+        title: i18n.tr("Settings")
+    }
+
     property bool bug1341671workaround: true
 
     Column {
         id: settingsColumn
 
-        anchors.fill: parent
+        anchors {
+            top: settingsPage.header.bottom
+            left: parent.left
+            right: parent.right
+            bottom: parent.bottom
+        }
 
-        StandardListItem {
-            title: i18n.tr("Units")
+        ListItem {
+            ListItemLayout {
+                title.text: i18n.tr("Units")
+                ProgressionSlot{}
+            }
             onClicked: mainPageStack.push(Qt.resolvedUrl("settings/UnitsPage.qml"))
         }
 
-        StandardListItem {
-            title: i18n.tr("Data Provider")
+        ListItem {
+            ListItemLayout {
+                title.text: i18n.tr("Data Provider")
+                ProgressionSlot{}
+            }
             onClicked: mainPageStack.push(Qt.resolvedUrl("settings/DataProviderPage.qml"))
         }
 
-        StandardListItem {
-            title: i18n.tr("Refresh Interval")
+        ListItem {
+            ListItemLayout {
+                title.text: i18n.tr("Refresh Interval")
+                ProgressionSlot{}
+            }
             onClicked: mainPageStack.push(Qt.resolvedUrl("settings/RefreshIntervalPage.qml"))
         }
 
-        StandardListItem {
-            title: i18n.tr("Location")
+        ListItem {
+            ListItemLayout {
+                title.text: i18n.tr("Location")
+                ProgressionSlot{}
+            }
             onClicked: mainPageStack.push(Qt.resolvedUrl("settings/LocationPage.qml"))
         }
     }

=== modified file 'app/ui/settings/DataProviderPage.qml'
--- app/ui/settings/DataProviderPage.qml	2015-11-02 21:28:34 +0000
+++ app/ui/settings/DataProviderPage.qml	2016-02-28 22:59:00 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Canonical Ltd
+ * Copyright (C) 2015-2016 Canonical Ltd
  *
  * This file is part of Ubuntu Weather App
  *
@@ -22,7 +22,11 @@
 import "../../data/keys.js" as Keys
 
 Page {
-    title: i18n.tr("Data Provider")
+    id: dataProviderPage
+
+    header: PageHeader {
+        title: i18n.tr("Data Provider")
+    }
 
     ListModel {
         id: dataProviderModel
@@ -32,15 +36,16 @@
     ExpandableListItem {
         id: dataProviderSetting
 
+        anchors.top: dataProviderPage.header.bottom
         listViewHeight: dataProviderModel.count*units.gu(7) - units.gu(1)
         model: dataProviderModel
-        text: i18n.tr("Provider")
-        subText: settings.service === "weatherchannel" ? "The Weather Channel" : "OpenWeatherMap"
+        title.text: i18n.tr("Provider")
+        subText.text: settings.service === "weatherchannel" ? "The Weather Channel" : "OpenWeatherMap"
 
         delegate: StandardListItem {
-            title: model.text
-            icon: "ok"
-            showIcon: dataProviderSetting.subText === model.text
+            title.text: model.text
+            icon.name: "ok"
+            icon.visible: dataProviderSetting.subText === model.text
             onClicked: {
                 if (model.text === "The Weather Channel") {
                     settings.service = "weatherchannel"

=== modified file 'app/ui/settings/LocationPage.qml'
--- app/ui/settings/LocationPage.qml	2015-11-02 21:28:34 +0000
+++ app/ui/settings/LocationPage.qml	2016-02-28 22:59:00 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Canonical Ltd
+ * Copyright (C) 2015-2016 Canonical Ltd
  *
  * This file is part of Ubuntu Weather App
  *
@@ -18,19 +18,28 @@
 
 import QtQuick 2.4
 import Ubuntu.Components 1.3
-import Ubuntu.Components.ListItems 1.0 as ListItem
 
 Page {
-    title: i18n.tr("Location")
-
-    ListItem.Standard {
-        control: CheckBox {
-            checked: settings.detectCurrentLocation
-
-            onCheckedChanged: settings.detectCurrentLocation = checked;
+    id: locationPage
+
+    header: PageHeader {
+        title: i18n.tr("Location")
+    }
+
+    ListItem {
+        anchors.top: locationPage.header.bottom
+        height: locationLayout.height + divider.height
+        ListItemLayout {
+            id: locationLayout
+            title.text: i18n.tr("Detect current location")
+            Switch {
+                id: locationSwitch
+                SlotsLayout.position: SlotsLayout.Last
+                checked: settings.detectCurrentLocation
+                onCheckedChanged: settings.detectCurrentLocation = checked;
+            }
         }
-        text: i18n.tr("Detect current location")
 
-        onClicked: control.checked = !control.checked
+        onClicked: locationSwitch.checked = !locationSwitch.checked
     }
 }

=== modified file 'app/ui/settings/RefreshIntervalPage.qml'
--- app/ui/settings/RefreshIntervalPage.qml	2015-11-02 21:28:34 +0000
+++ app/ui/settings/RefreshIntervalPage.qml	2016-02-28 22:59:00 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Canonical Ltd
+ * Copyright (C) 2015-2016 Canonical Ltd
  *
  * This file is part of Ubuntu Weather App
  *
@@ -21,7 +21,11 @@
 import "../../components"
 
 Page {
-    title: i18n.tr("Refresh Interval")
+    id: refreshIntervalPage
+
+    header: PageHeader {
+        title: i18n.tr("Refresh Interval")
+    }
 
     ListModel {
         id: refreshModel
@@ -37,15 +41,16 @@
     ExpandableListItem {
         id: dataProviderSetting
 
+        anchors.top: refreshIntervalPage.header.bottom
         listViewHeight: refreshModel.count*units.gu(7) - units.gu(1)
         model: refreshModel
-        text: i18n.tr("Interval")
-        subText: i18n.tr("%1 minute", "%1 minutes", Math.floor(settings.refreshInterval / 60).toString()).arg(Math.floor(settings.refreshInterval / 60).toString())
+        title.text: i18n.tr("Interval")
+        subText.text: i18n.tr("%1 minute", "%1 minutes", Math.floor(settings.refreshInterval / 60).toString()).arg(Math.floor(settings.refreshInterval / 60).toString())
 
         delegate: StandardListItem {
-            title: model.text
-            icon: "ok"
-            showIcon: settings.refreshInterval === model.interval
+            title.text: model.text
+            icon.name: "ok"
+            icon.visible: settings.refreshInterval === model.interval
             onClicked: {
                 settings.refreshInterval = model.interval
                 refreshData(false, true)

=== modified file 'app/ui/settings/UnitsPage.qml'
--- app/ui/settings/UnitsPage.qml	2015-11-02 21:28:34 +0000
+++ app/ui/settings/UnitsPage.qml	2016-02-28 22:59:00 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Canonical Ltd
+ * Copyright (C) 2015-2016 Canonical Ltd
  *
  * This file is part of Ubuntu Weather App
  *
@@ -21,12 +21,17 @@
 import "../../components"
 
 Page {
-    title: i18n.tr("Units")
+    id: unitsPage
+
     property bool bug1341671workaround: true
 
-    flickable: null
+    header: PageHeader {
+        title: i18n.tr("Units")
+        flickable: unitsFlickable
+    }
 
     Flickable {
+        id: unitsFlickable
         clip: true
         anchors.fill: parent
         height: parent.height
@@ -74,14 +79,14 @@
 
                 listViewHeight: temperatureModel.count*units.gu(7) - units.gu(1)
                 model: temperatureModel
-                text: i18n.tr("Temperature")
-                subText: settings.tempScale === "°C" ? i18n.tr("°C")
+                title.text: i18n.tr("Temperature")
+                subText.text: settings.tempScale === "°C" ? i18n.tr("°C")
                                                      : i18n.tr("°F")
 
                 delegate: StandardListItem {
-                    title: model.text
-                    icon: "ok"
-                    showIcon: settings.tempScale === model.value
+                    title.text: model.text
+                    icon.name: "ok"
+                    icon.visible: settings.tempScale === model.value
                     onClicked: {
                         settings.tempScale = model.value
                         refreshData(true)
@@ -95,14 +100,14 @@
 
                 listViewHeight: windSpeedModel.count*units.gu(7) - units.gu(1)
                 model: windSpeedModel
-                text: i18n.tr("Wind Speed")
-                subText: settings.windUnits === "kph" ? i18n.tr("kph")
+                title.text: i18n.tr("Wind Speed")
+                subText.text: settings.windUnits === "kph" ? i18n.tr("kph")
                                                       : i18n.tr("mph")
 
                 delegate: StandardListItem {
-                    title: model.text
-                    icon: "ok"
-                    showIcon: settings.windUnits === model.value
+                    title.text: model.text
+                    icon.name: "ok"
+                    icon.visible: settings.windUnits === model.value
                     onClicked: {
                         settings.windUnits = model.value
                         refreshData(true)

=== modified file 'debian/changelog'
--- debian/changelog	2016-01-29 23:07:11 +0000
+++ debian/changelog	2016-02-28 22:59:00 +0000
@@ -8,7 +8,13 @@
   * Added new READMEs
 
   [ Victor Thompson ]
-  * Change translatable string from "rain" to "precipitation" (LP:1521701)
+  * Change translatable string from "rain" to "precipitation" (LP: #1521701)
+
+  [ Nekhelesh Ramananthan ]
+  * Update frameworks to ubuntu-sdk-15.04.3-qml
+  * Migrate Settings Page (and child settings pages) to ListItemLayout
+    and PageLayout.
+  * Fix label color issues due to SDK Palette changed in OTA10 (LP: #1550507)
 
  -- Andrew Hayzen <ahayzen@xxxxxxxxx>  Thu, 03 Dec 2015 15:20:49 +0000
 

=== modified file 'manifest.json.in'
--- manifest.json.in	2015-12-03 15:22:45 +0000
+++ manifest.json.in	2016-02-28 22:59:00 +0000
@@ -1,7 +1,7 @@
 {
     "architecture": "all",
     "description": "A weather forecast application for Ubuntu with support for multiple online weather data sources",
-    "framework": "ubuntu-sdk-15.04.1-qml",
+    "framework": "ubuntu-sdk-15.04.3-qml",
     "hooks": {
         "weather": {
             "apparmor": "ubuntu-weather-app.apparmor",

=== modified file 'po/com.ubuntu.weather.pot'
--- po/com.ubuntu.weather.pot	2015-12-12 03:41:27 +0000
+++ po/com.ubuntu.weather.pot	2016-02-28 22:59:00 +0000
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: ubuntu-weather-app\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-12-11 21:39-0600\n"
+"POT-Creation-Date: 2016-02-29 04:21+0530\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@xxxxxx>\n"
@@ -104,35 +104,35 @@
 "to obtain your own Open Weather Map API key."
 msgstr ""
 
-#: ../app/ui/AddLocationPage.qml:29
+#: ../app/ui/AddLocationPage.qml:38
 msgid "Select a city"
 msgstr ""
 
-#: ../app/ui/AddLocationPage.qml:47 ../app/ui/AddLocationPage.qml:69
+#: ../app/ui/AddLocationPage.qml:49
+msgid "City"
+msgstr ""
+
+#: ../app/ui/AddLocationPage.qml:65
 msgid "Back"
 msgstr ""
 
-#: ../app/ui/AddLocationPage.qml:54
-msgid "City"
-msgstr ""
-
-#: ../app/ui/AddLocationPage.qml:113
+#: ../app/ui/AddLocationPage.qml:108
 msgid "Search city"
 msgstr ""
 
-#: ../app/ui/AddLocationPage.qml:299
+#: ../app/ui/AddLocationPage.qml:281
 msgid "No city found"
 msgstr ""
 
-#: ../app/ui/AddLocationPage.qml:312
+#: ../app/ui/AddLocationPage.qml:294
 msgid "Couldn't load weather data, please try later again!"
 msgstr ""
 
-#: ../app/ui/AddLocationPage.qml:322
+#: ../app/ui/AddLocationPage.qml:304
 msgid "Location already added."
 msgstr ""
 
-#: ../app/ui/AddLocationPage.qml:325
+#: ../app/ui/AddLocationPage.qml:307
 msgid "OK"
 msgstr ""
 
@@ -144,82 +144,82 @@
 msgid "Current Location"
 msgstr ""
 
-#: ../app/ui/SettingsPage.qml:24
+#: ../app/ui/SettingsPage.qml:27
 msgid "Settings"
 msgstr ""
 
-#: ../app/ui/SettingsPage.qml:33 ../app/ui/settings/UnitsPage.qml:24
+#: ../app/ui/SettingsPage.qml:44 ../app/ui/settings/UnitsPage.qml:29
 msgid "Units"
 msgstr ""
 
-#: ../app/ui/SettingsPage.qml:38 ../app/ui/settings/DataProviderPage.qml:25
+#: ../app/ui/SettingsPage.qml:52 ../app/ui/settings/DataProviderPage.qml:28
 msgid "Data Provider"
 msgstr ""
 
-#: ../app/ui/SettingsPage.qml:43 ../app/ui/settings/RefreshIntervalPage.qml:24
+#: ../app/ui/SettingsPage.qml:60 ../app/ui/settings/RefreshIntervalPage.qml:27
 msgid "Refresh Interval"
 msgstr ""
 
-#: ../app/ui/SettingsPage.qml:48 ../app/ui/settings/LocationPage.qml:24
+#: ../app/ui/SettingsPage.qml:68 ../app/ui/settings/LocationPage.qml:26
 msgid "Location"
 msgstr ""
 
-#: ../app/ui/settings/DataProviderPage.qml:37
+#: ../app/ui/settings/DataProviderPage.qml:42
 msgid "Provider"
 msgstr ""
 
-#: ../app/ui/settings/LocationPage.qml:32
+#: ../app/ui/settings/LocationPage.qml:34
 msgid "Detect current location"
 msgstr ""
 
-#: ../app/ui/settings/RefreshIntervalPage.qml:30
-#: ../app/ui/settings/RefreshIntervalPage.qml:31
-#: ../app/ui/settings/RefreshIntervalPage.qml:32
-#: ../app/ui/settings/RefreshIntervalPage.qml:33
-#: ../app/ui/settings/RefreshIntervalPage.qml:43
+#: ../app/ui/settings/RefreshIntervalPage.qml:34
+#: ../app/ui/settings/RefreshIntervalPage.qml:35
+#: ../app/ui/settings/RefreshIntervalPage.qml:36
+#: ../app/ui/settings/RefreshIntervalPage.qml:37
+#: ../app/ui/settings/RefreshIntervalPage.qml:48
 #, qt-format
 msgid "%1 minute"
 msgid_plural "%1 minutes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../app/ui/settings/RefreshIntervalPage.qml:42
+#: ../app/ui/settings/RefreshIntervalPage.qml:47
 msgid "Interval"
 msgstr ""
 
 #. TRANSLATORS: The strings are standard measurement units
 #. of temperature in Celcius and are shown in the settings page.
 #. Only the abbreviated form of Celcius should be used.
-#: ../app/ui/settings/UnitsPage.qml:42 ../app/ui/settings/UnitsPage.qml:78
+#: ../app/ui/settings/UnitsPage.qml:47 ../app/ui/settings/UnitsPage.qml:83
 msgid "°C"
 msgstr ""
 
 #. TRANSLATORS: The strings are standard measurement units
 #. of temperature in Fahrenheit and are shown in the settings page.
 #. Only the abbreviated form of Fahrenheit should be used.
-#: ../app/ui/settings/UnitsPage.qml:47 ../app/ui/settings/UnitsPage.qml:79
+#: ../app/ui/settings/UnitsPage.qml:52 ../app/ui/settings/UnitsPage.qml:84
 msgid "°F"
 msgstr ""
 
 #. TRANSLATORS: The strings are standard measurement units
 #. of wind speed in kilometers per hour and are shown in the settings page.
 #. Only the abbreviated form of kilometers per hour should be used.
-#: ../app/ui/settings/UnitsPage.qml:58 ../app/ui/settings/UnitsPage.qml:99
+#: ../app/ui/settings/UnitsPage.qml:63 ../app/ui/settings/UnitsPage.qml:104
 msgid "kph"
 msgstr ""
 
 #. TRANSLATORS: The strings are standard measurement units
 #. of wind speed in miles per hour and are shown in the settings page.
 #. Only the abbreviated form of miles per hour should be used.
-#: ../app/ui/settings/UnitsPage.qml:63 ../app/ui/settings/UnitsPage.qml:100
+#: ../app/ui/settings/UnitsPage.qml:68 ../app/ui/settings/UnitsPage.qml:105
 msgid "mph"
 msgstr ""
 
-#: ../app/ui/settings/UnitsPage.qml:77
+#: ../app/ui/settings/UnitsPage.qml:82
 msgid "Temperature"
 msgstr ""
 
-#: ../app/ui/settings/UnitsPage.qml:98
+#: ../app/ui/settings/UnitsPage.qml:103
 msgid "Wind Speed"
 msgstr ""
 


Follow ups