Make build for SailfishConnect possible
This commit is contained in:
parent
71ec233f88
commit
f985e36769
30 changed files with 114 additions and 1199 deletions
|
@ -3,14 +3,13 @@ cmake_minimum_required(VERSION 3.0)
|
||||||
project(kdeconnect)
|
project(kdeconnect)
|
||||||
|
|
||||||
if (SAILFISHOS)
|
if (SAILFISHOS)
|
||||||
set(KF5_MIN_VERSION "5.31.0")
|
set(KF5_MIN_VERSION "5.36.0")
|
||||||
set(QT_MIN_VERSION "5.6.0")
|
set(QT_MIN_VERSION "5.6.0")
|
||||||
set(QCA_MIN_VERSION "2.0.0")
|
|
||||||
else()
|
else()
|
||||||
set(KF5_MIN_VERSION "5.64.0")
|
set(KF5_MIN_VERSION "5.64.0")
|
||||||
set(QT_MIN_VERSION "5.10.0")
|
set(QT_MIN_VERSION "5.10.0")
|
||||||
set(QCA_MIN_VERSION "2.1.0")
|
|
||||||
endif()
|
endif()
|
||||||
|
set(QCA_MIN_VERSION "2.1.0")
|
||||||
|
|
||||||
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
|
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
|
||||||
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
|
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
|
||||||
|
@ -32,15 +31,16 @@ ecm_setup_version(1.4.0
|
||||||
)
|
)
|
||||||
|
|
||||||
if (SAILFISHOS)
|
if (SAILFISHOS)
|
||||||
find_package(PkgConfig)
|
set(KF5_REQUIRED_COMPONENTS I18n CoreAddons Config)
|
||||||
set(KF5_REQUIRED_COMPONENTS I18n DBusAddons CoreAddons IconThemes Config)
|
|
||||||
set(KF5_OPTIONAL_COMPONENTS)
|
set(KF5_OPTIONAL_COMPONENTS)
|
||||||
pkg_search_module(SFOS REQUIRED sailfishapp)
|
|
||||||
pkg_check_modules(QCA2 qca2-qt5>=${QCA_MIN_VERSION} REQUIRED)
|
set(Qca_LIBRARY CONAN_PKG::Qca-qt5)
|
||||||
|
|
||||||
add_definitions(-DSAILFISHOS)
|
add_definitions(-DSAILFISHOS)
|
||||||
include_directories(${QCA2_INCLUDEDIR})
|
|
||||||
add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
|
|
||||||
else()
|
else()
|
||||||
|
find_package(Qca-qt5 ${QCA_MIN_VERSION} REQUIRED)
|
||||||
|
set(Qca_LIBRARY qca-qt5)
|
||||||
|
|
||||||
set(KF5_REQUIRED_COMPONENTS I18n ConfigWidgets DBusAddons IconThemes Notifications KIO KCMUtils Service Kirigami2 People)
|
set(KF5_REQUIRED_COMPONENTS I18n ConfigWidgets DBusAddons IconThemes Notifications KIO KCMUtils Service Kirigami2 People)
|
||||||
set(KF5_OPTIONAL_COMPONENTS DocTools)
|
set(KF5_OPTIONAL_COMPONENTS DocTools)
|
||||||
|
|
||||||
|
@ -54,7 +54,6 @@ else()
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
find_package(KF5PulseAudioQt)
|
find_package(KF5PulseAudioQt)
|
||||||
endif()
|
endif()
|
||||||
find_package(Qca-qt5 ${QCA_MIN_VERSION} REQUIRED)
|
|
||||||
|
|
||||||
find_package(KF5PeopleVCard)
|
find_package(KF5PeopleVCard)
|
||||||
set_package_properties(KF5PeopleVCard PROPERTIES
|
set_package_properties(KF5PeopleVCard PROPERTIES
|
||||||
|
@ -63,13 +62,15 @@ else()
|
||||||
TYPE RUNTIME
|
TYPE RUNTIME
|
||||||
)
|
)
|
||||||
|
|
||||||
add_definitions(-DQT_NO_URL_CAST_FROM_STRING -DQT_NO_KEYWORDS -DQT_NO_CAST_FROM_ASCII -DHAVE_KIO)
|
add_definitions(-DHAVE_KIO)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Quick Network Multimedia)
|
add_definitions(-DQT_NO_URL_CAST_FROM_STRING -DQT_NO_KEYWORDS -DQT_NO_CAST_FROM_ASCII)
|
||||||
|
|
||||||
|
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS DBus Quick Network Multimedia)
|
||||||
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS ${KF5_REQUIRED_COMPONENTS})
|
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS ${KF5_REQUIRED_COMPONENTS})
|
||||||
if (KF5_OPTIONAL_COMPONENTS)
|
if (KF5_OPTIONAL_COMPONENTS)
|
||||||
find_package(KF5 ${KF5_MIN_VERSION} COMPONENTS ${KF5_OPTIONAL_COMPONENTS})
|
find_package(KF5 ${KF5_MIN_VERSION} COMPONENTS ${KF5_OPTIONAL_COMPONENTS})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT ZSH_AUTOCOMPLETE_DIR)
|
if (NOT ZSH_AUTOCOMPLETE_DIR)
|
||||||
|
@ -82,14 +83,15 @@ if(PRIVATE_DBUS_ENABLED OR APPLE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory(core)
|
add_subdirectory(core)
|
||||||
add_subdirectory(icon)
|
|
||||||
add_subdirectory(interfaces)
|
|
||||||
add_subdirectory(data)
|
|
||||||
add_subdirectory(plugins)
|
|
||||||
add_subdirectory(cli)
|
|
||||||
add_subdirectory(declarativeplugin)
|
|
||||||
|
|
||||||
if(NOT SAILFISHOS)
|
if (NOT SAILFISHOS)
|
||||||
|
add_subdirectory(icon)
|
||||||
|
add_subdirectory(interfaces)
|
||||||
|
add_subdirectory(data)
|
||||||
|
add_subdirectory(plugins)
|
||||||
|
add_subdirectory(cli)
|
||||||
|
add_subdirectory(declarativeplugin)
|
||||||
|
|
||||||
add_subdirectory(kcm)
|
add_subdirectory(kcm)
|
||||||
add_subdirectory(kcmplugin)
|
add_subdirectory(kcmplugin)
|
||||||
add_subdirectory(daemon)
|
add_subdirectory(daemon)
|
||||||
|
@ -99,21 +101,19 @@ if(NOT SAILFISHOS)
|
||||||
add_subdirectory(nautilus-extension)
|
add_subdirectory(nautilus-extension)
|
||||||
add_subdirectory(fileitemactionplugin)
|
add_subdirectory(fileitemactionplugin)
|
||||||
add_subdirectory(smsapp)
|
add_subdirectory(smsapp)
|
||||||
|
|
||||||
if(BUILD_TESTING)
|
|
||||||
add_subdirectory(tests)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
add_subdirectory(kio)
|
add_subdirectory(kio)
|
||||||
add_subdirectory(plasmoid)
|
add_subdirectory(plasmoid)
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(KF5DocTools_FOUND)
|
||||||
|
add_subdirectory(doc)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(KF5DocTools_FOUND)
|
if(BUILD_TESTING)
|
||||||
add_subdirectory(doc)
|
add_subdirectory(tests)
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
add_subdirectory(sfos)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
||||||
|
|
|
@ -43,13 +43,13 @@ set(kdeconnectcore_SRCS
|
||||||
|
|
||||||
add_library(kdeconnectcore ${kdeconnectcore_SRCS})
|
add_library(kdeconnectcore ${kdeconnectcore_SRCS})
|
||||||
|
|
||||||
target_include_directories(kdeconnectcore PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
|
target_include_directories(kdeconnectcore PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${PROJECT_SOURCE_DIR})
|
||||||
|
|
||||||
target_link_libraries(kdeconnectcore
|
target_link_libraries(kdeconnectcore
|
||||||
PUBLIC
|
PUBLIC
|
||||||
Qt5::Network
|
Qt5::Network
|
||||||
KF5::CoreAddons
|
KF5::CoreAddons
|
||||||
qca-qt5
|
${Qca_LIBRARY}
|
||||||
PRIVATE
|
PRIVATE
|
||||||
Qt5::DBus
|
Qt5::DBus
|
||||||
KF5::I18n
|
KF5::I18n
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "lanlinkprovider.h"
|
#include "lanlinkprovider.h"
|
||||||
#include <daemon.h>
|
#include <daemon.h>
|
||||||
#include "plugins/share/shareplugin.h"
|
#include "plugins/share/shareplugin.h"
|
||||||
|
#include "qtcompat_p.h"
|
||||||
|
|
||||||
#ifdef HAVE_KIO
|
#ifdef HAVE_KIO
|
||||||
#include <kio/global.h>
|
#include <kio/global.h>
|
||||||
|
@ -107,13 +108,21 @@ void CompositeUploadJob::startNextSubJob()
|
||||||
m_currentJobSendPayloadSize = 0;
|
m_currentJobSendPayloadSize = 0;
|
||||||
emitDescription(m_currentJob->getNetworkPacket().get<QString>(QStringLiteral("filename")));
|
emitDescription(m_currentJob->getNetworkPacket().get<QString>(QStringLiteral("filename")));
|
||||||
|
|
||||||
|
#ifdef SAILFISHOS
|
||||||
|
connect(m_currentJob, SIGNAL(processedAmount(KJob*,KJob::Unit,qulonglong)), this, SLOT(slotProcessedAmount(KJob*,KJob::Unit,qulonglong)));
|
||||||
|
#else
|
||||||
connect(m_currentJob, QOverload<KJob*,KJob::Unit,qulonglong>::of(&UploadJob::processedAmount), this, &CompositeUploadJob::slotProcessedAmount);
|
connect(m_currentJob, QOverload<KJob*,KJob::Unit,qulonglong>::of(&UploadJob::processedAmount), this, &CompositeUploadJob::slotProcessedAmount);
|
||||||
|
#endif
|
||||||
//Already done by KCompositeJob
|
//Already done by KCompositeJob
|
||||||
//connect(m_currentJob, &KJob::result, this, &CompositeUploadJob::slotResult);
|
//connect(m_currentJob, &KJob::result, this, &CompositeUploadJob::slotResult);
|
||||||
|
|
||||||
//TODO: Create a copy of the networkpacket that can be re-injected if sending via lan fails?
|
//TODO: Create a copy of the networkpacket that can be re-injected if sending via lan fails?
|
||||||
NetworkPacket np = m_currentJob->getNetworkPacket();
|
NetworkPacket np = m_currentJob->getNetworkPacket();
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(5,8,0)
|
||||||
|
np.setPayload({}, np.payloadSize());
|
||||||
|
#else
|
||||||
np.setPayload(nullptr, np.payloadSize());
|
np.setPayload(nullptr, np.payloadSize());
|
||||||
|
#endif
|
||||||
np.setPayloadTransferInfo({{QStringLiteral("port"), m_port}});
|
np.setPayloadTransferInfo({{QStringLiteral("port"), m_port}});
|
||||||
np.set<int>(QStringLiteral("numberOfFiles"), m_totalJobs);
|
np.set<int>(QStringLiteral("numberOfFiles"), m_totalJobs);
|
||||||
np.set<quint64>(QStringLiteral("totalPayloadSize"), m_totalPayloadSize);
|
np.set<quint64>(QStringLiteral("totalPayloadSize"), m_totalPayloadSize);
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
#include "landevicelink.h"
|
#include "landevicelink.h"
|
||||||
#include "lanpairinghandler.h"
|
#include "lanpairinghandler.h"
|
||||||
#include "kdeconnectconfig.h"
|
#include "kdeconnectconfig.h"
|
||||||
|
#include "qtcompat_p.h"
|
||||||
|
|
||||||
#define MIN_VERSION_WITH_SSL_SUPPORT 6
|
#define MIN_VERSION_WITH_SSL_SUPPORT 6
|
||||||
|
|
||||||
|
@ -370,7 +371,12 @@ void LanLinkProvider::newConnection()
|
||||||
void LanLinkProvider::dataReceived()
|
void LanLinkProvider::dataReceived()
|
||||||
{
|
{
|
||||||
QSslSocket* socket = qobject_cast<QSslSocket*>(sender());
|
QSslSocket* socket = qobject_cast<QSslSocket*>(sender());
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(5,7,0)
|
||||||
|
if (!socket->canReadLine())
|
||||||
|
return;
|
||||||
|
#else
|
||||||
socket->startTransaction();
|
socket->startTransaction();
|
||||||
|
#endif
|
||||||
|
|
||||||
const QByteArray data = socket->readLine();
|
const QByteArray data = socket->readLine();
|
||||||
|
|
||||||
|
@ -379,12 +385,19 @@ void LanLinkProvider::dataReceived()
|
||||||
NetworkPacket* np = new NetworkPacket(QLatin1String(""));
|
NetworkPacket* np = new NetworkPacket(QLatin1String(""));
|
||||||
bool success = NetworkPacket::unserialize(data, np);
|
bool success = NetworkPacket::unserialize(data, np);
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(5,7,0)
|
||||||
|
if (!success) {
|
||||||
|
delete np;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (!success) {
|
if (!success) {
|
||||||
delete np;
|
delete np;
|
||||||
socket->rollbackTransaction();
|
socket->rollbackTransaction();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
socket->commitTransaction();
|
socket->commitTransaction();
|
||||||
|
#endif
|
||||||
|
|
||||||
if (np->type() != PACKET_TYPE_IDENTITY) {
|
if (np->type() != PACKET_TYPE_IDENTITY) {
|
||||||
qCWarning(KDECONNECT_CORE) << "LanLinkProvider/newConnection: Expected identity, received " << np->type();
|
qCWarning(KDECONNECT_CORE) << "LanLinkProvider/newConnection: Expected identity, received " << np->type();
|
||||||
|
|
|
@ -57,7 +57,11 @@ void CompositeFileTransferJob::startNextSubJob()
|
||||||
m_currentJobSendPayloadSize = 0;
|
m_currentJobSendPayloadSize = 0;
|
||||||
emitDescription(m_currentJob->destination().toString());
|
emitDescription(m_currentJob->destination().toString());
|
||||||
m_currentJob->start();
|
m_currentJob->start();
|
||||||
|
#ifdef SAILFISHOS
|
||||||
|
connect(m_currentJob, SIGNAL(processedAmount(KJob*,KJob::Unit,qulonglong)), this, SLOT(slotProcessedAmount(KJob*,KJob::Unit,qulonglong)));
|
||||||
|
#else
|
||||||
connect(m_currentJob, QOverload<KJob*,KJob::Unit,qulonglong>::of(&FileTransferJob::processedAmount), this, &CompositeFileTransferJob::slotProcessedAmount);
|
connect(m_currentJob, QOverload<KJob*,KJob::Unit,qulonglong>::of(&FileTransferJob::processedAmount), this, &CompositeFileTransferJob::slotProcessedAmount);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CompositeFileTransferJob::addSubjob(KJob* job)
|
bool CompositeFileTransferJob::addSubjob(KJob* job)
|
||||||
|
|
|
@ -40,6 +40,42 @@ template <typename T>
|
||||||
void qAsConst(const T &&) Q_DECL_EQ_DELETE;
|
void qAsConst(const T &&) Q_DECL_EQ_DELETE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(5,7,0)
|
||||||
|
template<typename...Args>
|
||||||
|
struct QNonConstOverload
|
||||||
|
{
|
||||||
|
template<typename R, typename T>
|
||||||
|
static constexpr auto of(R (T::*func)(Args...)) noexcept -> decltype(func)
|
||||||
|
{
|
||||||
|
return func;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename...Args>
|
||||||
|
struct QConstOverload
|
||||||
|
{
|
||||||
|
template<typename R, typename T>
|
||||||
|
static constexpr auto of(R (T::*func)(Args...) const) noexcept -> decltype(func)
|
||||||
|
{
|
||||||
|
return func;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename...Args>
|
||||||
|
struct QOverload : QConstOverload<Args...>, QNonConstOverload<Args...>
|
||||||
|
{
|
||||||
|
using QConstOverload<Args...>::of;
|
||||||
|
using QNonConstOverload<Args...>::of;
|
||||||
|
|
||||||
|
template<typename R>
|
||||||
|
static constexpr auto of(R (*func)(Args...)) noexcept -> decltype(func)
|
||||||
|
{
|
||||||
|
return func;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
// compat for Q_FALLTHROUGH
|
// compat for Q_FALLTHROUGH
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(5,8,0)
|
#if QT_VERSION < QT_VERSION_CHECK(5,8,0)
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include <KLocalizedString>
|
#include <KLocalizedString>
|
||||||
#include <KJobTrackerInterface>
|
#include <KJobTrackerInterface>
|
||||||
#include <KPluginFactory>
|
#include <KPluginFactory>
|
||||||
|
#include <KIO/Job>
|
||||||
#include <KIO/MkpathJob>
|
#include <KIO/MkpathJob>
|
||||||
#include <KMimeTypeTrader>
|
#include <KMimeTypeTrader>
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,6 @@
|
||||||
|
|
||||||
#include <QPointer>
|
#include <QPointer>
|
||||||
|
|
||||||
#include <KIO/Job>
|
|
||||||
|
|
||||||
#include <core/kdeconnectplugin.h>
|
#include <core/kdeconnectplugin.h>
|
||||||
#include <core/compositefiletransferjob.h>
|
#include <core/compositefiletransferjob.h>
|
||||||
|
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
find_package(Qt5 5.2 REQUIRED COMPONENTS DBus)
|
|
||||||
|
|
||||||
pkg_check_modules(NNQT5 REQUIRED nemonotifications-qt5)
|
|
||||||
include_directories(${NNQT5_INCLUDE_DIRS})
|
|
||||||
|
|
||||||
pkg_check_modules(KEEPALIVE REQUIRED keepalive)
|
|
||||||
include_directories(${KEEPALIVE_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 ${KEEPALIVE_LIBRARIES})
|
|
||||||
|
|
||||||
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})
|
|
|
@ -1,60 +0,0 @@
|
||||||
/*
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
[Desktop Entry]
|
|
||||||
Type=Application
|
|
||||||
X-Nemo-Application-Type=generic
|
|
||||||
Icon=kdeconnect
|
|
||||||
Exec=kdeconnect-sfos
|
|
||||||
Name=KDE Connect
|
|
||||||
Name[ar]=كدي المتّصل
|
|
||||||
Name[ast]=KDE Connect
|
|
||||||
Name[bg]=KDE Connect
|
|
||||||
Name[bs]=Konekcija KDE
|
|
||||||
Name[ca]=KDE Connect
|
|
||||||
Name[ca@valencia]=KDE Connect
|
|
||||||
Name[cs]=KDE Connect
|
|
||||||
Name[da]=KDE Connect
|
|
||||||
Name[de]=KDE-Connect
|
|
||||||
Name[el]=KDE Connect
|
|
||||||
Name[en_GB]=KDE Connect
|
|
||||||
Name[es]=KDE Connect
|
|
||||||
Name[et]=KDE Connect
|
|
||||||
Name[eu]=KDE Connect
|
|
||||||
Name[fi]=KDE Connect
|
|
||||||
Name[fr]=KDE Connect
|
|
||||||
Name[gl]=KDE Connect
|
|
||||||
Name[he]=KDE Connect
|
|
||||||
Name[hu]=KDE Connect
|
|
||||||
Name[id]=KDE Connect
|
|
||||||
Name[it]=KDE Connect
|
|
||||||
Name[ko]=KDE Connect
|
|
||||||
Name[lt]=KDE Connect
|
|
||||||
Name[nl]=KDE Connect
|
|
||||||
Name[nn]=KDE Connect
|
|
||||||
Name[pl]=KDE Connect
|
|
||||||
Name[pt]=KDE Connect
|
|
||||||
Name[pt_BR]=KDE Connect
|
|
||||||
Name[ro]=KDE Connect
|
|
||||||
Name[ru]=KDE Connect
|
|
||||||
Name[sk]=KDE Connect
|
|
||||||
Name[sr]=КДЕ‑конекција
|
|
||||||
Name[sr@ijekavian]=КДЕ‑конекција
|
|
||||||
Name[sr@ijekavianlatin]=KDE‑konekcija
|
|
||||||
Name[sr@latin]=KDE‑konekcija
|
|
||||||
Name[sv]=KDE-anslut
|
|
||||||
Name[tr]=KDE Connect
|
|
||||||
Name[uk]=З’єднання KDE
|
|
||||||
Name[x-test]=xxKDE Connectxx
|
|
||||||
Name[zh_CN]=KDE Connect
|
|
||||||
Name[zh_TW]=KDE 連線
|
|
||||||
# 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
|
|
|
@ -1,49 +0,0 @@
|
||||||
[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[id]=Daemon KDEConnect
|
|
||||||
Name[it]=Demone KDE Connect
|
|
||||||
Name[ko]=KDE 연결 데몬
|
|
||||||
Name[lt]=KDEConnect tarnyba
|
|
||||||
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 連線守護程式
|
|
|
@ -1,3 +0,0 @@
|
||||||
[D-BUS Service]
|
|
||||||
Name=org.kde.kdeconnect
|
|
||||||
Exec=@KDE_INSTALL_FULL_LIBEXECDIR@/kdeconnectd
|
|
|
@ -1,74 +0,0 @@
|
||||||
/*
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
/*
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,105 +0,0 @@
|
||||||
/*
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,86 +0,0 @@
|
||||||
/*
|
|
||||||
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")
|
|
||||||
}
|
|
||||||
|
|
||||||
PullDownMenu {
|
|
||||||
MenuItem {
|
|
||||||
text: qsTr("Refresh")
|
|
||||||
onClicked: {
|
|
||||||
DaemonDbusInterface.forceOnNetworkChange();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
/*
|
|
||||||
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" }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
/*
|
|
||||||
* 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 <https://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
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,104 +0,0 @@
|
||||||
/*
|
|
||||||
* 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 <https://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
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,138 +0,0 @@
|
||||||
/*
|
|
||||||
* 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 <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import QtQuick 2.0
|
|
||||||
import Sailfish.Silica 1.0
|
|
||||||
import QtQuick.Layouts 1.0
|
|
||||||
import org.kde.kdeconnect 1.0
|
|
||||||
|
|
||||||
Page
|
|
||||||
{
|
|
||||||
id: root
|
|
||||||
property QtObject pluginInterface
|
|
||||||
|
|
||||||
Label {
|
|
||||||
id: noPlayersText
|
|
||||||
text: "No players available"
|
|
||||||
anchors.centerIn: parent
|
|
||||||
visible: pluginInterface.playerList.length == 0
|
|
||||||
}
|
|
||||||
ColumnLayout
|
|
||||||
{
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.margins: Theme.paddingMedium
|
|
||||||
PageHeader { title: "Multimedia Controls" }
|
|
||||||
visible: !noPlayersText.visible
|
|
||||||
|
|
||||||
ComboBox {
|
|
||||||
label: "Player"
|
|
||||||
Layout.fillWidth: true
|
|
||||||
onCurrentIndexChanged: root.pluginInterface.player = value
|
|
||||||
|
|
||||||
menu: ContextMenu {
|
|
||||||
Repeater {
|
|
||||||
model: root.pluginInterface.playerList
|
|
||||||
MenuItem { text: modelData }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Label {
|
|
||||||
id: nowPlaying
|
|
||||||
Layout.fillWidth: true
|
|
||||||
text: root.pluginInterface.nowPlaying
|
|
||||||
visible: root.pluginInterface.title.length == 0
|
|
||||||
wrapMode: Text.Wrap
|
|
||||||
}
|
|
||||||
Label {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
text: root.pluginInterface.title
|
|
||||||
visible: !nowPlaying.visible
|
|
||||||
wrapMode: Text.Wrap
|
|
||||||
}
|
|
||||||
Label {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
text: root.pluginInterface.artist
|
|
||||||
visible: !nowPlaying.visible && !artistAlbum.visible && root.pluginInterface.artist.length > 0
|
|
||||||
wrapMode: Text.Wrap
|
|
||||||
}
|
|
||||||
Label {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
text: root.pluginInterface.album
|
|
||||||
visible: !nowPlaying.visible && !artistAlbum.visible && root.pluginInterface.album.length > 0
|
|
||||||
wrapMode: Text.Wrap
|
|
||||||
}
|
|
||||||
Label {
|
|
||||||
id: artistAlbum
|
|
||||||
Layout.fillWidth: true
|
|
||||||
text: "%1 - %2", root.pluginInterface.artist, root.pluginInterface.album
|
|
||||||
visible: !nowPlaying.visible && root.pluginInterface.album.length > 0 && root.pluginInterface.artist.length > 0
|
|
||||||
wrapMode: Text.Wrap
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
height: childrenRect.height
|
|
||||||
IconButton {
|
|
||||||
id: btnPrev
|
|
||||||
Layout.fillWidth: true
|
|
||||||
icon.source: "image://theme/icon-m-previous"
|
|
||||||
onClicked: root.pluginInterface.sendAction("Previous")
|
|
||||||
}
|
|
||||||
IconButton {
|
|
||||||
id: btnPlay
|
|
||||||
Layout.fillWidth: true
|
|
||||||
icon.source: root.pluginInterface.isPlaying ? "image://theme/icon-m-pause" : "image://theme/icon-m-play"
|
|
||||||
onClicked: root.pluginInterface.sendAction("PlayPause");
|
|
||||||
}
|
|
||||||
IconButton {
|
|
||||||
id: btnNext
|
|
||||||
Layout.fillWidth: true
|
|
||||||
icon.source: "image://theme/icon-m-next"
|
|
||||||
onClicked: root.pluginInterface.sendAction("Next")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Slider {
|
|
||||||
id: sldVolume
|
|
||||||
label: "Volume"
|
|
||||||
maximumValue: 100
|
|
||||||
Layout.fillWidth: true
|
|
||||||
//value: root.pluginInterface.volume
|
|
||||||
onValueChanged: {
|
|
||||||
root.pluginInterface.volume = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Item { height: parent.height }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Connections {
|
|
||||||
target: root.pluginInterface
|
|
||||||
onPropertiesChanged: {
|
|
||||||
sldVolume.value = root.pluginInterface.volume;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Component.onCompleted: {
|
|
||||||
pluginInterface.requestPlayerList();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
# 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
|
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
#!/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
|
|
|
@ -1,86 +0,0 @@
|
||||||
#
|
|
||||||
# Do NOT Edit the Auto-generated Part!
|
|
||||||
# Generated by: spectacle version 0.27
|
|
||||||
#
|
|
||||||
|
|
||||||
Name: kdeconnect-sfos
|
|
||||||
|
|
||||||
# >> macros
|
|
||||||
# << macros
|
|
||||||
|
|
||||||
Summary: KDEConnect client for Sailfish
|
|
||||||
Version: 1.3.1
|
|
||||||
Release: 1
|
|
||||||
Group: Qt/Qt
|
|
||||||
License: LICENSE
|
|
||||||
URL: https://community.kde.org/KDEConnect
|
|
||||||
Source0: %{name}-%{version}.tar.bz2
|
|
||||||
Requires: sailfishsilica-qt5 >= 0.10.9
|
|
||||||
Requires: qt5-qtquickcontrols-layouts
|
|
||||||
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
|
|
||||||
BuildRequires: pkgconfig(keepalive)
|
|
||||||
|
|
||||||
%description
|
|
||||||
KDE Connect provides several features to integrate your phone and your computer
|
|
||||||
|
|
||||||
|
|
||||||
%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
|
|
|
@ -1,161 +0,0 @@
|
||||||
/**
|
|
||||||
* 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 <https://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>
|
|
||||||
#include <backgroundactivity.h>
|
|
||||||
#include <QFile>
|
|
||||||
#include <QTextStream>
|
|
||||||
|
|
||||||
class SailfishDaemon : public Daemon
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
Q_CLASSINFO("D-Bus Interface", "org.kde.kdeconnect.daemon")
|
|
||||||
public:
|
|
||||||
SailfishDaemon(QObject* parent = nullptr)
|
|
||||||
: Daemon(parent)
|
|
||||||
, m_background(new BackgroundActivity())
|
|
||||||
{
|
|
||||||
connect(m_background, &BackgroundActivity::running,
|
|
||||||
[=]( ) { qDebug() << "Received wakeup";
|
|
||||||
m_background->wait(BackgroundActivity::ThirtySeconds);
|
|
||||||
} );
|
|
||||||
m_background->wait(BackgroundActivity::ThirtySeconds);
|
|
||||||
}
|
|
||||||
|
|
||||||
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 = nullptr;
|
|
||||||
BackgroundActivity *m_background = nullptr;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
|
|
||||||
{
|
|
||||||
QByteArray localMsg = msg.toLocal8Bit();
|
|
||||||
|
|
||||||
QString txt;
|
|
||||||
QString typ;
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case QtDebugMsg:
|
|
||||||
typ = "Debug";
|
|
||||||
break;
|
|
||||||
case QtInfoMsg:
|
|
||||||
typ = "Info";
|
|
||||||
break;
|
|
||||||
case QtWarningMsg:
|
|
||||||
typ = "Warning";
|
|
||||||
break;
|
|
||||||
case QtCriticalMsg:
|
|
||||||
typ = "Critical";
|
|
||||||
break;
|
|
||||||
case QtFatalMsg:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
txt = QString("%1 %2: %3 (%4:%5, %6)").arg(QDateTime::currentDateTime().toString("yyyyMMdd:HHmmss")).arg(typ).arg(localMsg.constData()).arg(context.file).arg(context.line).arg(context.function);
|
|
||||||
|
|
||||||
QFile outFile("/home/nemo/kdeconnectd.log");
|
|
||||||
outFile.open(QIODevice::WriteOnly | QIODevice::Append);
|
|
||||||
QTextStream ts(&outFile);
|
|
||||||
ts << txt << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
|
||||||
{
|
|
||||||
qInstallMessageHandler(myMessageOutput); // Install the handler
|
|
||||||
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"
|
|
|
@ -3,9 +3,9 @@ find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Test)
|
||||||
include_directories(
|
include_directories(
|
||||||
${KDEConnectCore_BINARY_DIR}
|
${KDEConnectCore_BINARY_DIR}
|
||||||
${CMAKE_SOURCE_DIR}
|
${CMAKE_SOURCE_DIR}
|
||||||
${CMAKE_BINARY_DIR}
|
${CMAKE_CURRENT_BINARY_DIR}/..
|
||||||
${CMAKE_BINARY_DIR}/plugins/sendnotifications/
|
${CMAKE_CURRENT_BINARY_DIR}/../plugins/sendnotifications/
|
||||||
${CMAKE_BINARY_DIR}/smsapp/
|
${CMAKE_CURRENT_BINARY_DIR}/../smsapp/
|
||||||
)
|
)
|
||||||
|
|
||||||
set(kdeconnect_libraries
|
set(kdeconnect_libraries
|
||||||
|
@ -14,7 +14,7 @@ set(kdeconnect_libraries
|
||||||
Qt5::DBus
|
Qt5::DBus
|
||||||
Qt5::Network
|
Qt5::Network
|
||||||
Qt5::Test
|
Qt5::Test
|
||||||
qca-qt5
|
${Qca_LIBRARY}
|
||||||
)
|
)
|
||||||
|
|
||||||
if(${KF5KIO_FOUND})
|
if(${KF5KIO_FOUND})
|
||||||
|
@ -34,14 +34,17 @@ ecm_add_test(testsslsocketlinereader.cpp TEST_NAME testsslsocketlinereader LINK_
|
||||||
ecm_add_test(kdeconnectconfigtest.cpp TEST_NAME kdeconnectconfigtest LINK_LIBRARIES ${kdeconnect_libraries})
|
ecm_add_test(kdeconnectconfigtest.cpp TEST_NAME kdeconnectconfigtest LINK_LIBRARIES ${kdeconnect_libraries})
|
||||||
ecm_add_test(lanlinkprovidertest.cpp TEST_NAME lanlinkprovidertest LINK_LIBRARIES ${kdeconnect_libraries})
|
ecm_add_test(lanlinkprovidertest.cpp TEST_NAME lanlinkprovidertest LINK_LIBRARIES ${kdeconnect_libraries})
|
||||||
ecm_add_test(devicetest.cpp TEST_NAME devicetest LINK_LIBRARIES ${kdeconnect_libraries})
|
ecm_add_test(devicetest.cpp TEST_NAME devicetest LINK_LIBRARIES ${kdeconnect_libraries})
|
||||||
ecm_add_test(testnotificationlistener.cpp
|
|
||||||
testdevice.cpp
|
if (NOT SAILFISHOS)
|
||||||
../plugins/sendnotifications/sendnotificationsplugin.cpp
|
ecm_add_test(testnotificationlistener.cpp
|
||||||
../plugins/sendnotifications/notificationslistener.cpp
|
testdevice.cpp
|
||||||
../plugins/sendnotifications/notifyingapplication.cpp
|
../plugins/sendnotifications/sendnotificationsplugin.cpp
|
||||||
TEST_NAME testnotificationlistener
|
../plugins/sendnotifications/notificationslistener.cpp
|
||||||
LINK_LIBRARIES ${kdeconnect_libraries} Qt5::DBus KF5::Notifications KF5::IconThemes)
|
../plugins/sendnotifications/notifyingapplication.cpp
|
||||||
ecm_add_test(testsmshelper.cpp LINK_LIBRARIES ${kdeconnect_sms_libraries})
|
TEST_NAME testnotificationlistener
|
||||||
|
LINK_LIBRARIES ${kdeconnect_libraries} Qt5::DBus KF5::Notifications KF5::IconThemes)
|
||||||
|
ecm_add_test(testsmshelper.cpp LINK_LIBRARIES ${kdeconnect_sms_libraries})
|
||||||
|
endif()
|
||||||
if(PRIVATE_DBUS_ENABLED)
|
if(PRIVATE_DBUS_ENABLED)
|
||||||
ecm_add_test(testprivatedbus.cpp LINK_LIBRARIES ${kdeconnect_libraries})
|
ecm_add_test(testprivatedbus.cpp LINK_LIBRARIES ${kdeconnect_libraries})
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -19,15 +19,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <QSocketNotifier>
|
#include <QSocketNotifier>
|
||||||
#include <QApplication>
|
#include <QCoreApplication>
|
||||||
#include <QNetworkAccessManager>
|
#include <QNetworkAccessManager>
|
||||||
#include <QTest>
|
#include <QTest>
|
||||||
#include <QTemporaryFile>
|
#include <QTemporaryFile>
|
||||||
#include <QSignalSpy>
|
#include <QSignalSpy>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
|
|
||||||
#include <KIO/AccessManager>
|
|
||||||
|
|
||||||
#include "core/daemon.h"
|
#include "core/daemon.h"
|
||||||
#include "core/device.h"
|
#include "core/device.h"
|
||||||
#include "core/kdeconnectplugin.h"
|
#include "core/kdeconnectplugin.h"
|
||||||
|
|
|
@ -22,15 +22,13 @@
|
||||||
#include <kdeconnectconfig.h>
|
#include <kdeconnectconfig.h>
|
||||||
#include <backends/lan/uploadjob.h>
|
#include <backends/lan/uploadjob.h>
|
||||||
#include <core/filetransferjob.h>
|
#include <core/filetransferjob.h>
|
||||||
#include <QApplication>
|
#include <QCoreApplication>
|
||||||
#include <QNetworkAccessManager>
|
#include <QNetworkAccessManager>
|
||||||
#include <QTest>
|
#include <QTest>
|
||||||
#include <QTemporaryFile>
|
#include <QTemporaryFile>
|
||||||
#include <QSignalSpy>
|
#include <QSignalSpy>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
|
|
||||||
#include <KIO/AccessManager>
|
|
||||||
|
|
||||||
#include "core/daemon.h"
|
#include "core/daemon.h"
|
||||||
#include "core/device.h"
|
#include "core/device.h"
|
||||||
#include "core/kdeconnectplugin.h"
|
#include "core/kdeconnectplugin.h"
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
#include "../core/backends/lan/socketlinereader.h"
|
#include "../core/backends/lan/socketlinereader.h"
|
||||||
#include "../core/backends/lan/server.h"
|
#include "../core/backends/lan/server.h"
|
||||||
|
#include "../core/qtcompat_p.h"
|
||||||
|
|
||||||
#include <QTest>
|
#include <QTest>
|
||||||
#include <QSslSocket>
|
#include <QSslSocket>
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
#include "../core/backends/lan/server.h"
|
#include "../core/backends/lan/server.h"
|
||||||
#include "../core/backends/lan/socketlinereader.h"
|
#include "../core/backends/lan/socketlinereader.h"
|
||||||
|
#include "../core/qtcompat_p.h"
|
||||||
|
|
||||||
#include <QSslKey>
|
#include <QSslKey>
|
||||||
#include <QtCrypto>
|
#include <QtCrypto>
|
||||||
|
|
Loading…
Reference in a new issue