on xenial help sign in
Moved Messaging to current indicators.
commitf932c2ce6224207f923352646a46883c317aea0d authorNick Dedekind <nicholas.dedekind@gmail.com> dateThu 22 Aug 2013, 14:05 (13 years ago) parentdc81012
26 files changed+343−232
Panel/IndicatorsDataModel.qml+2−2 plugins/Unity/Indicators/CMakeLists.txt+1 plugins/Unity/IndicatorsLegacy/Messaging/CMakeLists.txt → plugins/Unity/Indicators/Messaging/CMakeLists.txt plugins/Unity/IndicatorsLegacy/Messaging/qml/ActionButton.qml → plugins/Unity/Indicators/Messaging/qml/ActionButton.qml plugins/Unity/IndicatorsLegacy/Messaging/qml/ActionTextField.qml → plugins/Unity/Indicators/Messaging/qml/ActionTextField.qml+8−6 plugins/Unity/Indicators/Messaging/qml/CMakeLists.txt+5 plugins/Unity/IndicatorsLegacy/Messaging/qml/GroupedMessage.qml → plugins/Unity/Indicators/Messaging/qml/GroupedMessage.qml+13−18 plugins/Unity/IndicatorsLegacy/Messaging/qml/HeroMessage.qml → plugins/Unity/Indicators/Messaging/qml/HeroMessage.qml+16−23 plugins/Unity/IndicatorsLegacy/Messaging/qml/HeroMessageHeader.qml → plugins/Unity/Indicators/Messaging/qml/HeroMessageHeader.qml plugins/Unity/Indicators/Messaging/qml/MessageMenuItemFactory.qml+173 plugins/Unity/IndicatorsLegacy/Messaging/qml/QuickReply.qml → plugins/Unity/Indicators/Messaging/qml/QuickReply.qml+7−3 plugins/Unity/IndicatorsLegacy/Messaging/qml/SimpleTextMessage.qml → plugins/Unity/Indicators/Messaging/qml/SimpleTextMessage.qml+7−4 plugins/Unity/IndicatorsLegacy/Messaging/qml/SnapDecision.qml → plugins/Unity/Indicators/Messaging/qml/SnapDecision.qml+27−13 plugins/Unity/IndicatorsLegacy/Messaging/qml/TextMessage.qml → plugins/Unity/Indicators/Messaging/qml/TextMessage.qml+10−4 plugins/Unity/IndicatorsLegacy/Messaging/qml/qmldir → plugins/Unity/Indicators/Messaging/qml/qmldir+2−2 plugins/Unity/IndicatorsLegacy/Messaging/qml/utils.js → plugins/Unity/Indicators/Messaging/qml/utils.js plugins/Unity/Indicators/qml/BaseMenuItem.qml+1−1 plugins/Unity/Indicators/qml/IndicatorPage.qml+4−4 plugins/Unity/Indicators/qml/MenuItemFactory.qml+67−17 plugins/Unity/IndicatorsLegacy/CMakeLists.txt−1 plugins/Unity/IndicatorsLegacy/Messaging/qml/CMakeLists.txt−5 plugins/Unity/IndicatorsLegacy/Messaging/qml/MessageMenuItem.qml−96 plugins/Unity/IndicatorsLegacy/qml/MenuItemFactory.qml−8 src/Panel/Indicators/CMakeLists.txt−1 src/Panel/Indicators/servicefiles/CMakeLists.txt−14 src/Panel/Indicators/servicefiles/com.canonical.indicator.messages−10
Panel/IndicatorsDataModel.qml+2−2
@@ -36,8 +36,8 @@ Indicators.IndicatorsModel {
3636 'indicator-messages' : {
3737 'title': 'Messaging',
3838 'description' : '',
39− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/MessagingIndicatorWidget.qml',
40− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/MessagingIndicatorPage.qml'
39+ 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
40+ 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
4141 },
4242 'indicator-sound' : {
4343 'title': 'Sound',
plugins/Unity/Indicators/CMakeLists.txt+1
@@ -12,6 +12,7 @@ find_package(Qt5Core REQUIRED)
1212find_package(Qt5Quick REQUIRED)
1313
1414add_subdirectory(qml)
15+add_subdirectory(Messaging)
1516add_subdirectory(Network)
1617
1718include_directories(
plugins/Unity/IndicatorsLegacy/Messaging/CMakeLists.txt → plugins/Unity/Indicators/Messaging/CMakeLists.txtrenamed

The content is the same.

plugins/Unity/IndicatorsLegacy/Messaging/qml/ActionButton.qml → plugins/Unity/Indicators/Messaging/qml/ActionButton.qmlrenamed

The content is the same.

plugins/Unity/IndicatorsLegacy/Messaging/qml/ActionTextField.qml → plugins/Unity/Indicators/Messaging/qml/ActionTextField.qmlrenamed+8−6
@@ -22,12 +22,12 @@ import QtQuick 2.0
2222import Ubuntu.Components 0.1
2323
2424Item {
25− property alias actionGroup: sendButton.actionGroup
26− property alias action: sendButton.action
27−
25+ id: textField
2826 property alias text: replyField.text
2927 property alias buttonText: sendButton.text
3028
29+ signal activate(var value)
30+
3131 TextField {
3232 id: replyField
3333
@@ -50,10 +50,8 @@ Item {
5050 }
5151 }
5252
53− ActionButton {
53+ Button {
5454 id: sendButton
55−
56− actionParameter: replyField.text
5755 anchors {
5856 top: parent.top
5957 bottom: parent.bottom
@@ -62,5 +60,9 @@ Item {
6260 width: units.gu(9)
6361 enabled: replyField.text !== ""
6462 color: enabled ? "#c94212" : "#bababa"
63+
64+ onClicked: {
65+ textField.activate(replyField.text);
66+ }
6567 }
6668}
plugins/Unity/Indicators/Messaging/qml/CMakeLists.txtnew file+5
@@ -0,0 +1,5 @@
1+# export_qmlfiles macro
2+include(Plugins)
3+
4+# export the qmldir, *.qml files.
5+export_qmlfiles(Unity.Indicators.Messaging Unity/Indicators/Messaging)
plugins/Unity/IndicatorsLegacy/Messaging/qml/GroupedMessage.qml → plugins/Unity/Indicators/Messaging/qml/GroupedMessage.qmlrenamed+13−18
@@ -20,20 +20,19 @@
2020
2121import QtQuick 2.0
2222import Ubuntu.Components 0.1
23−import Unity.IndicatorsLegacy 0.1 as Indicators
23+import Unity.Indicators 0.1 as Indicators
2424
25−Indicators.BasicMenuItem {
25+Indicators.BaseMenuItem {
2626 id: groupedMessage
27+
28+ property alias title: __title.text
2729 property alias count: label.text
30+ property string appIcon: "qrc:/indicators/artwork/messaging/default_app.svg"
2831
29− color: "#221e1b"
30− implicitHeight: units.gu(10)
32+ signal activateApp()
33+ signal dismiss()
3134
32− Indicators.MenuAction {
33− id: menuAction
34− actionGroup: groupedMessage.actionGroup
35− action: menu ? menu.action : ""
36− }
35+ implicitHeight: units.gu(10)
3736
3837 Row {
3938 anchors.fill: parent
@@ -44,17 +43,17 @@ Indicators.BasicMenuItem {
4443 height: units.gu(6)
4544 width: units.gu(6)
4645 image: Image {
47− source: menu && (menu.extra.canonical_icon.length > 0) ? "image://gicon/" + encodeURI(menu.extra.canonical_icon) : "qrc:/indicators/artwork/messaging/default_app.svg"
46+ source: groupedMessage.appIcon
4847 fillMode: Image.PreserveAspectFit
4948 }
5049 }
5150
5251 Label {
52+ id: __title
5353 anchors.verticalCenter: parent.verticalCenter
5454 color: "#e8e1d0"
5555 font.weight: Font.DemiBold
5656 fontSize: "medium"
57− text: menu && menu.label ? menu.label : ""
5857 }
5958
6059 Label {
@@ -65,7 +64,7 @@ Indicators.BasicMenuItem {
6564 color: "#e8e1d0"
6665 font.weight: Font.DemiBold
6766 fontSize: "medium"
68− text: menuAction.valid ? menuAction.state[0] : "0"
67+ text: "0"
6968 }
7069 }
7170
@@ -82,15 +81,11 @@ Indicators.BasicMenuItem {
8281 MouseArea {
8382 anchors.fill: parent
8483 onClicked: {
85− if (menuAction.valid) {
86− menuAction.activate(true);
87− }
84+ groupedMessage.activateApp();
8885 }
8986 }
9087
9188 onItemRemoved: {
92− if (menuAction.valid) {
93− menuAction.activate(false);
94− }
89+ groupedMessage.dismiss();
9590 }
9691}
plugins/Unity/IndicatorsLegacy/Messaging/qml/HeroMessage.qml → plugins/Unity/Indicators/Messaging/qml/HeroMessage.qmlrenamed+16−23
@@ -20,27 +20,25 @@
2020
2121import QtQuick 2.0
2222import Ubuntu.Components 0.1
23−import Unity.IndicatorsLegacy 0.1 as Indicators
23+import Unity.Indicators 0.1 as Indicators
2424
25−Indicators.BasicMenuItem {
25+Indicators.BaseMenuItem {
2626 id: heroMessage
2727
28− property variant actionsDescription: null
28+ property var actionsDescription: menu ? menu.ext.xCanonicalMessageActions : undefined
2929 property alias heroMessageHeader: __heroMessageHeader
3030 property real collapsedHeight: heroMessageHeader.y + heroMessageHeader.bodyBottom + units.gu(2)
3131 property real expandedHeight: collapsedHeight
3232
33− color: "#221e1c"
33+ property alias avatar: __heroMessageHeader.avatar
34+ property alias appIcon: __heroMessageHeader.icon
35+
36+ signal activateApp
37+ signal dismiss
3438
3539 removable: state !== "expanded"
3640 implicitHeight: collapsedHeight
3741
38− Indicators.MenuAction {
39− id: menuAction
40− actionGroup: heroMessage.actionGroup
41− action: menu ? menu.action : ""
42− }
43−
4442 HeroMessageHeader {
4543 id: __heroMessageHeader
4644
@@ -48,25 +46,22 @@ Indicators.BasicMenuItem {
4846 anchors.left: parent.left
4947 anchors.right: parent.right
5048
51− avatar: menu && (menu.extra.canonical_icon.length > 0) ? "image://gicon/" + encodeURI(menu.extra.canonical_icon) : "qrc:/indicators/artwork/messaging/default_contact.png"
52− icon: menu && (menu.extra.canonical_app_icon.length > 0) ? "image://gicon/" + encodeURI(menu.extra.canonical_app_icon) : ""
49+ avatar: "qrc:/indicators/artwork/messaging/default_contact.png"
5350 appIcon: icon
5451
5552 state: heroMessage.state
5653
5754 onAppIconClicked: {
58− if (menuAction.valid) {
59− deactivateMenu();
60− action.activate(true);
61− }
55+ deselectMenu();
56+ heroMessage.activateApp();
6257 }
6358 }
6459
6560 onClicked: {
66− if (menuActivated) {
67− deactivateMenu();
61+ if (menuSelected) {
62+ deselectMenu();
6863 } else {
69− activateMenu();
64+ selectMenu();
7065 }
7166 }
7267
@@ -84,7 +79,7 @@ Indicators.BasicMenuItem {
8479
8580 states: State {
8681 name: "expanded"
87− when: menuActivated
82+ when: menuSelected
8883
8984 PropertyChanges {
9085 target: heroMessage
@@ -113,8 +108,6 @@ Indicators.BasicMenuItem {
113108 }
114109
115110 onItemRemoved: {
116− if (menuAction.valid) {
117− menuAction.activate(false);
118− }
111+ heroMessage.dismiss();
119112 }
120113}
plugins/Unity/IndicatorsLegacy/Messaging/qml/HeroMessageHeader.qml → plugins/Unity/Indicators/Messaging/qml/HeroMessageHeader.qmlrenamed

The content is the same.

plugins/Unity/Indicators/Messaging/qml/MessageMenuItemFactory.qmlnew file+173
@@ -0,0 +1,173 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors:
17+ * Renato Araujo Oliveira Filho <renato@canonical.com>
18+ * Olivier Tilloy <olivier.tilloy@canonical.com>
19+ */
20+
21+import QtQuick 2.0
22+import Ubuntu.Components 0.1
23+import Unity.Indicators 0.1 as Indicators
24+import QMenuModel 0.1 as QMenuModel
25+import "utils.js" as Utils
26+
27+Indicators.BaseMenuItem {
28+ id: menuItem
29+ property var actionsDescription: menu ? menu.ext.xCanonicalMessageActions : undefined
30+
31+ implicitHeight: contents.status == Loader.Ready ? contents.item.implicitHeight : 0
32+
33+ property var model: null
34+
35+ Loader {
36+ id: contents
37+ anchors.fill: parent
38+
39+ sourceComponent: loadMessage(actionsDescription);
40+
41+ // Binding all properties for the item, to make sure that any change in the
42+ // property will be propagated to the contents.item at any time
43+ Binding {
44+ target: contents.item
45+ property: "menuSelected"
46+ value: menuSelected
47+ when: (contents.status == Loader.Ready)
48+ }
49+
50+ Binding {
51+ target: contents.item
52+ property: "menu"
53+ value: menu
54+ when: (contents.status == Loader.Ready)
55+ }
56+
57+ Connections {
58+ target: contents.item ? contents.item : null
59+ onSelectMenu: selectMenu()
60+ onDeselectMenu: deselectMenu()
61+ }
62+
63+ Component {
64+ id: simpleTextMessage
65+ SimpleTextMessage {
66+ // text
67+ title: menu && menu.label ? menu.label : ""
68+ time: menu ? Utils.formatDate(menu.ext.xCanonicalTime) : ""
69+ message: menu && menu.ext.xCanonicalText ? menu.ext.xCanonicalText : ""
70+ // icons
71+ avatar: menu && menu.ext.xCanonicalIcon ? "image://gicon/" + encodeURI(menu.ext.xCanonicalIcon) : "qrc:/indicators/artwork/messaging/default_contact.png"
72+ appIcon: menu && menu.ext.xCanonicalAppIcon ? "image://gicon/" + encodeURI(menu.ext.xCanonicalAppIcon) : ""
73+
74+ onActivateApp: {
75+ menuItem.model.activate(modelIndex, true);
76+ }
77+ onDismiss: {
78+ menuItem.model.activate(modelIndex, false);
79+ }
80+ }
81+ }
82+ Component {
83+ id: textMessage
84+ TextMessage {
85+ property var replyAction: QMenuModel.UnityMenuAction {
86+ model: menuItem.model
87+ name: menu && actionsDescription[0].name ? actionsDescription[0].name : ""
88+ }
89+
90+ // text
91+ title: menu && menu.label ? menu.label : ""
92+ time: menu ? Utils.formatDate(menu.ext.xCanonicalTime) : ""
93+ message: menu && menu.ext.xCanonicalText ? menu.ext.xCanonicalText : ""
94+ // icons
95+ avatar: menu && menu.ext.xCanonicalIcon ? "image://gicon/" + encodeURI(menu.ext.xCanonicalIcon) : "qrc:/indicators/artwork/messaging/default_contact.png"
96+ appIcon: menu && menu.ext.xCanonicalAppIcon ? "image://gicon/" + encodeURI(menu.ext.xCanonicalAppIcon) : ""
97+ // actions
98+ replyButtonText: actionsDescription && actionsDescription[0].label ? actionsDescription[0].label : "Send"
99+
100+ onActivateApp: {
101+ menuItem.model.activate(modelIndex, true);
102+ }
103+ onDismiss: {
104+ menuItem.model.activate(modelIndex, false);
105+ }
106+ onReply: {
107+ replyAction.activate(value);
108+ }
109+ }
110+ }
111+ Component {
112+ id: snapDecision
113+ SnapDecision {
114+ property var activateAction: QMenuModel.UnityMenuAction {
115+ model: menuItem.model
116+ name: menu && actionsDescription[0].name ? actionsDescription[0].name : ""
117+ }
118+ property var replyAction: QMenuModel.UnityMenuAction {
119+ model: menuItem.model
120+ name: menu && actionsDescription[1].name ? actionsDescription[1].name : ""
121+ }
122+
123+ // text
124+ title: menu && menu.label ? menu.label : ""
125+ time: menu ? Utils.formatDate(menu.ext.xCanonicalTime) : ""
126+ message: menu && menu.ext.xCanonicalText ? menu.ext.xCanonicalText : ""
127+ actionButtonText: actionsDescription && actionsDescription[0].label ? actionsDescription[0].label : "Call back"
128+ replyButtonText: actionsDescription && actionsDescription[1].label ? actionsDescription[1].label : "Send"
129+ replyMessages: actionsDescription && actionsDescription[1]["parameter-hint"] ? actionsDescription[1]["parameter-hint"] : ""
130+ // icons
131+ avatar: menu && menu.ext.xCanonicalIcon ? "image://gicon/" + encodeURI(menu.ext.xCanonicalIcon) : "qrc:/indicators/artwork/messaging/default_contact.png"
132+ appIcon: menu && menu.ext.xCanonicalAppIcon ? "image://gicon/" + encodeURI(menu.ext.xCanonicalAppIcon) : ""
133+
134+ onActivateApp: {
135+ menuItem.model.activate(modelIndex, true);
136+ }
137+ onDismiss: {
138+ menuItem.model.activate(modelIndex, false);
139+ }
140+ onActivate: {
141+ callbackAction.activate();
142+ }
143+ onReply: {
144+ replyAction.activate(value);
145+ }
146+ }
147+ }
148+ }
149+
150+ function loadMessage(actions)
151+ {
152+ var parameterType = ""
153+ for (var actIndex in actions) {
154+ var desc = actions[actIndex];
155+ if (desc["parameter-type"] !== undefined) {
156+ parameterType += desc["parameter-type"];
157+ } else {
158+ parameterType += "_";
159+ }
160+ }
161+
162+ if (parameterType === "") {
163+ return simpleTextMessage;
164+ } else if (parameterType === "s") {
165+ return textMessage;
166+ } else if (parameterType === "_s") {
167+ return snapDecision;
168+ } else {
169+ console.debug("Unknown paramater type: " + parameterType);
170+ }
171+ return undefined;
172+ }
173+}
plugins/Unity/IndicatorsLegacy/Messaging/qml/QuickReply.qml → plugins/Unity/Indicators/Messaging/qml/QuickReply.qmlrenamed+7−3
@@ -23,13 +23,13 @@ import Ubuntu.Components 0.1
2323import Unity.IndicatorsLegacy 0.1 as Indicators
2424
2525Item {
26− property alias actionGroup: actionTextField.actionGroup
27− property alias action: actionTextField.action
28−
26+ id: quickReply
2927 property alias buttonText: actionTextField.buttonText
3028 property real expandedHeight: childrenRect.height
3129 property alias messages : messagelistRepeater.model
3230
31+ signal reply(var value)
32+
3333 Item {
3434 id: header
3535 anchors.top: parent.top
@@ -150,6 +150,10 @@ Item {
150150
151151 anchors.fill: parent
152152 anchors.margins: units.gu(1)
153+
154+ onActivate: {
155+ quickReply.reply(value)
156+ }
153157 }
154158
155159 Indicators.HLine {
plugins/Unity/IndicatorsLegacy/Messaging/qml/SimpleTextMessage.qml → plugins/Unity/Indicators/Messaging/qml/SimpleTextMessage.qmlrenamed+7−4
@@ -20,17 +20,20 @@
2020
2121import QtQuick 2.0
2222import Ubuntu.Components 0.1
23−import "utils.js" as Utils
2423
2524HeroMessage {
2625 id: __heroMessage
2726
27+ property string title: ""
28+ property string time: ""
29+ property string message: ""
30+
2831 property alias footer: footerLoader.sourceComponent
2932
3033 expandedHeight: fullMessage.y + fullMessage.height + units.gu(2)
31− heroMessageHeader.titleText.text: menu ? menu.label : ""
32− heroMessageHeader.subtitleText.text: menu ? Utils.formatDate(menu.extra.canonical_time) : ""
33− heroMessageHeader.bodyText.text: menu ? menu.extra.canonical_text : ""
34+ heroMessageHeader.titleText.text: title
35+ heroMessageHeader.subtitleText.text: time
36+ heroMessageHeader.bodyText.text: message
3437
3538 Item {
3639 id: fullMessage
plugins/Unity/IndicatorsLegacy/Messaging/qml/SnapDecision.qml → plugins/Unity/Indicators/Messaging/qml/SnapDecision.qmlrenamed+27−13
@@ -20,19 +20,30 @@
2020
2121import QtQuick 2.0
2222import Ubuntu.Components 0.1
23−import Unity.IndicatorsLegacy 0.1 as Indicators
23+import Unity.Indicators 0.1 as Indicators
2424import "utils.js" as Utils
2525
2626HeroMessage {
2727 id: snapDecision
2828
29+ property string title: ""
30+ property string time: ""
31+ property string message: ""
32+
33+ property alias actionButtonText: actionButton.text
34+ property alias replyMessages: quickreply.messages
35+ property alias replyButtonText: quickreply.buttonText
36+
2937 expandedHeight: buttons.y + buttons.height + quickreply.height + units.gu(2)
30− heroMessageHeader.titleText.text: menu ? menu.label : ""
31− heroMessageHeader.subtitleText.text: menu ? menu.extra.canonical_text : ""
38+ heroMessageHeader.titleText.text: title
39+ heroMessageHeader.subtitleText.text: message
3240 heroMessageHeader.subtitleText.color: "#e8e1d0"
33− heroMessageHeader.bodyText.text: menu ? Utils.formatDate(menu.extra.canonical_time) : ""
41+ heroMessageHeader.bodyText.text: time
3442 heroMessageHeader.bodyText.color: "#8f8f88"
3543
44+ signal activate
45+ signal reply(string value)
46+
3647 Item {
3748 id: buttons
3849
@@ -62,16 +73,18 @@ HeroMessage {
6273 }
6374 }
6475
65− ActionButton {
66− actionGroup: snapDecision.actionGroup
67− action: actionsDescription[0].name
68−
69− text: actionsDescription ? actionsDescription[0].label : "Call back"
76+ Button {
77+ id: actionButton
78+ text: "Call back"
7079 color: "#c94212"
7180 anchors.right: parent.right
7281 anchors.top: parent.top
7382 anchors.bottom: parent.bottom
7483 width: (parent.width - units.gu(1)) / 2
84+
85+ onClicked: {
86+ snapDecision.activate();
87+ }
7588 }
7689
7790 states: State {
@@ -95,11 +108,12 @@ HeroMessage {
95108 QuickReply {
96109 id: quickreply
97110
98− actionGroup: snapDecision.actionGroup
99− action: actionsDescription[1].name
111+ onReply: {
112+ snapDecision.reply(value);
113+ }
100114
101− messages: actionsDescription ? actionsDescription[1]["parameter-hint"] : ""
102− buttonText: actionsDescription ? actionsDescription[1].label : "send"
115+ messages: ""
116+ buttonText: "Send"
103117 anchors {
104118 top: buttons.bottom
105119 topMargin: units.gu(2)
plugins/Unity/IndicatorsLegacy/Messaging/qml/TextMessage.qml → plugins/Unity/Indicators/Messaging/qml/TextMessage.qmlrenamed+10−4
@@ -20,16 +20,22 @@
2020
2121import QtQuick 2.0
2222import Ubuntu.Components 0.1
23−import Unity.IndicatorsLegacy 0.1 as Indicators
23+import Unity.Indicators 0.1 as Indicators
2424
2525SimpleTextMessage {
2626 id: simpleMessage
2727
28+ property string replyButtonText: "Send"
29+
30+ signal reply(string value)
31+
2832 footer: ActionTextField {
2933 anchors.fill: parent
30− actionGroup: simpleMessage.actionGroup
31− action: actionsDescription[0].name
3234
33− buttonText: actionsDescription ? actionsDescription[0].label : "Send"
35+ buttonText: simpleMessage.replyButtonText
36+
37+ onActivate: {
38+ simpleMessage.reply(value);
39+ }
3440 }
3541}
plugins/Unity/IndicatorsLegacy/Messaging/qml/qmldir → plugins/Unity/Indicators/Messaging/qml/qmldirrenamed+2−2
@@ -1,11 +1,11 @@
1−module Unity.IndicatorsLegacy.Messaging
1+module Unity.Indicators.Messaging
22
33ActionButton 0.1 ActionButton.qml
44ActionTextField 0.1 ActionTextField.qml
55GroupedMessage 0.1 GroupedMessage.qml
66HeroMessage 0.1 HeroMessage.qml
77HeroMessageHeader 0.1 HeroMessageHeader.qml
8−MessageMenuItem 0.1 MessageMenuItem.qml
8+MessageMenuItemFactory 0.1 MessageMenuItemFactory.qml
99QuickReply 0.1 QuickReply.qml
1010SimpleTextMessage 0.1 SimpleTextMessage.qml
1111SnapDecision 0.1 SnapDecision.qml
plugins/Unity/IndicatorsLegacy/Messaging/qml/utils.js → plugins/Unity/Indicators/Messaging/qml/utils.jsrenamed

The content is the same.

plugins/Unity/Indicators/qml/BaseMenuItem.qml+1−1
@@ -24,7 +24,7 @@ import Ubuntu.Components.ListItems 0.1 as ListItem
2424ListItem.Standard {
2525 id: baseMenu
2626
27− property bool menuActivated: false
27+ property bool menuSelected: false
2828
2929 signal selectMenu()
3030 signal deselectMenu()
plugins/Unity/Indicators/qml/IndicatorPage.qml+4−4
@@ -89,10 +89,10 @@ IndicatorBase {
8989 menuStack.push(mainMenu.model.submenu(index));
9090 }
9191
92− if (item.hasOwnProperty("menuActivated")) {
93− item.menuActivated = Qt.binding(function() { return ListView.isCurrentItem; });
94− item.selectMenu.connect(function() { ListView.view.currentIndex = index });
95− item.deselectMenu.connect(function() { ListView.view.currentIndex = -1 });
92+ if (item.hasOwnProperty("menuSelected")) {
93+ item.menuSelected = Qt.binding(function() { return mainMenu.currentIndex == index; });
94+ item.selectMenu.connect(function() { mainMenu.currentIndex = index; });
95+ item.deselectMenu.connect(function() { mainMenu.currentIndex = -1; });
9696 }
9797 if (item.hasOwnProperty("menu")) {
9898 item.menu = Qt.binding(function() { return model; });
plugins/Unity/Indicators/qml/MenuItemFactory.qml+67−17
@@ -20,6 +20,7 @@
2020import QtQuick 2.0
2121import Unity.Indicators 0.1 as Indicators
2222import Unity.Indicators.Network 0.1 as ICNetwork
23+import Unity.Indicators.Messaging 0.1 as ICMessaging
2324import QMenuModel 0.1 as QMenuModel
2425
2526Item {
@@ -38,6 +39,9 @@ Item {
3839 "com.canonical.indicator.slider" : sliderMenu,
3940 "com.canonical.indicator.switch" : switchMenu,
4041
42+ "com.canonical.indicator.messages.messageitem" : messageItem,
43+ "com.canonical.indicator.messages.sourceitem" : groupedMessage,
44+
4145 "com.canonical.unity.slider" : sliderMenu,
4246 "com.canonical.unity.switch" : switchMenu,
4347
@@ -45,15 +49,17 @@ Item {
4549 "unity.widgets.systemsettings.tablet.accesspoint" : accessPoint,
4650 }
4751
52+ Component { id: divMenu; Indicators.DivMenuItem {} }
53+
4854 Component {
4955 id: sliderMenu;
5056 Indicators.SliderMenuItem {
5157 property QtObject menu: null
5258
5359 text: menu && menu.label ? menu.label : ""
54− icon: menu ? menu.icon : ""
55− minIcon: menu.ext.minIcon
56− maxIcon: menu.ext.maxIcon
60+ icon: menu && menu.icon ? menu.icon : ""
61+ minIcon: menu && menu.ext.minIcon ? menu.ext.minIcon : ""
62+ maxIcon: menu && menu.ext.maxIcon ? menu.ext.maxIcon : ""
5763
5864 minimumValue: menu.ext.minValue ? menu.ext.minValue : 0.0
5965 maximumValue: {
@@ -94,8 +100,6 @@ Item {
94100 }
95101 }
96102
97− Component { id: divMenu; Indicators.DivMenuItem {} }
98−
99103 Component {
100104 id: buttonMenu;
101105 Indicators.ButtonMenuItem {
@@ -104,7 +108,9 @@ Item {
104108 text: menu && menu.label ? menu.label : ""
105109 enabled: menu ? menu.sensitive : false
106110
107− onActivate: model.activate(modelIndex);
111+ onActivate: {
112+ model.activate(modelIndex);
113+ }
108114 }
109115 }
110116 Component {
@@ -133,12 +139,14 @@ Item {
133139 property QtObject menu: null
134140
135141 text: menu && menu.label ? menu.label : ""
136− icon: menu ? menu.icon : ""
142+ icon: menu && menu.icon ? menu.icon : ""
137143 checkable: menu ? (menu.isCheck || menu.isRadio) : false
138144 checked: checkable ? menu.isToggled : false
139145 enabled: menu ? menu.sensitive : false
140146
141− onActivate: model.activate(modelIndex);
147+ onActivate: {
148+ model.activate(modelIndex);
149+ }
142150 }
143151 }
144152
@@ -148,11 +156,13 @@ Item {
148156 property QtObject menu: null
149157
150158 text: menu && menu.label ? menu.label : ""
151− icon: menu ? menu.icon : ""
159+ icon: menu && menu.icon ? menu.icon : ""
152160 checked: menu ? menu.isToggled : false
153161 enabled: menu ? menu.sensitive : false
154162
155− onActivate: model.activate(modelIndex);
163+ onActivate: {
164+ model.activate(modelIndex);
165+ }
156166 }
157167 }
158168
@@ -174,17 +184,16 @@ Item {
174184 id: accessPoint;
175185 ICNetwork.AccessPoint {
176186 property QtObject menu: null
177−// property var strenthAction: QMenuModel.UnityMenuAction {
178−// model: menuFactory.model ? menuFactory.model : null
179−// name: menu ? menu.ext.xCanonicalWifiApStrengthAction : ""
180−// }
187+ property var strenthAction: QMenuModel.UnityMenuAction {
188+ model: menuFactory.model ? menuFactory.model : null
189+ name: menu ? menu.ext.xCanonicalWifiApStrengthAction : ""
190+ }
181191
182192 text: menu && menu.label ? menu.label : ""
183− icon: menu ? menu.icon : ""
184193 secure: menu ? menu.ext.xCanonicalWifiApIsSecure : false
185194 adHoc: menu ? menu.ext.xCanonicalWifiApIsAdhoc : false
186195 checked: menu ? menu.isToggled : false
187−// signalStrength: strenthAction.valid ? strenthAction.state : 0
196+ signalStrength: strenthAction.valid ? strenthAction.state : 0
188197 enabled: menu ? menu.sensitive : false
189198
190199 Component.onCompleted: {
@@ -192,7 +201,48 @@ Item {
192201 'x-canonical-wifi-ap-is-secure': 'bool',
193202 'x-canonical-wifi-ap-strength-action': 'string'});
194203 }
195− onActivate: model.activate(modelIndex);
204+ onActivate: {
205+ model.activate(modelIndex);
206+ }
207+ }
208+ }
209+
210+ Component {
211+ id: messageItem
212+ ICMessaging.MessageMenuItemFactory {
213+
214+ property QtObject menu: null
215+ model: menuFactory.model ? menuFactory.model : null
216+
217+ Component.onCompleted: {
218+ model.loadExtendedAttributes(modelIndex, {'x-canonical-time': 'int64',
219+ 'x-canonical-text': 'string',
220+ 'x-canonical-message-actions': 'variant',
221+ 'x-canonical-icon': 'string',
222+ 'x-canonical-app-icon': 'string'});
223+ }
224+ }
225+ }
226+
227+ Component {
228+ id: groupedMessage
229+ ICMessaging.GroupedMessage {
230+ property QtObject menu: null
231+
232+ title: menu && menu.label ? menu.label : ""
233+ count: menu && menu.actionState[0] ? menu.actionState[0] : "0"
234+ appIcon: menu && (menu.ext.xCanonicalIcon.length > 0) ? "image://gicon/" + encodeURI(menu.ext.xCanonicalIcon) :
235+ "qrc:/indicators/artwork/messaging/default_app.svg"
236+
237+ Component.onCompleted: {
238+ model.loadExtendedAttributes(modelIndex, {'x-canonical-icon': 'string'});
239+ }
240+ onActivateApp: {
241+ model.activate(modelIndex, true);
242+ }
243+ onDismiss: {
244+ model.activate(modelIndex, false);
245+ }
196246 }
197247 }
198248
plugins/Unity/IndicatorsLegacy/CMakeLists.txt−1
@@ -8,7 +8,6 @@ find_package(Qt5Core REQUIRED)
88find_package(Qt5Quick REQUIRED)
99
1010add_subdirectory(qml)
11−add_subdirectory(Messaging)
1211add_subdirectory(Network)
1312
1413include_directories(
plugins/Unity/IndicatorsLegacy/Messaging/qml/CMakeLists.txtdeleted−5
@@ -1,5 +0,0 @@
1−# export_qmlfiles macro
2−include(Plugins)
3−
4−# export the qmldir, *.qml files.
5−export_qmlfiles(Unity.IndicatorsLegacy.Messaging Unity/IndicatorsLegacy/Messaging)
plugins/Unity/IndicatorsLegacy/Messaging/qml/MessageMenuItem.qmldeleted−96
@@ -1,96 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− * Olivier Tilloy <olivier.tilloy@canonical.com>
19− */
20−
21−import QtQuick 2.0
22−import Ubuntu.Components 0.1
23−import Unity.IndicatorsLegacy 0.1 as Indicators
24−
25−Indicators.BasicMenuItem {
26− property variant actionsDescription: menu ? menu.extra.canonical_message_actions : undefined
27−
28− onActionGroupChanged: loadItem()
29− onActionsDescriptionChanged: loadItem()
30− implicitHeight: contents.status == Loader.Ready ? contents.item.implicitHeight : 0
31−
32− Loader {
33− id: contents
34−
35− anchors.fill: parent
36− // Binding all properties for the item, to make sure that any change in the
37− // property will be propagated to the contents.item at any time
38− Binding {
39− target: contents.item
40− property: "menuActivated"
41− value: menuActivated
42− when: (contents.status == Loader.Ready)
43− }
44−
45− Binding {
46− target: contents.item
47− property: "actionGroup"
48− value: actionGroup
49− when: (contents.status == Loader.Ready)
50− }
51−
52− Binding {
53− target: contents.item
54− property: "menu"
55− value: menu
56− when: (contents.status == Loader.Ready)
57− }
58−
59− Binding {
60− target: contents.item
61− property: "actionsDescription"
62− value: actionsDescription
63− when: (contents.status == Loader.Ready)
64− }
65−
66− Connections {
67− target: contents.item ? contents.item : null
68− onActivateMenu: activateMenu()
69− onDeactivateMenu: deactivateMenu()
70− }
71− }
72−
73−
74− function loadItem()
75− {
76− var parameterType = ""
77− for (var actIndex in actionsDescription) {
78− var desc = actionsDescription[actIndex];
79− if (desc["parameter-type"] !== undefined) {
80− parameterType += desc["parameter-type"];
81− } else {
82− parameterType += "_";
83− }
84− }
85−
86− if (parameterType === "") {
87− contents.source = "SimpleTextMessage.qml";
88− } else if (parameterType === "s") {
89− contents.source = "TextMessage.qml";
90− } else if (parameterType === "_s") {
91− contents.source = "SnapDecision.qml";
92− } else {
93− console.debug("Unknown paramater type: " + parameterType);
94− }
95− }
96−}
plugins/Unity/IndicatorsLegacy/qml/MenuItemFactory.qml−8
@@ -19,7 +19,6 @@
1919
2020import QtQuick 2.0
2121import Unity.IndicatorsLegacy 0.1 as Indicators
22−import Unity.IndicatorsLegacy.Messaging 0.1 as ICMessaging
2322import Unity.IndicatorsLegacy.Network 0.1 as ICNetwork
2423
2524Item {
@@ -47,10 +46,6 @@ Item {
4746 "com.canonical.indicator.slider" : sliderMenu,
4847 "com.canonical.indicator.switch" : switchMenu,
4948
50− "com.canonical.indicator.messages.messageitem" : messageItem,
51− "com.canonical.indicator.messages.snapdecision" : snapDecision,
52− "com.canonical.indicator.messages.sourceitem" : groupedMessage,
53−
5449 "unity.widget.systemsettings.tablet.sectiontitle" : wifiSection,
5550 "unity.widgets.systemsettings.tablet.wifisection" : wifiSection,
5651 "unity.widgets.systemsettings.tablet.accesspoint" : accessPoint,
@@ -62,9 +57,6 @@ Item {
6257 Component { id: divMenu; Indicators.DivMenuItem {} }
6358 Component { id: sectionMenu; Indicators.SectionMenuItem {} }
6459 Component { id: progressMenu; Indicators.ProgressMenuItem {} }
65− Component { id: messageItem; ICMessaging.MessageMenuItem {} }
66− Component { id: snapDecision; ICMessaging.SnapDecision {} }
67− Component { id: groupedMessage; ICMessaging.GroupedMessage {} }
6860 Component { id: wifiSection; ICNetwork.WifiSection {} }
6961 Component { id: accessPoint; ICNetwork.AccessPoint {} }
7062 Component { id: indicatorMenu; Indicators.MenuItem {} }
src/Panel/Indicators/CMakeLists.txt−1
@@ -1,2 +1 @@
11add_subdirectory(client)
2−add_subdirectory(servicefiles)
src/Panel/Indicators/servicefiles/CMakeLists.txtdeleted−14
@@ -1,14 +0,0 @@
1−file(GLOB INDICATOR_SERVICE_FILES
2− ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.indicator.messages
3−)
4−
5−# copy indicators files into build directory for shadow builds
6−add_custom_target(IndicatorsServiceFiles ALL
7− COMMAND mkdir -p ${CMAKE_BINARY_DIR}/share/unity/indicators
8− COMMAND cp ${INDICATOR_SERVICE_FILES} ${CMAKE_BINARY_DIR}/share/unity/indicators
9− DEPENDS ${INDICATOR_SERVICE_FILES}
10−)
11−
12−install(FILES ${INDICATOR_SERVICE_FILES}
13− DESTINATION ${SHELL_APP_DIR}/unity/indicators
14−)
src/Panel/Indicators/servicefiles/com.canonical.indicator.messagesdeleted−10
@@ -1,10 +0,0 @@
1−[Indicator Service]
2−Name=indicator-messages
3−ObjectPath=/com/canonical/indicator/messages
4−Position=50
5−
6−[phone]
7−ObjectPath=/com/canonical/indicator/messages/phone
8−
9−[desktop]
10−ObjectPath=/com/canonical/indicator/messages/menu