Changeset 751626e in subsurface


Ignore:
Timestamp:
Apr 1, 2017, 12:35:51 AM (3 weeks ago)
Author:
Dirk Hohndel <dirk@…>
Branches:
master
Children:
4113bab
Parents:
34a42d7
git-author:
Marco Martin <notmart@…> (03/31/17 07:15:14)
git-committer:
Dirk Hohndel <dirk@…> (04/01/17 00:35:51)
Message:

QML UI: Fully port dive edit to Kirigami2

Completely adapt to the api changes of OverlaySheet? in Kirigami2
in order to achieve the same look and behavior for the dive
edits that had with kirigami1

Port most components to QtQuickContrls2, except comboboxes
in the dive edit sheet that will need a new control type

Signed-off-by: Marco Martin <notmart@…>

Files:
1 added
2 deleted
17 edited

Legend:

Unmodified
Added
Removed
  • CMakeLists.txt

    r597539c r751626e  
    251251                mobile-widgets/qmlprofile.cpp
    252252                mobile-widgets/qml/kirigami/src/kirigamiplugin.cpp
     253                mobile-widgets/qml/kirigami/src/settings.cpp
    253254                mobile-widgets/qml/kirigami/src/enums.cpp
    254255                subsurface-mobile-main.cpp
  • mobile-widgets/qml/About.qml

    r14b4c94 r751626e  
    11import QtQuick 2.3
    2 import QtQuick.Controls 1.2
    32import QtQuick.Layouts 1.1
    4 import org.kde.kirigami 1.0 as Kirigami
     3import org.kde.kirigami 2.0 as Kirigami
    54import org.subsurfacedivelog.mobile 1.0
    65
  • mobile-widgets/qml/CloudCredentials.qml

    r14b4c94 r751626e  
    11import QtQuick 2.3
    2 import QtQuick.Controls 1.2
     2import QtQuick.Controls 2.0
    33import QtQuick.Window 2.2
    44import QtQuick.Dialogs 1.2
    55import QtQuick.Layouts 1.1
    6 import org.kde.kirigami 1.0 as Kirigami
     6import org.kde.kirigami 2.0 as Kirigami
    77import org.subsurfacedivelog.mobile 1.0
    88
     
    5757                }
    5858
    59                 StyledTextField {
     59                TextField {
    6060                        id: login
    6161                        text: manager.cloudUserName
     
    6969                }
    7070
    71                 StyledTextField {
     71                TextField {
    7272                        id: password
    7373                        text: manager.cloudPassword
     
    9898                        visible: rootItem.showPin
    9999                }
    100                 StyledTextField {
     100                TextField {
    101101                        id: pin
    102102                        text: ""
  • mobile-widgets/qml/DiveDetails.qml

    rd600320 r751626e  
    11import QtQuick 2.4
    2 import QtQuick.Controls 1.4
    3 import QtQuick.Controls.Styles 1.4
     2import QtQuick.Controls 2.0
    43import QtQuick.Dialogs 1.2
    54import QtQuick.Layouts 1.2
    65import org.subsurfacedivelog.mobile 1.0
    7 import org.kde.kirigami 1.0 as Kirigami
     6import org.kde.kirigami 2.0 as Kirigami
    87
    98Kirigami.Page {
     
    5352                                }
    5453                        }
    55                         PropertyChanges { target: detailsEditScroll; opened: false }
     54                        PropertyChanges { target: detailsEditScroll; sheetOpen: false }
    5655                        PropertyChanges { target: pageStack.contentItem; interactive: true }
    5756                },
    5857                State {
    5958                        name: "edit"
    60                         PropertyChanges { target: detailsEditScroll; opened: true }
     59                        PropertyChanges { target: detailsEditScroll; sheetOpen: true }
    6160                        PropertyChanges { target: pageStack.contentItem; interactive: false }
    6261                },
    6362                State {
    6463                        name: "add"
    65                         PropertyChanges { target: detailsEditScroll; opened: true }
     64                        PropertyChanges { target: detailsEditScroll; sheetOpen: true }
    6665                        PropertyChanges { target: pageStack.contentItem; interactive: false }
    6766                }
     
    6968        ]
    7069
    71         property QtObject deleteAction: Action {
     70        property QtObject deleteAction: Kirigami.Action {
    7271                text: qsTr("Delete dive")
    7372                iconName: "trash-empty"
     
    8685        }
    8786
    88         property QtObject mapAction: Action {
     87        property QtObject mapAction: Kirigami.Action {
    8988                text: qsTr("Show on map")
    9089                iconName: "gps"
     
    9493        }
    9594
    96         actions.main: Action {
     95        actions.main: Kirigami.Action {
    9796                iconName: state !== "view" ? "document-save" : "document-edit"
    9897                onTriggered: {
     
    176175        Item {
    177176                anchors.fill: parent
    178                 ScrollView {
    179                         id: diveDetailList
     177                ListView {
     178                        id: diveDetailsListView
    180179                        anchors.fill: parent
    181                         ListView {
    182                                 id: diveDetailsListView
    183                                 anchors.fill: parent
    184                                 model: diveModel
    185                                 currentIndex: -1
     180                        model: diveModel
     181                        currentIndex: -1
     182                        boundsBehavior: Flickable.StopAtBounds
     183                        maximumFlickVelocity: parent.width * 5
     184                        orientation: ListView.Horizontal
     185                        highlightFollowsCurrentItem: true
     186                        focus: true
     187                        clip: false
     188                        //cacheBuffer: parent.width * 3 // cache one item on either side (this is in pixels)
     189                        snapMode: ListView.SnapOneItem
     190                        highlightRangeMode: ListView.StrictlyEnforceRange
     191                        onMovementEnded: {
     192                                currentIndex = indexAt(contentX+1, 1);
     193                        }
     194                        delegate: Flickable {
     195                                id: internalScrollView
     196                                width: diveDetailsListView.width
     197                                height: diveDetailsListView.height
     198                                contentHeight: diveDetails.height
    186199                                boundsBehavior: Flickable.StopAtBounds
    187                                 maximumFlickVelocity: parent.width * 5
    188                                 orientation: ListView.Horizontal
    189                                 highlightFollowsCurrentItem: true
    190                                 focus: true
    191                                 clip: false
    192                                 //cacheBuffer: parent.width * 3 // cache one item on either side (this is in pixels)
    193                                 snapMode: ListView.SnapOneItem
    194                                 highlightRangeMode: ListView.StrictlyEnforceRange
    195                                 onMovementEnded: {
    196                                         currentIndex = indexAt(contentX+1, 1);
     200                                property var modelData: model
     201                                DiveDetailsView {
     202                                        id: diveDetails
     203                                        width: internalScrollView.width
    197204                                }
    198                                 delegate: ScrollView {
    199                                         id: internalScrollView
    200                                         width: diveDetailsListView.width
    201                                         height: diveDetailsListView.height
    202                                         property var modelData: model
    203                                         Flickable {
    204                                                 //contentWidth: parent.width
    205                                                 contentHeight: diveDetails.height
    206                                                 boundsBehavior: Flickable.StopAtBounds
    207                                                 DiveDetailsView {
    208                                                         id: diveDetails
    209                                                         width: internalScrollView.width
    210                                                 }
    211                                         }
    212                                 }
    213                         }
     205                                ScrollBar.vertical: ScrollBar { }
     206                        }
     207                        ScrollIndicator.horizontal: ScrollIndicator { }
    214208                }
    215209                Kirigami.OverlaySheet {
    216210                        id: detailsEditScroll
    217                         anchors.fill: parent
    218                         onOpenedChanged: {
    219                                 if (!opened) {
     211                        parent: diveDetailsPage
     212                        rootItem.z: 0
     213                        onSheetOpenChanged: {
     214                                if (!sheetOpen) {
    220215                                        endEditMode()
    221216                                }
  • mobile-widgets/qml/DiveDetailsEdit.qml

    r9389fd0 r751626e  
    11import QtQuick 2.3
    2 import QtQuick.Controls 1.2
     2import QtQuick.Controls 2.0
     3import QtQuick.Controls 1.2 as QQC1
    34import QtQuick.Controls.Styles 1.2
    45import QtQuick.Dialogs 1.2
    56import QtQuick.Layouts 1.1
    67import org.subsurfacedivelog.mobile 1.0
    7 import org.kde.kirigami 1.0 as Kirigami
     8import org.kde.kirigami 2.0 as Kirigami
    89
    910Item {
     
    8485                                text: qsTr("Date:")
    8586                        }
    86                         StyledTextField {
     87                        TextField {
    8788                                id: txtDate;
    8889                                Layout.fillWidth: true
     
    9293                                text: qsTr("Location:")
    9394                        }
    94                         StyledTextField {
     95                        TextField {
    9596                                id: txtLocation;
    9697                                Layout.fillWidth: true
     
    101102                                text: qsTr("Coordinates:")
    102103                        }
    103                         StyledTextField {
     104                        TextField {
    104105                                id: txtGps
    105106                                Layout.fillWidth: true
     
    124125                                text: qsTr("Depth:")
    125126                        }
    126                         StyledTextField {
     127                        TextField {
    127128                                id: txtDepth
    128129                                Layout.fillWidth: true
     
    133134                                text: qsTr("Duration:")
    134135                        }
    135                         StyledTextField {
     136                        TextField {
    136137                                id: txtDuration
    137138                                Layout.fillWidth: true
     
    143144                                text: qsTr("Air Temp:")
    144145                        }
    145                         StyledTextField {
     146                        TextField {
    146147                                id: txtAirTemp
    147148                                Layout.fillWidth: true
     
    152153                                text: qsTr("Water Temp:")
    153154                        }
    154                         StyledTextField {
     155                        TextField {
    155156                                id: txtWaterTemp
    156157                                Layout.fillWidth: true
     
    161162                                text: qsTr("Suit:")
    162163                        }
    163                         ComboBox {
     164                        QQC1.ComboBox {
    164165                                id: suitBox
    165166                                editable: true
     
    176177                                text: qsTr("Buddy:")
    177178                        }
    178                         ComboBox {
     179                        QQC1.ComboBox {
    179180                                id: buddyBox
    180181                                editable: true
     
    191192                                text: qsTr("Divemaster:")
    192193                        }
    193                         ComboBox {
     194                        QQC1.ComboBox {
    194195                                id: divemasterBox
    195196                                editable: true
     
    206207                                text: qsTr("Weight:")
    207208                        }
    208                         StyledTextField {
     209                        TextField {
    209210                                id: txtWeight
    210                                 fixed: text === "cannot edit multiple weight systems"
     211                                readOnly: text === "cannot edit multiple weight systems"
    211212                                Layout.fillWidth: true
    212213                        }
     
    216217                                text: qsTr("Cylinder:")
    217218                        }
    218                         ComboBox {
     219                        QQC1.ComboBox {
    219220                                id: cylinderBox
    220221                                editable: true
     
    231232                                text: qsTr("Gas mix:")
    232233                        }
    233                         StyledTextField {
     234                        TextField {
    234235                                id: txtGasMix
    235236                                Layout.fillWidth: true
     
    241242                                text: qsTr("Start Pressure:")
    242243                        }
    243                         StyledTextField {
     244                        TextField {
    244245                                id: txtStartPressure
    245246                                Layout.fillWidth: true
     
    250251                                text: qsTr("End Pressure:")
    251252                        }
    252                         StyledTextField {
     253                        TextField {
    253254                                id: txtEndPressure
    254255                                Layout.fillWidth: true
  • mobile-widgets/qml/DiveDetailsView.qml

    rd600320 r751626e  
    33import QtWebView 1.0
    44*/
    5 import QtQuick.Controls 1.2
    6 import QtQuick.Controls.Styles 1.2
    75import QtQuick.Dialogs 1.2
    86import QtQuick.Layouts 1.1
    97import org.subsurfacedivelog.mobile 1.0
    10 import org.kde.kirigami 1.0 as Kirigami
     8import org.kde.kirigami 2.0 as Kirigami
    119
    1210Item {
  • mobile-widgets/qml/DiveList.qml

    r10842b3 r751626e  
    11import QtQuick 2.6
    2 import QtQuick.Controls 1.2
     2import QtQuick.Controls 2.0
    33import QtQuick.Layouts 1.2
    44import QtQuick.Window 2.2
    55import QtQuick.Dialogs 1.2
    6 import org.kde.kirigami 1.0 as Kirigami
     6import org.kde.kirigami 2.0 as Kirigami
    77import org.subsurfacedivelog.mobile 1.0
    88
     
    210210        }
    211211
    212         ScrollView {
     212        Flickable {
    213213                id: startPageWrapper
    214214                anchors.fill: parent
    215215                opacity: credentialStatus === QMLManager.NOCLOUD || (credentialStatus === QMLManager.VALID || credentialStatus === QMLManager.VALID_EMAIL) ? 0 : 1
    216216                visible: opacity > 0
     217                contentWidth: width
     218                contentHeight: startPage.height
    217219                Behavior on opacity { NumberAnimation { duration: Kirigami.Units.shortDuration } }
    218220                onVisibleChanged: {
     
    234236                        }
    235237                }
     238                ScrollBar.vertical: ScrollBar { }
    236239
    237240                StartPage {
     
    278281        }
    279282
    280         property QtObject addDiveAction: Action {
     283        property QtObject addDiveAction: Kirigami.Action {
    281284                iconName: "list-add"
    282285                onTriggered: {
     
    285288        }
    286289
    287         property QtObject saveAction: Action {
     290        property QtObject saveAction: Kirigami.Action {
    288291                iconName: "document-save"
    289292                onTriggered: {
     
    293296        }
    294297
    295         property QtObject offlineAction: Action {
     298        property QtObject offlineAction: Kirigami.Action {
    296299                iconName: "qrc:/qml/nocloud.svg"
    297300                onTriggered: {
  • mobile-widgets/qml/DownloadFromDiveComputer.qml

    rf007f03 r751626e  
    11import QtQuick 2.3
    2 import QtQuick.Controls 1.2
    3 import QtQuick.Controls.Styles 1.2
     2import QtQuick.Controls 1.4 as QQC1
     3import QtQuick.Controls 2.0
    44import QtQuick.Window 2.2
    55import QtQuick.Dialogs 1.2
    66import QtQuick.Layouts 1.1
    77import org.subsurfacedivelog.mobile 1.0
    8 import org.kde.kirigami 1.0 as Kirigami
     8import org.kde.kirigami 2.0 as Kirigami
    99
    1010Kirigami.Page {
     
    1818/* this can be done by hitting the back key
    1919        contextualActions: [
    20                 Action {
     20                Kirigami.Action {
    2121                        text: qsTr("Close Preferences")
    2222                        iconName: "dialog-cancel"
     
    3636                        anchors.top:parent.top
    3737                        Layout.fillWidth: true
    38                         Text { text: qsTr(" Vendor name: ") }
     38                        Kirigami.Label { text: qsTr(" Vendor name: ") }
    3939                        ComboBox { Layout.fillWidth: true }
    4040                }
    4141                RowLayout {
    42                         Text { text: qsTr(" Dive Computer:") }
     42                        Kirigami.Label { text: qsTr(" Dive Computer:") }
    4343                        ComboBox { Layout.fillWidth: true }
    4444                }
    4545                RowLayout {
    46                         Text { text: " Progress:" }
     46                        Kirigami.Label { text: " Progress:" }
    4747                        Layout.fillWidth: true
    4848                        ProgressBar { Layout.fillWidth: true }
    4949                }
    5050                RowLayout {
    51                         SubsurfaceButton {
     51                        Button {
    5252                                text: qsTr("Download")
    5353                                onClicked: {
     
    5656                                }
    5757                        }
    58                         SubsurfaceButton {
     58                        Button {
    5959                                id:quitbutton
    6060                                text: qsTr("Quit")
     
    6565                }
    6666                RowLayout {
    67                         Text {
     67                        Kirigami.Label {
    6868                                text: qsTr(" Downloaded dives")
    6969                        }
    7070                }
    71                 TableView {
     71                QQC1.TableView {
    7272                        width: parent.width
    7373                        Layout.fillWidth: true  // The tableview should fill
    7474                        Layout.fillHeight: true // all remaining vertical space
    7575                        height: parent.height   // on this screen
    76                         TableViewColumn {
     76                        QQC1.TableViewColumn {
    7777                                width: parent.width / 2
    7878                                role: "datetime"
    7979                                title: qsTr("Date / Time")
    8080                        }
    81                         TableViewColumn {
     81                        QQC1.TableViewColumn {
    8282                                width: parent.width / 4
    8383                                role: "duration"
    8484                                title: qsTr("Duration")
    8585                        }
    86                         TableViewColumn {
     86                        QQC1.TableViewColumn {
    8787                                width: parent.width / 4
    8888                                role: "depth"
     
    9292                RowLayout {
    9393                        Layout.fillWidth: true
    94                         SubsurfaceButton {
     94                        Button {
    9595                                text: qsTr("Accept")
    9696                                onClicked: {
     
    9898                                }
    9999                        }
    100                         SubsurfaceButton {
     100                        Button {
    101101                                text: qsTr("Quit")
    102102                                onClicked: {
     
    104104                                }
    105105                        }
    106                         Text {
     106                        Kirigami.Label {
    107107                                text: ""  // Spacer between 2 button groups
    108108                                Layout.fillWidth: true
    109109                        }
    110                         SubsurfaceButton {
     110                        Button {
    111111                                text: qsTr("Select All")
    112112                        }
    113                         SubsurfaceButton {
     113                        Button {
    114114                                id: unselectbutton
    115115                                text: qsTr("Unselect All")
     
    118118                RowLayout { // spacer to make space for silly button
    119119                        Layout.minimumHeight: 1.2 * unselectbutton.height
    120                         Text {
     120                        Kirigami.Label {
    121121                                text:""
    122122                        }
  • mobile-widgets/qml/GpsList.qml

    r14b4c94 r751626e  
    11import QtQuick 2.3
    2 import QtQuick.Controls 1.2
    3 import QtQuick.Controls.Styles 1.2
    42import QtQuick.Window 2.2
    53import QtQuick.Dialogs 1.2
     
    75import QtQuick.Window 2.2
    86import org.subsurfacedivelog.mobile 1.0
    9 import org.kde.kirigami 1.0 as Kirigami
     7import org.kde.kirigami 2.0 as Kirigami
    108
    119Kirigami.ScrollablePage {
  • mobile-widgets/qml/Log.qml

    r14b4c94 r751626e  
    11import QtQuick 2.3
    2 import QtQuick.Controls 1.2
    3 import QtQuick.Controls.Styles 1.2
    42import QtQuick.Window 2.2
    53import QtQuick.Dialogs 1.2
     
    75import QtQuick.Window 2.2
    86import org.subsurfacedivelog.mobile 1.0
    9 import org.kde.kirigami 1.0 as Kirigami
     7import org.kde.kirigami 2.0 as Kirigami
    108
    119Kirigami.ScrollablePage {
  • mobile-widgets/qml/Preferences.qml

    r14b4c94 r751626e  
    11import QtQuick 2.3
    2 import QtQuick.Controls 1.2
     2import QtQuick.Controls 2.0
    33import QtQuick.Window 2.2
    44import QtQuick.Dialogs 1.2
    55import QtQuick.Layouts 1.1
    6 import org.kde.kirigami 1.0 as Kirigami
     6import org.kde.kirigami 2.0 as Kirigami
    77import org.subsurfacedivelog.mobile 1.0
    88
     
    1111        title: qsTr("Preferences")
    1212        actions {
    13                 main: Action {
     13                main: Kirigami.Action {
    1414                        text: qsTr("Save")
    1515                        iconName: "document-save"
     
    5353                }
    5454
    55                 StyledTextField {
     55                TextField {
    5656                        id: distanceThreshold
    5757                        text: manager.distanceThreshold
     
    6464                }
    6565
    66                 StyledTextField {
     66                TextField {
    6767                        id: timeThreshold
    6868                        text: manager.timeThreshold
  • mobile-widgets/qml/StartPage.qml

    r14b4c94 r751626e  
    11import QtQuick 2.5
    2 import QtQuick.Controls 1.2
    3 import QtQuick.Controls.Styles 1.2
    42import QtQuick.Layouts 1.1
    5 import org.kde.kirigami 1.0 as Kirigami
     3import org.kde.kirigami 2.0 as Kirigami
    64import org.subsurfacedivelog.mobile 1.0
    75
  • mobile-widgets/qml/ThemeTest.qml

    r14b4c94 r751626e  
    11import QtQuick 2.5
    2 import QtQuick.Controls 1.4
    32import QtQuick.Layouts 1.1
    43import QtQuick.Window 2.2
    5 import org.kde.kirigami 1.0 as Kirigami
     4import org.kde.kirigami 2.0 as Kirigami
    65
    76Kirigami.Page {
  • mobile-widgets/qml/main.qml

    r14b4c94 r751626e  
    11import QtQuick 2.4
    2 import QtQuick.Controls 1.2
    3 import QtQuick.Controls.Styles 1.2
     2import QtQuick.Controls 2.0
    43import QtQuick.Window 2.2
    54import QtQuick.Dialogs 1.2
     
    76import QtQuick.Window 2.2
    87import org.subsurfacedivelog.mobile 1.0
    9 import org.kde.kirigami 1.0 as Kirigami
     8import org.kde.kirigami 2.0 as Kirigami
    109
    1110Kirigami.ApplicationWindow {
  • mobile-widgets/qml/mobile-resources.qrc

    r24718ad r751626e  
    1414                <file>ThemeTest.qml</file>
    1515                <file>StartPage.qml</file>
    16                 <file>StyledTextField.qml</file>
    1716                <file>dive.jpg</file>
    18                 <file>SubsurfaceButton.qml</file>
    1917                <file alias="subsurface-mobile-icon.png">../../icons/subsurface-mobile-icon.png</file>
    2018                <file alias="main-menu.png">icons/main-menu.png</file>
     
    2523        </qresource>
    2624        <qresource prefix="/">
     25                <file>qtquickcontrols2.conf</file>
    2726                <file alias="icons/go-next.svg">kirigami/icons/go-next.svg</file>
    2827                <file alias="icons/go-previous.svg">kirigami/icons/go-previous.svg</file>
  • scripts/mobilecomponents.sh

    r31471b1 r751626e  
    2727cd $SRC
    2828if [ ! -d kirigami ] ; then
    29         git clone -b Kirigami/1.1 git://github.com/KDE/kirigami
     29        git clone -b master git://github.com/KDE/kirigami
    3030fi
    3131if [ "$NOPULL" = "" ] ; then
    3232        pushd kirigami
    33         git checkout Kirigami/1.1
    34         git pull origin Kirigami/1.1
     33        git checkout master
     34        git pull origin master
    3535        popd
    3636fi
  • subsurface-mobile-main.cpp

    r11dcae4 r751626e  
    2121{
    2222        int i;
     23        QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    2324        QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true"));
    2425        QApplication *application = new QApplication(argc, argv);
Note: See TracChangeset for help on using the changeset viewer.