| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,26 @@ | ||
| find_package(Qt5 5.2 REQUIRED COMPONENTS DBus) | ||
|
|
||
| pkg_check_modules(NNQT5 REQUIRED nemonotifications-qt5) | ||
| include_directories(${NNQT5_INCLUDE_DIRS}) | ||
|
|
||
| set(kdeconnectsfos_SRCS | ||
| kdeconnect-sfos.cpp | ||
| ) | ||
|
|
||
| add_executable(kdeconnect-sfos ${kdeconnectsfos_SRCS}) | ||
| target_link_libraries(kdeconnect-sfos Qt5::Quick sailfishapp) | ||
|
|
||
| install(TARGETS kdeconnect-sfos ${INSTALL_TARGETS_DEFAULT_ARGS}) | ||
| install(PROGRAMS kdeconnect-sfos.desktop DESTINATION ${XDG_APPS_INSTALL_DIR}) | ||
| INSTALL( DIRECTORY qml DESTINATION ${SHARE_INSTALL_PREFIX}/kdeconnect-sfos/ ) | ||
|
|
||
| #Daemon | ||
| add_executable(kdeconnectd sailfishdaemon.cpp) | ||
| target_link_libraries(kdeconnectd kdeconnectcore KF5::DBusAddons ${NNQT5_LIBRARIES} KF5::I18n) | ||
|
|
||
| configure_file(kdeconnectd.desktop.cmake ${CMAKE_CURRENT_BINARY_DIR}/kdeconnectd.desktop) | ||
| configure_file(org.kde.kdeconnect.service.in ${CMAKE_CURRENT_BINARY_DIR}/org.kde.kdeconnect.service) | ||
|
|
||
| install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kdeconnectd.desktop DESTINATION ${AUTOSTART_INSTALL_DIR}) | ||
| install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.kde.kdeconnect.service DESTINATION ${DBUS_SERVICES_INSTALL_DIR}) | ||
| install(TARGETS kdeconnectd DESTINATION ${LIBEXEC_INSTALL_DIR}) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| /* | ||
| Copyright (C) 2013 Jolla Ltd. | ||
| Contact: Thomas Perl <thomas.perl@jollamobile.com> | ||
| All rights reserved. | ||
| You may use this file under the terms of BSD license as follows: | ||
| Redistribution and use in source and binary forms, with or without | ||
| modification, are permitted provided that the following conditions are met: | ||
| * Redistributions of source code must retain the above copyright | ||
| notice, this list of conditions and the following disclaimer. | ||
| * Redistributions in binary form must reproduce the above copyright | ||
| notice, this list of conditions and the following disclaimer in the | ||
| documentation and/or other materials provided with the distribution. | ||
| * Neither the name of the Jolla Ltd nor the | ||
| names of its contributors may be used to endorse or promote products | ||
| derived from this software without specific prior written permission. | ||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR | ||
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
| ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| */ | ||
|
|
||
| #ifdef QT_QML_DEBUG | ||
| #include <QtQuick> | ||
| #endif | ||
|
|
||
| #include <sailfishapp/sailfishapp.h> | ||
| #include <QGuiApplication> | ||
| #include <QQuickView> | ||
|
|
||
| int main(int argc, char *argv[]) | ||
| { | ||
| // SailfishApp::main() will display "qml/kdeconnect-sfos.qml", if you need more | ||
| // control over initialization, you can use: | ||
| // | ||
| // - SailfishApp::application(int, char *[]) to get the QGuiApplication * | ||
| // - SailfishApp::createView() to get a new QQuickView * instance | ||
| // - SailfishApp::pathTo(QString) to get a QUrl to a resource file | ||
| // - SailfishApp::pathToMainQml() to get a QUrl to the main QML file | ||
| // | ||
| // To display the view, call "show()" (will show fullscreen on device). | ||
|
|
||
| //return SailfishApp::main(argc, argv); | ||
| QGuiApplication *app = SailfishApp::application(argc, argv); | ||
| QScopedPointer<QQuickView> view(SailfishApp::createView()); | ||
|
|
||
| view->setSource(SailfishApp::pathTo("qml/kdeconnect-sfos.qml")); | ||
| view->showFullScreen(); | ||
|
|
||
| return app->exec(); | ||
| } | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| [Desktop Entry] | ||
| Type=Application | ||
| X-Nemo-Application-Type=generic | ||
| Icon=kdeconnect | ||
| Exec=kdeconnect-sfos | ||
| Name=KDE Connect | ||
| # translation example: | ||
| # your app name in German locale (de) | ||
| # | ||
| # Remember to comment out the following line, if you do not want to use | ||
| # a different app name in German locale (de). | ||
| #Name[de]=kdeconnect-sfos |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| [Desktop Entry] | ||
| Type=Application | ||
| Exec=${KDE_INSTALL_FULL_LIBEXECDIR}/kdeconnectd | ||
| X-KDE-StartupNotify=false | ||
| X-KDE-autostart-phase=1 | ||
| X-GNOME-Autostart-enabled=true | ||
| OnlyShowIn=KDE;GNOME;Unity;XFCE; | ||
| NoDisplay=true | ||
|
|
||
| Name=KDEConnect daemon | ||
| Name[ar]=عفريت KDEConnect | ||
| Name[ast]=Degorriu KDEConnect | ||
| Name[bg]=Услуга KDE Connect | ||
| Name[ca]=Dimoni del KDEConnect | ||
| Name[ca@valencia]=Dimoni del KDEConnect | ||
| Name[cs]=Démon KDE Connect | ||
| Name[da]=KDEConnect-dæmon | ||
| Name[de]=KDE-Connect-Dienst | ||
| Name[el]=Δαίμονας του KDEConnect | ||
| Name[en_GB]=KDEConnect daemon | ||
| Name[es]=Demonio de KDE Connect | ||
| Name[et]=KDEConnecti deemon | ||
| Name[eu]=KDEConnect daimona | ||
| Name[fi]=KDEConnect-taustapalvelu | ||
| Name[fr]=Démon KDE Connect | ||
| Name[gl]=Servizo de KDE Connect | ||
| Name[he]=דמון KDEConnect | ||
| Name[hu]=KDEConnect szolgáltatás | ||
| Name[it]=Demone KDE Connect | ||
| Name[ko]=KDE Connect 데몬 | ||
| Name[nl]=KDEConnect-daemon | ||
| Name[nn]=KDEConnect-teneste | ||
| Name[pl]=Usługa KDEConnect | ||
| Name[pt]=Serviço do KDE Connect | ||
| Name[pt_BR]=Serviço do KDE Connect | ||
| Name[ru]=Служба KDE Connect | ||
| Name[sk]=KDEConnect démon | ||
| Name[sr]=КДЕ‑конекцијин демон | ||
| Name[sr@ijekavian]=КДЕ‑конекцијин демон | ||
| Name[sr@ijekavianlatin]=KDE‑konekcijin demon | ||
| Name[sr@latin]=KDE‑konekcijin demon | ||
| Name[sv]=Demon för KDE-anslut | ||
| Name[tr]=KDEConnect süreci | ||
| Name[uk]=Фонова служба KDEConnect | ||
| Name[x-test]=xxKDEConnect daemonxx | ||
| Name[zh_CN]=KDEConnect 守护进程 | ||
| Name[zh_TW]=KDE連線作業 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| [D-BUS Service] | ||
| Name=org.kde.kdeconnect | ||
| Exec=@KDE_INSTALL_FULL_LIBEXECDIR@/kdeconnectd |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,74 @@ | ||
| /* | ||
| Copyright (C) 2013 Jolla Ltd. | ||
| Contact: Thomas Perl <thomas.perl@jollamobile.com> | ||
| All rights reserved. | ||
| You may use this file under the terms of BSD license as follows: | ||
| Redistribution and use in source and binary forms, with or without | ||
| modification, are permitted provided that the following conditions are met: | ||
| * Redistributions of source code must retain the above copyright | ||
| notice, this list of conditions and the following disclaimer. | ||
| * Redistributions in binary form must reproduce the above copyright | ||
| notice, this list of conditions and the following disclaimer in the | ||
| documentation and/or other materials provided with the distribution. | ||
| * Neither the name of the Jolla Ltd nor the | ||
| names of its contributors may be used to endorse or promote products | ||
| derived from this software without specific prior written permission. | ||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR | ||
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
| ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| */ | ||
|
|
||
| import QtQuick 2.0 | ||
| import Sailfish.Silica 1.0 | ||
| import org.kde.kdeconnect 1.0 | ||
|
|
||
| CoverBackground { | ||
| Label { | ||
| id: label | ||
| anchors.top: parent.top | ||
| anchors.topMargin: Theme.paddingMedium | ||
| anchors.horizontalCenter: parent.horizontalCenter | ||
| text: qsTr("KDE Connect") | ||
| } | ||
|
|
||
| SilicaListView { | ||
| id: devices | ||
| anchors.top: label.bottom | ||
| anchors.margins: Theme.paddingSmall | ||
| anchors.bottom: parent.bottom | ||
| anchors.left: parent.left | ||
| anchors.right: parent.right | ||
| visible: count > 0 | ||
|
|
||
| model: DevicesSortProxyModel { | ||
| sourceModel: DevicesModel { displayFilter: DevicesModel.Reachable | DevicesModel.Paired } | ||
| } | ||
|
|
||
| width: parent.width | ||
| spacing: Theme.paddingLarge | ||
|
|
||
| delegate: ListItem { | ||
| width: ListView.view.width | ||
| height: Theme.itemSizeMedium | ||
|
|
||
| Label { text: display } | ||
| } | ||
| } | ||
| Label { | ||
| text: qsTr("No paired \ndevices in range") | ||
| anchors.centerIn: parent | ||
| visible: devices.count == 0 | ||
| } | ||
|
|
||
| } | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| /* | ||
| Copyright (C) 2013 Jolla Ltd. | ||
| Contact: Thomas Perl <thomas.perl@jollamobile.com> | ||
| All rights reserved. | ||
| You may use this file under the terms of BSD license as follows: | ||
| Redistribution and use in source and binary forms, with or without | ||
| modification, are permitted provided that the following conditions are met: | ||
| * Redistributions of source code must retain the above copyright | ||
| notice, this list of conditions and the following disclaimer. | ||
| * Redistributions in binary form must reproduce the above copyright | ||
| notice, this list of conditions and the following disclaimer in the | ||
| documentation and/or other materials provided with the distribution. | ||
| * Neither the name of the Jolla Ltd nor the | ||
| names of its contributors may be used to endorse or promote products | ||
| derived from this software without specific prior written permission. | ||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR | ||
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
| ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| */ | ||
|
|
||
| import QtQuick 2.0 | ||
| import Sailfish.Silica 1.0 | ||
| import "pages" | ||
|
|
||
| ApplicationWindow | ||
| { | ||
| initialPage: Component { FirstPage { } } | ||
| cover: Qt.resolvedUrl("cover/CoverPage.qml") | ||
| allowedOrientations: defaultAllowedOrientations | ||
|
|
||
| Keys.onPressed: { | ||
| if (event.key == Qt.Key_Back) { | ||
| console.log("back"); | ||
| pageStack.pop(); | ||
| } | ||
| } | ||
| } | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,105 @@ | ||
| /* | ||
| Copyright (C) 2013 Jolla Ltd. | ||
| Contact: Thomas Perl <thomas.perl@jollamobile.com> | ||
| All rights reserved. | ||
| You may use this file under the terms of BSD license as follows: | ||
| Redistribution and use in source and binary forms, with or without | ||
| modification, are permitted provided that the following conditions are met: | ||
| * Redistributions of source code must retain the above copyright | ||
| notice, this list of conditions and the following disclaimer. | ||
| * Redistributions in binary form must reproduce the above copyright | ||
| notice, this list of conditions and the following disclaimer in the | ||
| documentation and/or other materials provided with the distribution. | ||
| * Neither the name of the Jolla Ltd nor the | ||
| names of its contributors may be used to endorse or promote products | ||
| derived from this software without specific prior written permission. | ||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR | ||
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
| ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| */ | ||
|
|
||
| import QtQuick 2.0 | ||
| import Sailfish.Silica 1.0 | ||
| import org.kde.kdeconnect 1.0 | ||
|
|
||
| Page { | ||
| id: deviceView | ||
| property QtObject currentDevice | ||
|
|
||
| // The effective value will be restricted by ApplicationWindow.allowedOrientations | ||
| allowedOrientations: Orientation.Portrait | ||
|
|
||
| Column { | ||
| id: column | ||
| anchors.fill: parent | ||
| spacing: Theme.paddingMedium | ||
|
|
||
| PageHeader { | ||
| title: currentDevice.name | ||
| } | ||
|
|
||
| Label { | ||
| anchors.horizontalCenter: parent.horizontalCenter | ||
| text: "Device is " + (currentDevice.isTrusted ? "trusted" : "not trusted") | ||
| } | ||
|
|
||
| Button { | ||
| id: text | ||
| anchors.horizontalCenter: parent.horizontalCenter | ||
| text: currentDevice.isTrusted ? "Un-Pair" : "Pair" | ||
|
|
||
| onClicked: { | ||
| if (currentDevice.isTrusted) { | ||
| currentDevice.unpair() | ||
| } else { | ||
| currentDevice.requestPair() | ||
| } | ||
| } | ||
| } | ||
|
|
||
| Button { | ||
| anchors.horizontalCenter: parent.horizontalCenter | ||
| visible: currentDevice.isTrusted | ||
| text: qsTr("Ping") | ||
| onClicked: { | ||
| currentDevice.pluginCall("ping", "sendPing"); | ||
| } | ||
| } | ||
|
|
||
| PluginItem { | ||
| anchors.horizontalCenter: parent.horizontalCenter | ||
| text: ("Multimedia control") | ||
| interfaceFactory: MprisDbusInterfaceFactory | ||
| component: "mpris.qml" | ||
| pluginName: "mprisremote" | ||
| } | ||
| PluginItem { | ||
| anchors.horizontalCenter: parent.horizontalCenter | ||
| text: ("Remote input") | ||
| interfaceFactory: RemoteControlDbusInterfaceFactory | ||
| component: "mousepad.qml" | ||
| pluginName: "remotecontrol" | ||
| } | ||
| PluginItem { | ||
| anchors.horizontalCenter: parent.horizontalCenter | ||
| readonly property var lockIface: LockDeviceDbusInterfaceFactory.create(deviceView.currentDevice.id()) | ||
| pluginName: "lockdevice" | ||
| text: lockIface.isLocked ? ("Unlock") : ("Lock") | ||
| onClicked: { | ||
| lockIface.isLocked = !lockIface.isLocked; | ||
| } | ||
| } | ||
| } | ||
| } | ||
|
|
||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,77 @@ | ||
| /* | ||
| Copyright (C) 2013 Jolla Ltd. | ||
| Contact: Thomas Perl <thomas.perl@jollamobile.com> | ||
| All rights reserved. | ||
| You may use this file under the terms of BSD license as follows: | ||
| Redistribution and use in source and binary forms, with or without | ||
| modification, are permitted provided that the following conditions are met: | ||
| * Redistributions of source code must retain the above copyright | ||
| notice, this list of conditions and the following disclaimer. | ||
| * Redistributions in binary form must reproduce the above copyright | ||
| notice, this list of conditions and the following disclaimer in the | ||
| documentation and/or other materials provided with the distribution. | ||
| * Neither the name of the Jolla Ltd nor the | ||
| names of its contributors may be used to endorse or promote products | ||
| derived from this software without specific prior written permission. | ||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR | ||
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
| ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| */ | ||
|
|
||
| import QtQuick 2.0 | ||
| import Sailfish.Silica 1.0 | ||
| import org.kde.kdeconnect 1.0 | ||
|
|
||
| Page { | ||
| id: page | ||
|
|
||
| // The effective value will be restricted by ApplicationWindow.allowedOrientations | ||
| allowedOrientations: Orientation.Portrait | ||
|
|
||
| // To enable PullDownMenu, place our content in a SilicaFlickable | ||
| SilicaListView { | ||
| anchors.fill: parent | ||
|
|
||
| header: PageHeader { | ||
| title: qsTr("Devices") | ||
| } | ||
|
|
||
| // Place our content in a Column. The PageHeader is always placed at the top | ||
| // of the page, followed by our content. | ||
|
|
||
| id: devices | ||
| model: DevicesModel { | ||
| id: devicesModel | ||
| } | ||
|
|
||
| width: page.width | ||
| spacing: Theme.paddingLarge | ||
|
|
||
|
|
||
| delegate: ListItem { | ||
| width: ListView.view.width | ||
| height: Theme.itemSizeMedium | ||
|
|
||
| Label { text: display + "\n" + toolTip } | ||
|
|
||
| onClicked: { | ||
| var devicePage = pageStack.push(Qt.resolvedUrl("DevicePage.qml"), | ||
| {currentDevice: device} | ||
| ); | ||
| } | ||
|
|
||
|
|
||
| } | ||
| } | ||
| } | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| /* | ||
| Copyright (C) 2013 Jolla Ltd. | ||
| Contact: Thomas Perl <thomas.perl@jollamobile.com> | ||
| All rights reserved. | ||
| You may use this file under the terms of BSD license as follows: | ||
| Redistribution and use in source and binary forms, with or without | ||
| modification, are permitted provided that the following conditions are met: | ||
| * Redistributions of source code must retain the above copyright | ||
| notice, this list of conditions and the following disclaimer. | ||
| * Redistributions in binary form must reproduce the above copyright | ||
| notice, this list of conditions and the following disclaimer in the | ||
| documentation and/or other materials provided with the distribution. | ||
| * Neither the name of the Jolla Ltd nor the | ||
| names of its contributors may be used to endorse or promote products | ||
| derived from this software without specific prior written permission. | ||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR | ||
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
| ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
| */ | ||
|
|
||
| import QtQuick 2.0 | ||
| import Sailfish.Silica 1.0 | ||
| import org.kde.kdeconnect 1.0 | ||
| import Nemo.Notifications 1.0 | ||
|
|
||
| Page { | ||
| allowedOrientations: Orientation.Portrait | ||
|
|
||
| SilicaFlickable { | ||
| anchors.fill: parent | ||
| contentHeight: column.height | ||
|
|
||
| // PullDownMenu and PushUpMenu must be declared in SilicaFlickable, SilicaListView or SilicaGridView | ||
| PullDownMenu { | ||
| MenuItem { | ||
| text: qsTr("Find Devices") | ||
| onClicked: pageStack.push(Qt.resolvedUrl("FindDevices.qml")) | ||
| } | ||
| } | ||
|
|
||
| Column { | ||
| id: column | ||
| width: parent.width | ||
| spacing: 20 | ||
|
|
||
| PageHeader { title: "KDE Connect" } | ||
|
|
||
| } | ||
| } | ||
| } | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| /* | ||
| * Copyright 2015 Aleix Pol Gonzalez <aleixpol@kde.org> | ||
| * | ||
| * This program is free software; you can redistribute it and/or | ||
| * modify it under the terms of the GNU General Public License as | ||
| * published by the Free Software Foundation; either version 2 of | ||
| * the License or (at your option) version 3 or any later version | ||
| * accepted by the membership of KDE e.V. (or its successor approved | ||
| * by the membership of KDE e.V.), which shall act as a proxy | ||
| * defined in Section 14 of version 3 of the license. | ||
| * | ||
| * This program is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| * GNU General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU General Public License | ||
| * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| */ | ||
|
|
||
| import QtQuick 2.0 | ||
| import Sailfish.Silica 1.0 | ||
| import org.kde.kdeconnect 1.0 | ||
|
|
||
| Button | ||
| { | ||
| property alias pluginName: checker.pluginName | ||
| property var interfaceFactory | ||
| property string component | ||
|
|
||
| readonly property var checker: PluginChecker { | ||
| id: checker | ||
| device: deviceView.currentDevice | ||
| } | ||
| visible: checker.available | ||
| onClicked: { | ||
| if (component === "") | ||
| return; | ||
|
|
||
| var obj = interfaceFactory.create(deviceView.currentDevice.id()); | ||
| var page = pageStack.push( | ||
| component, | ||
| { pluginInterface: obj } | ||
| ); | ||
| obj.parent = page | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,104 @@ | ||
| /* | ||
| * Copyright 2015 Aleix Pol Gonzalez <aleixpol@kde.org> | ||
| * | ||
| * This program is free software; you can redistribute it and/or | ||
| * modify it under the terms of the GNU General Public License as | ||
| * published by the Free Software Foundation; either version 2 of | ||
| * the License or (at your option) version 3 or any later version | ||
| * accepted by the membership of KDE e.V. (or its successor approved | ||
| * by the membership of KDE e.V.), which shall act as a proxy | ||
| * defined in Section 14 of version 3 of the license. | ||
| * | ||
| * This program is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| * GNU General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU General Public License | ||
| * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| */ | ||
|
|
||
| import QtQuick 2.0 | ||
| import Sailfish.Silica 1.0 | ||
| import org.kde.kdeconnect 1.0 | ||
|
|
||
| Page | ||
| { | ||
| id: mousepad | ||
| property QtObject pluginInterface | ||
| backNavigation: false | ||
|
|
||
| Column | ||
| { | ||
| anchors.fill: parent | ||
| PageHeader { | ||
| id: header | ||
| title: "Remote Control" | ||
| } | ||
| MouseArea { | ||
| id: area | ||
| width: parent.width | ||
| height: parent.height - buttons.height - header.height - 20 | ||
| property var lastPos: Qt.point(-1, -1) | ||
|
|
||
| //onClicked: mousepad.pluginInterface.sendCommand("singleclick", true); | ||
|
|
||
| onPositionChanged: { | ||
| if (lastPos.x > -1) { | ||
| //console.log("move", mouse.x, mouse.y, lastPos) | ||
| var delta = Qt.point(mouse.x-lastPos.x, mouse.y-lastPos.y); | ||
|
|
||
| pluginInterface.moveCursor(delta); | ||
| } | ||
| lastPos = Qt.point(mouse.x, mouse.y); | ||
| } | ||
| onReleased: { | ||
| lastPos = Qt.point(-1, -1) | ||
| } | ||
| } | ||
| Row { | ||
| id: buttons | ||
| height: childrenRect.height | ||
| width: parent.width | ||
|
|
||
| Button { | ||
| width: parent.width / 3 | ||
| text: "Single" | ||
| onClicked: mousepad.pluginInterface.sendCommand("singleclick", true); | ||
| } | ||
| Button { | ||
| width: parent.width / 3 | ||
| text: "Middle" | ||
| onClicked: mousepad.pluginInterface.sendCommand("middleclick", true); | ||
| } | ||
| Button { | ||
| width: parent.width / 3 | ||
| text: "Right" | ||
| onClicked: mousepad.pluginInterface.sendCommand("rightclick", true); | ||
| } | ||
| } | ||
| } | ||
|
|
||
| function myPop() { | ||
| pageStack._pageStackIndicator._backPageIndicator().data[0].clicked.disconnect(myPop) | ||
| pageStack.pop() | ||
| } | ||
|
|
||
| onStatusChanged: { | ||
| if (status == PageStatus.Active) { | ||
| pageStack._createPageIndicator() | ||
| pageStack._pageStackIndicator.clickablePageIndicators = true | ||
| pageStack._pageStackIndicator._backPageIndicator().backNavigation = true | ||
| pageStack._pageStackIndicator._backPageIndicator().data[0].clicked.connect(myPop) | ||
| } else if (status == PageStatus.Deactivating) { | ||
| pageStack._pageStackIndicator.clickablePageIndicators = Qt.binding(function() { | ||
| return pageStack.currentPage ? pageStack.currentPage._clickablePageIndicators : true | ||
| }) | ||
| pageStack._pageStackIndicator._backPageIndicator().backNavigation = Qt.binding(function() { | ||
| return pageStack._currentContainer && pageStack._currentContainer.page | ||
| && pageStack._currentContainer.page.backNavigation && pageStack._currentContainer.pageStackIndex !== 0 | ||
| }) | ||
| } | ||
| } | ||
|
|
||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,82 @@ | ||
| /* | ||
| * Copyright 2015 Aleix Pol Gonzalez <aleixpol@kde.org> | ||
| * | ||
| * This program is free software; you can redistribute it and/or | ||
| * modify it under the terms of the GNU General Public License as | ||
| * published by the Free Software Foundation; either version 2 of | ||
| * the License or (at your option) version 3 or any later version | ||
| * accepted by the membership of KDE e.V. (or its successor approved | ||
| * by the membership of KDE e.V.), which shall act as a proxy | ||
| * defined in Section 14 of version 3 of the license. | ||
| * | ||
| * This program is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| * GNU General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU General Public License | ||
| * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| */ | ||
|
|
||
| import QtQuick 2.0 | ||
| import Sailfish.Silica 1.0 | ||
| import org.kde.kdeconnect 1.0 | ||
|
|
||
| Page | ||
| { | ||
| id: root | ||
| property QtObject pluginInterface | ||
|
|
||
| Column | ||
| { | ||
| anchors.fill: parent | ||
| PageHeader { title: "Multimedia Controls" } | ||
|
|
||
| Component.onCompleted: { | ||
| pluginInterface.requestPlayerList(); | ||
| } | ||
|
|
||
| Item { height: parent.height } | ||
| ComboBox { | ||
| label: "Player" | ||
| width: parent.width | ||
| onCurrentIndexChanged: root.pluginInterface.player = value | ||
|
|
||
| menu: ContextMenu { | ||
| Repeater { | ||
| model: root.pluginInterface.playerList | ||
| MenuItem { text: modelData } | ||
| } | ||
| } | ||
| } | ||
| Label { | ||
| width: parent.width | ||
| text: root.pluginInterface.nowPlaying | ||
| } | ||
| Row { | ||
| width: parent.width | ||
| IconButton { | ||
| icon.source: "image://theme/icon-m-previous" | ||
| onClicked: root.pluginInterface.sendAction("Previous") | ||
| } | ||
| IconButton { | ||
| icon.source: root.pluginInterface.isPlaying ? "icon-m-image://theme/pause" : "image://theme/icon-m-play" | ||
| onClicked: root.pluginInterface.sendAction("PlayPause"); | ||
| } | ||
| IconButton { | ||
| icon.source: "image://theme/icon-m-next" | ||
| onClicked: root.pluginInterface.sendAction("Next") | ||
| } | ||
| } | ||
| Row { | ||
| width: parent.width | ||
| Label { text: ("Volume:") } | ||
| Slider { | ||
| value: root.pluginInterface.volume | ||
| maximumValue: 100 | ||
| width: parent.width | ||
| } | ||
| } | ||
| Item { height: parent.height } | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| # Rename this file as kdeconnect-sfos.changes to include changelog | ||
| # entries in your RPM file. | ||
| # | ||
| # Add new changelog entries following the format below. | ||
| # Add newest entries to the top of the list. | ||
| # Separate entries from eachother with a blank line. | ||
| # | ||
| # Alternatively, if your changelog is automatically generated (e.g. with | ||
| # the git-change-log command provided with Sailfish OS SDK), create a | ||
| # kdeconnect-sfos.changes.run script to let mb2 run the required commands for you. | ||
|
|
||
| # * date Author's Name <author's email> version-release | ||
| # - Summary of changes | ||
|
|
||
| * Sun Apr 13 2014 Jack Tar <jack.tar@example.com> 0.0.1-1 | ||
| - Scrubbed the deck | ||
| - Hoisted the sails | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| #!/bin/bash | ||
| # | ||
| # Rename this file as kdeconnect-sfos.changes.run to let mb2 automatically | ||
| # generate changelog from well formatted Git commit messages and tag | ||
| # annotations. | ||
|
|
||
| git-change-log | ||
|
|
||
| # Here are some basic examples how to change from the default behavior. Run | ||
| # git-change-log --help inside the Sailfish OS SDK chroot or build engine to | ||
| # learn all the options git-change-log accepts. | ||
|
|
||
| # Use a subset of tags | ||
| #git-change-log --tags refs/tags/my-prefix/* | ||
|
|
||
| # Group entries by minor revision, suppress headlines for patch-level revisions | ||
| #git-change-log --dense '/[0-9]\+\.[0-9\+$' | ||
|
|
||
| # Trim very old changes | ||
| #git-change-log --since 2014-04-01 | ||
| #echo '[ Some changelog entries trimmed for brevity ]' | ||
|
|
||
| # Use the subjects (first lines) of tag annotations when no entry would be | ||
| # included for a revision otherwise | ||
| #git-change-log --auto-add-annotations |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| # | ||
| # Do NOT Edit the Auto-generated Part! | ||
| # Generated by: spectacle version 0.27 | ||
| # | ||
|
|
||
| Name: kdeconnect-sfos | ||
|
|
||
| # >> macros | ||
| # << macros | ||
|
|
||
| Summary: KDEConnect client for Sailfish | ||
| Version: 0.1 | ||
| Release: 1 | ||
| Group: Qt/Qt | ||
| License: LICENSE | ||
| URL: http://example.org/ | ||
| Source0: %{name}-%{version}.tar.bz2 | ||
| Source100: kdeconnect-sfos.yaml | ||
| Requires: sailfishsilica-qt5 >= 0.10.9 | ||
| BuildRequires: pkgconfig(sailfishapp) >= 1.0.2 | ||
| BuildRequires: pkgconfig(Qt5Core) | ||
| BuildRequires: pkgconfig(Qt5Qml) | ||
| BuildRequires: pkgconfig(Qt5Quick) | ||
| BuildRequires: pkgconfig(nemonotifications-qt5) | ||
| BuildRequires: pkgconfig(qca2-qt5) >= 2.0.0 | ||
| BuildRequires: desktop-file-utils | ||
| BuildRequires: cmake >= 3.0 | ||
| BuildRequires: extra-cmake-modules >= 5.31.0 | ||
| BuildRequires: kcoreaddons-devel >= 5.31.0 | ||
| BuildRequires: kdbusaddons-devel >= 5.31.0 | ||
| BuildRequires: ki18n-devel >= 5.31.0 | ||
| BuildRequires: kconfig-devel >= 5.31.0 | ||
| BuildRequires: kiconthemes-devel >= 5.31.0 | ||
|
|
||
| %description | ||
| Short description of my Sailfish OS Application | ||
|
|
||
|
|
||
| %prep | ||
| %setup -q | ||
|
|
||
| # >> setup | ||
| # << setup | ||
|
|
||
| %build | ||
| # >> build pre | ||
| # << build pre | ||
| mkdir -p build | ||
| cd build | ||
| %cmake .. -DSAILFISHOS=YES | ||
| make %{?jobs:-j%jobs} | ||
|
|
||
| # >> build post | ||
| # << build post | ||
|
|
||
| %install | ||
| rm -rf %{buildroot} | ||
| # >> install pre | ||
| # << install pre | ||
| pushd build | ||
| %make_install | ||
| popd | ||
|
|
||
|
|
||
| # >> install post | ||
| # << install post | ||
|
|
||
| desktop-file-install --delete-original \ | ||
| --dir %{buildroot}%{_datadir}/applications \ | ||
| %{buildroot}%{_datadir}/applications/*.desktop | ||
|
|
||
| %files | ||
| %defattr(-,root,root,-) | ||
| %{_bindir} | ||
| %{_libdir} | ||
| %{_datadir}/%{name} | ||
| %{_datadir}/applications/%{name}.desktop | ||
| /etc/xdg/autostart/kdeconnectd.desktop | ||
| /usr/share/dbus-1/services/org.kde.kdeconnect.service | ||
| /usr/share/knotifications5/kdeconnect.notifyrc | ||
| /usr/share/kservicetypes5/kdeconnect_plugin.desktop | ||
| #%{_datadir}/icons/hicolor/*/apps/%{name}.png | ||
| /usr/share/icons/ | ||
| # >> files | ||
| # << files |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,116 @@ | ||
| /** | ||
| * Copyright 2018 Adam Pigg <adam@piggz.co.uk> | ||
| * | ||
| * This program is free software; you can redistribute it and/or | ||
| * modify it under the terms of the GNU General Public License as | ||
| * published by the Free Software Foundation; either version 2 of | ||
| * the License or (at your option) version 3 or any later version | ||
| * accepted by the membership of KDE e.V. (or its successor approved | ||
| * by the membership of KDE e.V.), which shall act as a proxy | ||
| * defined in Section 14 of version 3 of the license. | ||
| * | ||
| * This program is distributed in the hope that it will be useful, | ||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| * GNU General Public License for more details. | ||
| * | ||
| * You should have received a copy of the GNU General Public License | ||
| * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
| */ | ||
|
|
||
| #include <QCoreApplication> | ||
| #include <QNetworkAccessManager> | ||
|
|
||
| #include <KDBusService> | ||
| #include <KLocalizedString> | ||
|
|
||
| #include "core/daemon.h" | ||
| #include "core/device.h" | ||
| #include "core/backends/pairinghandler.h" | ||
| #include "kdeconnect-version.h" | ||
|
|
||
| #include <notification.h> | ||
|
|
||
| class SailfishDaemon : public Daemon | ||
| { | ||
| Q_OBJECT | ||
| Q_CLASSINFO("D-Bus Interface", "org.kde.kdeconnect.daemon") | ||
| public: | ||
| SailfishDaemon(QObject* parent = Q_NULLPTR) | ||
| : Daemon(parent) | ||
| , m_nam(Q_NULLPTR) | ||
| {} | ||
|
|
||
| void askPairingConfirmation(Device* device) override | ||
| { | ||
| qDebug() << "Pairing request from " << device->name().toHtmlEscaped(); | ||
|
|
||
| Notification *notification = new Notification(this); | ||
|
|
||
| notification->setAppName(QCoreApplication::applicationName()); | ||
| notification->setPreviewSummary(i18n("Pairing request from %1", device->name().toHtmlEscaped())); | ||
| notification->setPreviewBody(i18n("Click here to pair")); | ||
| notification->setIcon("icon-s-sync"); | ||
| notification->setExpireTimeout(10000); | ||
|
|
||
| connect(notification, &Notification::closed, | ||
| [=]( uint reason ) { | ||
| qDebug() << "Notification closed" << reason; | ||
| if (reason == 2) { //clicked | ||
| device->acceptPairing(); | ||
| } else { | ||
| device->rejectPairing(); | ||
| } | ||
| }); | ||
|
|
||
| notification->publish(); | ||
| } | ||
|
|
||
| void reportError(const QString & title, const QString & description) override | ||
| { | ||
| qDebug() << "Error: " << title << ":" << description; | ||
| } | ||
|
|
||
| QNetworkAccessManager* networkAccessManager() override | ||
| { | ||
| if (!m_nam) { | ||
| m_nam = new QNetworkAccessManager(this); | ||
| } | ||
| return m_nam; | ||
| } | ||
|
|
||
| void sendSimpleNotification(const QString &eventId, const QString &title, const QString &text, const QString &iconName) override | ||
| { | ||
| Q_UNUSED(eventId); | ||
| Notification *notification = new Notification(this); | ||
|
|
||
| notification->setAppName(QCoreApplication::applicationName()); | ||
| notification->setPreviewSummary(title); | ||
| notification->setPreviewBody(text); | ||
| notification->setIcon(iconName); | ||
| notification->publish(); | ||
| } | ||
|
|
||
|
|
||
| private: | ||
| QNetworkAccessManager* m_nam; | ||
| }; | ||
|
|
||
| int main(int argc, char* argv[]) | ||
| { | ||
| QCoreApplication app(argc, argv); | ||
|
|
||
| app.setApplicationName(QStringLiteral("kdeconnectd")); | ||
| app.setApplicationVersion(QStringLiteral(KDECONNECT_VERSION_STRING)); | ||
| app.setOrganizationDomain(QStringLiteral("kde.org")); | ||
|
|
||
| KDBusService dbusService(KDBusService::Unique); | ||
|
|
||
| Daemon* daemon = new SailfishDaemon; | ||
|
|
||
| QObject::connect(daemon, SIGNAL(destroyed(QObject*)), &app, SLOT(quit())); | ||
|
|
||
| return app.exec(); | ||
| } | ||
|
|
||
| #include "sailfishdaemon.moc" |