Make build for SailfishConnect possible
This commit is contained in:
parent
bf0c2e54e3
commit
ba34672cbd
30 changed files with 114 additions and 1199 deletions
|
@ -3,14 +3,13 @@ cmake_minimum_required(VERSION 3.0)
|
|||
project(kdeconnect)
|
||||
|
||||
if (SAILFISHOS)
|
||||
set(KF5_MIN_VERSION "5.31.0")
|
||||
set(KF5_MIN_VERSION "5.36.0")
|
||||
set(QT_MIN_VERSION "5.6.0")
|
||||
set(QCA_MIN_VERSION "2.0.0")
|
||||
else()
|
||||
set(KF5_MIN_VERSION "5.64.0")
|
||||
set(QT_MIN_VERSION "5.10.0")
|
||||
set(QCA_MIN_VERSION "2.1.0")
|
||||
endif()
|
||||
set(QCA_MIN_VERSION "2.1.0")
|
||||
|
||||
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
|
||||
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
|
||||
|
@ -32,15 +31,16 @@ ecm_setup_version(1.4.0
|
|||
)
|
||||
|
||||
if (SAILFISHOS)
|
||||
find_package(PkgConfig)
|
||||
set(KF5_REQUIRED_COMPONENTS I18n DBusAddons CoreAddons IconThemes Config)
|
||||
set(KF5_REQUIRED_COMPONENTS I18n CoreAddons Config)
|
||||
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)
|
||||
include_directories(${QCA2_INCLUDEDIR})
|
||||
add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
|
||||
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_OPTIONAL_COMPONENTS DocTools)
|
||||
|
||||
|
@ -54,7 +54,6 @@ else()
|
|||
if(UNIX AND NOT APPLE)
|
||||
find_package(KF5PulseAudioQt)
|
||||
endif()
|
||||
find_package(Qca-qt5 ${QCA_MIN_VERSION} REQUIRED)
|
||||
|
||||
find_package(KF5PeopleVCard)
|
||||
set_package_properties(KF5PeopleVCard PROPERTIES
|
||||
|
@ -63,13 +62,15 @@ else()
|
|||
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()
|
||||
|
||||
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})
|
||||
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()
|
||||
|
||||
if (NOT ZSH_AUTOCOMPLETE_DIR)
|
||||
|
@ -82,14 +83,15 @@ if(PRIVATE_DBUS_ENABLED OR APPLE)
|
|||
endif()
|
||||
|
||||
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(kcmplugin)
|
||||
add_subdirectory(daemon)
|
||||
|
@ -99,21 +101,19 @@ if(NOT SAILFISHOS)
|
|||
add_subdirectory(nautilus-extension)
|
||||
add_subdirectory(fileitemactionplugin)
|
||||
add_subdirectory(smsapp)
|
||||
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
|
||||
if(NOT WIN32)
|
||||
add_subdirectory(kio)
|
||||
add_subdirectory(plasmoid)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(KF5DocTools_FOUND)
|
||||
add_subdirectory(doc)
|
||||
endif()
|
||||
|
||||
if(KF5DocTools_FOUND)
|
||||
add_subdirectory(doc)
|
||||
endif()
|
||||
else()
|
||||
add_subdirectory(sfos)
|
||||
if(BUILD_TESTING)
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
||||
|
|
|
@ -43,13 +43,13 @@ set(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
|
||||
PUBLIC
|
||||
Qt5::Network
|
||||
KF5::CoreAddons
|
||||
qca-qt5
|
||||
${Qca_LIBRARY}
|
||||
PRIVATE
|
||||
Qt5::DBus
|
||||
KF5::I18n
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "lanlinkprovider.h"
|
||||
#include <daemon.h>
|
||||
#include "plugins/share/shareplugin.h"
|
||||
#include "qtcompat_p.h"
|
||||
|
||||
#ifdef HAVE_KIO
|
||||
#include <kio/global.h>
|
||||
|
@ -107,13 +108,21 @@ void CompositeUploadJob::startNextSubJob()
|
|||
m_currentJobSendPayloadSize = 0;
|
||||
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);
|
||||
#endif
|
||||
//Already done by KCompositeJob
|
||||
//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?
|
||||
NetworkPacket np = m_currentJob->getNetworkPacket();
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5,8,0)
|
||||
np.setPayload({}, np.payloadSize());
|
||||
#else
|
||||
np.setPayload(nullptr, np.payloadSize());
|
||||
#endif
|
||||
np.setPayloadTransferInfo({{QStringLiteral("port"), m_port}});
|
||||
np.set<int>(QStringLiteral("numberOfFiles"), m_totalJobs);
|
||||
np.set<quint64>(QStringLiteral("totalPayloadSize"), m_totalPayloadSize);
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
#include "landevicelink.h"
|
||||
#include "lanpairinghandler.h"
|
||||
#include "kdeconnectconfig.h"
|
||||
#include "qtcompat_p.h"
|
||||
|
||||
#define MIN_VERSION_WITH_SSL_SUPPORT 6
|
||||
|
||||
|
@ -370,7 +371,12 @@ void LanLinkProvider::newConnection()
|
|||
void LanLinkProvider::dataReceived()
|
||||
{
|
||||
QSslSocket* socket = qobject_cast<QSslSocket*>(sender());
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5,7,0)
|
||||
if (!socket->canReadLine())
|
||||
return;
|
||||
#else
|
||||
socket->startTransaction();
|
||||
#endif
|
||||
|
||||
const QByteArray data = socket->readLine();
|
||||
|
||||
|
@ -379,12 +385,19 @@ void LanLinkProvider::dataReceived()
|
|||
NetworkPacket* np = new NetworkPacket(QLatin1String(""));
|
||||
bool success = NetworkPacket::unserialize(data, np);
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5,7,0)
|
||||
if (!success) {
|
||||
delete np;
|
||||
return;
|
||||
}
|
||||
#else
|
||||
if (!success) {
|
||||
delete np;
|
||||
socket->rollbackTransaction();
|
||||
return;
|
||||
}
|
||||
socket->commitTransaction();
|
||||
#endif
|
||||
|
||||
if (np->type() != PACKET_TYPE_IDENTITY) {
|
||||
qCWarning(KDECONNECT_CORE) << "LanLinkProvider/newConnection: Expected identity, received " << np->type();
|
||||
|
|
|
@ -57,7 +57,11 @@ void CompositeFileTransferJob::startNextSubJob()
|
|||
m_currentJobSendPayloadSize = 0;
|
||||
emitDescription(m_currentJob->destination().toString());
|
||||
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);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool CompositeFileTransferJob::addSubjob(KJob* job)
|
||||
|
|
|
@ -40,6 +40,42 @@ template <typename T>
|
|||
void qAsConst(const T &&) Q_DECL_EQ_DELETE;
|
||||
#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
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5,8,0)
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include <KLocalizedString>
|
||||
#include <KJobTrackerInterface>
|
||||
#include <KPluginFactory>
|
||||
#include <KIO/Job>
|
||||
#include <KIO/MkpathJob>
|
||||
#include <KMimeTypeTrader>
|
||||
|
||||
|
|
|
@ -23,8 +23,6 @@
|
|||
|
||||
#include <QPointer>
|
||||
|
||||
#include <KIO/Job>
|
||||
|
||||
#include <core/kdeconnectplugin.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(
|
||||
${KDEConnectCore_BINARY_DIR}
|
||||
${CMAKE_SOURCE_DIR}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_BINARY_DIR}/plugins/sendnotifications/
|
||||
${CMAKE_BINARY_DIR}/smsapp/
|
||||
${CMAKE_CURRENT_BINARY_DIR}/..
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../plugins/sendnotifications/
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../smsapp/
|
||||
)
|
||||
|
||||
set(kdeconnect_libraries
|
||||
|
@ -14,7 +14,7 @@ set(kdeconnect_libraries
|
|||
Qt5::DBus
|
||||
Qt5::Network
|
||||
Qt5::Test
|
||||
qca-qt5
|
||||
${Qca_LIBRARY}
|
||||
)
|
||||
|
||||
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(lanlinkprovidertest.cpp TEST_NAME lanlinkprovidertest LINK_LIBRARIES ${kdeconnect_libraries})
|
||||
ecm_add_test(devicetest.cpp TEST_NAME devicetest LINK_LIBRARIES ${kdeconnect_libraries})
|
||||
ecm_add_test(testnotificationlistener.cpp
|
||||
testdevice.cpp
|
||||
../plugins/sendnotifications/sendnotificationsplugin.cpp
|
||||
../plugins/sendnotifications/notificationslistener.cpp
|
||||
../plugins/sendnotifications/notifyingapplication.cpp
|
||||
TEST_NAME testnotificationlistener
|
||||
LINK_LIBRARIES ${kdeconnect_libraries} Qt5::DBus KF5::Notifications KF5::IconThemes)
|
||||
ecm_add_test(testsmshelper.cpp LINK_LIBRARIES ${kdeconnect_sms_libraries})
|
||||
|
||||
if (NOT SAILFISHOS)
|
||||
ecm_add_test(testnotificationlistener.cpp
|
||||
testdevice.cpp
|
||||
../plugins/sendnotifications/sendnotificationsplugin.cpp
|
||||
../plugins/sendnotifications/notificationslistener.cpp
|
||||
../plugins/sendnotifications/notifyingapplication.cpp
|
||||
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)
|
||||
ecm_add_test(testprivatedbus.cpp LINK_LIBRARIES ${kdeconnect_libraries})
|
||||
endif()
|
||||
|
|
|
@ -19,15 +19,13 @@
|
|||
*/
|
||||
|
||||
#include <QSocketNotifier>
|
||||
#include <QApplication>
|
||||
#include <QCoreApplication>
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QTest>
|
||||
#include <QTemporaryFile>
|
||||
#include <QSignalSpy>
|
||||
#include <QStandardPaths>
|
||||
|
||||
#include <KIO/AccessManager>
|
||||
|
||||
#include "core/daemon.h"
|
||||
#include "core/device.h"
|
||||
#include "core/kdeconnectplugin.h"
|
||||
|
|
|
@ -22,15 +22,13 @@
|
|||
#include <kdeconnectconfig.h>
|
||||
#include <backends/lan/uploadjob.h>
|
||||
#include <core/filetransferjob.h>
|
||||
#include <QApplication>
|
||||
#include <QCoreApplication>
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QTest>
|
||||
#include <QTemporaryFile>
|
||||
#include <QSignalSpy>
|
||||
#include <QStandardPaths>
|
||||
|
||||
#include <KIO/AccessManager>
|
||||
|
||||
#include "core/daemon.h"
|
||||
#include "core/device.h"
|
||||
#include "core/kdeconnectplugin.h"
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
#include "../core/backends/lan/socketlinereader.h"
|
||||
#include "../core/backends/lan/server.h"
|
||||
#include "../core/qtcompat_p.h"
|
||||
|
||||
#include <QTest>
|
||||
#include <QSslSocket>
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include "../core/backends/lan/server.h"
|
||||
#include "../core/backends/lan/socketlinereader.h"
|
||||
#include "../core/qtcompat_p.h"
|
||||
|
||||
#include <QSslKey>
|
||||
#include <QtCrypto>
|
||||
|
|
Loading…
Reference in a new issue