Warning, /plasma-mobile/mycroft-plasmoid-mobile/plasmoid/contents/ui/DashNewsDelegate.qml is written in an unsupported language. File is not indexed.

0001 /* Copyright 2016 Aditya Mehra <aix.m@outlook.com>                            
0002 
0003     This library is free software; you can redistribute it and/or
0004     modify it under the terms of the GNU Lesser General Public
0005     License as published by the Free Software Foundation; either
0006     version 2.1 of the License, or (at your option) version 3, or any
0007     later version accepted by the membership of KDE e.V. (or its
0008     successor approved by the membership of KDE e.V.), which shall
0009     act as a proxy defined in Section 6 of version 3 of the license.
0010     
0011     This library is distributed in the hope that it will be useful,
0012     but WITHOUT ANY WARRANTY; without even the implied warranty of
0013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0014     Lesser General Public License for more details.
0015     
0016     You should have received a copy of the GNU Lesser General Public
0017     License along with this library.  If not, see <http://www.gnu.org/licenses/>.
0018 */
0019 
0020 import QtQuick 2.9
0021 import QtQml.Models 2.2
0022 import QtQuick.Controls 2.2
0023 import QtQuick.Layouts 1.3
0024 import org.kde.plasma.core 2.0 as PlasmaCore
0025 import org.kde.plasma.plasmoid 2.0
0026 import org.kde.plasma.components 2.0 as PlasmaComponents
0027 import QtGraphicalEffects 1.0
0028 
0029 Rectangle {
0030         id: dashDelegateItm
0031         height: skillTopRowLayout.height + dashinner.height + dashItemSrcMeta.height + units.gridUnit * 0.5
0032         width: cbwidth - units.gridUnit * 0.50
0033         border.width: 1        
0034         border.color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2)
0035         color: Qt.darker(PlasmaCore.ColorScope.backgroundColor, 1.2) 
0036         layer.enabled: true
0037         layer.effect: DropShadow {
0038             horizontalOffset: 0
0039             verticalOffset: 1
0040             radius: 10
0041             samples: 32
0042             spread: 0.1
0043             color: Qt.rgba(0, 0, 0, 0.3)
0044         }
0045         
0046         Item {
0047             id: contentdlgtitem
0048             width: parent.width - units.gridUnit * 0.05
0049             height: parent.height
0050             
0051             Item {
0052             id: skillTopRowLayout
0053             anchors.top: parent.top
0054             anchors.left: parent.left
0055             anchors.right: parent.right
0056             implicitHeight: dashHeader.implicitHeight + units.gridUnit * 0.5
0057             
0058             Text {
0059                 id: dashHeader
0060                 anchors.left: dashHeaderSeprtr.right
0061                 anchors.leftMargin: units.gridUnit * 0.25
0062                 anchors.verticalCenter: parent.verticalCenter
0063                 width: parent.width - Math.round(contxtnewsitemmenu.width + units.gridUnit * 1.25)
0064                 wrapMode: Text.Wrap;
0065                 font.bold: true;
0066                 font.pointSize: theme.defaultFont.pointSize
0067                 font.letterSpacing: theme.defaultFont.letterSpacing
0068                 font.wordSpacing: theme.defaultFont.wordSpacing
0069                 font.family: theme.defaultFont.family
0070                 renderType: Text.NativeRendering 
0071                 color: PlasmaCore.ColorScope.textColor
0072                 text: model.contents.newsTitle
0073                 
0074                 MouseArea {
0075                     anchors.fill: parent
0076                     hoverEnabled: true
0077                     
0078                     onEntered: {
0079                         dashHeader.color = theme.linkColor
0080                         dashHeader.font.underline = true
0081                     }
0082                     onExited: {
0083                         dashHeader.color = PlasmaCore.ColorScope.textColor
0084                         dashHeader.font.underline = false
0085                     }
0086                     onClicked: {
0087                         Qt.openUrlExternally(model.contents.newsURL)
0088                     }
0089                 }
0090             }
0091             
0092             PlasmaCore.SvgItem {
0093                 id: dashHeaderSeprtr
0094                 anchors {
0095                     left: contxtnewsitemmenu.right
0096                     leftMargin: units.gridUnit * 0.25
0097                     verticalCenter: parent.verticalCenter
0098                 }
0099                 height: units.gridUnit * 1
0100                 width: dashhdrvertSvg.elementSize("vertical-line").width
0101                 z: 110
0102                 elementId: "vertical-line"
0103 
0104                 svg: PlasmaCore.Svg {
0105                     id: dashhdrvertSvg;
0106                     imagePath: "widgets/line"
0107                 }
0108             }
0109 
0110             ToolButton {
0111                 id: contxtnewsitemmenu
0112                 anchors.verticalCenter: parent.verticalCenter
0113                 anchors.left: parent.left
0114                 width: units.gridUnit * 1
0115                 height: units.gridUnit * 1
0116                 Image {
0117                     id: innrnewitemcontxmenuimage
0118                     source: "../images/ctxmenu.png"
0119                     anchors.verticalCenter: parent.verticalCenter
0120                     anchors.horizontalCenter: parent.horizontalCenter
0121                     width: units.gridUnit * 0.60
0122                     height: units.gridUnit * 0.50
0123                 }
0124                 ColorOverlay {
0125                     anchors.fill: innrnewitemcontxmenuimage
0126                     source: innrnewitemcontxmenuimage
0127                     color: theme.textColor
0128                 }
0129                 onClicked: {
0130                     mcmenuItem.open()
0131                     }
0132                 }
0133             }
0134 
0135         Rectangle {
0136                 id: nwsseprator
0137                 width: parent.width
0138                 anchors.top: skillTopRowLayout.bottom
0139                 anchors.topMargin: 1
0140                 height: 2
0141                 color: theme.linkColor
0142         }
0143 
0144         Item {
0145             id: dashinner
0146             width: parent.width
0147             implicitHeight: nwsdesc.height
0148             Layout.minimumHeight: units.gridUnit * 2
0149             anchors.top: nwsseprator.bottom
0150             anchors.topMargin: 1
0151             
0152         Text {
0153             id: nwsdesc
0154             wrapMode: Text.Wrap;
0155             anchors.right: ctxImgIcon.left
0156             anchors.left: parent.left
0157             anchors.leftMargin: 2
0158             font.pointSize: theme.defaultFont.pointSize
0159             font.letterSpacing: theme.defaultFont.letterSpacing
0160             font.wordSpacing: theme.defaultFont.wordSpacing
0161             font.family: theme.defaultFont.family
0162             renderType: Text.NativeRendering 
0163             color: PlasmaCore.ColorScope.textColor
0164             text: model.contents.newsDescription
0165             
0166             Component.onCompleted: {
0167                 if (!nwsdesc.text) {
0168                     nwsdesc.text = model.contents.newsTitle
0169                 }
0170             }
0171         }
0172 
0173         Image {
0174             id: ctxImgIcon
0175             anchors.right: parent.right
0176             anchors.margins: units.gridUnit * 0.5
0177             source: model.contents.newsImgURL
0178             width: 64
0179             height: parent.height
0180             
0181             Component.onCompleted: {
0182                 if (ctxImgIcon.source == "") {
0183                         ctxImgIcon.source = "../images/newsicon.png"
0184                     }
0185                 }
0186             
0187             }
0188         }
0189        
0190         Rectangle {
0191                 id: nwsseprator2
0192                 width: parent.width
0193                 anchors.top: dashinner.bottom
0194                 anchors.topMargin: 1
0195                 height: 2
0196                 color: theme.linkColor
0197         }
0198        
0199          Rectangle {
0200              id: dashItemSrcMeta
0201              implicitWidth: dashItemSrcName.implicitWidth + units.gridUnit * 1
0202              anchors.left: parent.left
0203              anchors.leftMargin: units.gridUnit * 0.05
0204              anchors.top: nwsseprator2.bottom 
0205              anchors.topMargin: 1
0206              color: theme.linkColor
0207              height: units.gridUnit * 1.25
0208 
0209               Text {
0210                   id: dashItemSrcName
0211                   wrapMode: Text.Wrap;
0212                   anchors.centerIn: parent
0213                   font.pointSize: theme.defaultFont.pointSize
0214                   font.letterSpacing: theme.defaultFont.letterSpacing
0215                   font.wordSpacing: theme.defaultFont.wordSpacing
0216                   font.family: theme.defaultFont.family
0217                   renderType: Text.NativeRendering 
0218                   color: PlasmaCore.ColorScope.textColor
0219                   text: model.contents.newsSource
0220                   
0221                 MouseArea {
0222                     anchors.fill: parent
0223                     hoverEnabled: true
0224                     
0225                             onEntered: {
0226                                dashItemSrcMeta.color = theme.textColor
0227                                dashItemSrcName.color = theme.backgroundColor
0228                             }
0229                             onExited: {
0230                                dashItemSrcMeta.color = theme.linkColor
0231                                dashItemSrcName.color = theme.textColor
0232                             }
0233                             onClicked: {
0234                                 Qt.openUrlExternally("https://" + model.contents.newsSource)
0235                             }
0236                         }
0237                     }
0238                 }
0239                 
0240         Text {
0241             id: dashItemPwrBy
0242             anchors.top: nwsseprator2.bottom 
0243             anchors.topMargin: 1
0244             wrapMode: Text.Wrap;
0245             anchors.right: parent.right
0246             font.letterSpacing: theme.defaultFont.letterSpacing
0247             font.wordSpacing: theme.defaultFont.wordSpacing
0248             font.family: theme.defaultFont.family
0249             renderType: Text.NativeRendering 
0250             color: PlasmaCore.ColorScope.textColor
0251             font.pixelSize: 10
0252             text: i18n("<i>Powered By: NewsAPI</i>")
0253             }
0254         }
0255         
0256         Drawer {
0257                 id: mcmenuItem
0258                 width: dwrpaddedwidth
0259                 height: audionewsCardRectbtn.height + shareCardRectbtn.height + removeCardRectbtn.height + disableCardRectbtn.height 
0260                 edge: Qt.TopEdge
0261                 dragMargin: 0
0262 
0263                 Rectangle {
0264                     id: menuRectItem
0265                     anchors.fill: parent
0266                     color: theme.backgroundColor
0267             
0268                     Column {
0269                         id: menuRectColumn
0270                         anchors.fill: parent
0271                         
0272                         Rectangle {
0273                             id: audionewsCardRectbtn
0274                             width: parent.width
0275                             height: units.gridUnit * 2
0276                             color: theme.backgroundColor
0277                             
0278                             Row {
0279                                spacing: 5
0280                                 PlasmaCore.IconItem {
0281                                    id: audionewsCardIcon
0282                                    anchors.verticalCenter: parent.verticalCenter
0283                                    source: "media-playback-start"
0284                                    width: units.gridUnit * 2
0285                                    height: units.gridUnit * 2
0286                                }
0287                                Rectangle {
0288                                    id: audionewsCardSeperater
0289                                    width: 1
0290                                    height: parent.height
0291                                    color: theme.linkColor
0292                                }
0293                                PlasmaComponents.Label {
0294                                    id: audionewsCardLabel
0295                                    anchors.verticalCenter: parent.verticalCenter
0296                                    text: i18n("Play / Listen To News Article")
0297                                 }
0298                             }
0299                             MouseArea {
0300                                 anchors.fill: parent
0301                                 hoverEnabled: true
0302                                     onEntered: {
0303                                         audionewsCardLabel.color = theme.linkColor
0304                                     }
0305                                     onExited:{
0306                                         audionewsCardLabel.color = theme.textColor
0307                                     }
0308                                     onClicked:{
0309                                     mcmenuItem.close()
0310                                     var sendnewsurl = "getarticle newsurl " + model.contents.newsURL
0311                                     var socketmessage = {};
0312                                         socketmessage.type = "recognizer_loop:utterance";
0313                                         socketmessage.data = {};
0314                                         socketmessage.data.utterances = [sendnewsurl];
0315                                         socket.sendTextMessage(JSON.stringify(socketmessage));
0316                                     }
0317                                 }
0318                             }
0319                         
0320                         Rectangle {
0321                             id: btnshorzSepr1
0322                             width: parent.width
0323                             height: 1
0324                             color: theme.linkColor
0325                         }
0326                         
0327                         Rectangle {
0328                             id: shareCardRectbtn
0329                             width: parent.width
0330                             height: units.gridUnit * 2
0331                             color: theme.backgroundColor
0332                             
0333                             Row {
0334                                spacing: 5
0335                                 PlasmaCore.IconItem {
0336                                    id: shareCardIcon
0337                                    anchors.verticalCenter: parent.verticalCenter
0338                                    source: "retweet"
0339                                    width: units.gridUnit * 2
0340                                    height: units.gridUnit * 2
0341                                }
0342                                Rectangle {
0343                                    id: shareCardSeperater
0344                                    width: 1
0345                                    height: parent.height
0346                                    color: theme.linkColor
0347                                }
0348                                PlasmaComponents.Label {
0349                                    id: shareCardLabel
0350                                    anchors.verticalCenter: parent.verticalCenter
0351                                    text: i18n("Share News Link")
0352                                 }
0353                             }
0354                             MouseArea {
0355                                 anchors.fill: parent
0356                                 hoverEnabled: true
0357                                     onEntered: {
0358                                         shareCardLabel.color = theme.linkColor
0359                                     }
0360                                     onExited:{
0361                                         shareCardLabel.color = theme.textColor
0362                                     }
0363                                     onClicked:{
0364                                         mcmenuItem.close()
0365                                         sharePagePopup.open()
0366                                     }
0367                                 }
0368                             }
0369 
0370                         
0371                         Rectangle {
0372                             id: btnshorzSepr2
0373                             width: parent.width
0374                             height: 1
0375                             color: theme.linkColor
0376                         }
0377                         
0378                         Rectangle {
0379                             id: removeCardRectbtn
0380                             width: parent.width
0381                             height: units.gridUnit * 2
0382                             color: theme.backgroundColor
0383                             
0384                             Row {
0385                                spacing: 5
0386                                 PlasmaCore.IconItem {
0387                                    id: removeCardIcon
0388                                    anchors.verticalCenter: parent.verticalCenter
0389                                    source: "archive-remove"
0390                                    width: units.gridUnit * 2
0391                                    height: units.gridUnit * 2
0392                                }
0393                                Rectangle {
0394                                    id: removeCardSeperater
0395                                    width: 1
0396                                    height: parent.height
0397                                    color: theme.linkColor
0398                                }
0399                                PlasmaComponents.Label {
0400                                    id: removeCardLabel
0401                                    anchors.verticalCenter: parent.verticalCenter
0402                                    text: i18n("Remove Card")
0403                                 }
0404                             }
0405                             MouseArea {
0406                                 anchors.fill: parent
0407                                 hoverEnabled: true
0408                                     onEntered: {
0409                                         removeCardLabel.color = theme.linkColor
0410                                     }
0411                                     onExited:{
0412                                         removeCardLabel.color = theme.textColor
0413                                     }
0414                                     onClicked:{
0415                                         dashCardCollectionModel.remove(index)
0416                                     }
0417                                 }
0418                             }
0419                             
0420                         Rectangle {
0421                             id: btnshorzSepr3
0422                             width: parent.width
0423                             height: 1
0424                             color: theme.linkColor
0425                         }
0426                             
0427                         Rectangle {
0428                             id: disableCardRectbtn
0429                             width: parent.width
0430                             height: units.gridUnit * 2
0431                             color: theme.backgroundColor
0432                             
0433                             Row {
0434                                spacing: 5
0435                                 PlasmaCore.IconItem {
0436                                    id: disableCardIcon
0437                                    anchors.verticalCenter: parent.verticalCenter
0438                                    source: "document-close"
0439                                    width: units.gridUnit * 2
0440                                    height: units.gridUnit * 2
0441                                }
0442                                Rectangle {
0443                                    id: disableCardSeperater
0444                                    width: 1
0445                                    height: parent.height
0446                                    color: theme.linkColor
0447                                }
0448                                PlasmaComponents.Label {
0449                                    id: disableCardLabel
0450                                    anchors.verticalCenter: parent.verticalCenter
0451                                    text: i18n("Disable News Cards")
0452                                 }
0453                             }
0454                             MouseArea {
0455                                 anchors.fill: parent
0456                                 hoverEnabled: true
0457                                     onEntered: {
0458                                         disableCardLabel.color = theme.linkColor
0459                                     }
0460                                     onExited:{
0461                                         disableCardLabel.color = theme.textColor
0462                                     }
0463                                     onClicked:{
0464                                         dashCardCollectionModel.remove(index)
0465                                         removeChildCard()
0466                                         newscardswitch.checked = false
0467                                         }
0468                                     }
0469                                 }
0470                         Rectangle {
0471                             id: btnshorzSeprEnd
0472                             width: parent.width
0473                             height: units.gridUnit * 0.75
0474                             color: theme.linkColor
0475                             
0476                             PlasmaCore.IconItem {
0477                                    id: closemenuDrawer
0478                                    anchors.centerIn: parent
0479                                    source: "go-up"
0480                                    width: units.gridUnit * 2
0481                                    height: units.gridUnit * 2
0482                                }
0483                             }
0484                         }
0485                     }
0486                 }
0487             }