Git commit fd001f05e39267cf859575e79dc49d29d03b19a3 by Martin Klapetek. Committed on 19/04/2016 at 04:16. Pushed by mklapetek into branch 'master'. Initial Kirigami port This now works, but still few things are missing as they are unclear in Kirigami itself M +3 -2 app/package/contents/ui/ContactList.qml M +19 -7 app/package/contents/ui/ConversationPage.qml M +16 -11 app/package/contents/ui/MainPage.qml M +5 -6 app/package/contents/ui/NewConversationPage.qml M +0 -1 app/package/contents/ui/TextDelegate.qml M +10 -8 app/package/contents/ui/main.qml http://commits.kde.org/spacebar/fd001f05e39267cf859575e79dc49d29d03b19a3 diff --git a/app/package/contents/ui/ContactList.qml b/app/package/contents= /ui/ContactList.qml index 00ccaf9..85d6785 100644 --- a/app/package/contents/ui/ContactList.qml +++ b/app/package/contents/ui/ContactList.qml @@ -26,6 +26,7 @@ import org.kde.kquickcontrolsaddons 2.0 as ExtraComponents import org.kde.plasma.core 2.1 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.plasma.mobilecomponents 0.2 as MobileComponents +import org.kde.kirigami 1.0 as Kirigami import org.kde.plasma.extras 2.0 as PlasmaExtras import org.kde.telepathy 0.1 = @@ -123,7 +124,7 @@ ListView { Layout.fillHeight: true Layout.fillWidth: true = - Label { + Kirigami.Label { id: nickLabel = Layout.fillWidth: true @@ -132,7 +133,7 @@ ListView { elide: Text.ElideRight } = - Label { + Kirigami.Label { id: dataLabel = Layout.fillWidth: true diff --git a/app/package/contents/ui/ConversationPage.qml b/app/package/con= tents/ui/ConversationPage.qml index ea05b31..9369232 100644 --- a/app/package/contents/ui/ConversationPage.qml +++ b/app/package/contents/ui/ConversationPage.qml @@ -22,12 +22,12 @@ import QtQuick.Controls 1.4 import QtQuick.Layouts 1.1 import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.mobilecomponents 0.2 as MobileComponents +import org.kde.kirigami 1.0 as Kirigami import org.kde.plasma.extras 2.0 as PlasmaExtras // import org.kde.plasma.private.spacebar 1.0 import org.kde.telepathy 0.1 = -MobileComponents.Page { +Kirigami.Page { anchors.fill: parent = // This is somewhat a hack, the type should be Conversation @@ -57,13 +57,13 @@ MobileComponents.Page { source: conversation.presenceIcon } = - PlasmaComponents.Label { + Kirigami.Label { Layout.fillWidth: true text: conversation.title = } = - PlasmaComponents.Button { + Button { text: i18nc("Close an active conversation", "Close") = onClicked: { @@ -146,7 +146,18 @@ MobileComponents.Page { } } = - model: conversation.messages // : undefined + model: conversation.messages + + Connections { + target: conversation.messages + + onRowsInserted: { + if (view.followConversation) { + view.positionViewAtEnd(); + } + } + } + onMovementEnded: followConversation =3D atYEnd //we on= ly follow the conversation if moved to the end = onContentHeightChanged: { @@ -171,8 +182,9 @@ MobileComponents.Page { // } } = - PlasmaComponents.Label { + Kirigami.Label { Layout.fillWidth: true + Layout.maximumHeight: height text: conversation.isContactTyping ? i18nc("Contact is com= posing a message", "%1 is typing..= .", conversation.title) : "" height: text.length =3D=3D 0 ? 0 : paintedHeight @@ -194,7 +206,7 @@ MobileComponents.Page { } } = - PlasmaComponents.Button { + Button { enabled: conversation !=3D=3D null text: conversation.account !=3D=3D null && conversatio= n.account.online ? i18nc("Button label; Send message", "S= end") diff --git a/app/package/contents/ui/MainPage.qml b/app/package/contents/ui= /MainPage.qml index a0958e9..8fba599 100644 --- a/app/package/contents/ui/MainPage.qml +++ b/app/package/contents/ui/MainPage.qml @@ -21,20 +21,23 @@ import QtQuick 2.3 import QtQuick.Controls 1.4 import QtQuick.Layouts 1.1 import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.mobilecomponents 0.2 as MobileComponents +import org.kde.kirigami 1.0 as Kirigami import org.kde.plasma.extras 2.0 as PlasmaExtras import org.kde.telepathy 0.1 as KTp = -MobileComponents.Page { +Kirigami.Page { anchors.fill: parent = - mainAction: Action { + title: "Your Conversations" + + mainAction: Kirigami.Action { text: "Start New Conversation" iconName: "document-edit" = onTriggered: { -// pageStack.pop(pageStack.initialPage); + if (root.pageStack.depth =3D=3D 2) { + root.pageStack.pop(); + } root.pageStack.push(newConversationPageComponent); print("Action button clicked") } @@ -86,12 +89,15 @@ MobileComponents.Page { } } = - delegate: PlasmaComponents.ListItem { - enabled: true + delegate: Kirigami.AbstractListItem { + supportsMouseEvents: true = onClicked: { + if (root.pageStack.depth =3D=3D 2) { + root.pageStack.pop(); + } root.pageStack.push(conversationPageComponent); - root.pageStack.currentPage.conversation =3D model.= conversation; + root.pageStack.currentItem.conversation =3D model.= conversation; = // If the account is online, request a channel if (mainModel.canChat(accountId)) { @@ -127,7 +133,7 @@ MobileComponents.Page { maximumLineCount: 1 level: 4 } - PlasmaComponents.Label { + Kirigami.Label { Layout.fillWidth: true = text: model.lastMessageText @@ -135,7 +141,7 @@ MobileComponents.Page { elide: Text.ElideRight maximumLineCount: 2 } - PlasmaComponents.Label { + Kirigami.Label { Layout.fillWidth: true = text: Qt.formatDateTime(model.lastMessageDate) @@ -143,7 +149,6 @@ MobileComponents.Page { elide: Text.ElideRight maximumLineCount: 1 } - } } } diff --git a/app/package/contents/ui/NewConversationPage.qml b/app/package/= contents/ui/NewConversationPage.qml index c149465..2bf7fcc 100644 --- a/app/package/contents/ui/NewConversationPage.qml +++ b/app/package/contents/ui/NewConversationPage.qml @@ -20,17 +20,16 @@ import QtQuick 2.3 import QtQuick.Controls 1.4 import QtQuick.Layouts 1.1 -import org.kde.people 1.0 as KPeople import org.kde.plasma.private.kpeoplehelper 1.0 -import org.kde.kquickcontrolsaddons 2.0 as ExtraComponents -import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.mobilecomponents 0.2 as MobileComponents +import org.kde.kirigami 1.0 as Kirigami import org.kde.plasma.extras 2.0 as PlasmaExtras import org.kde.telepathy 0.1 = -MobileComponents.Page { +Kirigami.Page { anchors.fill: parent + focus: true + property string pageName: "newConversationPage" = GridLayout { @@ -44,7 +43,7 @@ MobileComponents.Page { text: i18n("Start New Conversation") } = - PlasmaComponents.Label { + Kirigami.Label { Layout.alignment: Qt.AlignRight text: i18n("To:") } diff --git a/app/package/contents/ui/TextDelegate.qml b/app/package/content= s/ui/TextDelegate.qml index 23beb2e..e315cae 100644 --- a/app/package/contents/ui/TextDelegate.qml +++ b/app/package/contents/ui/TextDelegate.qml @@ -19,7 +19,6 @@ */ = import QtQuick 2.1 -import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.telepathy 0.1 = Item { diff --git a/app/package/contents/ui/main.qml b/app/package/contents/ui/mai= n.qml index 0bfa0aa..bba82f8 100644 --- a/app/package/contents/ui/main.qml +++ b/app/package/contents/ui/main.qml @@ -22,9 +22,9 @@ import QtQuick.Controls 1.4 import QtQuick.Layouts 1.1 import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents -import org.kde.plasma.mobilecomponents 0.2 as MobileComponents +import org.kde.kirigami 1.0 as Kirigami = -MobileComponents.ApplicationWindow { +Kirigami.ApplicationWindow { id: root = width: 800 @@ -32,13 +32,13 @@ MobileComponents.ApplicationWindow { = property string requestedChannel = - globalDrawer: MobileComponents.GlobalDrawer { + globalDrawer: Kirigami.GlobalDrawer { title: "SpaceBar" titleIcon: "spacebar" // bannerImageSource: "banner.jpg" = actions: [ -// MobileComponents.ActionGroup { +// Kirigami.ActionGroup { // text: "View" // iconName: "view-list-icons" // Action { @@ -105,15 +105,15 @@ MobileComponents.ApplicationWindow { // enabled: false // } } - contextDrawer: MobileComponents.ContextDrawer { + contextDrawer: Kirigami.ContextDrawer { id: contextDrawer } = - initialPage: mainPageComponent + pageStack.initialPage: mainPageComponent = // Component { // id: settingsComponent -// MobileComponents.Page { +// Kirigami.Page { // objectName: "settingsPage" // Rectangle { // anchors.fill: parent @@ -137,7 +137,9 @@ MobileComponents.ApplicationWindow { Component { id: newConversationPageComponent = - NewConversationPage {} + NewConversationPage { + id: newConversationPage + } } = Component.onCompleted: {