Merge branch 'master' into frameworks
Conflicts: cli/kdeconnect-cli.cpp core/CMakeLists.txt plasmoid/package/contents/ui/FullRepresentation.qml plugins/ping/pingplugin.cpp
This commit is contained in:
commit
a303b73238
57 changed files with 505 additions and 387 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,5 +1,5 @@
|
|||
build
|
||||
android-shine.kdev4
|
||||
*.kdev4
|
||||
Makefile
|
||||
lib
|
||||
src/Makefile
|
||||
|
|
|
@ -24,31 +24,49 @@
|
|||
#include <k4aboutdata.h>
|
||||
#include <kaboutdata.h>
|
||||
#include <interfaces/devicesmodel.h>
|
||||
#include <interfaces/notificationsmodel.h>
|
||||
#include <interfaces/dbusinterfaces.h>
|
||||
#include <iostream>
|
||||
#include <QDBusMessage>
|
||||
#include <QDBusConnection>
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
K4AboutData about("kctool", 0, ki18n(("kdeconnect-cli")), "1.0", ki18n("KDE Connect CLI tool"),
|
||||
K4AboutData::License_GPL, ki18n("(C) 2013 Aleix Pol Gonzalez"));
|
||||
KAboutData about("kdeconnect-cli", "kdeconnect-cli", ki18n(("kdeconnect-cli")), "1.0", ki18n("KDE Connect CLI tool"),
|
||||
KAboutData::License_GPL, ki18n("(C) 2013 Aleix Pol Gonzalez"));
|
||||
|
||||
about.addAuthor( ki18n("Aleix Pol Gonzalez"), KLocalizedString(), "aleixpol@kde.org" );
|
||||
KCmdLineArgs::init(argc, argv, &about);
|
||||
KCmdLineOptions options;
|
||||
options.add("l")
|
||||
.add("list-devices", ki18n("List all devices"));
|
||||
options.add("share <path>", ki18n("Share a file"));
|
||||
options.add("share <path>", ki18n("Share a file to a said device"));
|
||||
options.add("pair", ki18n("Request pairing to a said device"));
|
||||
options.add("unpair", ki18n("Stop pairing to a said device"));
|
||||
options.add("ping", ki18n("Sends a ping to said device"));
|
||||
options.add("list-notifications", ki18n("Display the notifications on a said device"));
|
||||
options.add("device <dev>", ki18n("Device ID"));
|
||||
KCmdLineArgs::addCmdLineOptions( options );
|
||||
KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
|
||||
KApplication app;
|
||||
if(args->isSet("l")) {
|
||||
DevicesModel devices;
|
||||
devices.setDisplayFilter(DevicesModel::StatusUnknown);
|
||||
for(int i=0, rows=devices.rowCount(); i<rows; ++i) {
|
||||
QModelIndex idx = devices.index(i);
|
||||
QString statusInfo;
|
||||
switch(idx.data(DevicesModel::StatusModelRole).toInt()) {
|
||||
case DevicesModel::StatusPaired:
|
||||
statusInfo = "(paired)";
|
||||
break;
|
||||
case DevicesModel::StatusReachable:
|
||||
statusInfo = "(reachable)";
|
||||
break;
|
||||
case DevicesModel::StatusReachable | DevicesModel::StatusPaired:
|
||||
statusInfo = "(paired and reachable)";
|
||||
break;
|
||||
}
|
||||
std::cout << "- " << idx.data(Qt::DisplayRole).toString().toStdString()
|
||||
<< ": " << idx.data(DevicesModel::IdModelRole).toString().toStdString() << std::endl;
|
||||
<< ": " << idx.data(DevicesModel::IdModelRole).toString().toStdString() << ' ' << statusInfo.toStdString() << std::endl;
|
||||
}
|
||||
std::cout << devices.rowCount() << " devices found" << std::endl;
|
||||
} else {
|
||||
|
@ -60,16 +78,43 @@ int main(int argc, char** argv)
|
|||
QUrl url;
|
||||
if(args->isSet("share")) {
|
||||
url = args->makeURL(args->getOption("share").toLatin1());
|
||||
}
|
||||
args->clear();
|
||||
|
||||
if(!url.isEmpty() && !device.isEmpty()) {
|
||||
QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kdeconnect", "/modules/kdeconnect/devices/"+device+"/share", "org.kde.kdeconnect.device.share", "shareUrl");
|
||||
msg.setArguments(QVariantList() << url.toString());
|
||||
|
||||
args->clear();
|
||||
if(!url.isEmpty() && !device.isEmpty()) {
|
||||
QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kdeconnect", "/modules/kdeconnect/devices/"+device+"/share", "org.kde.kdeconnect.device.share", "shareUrl");
|
||||
msg.setArguments(QVariantList() << url.toString());
|
||||
QDBusConnection::sessionBus().call(msg);
|
||||
} else
|
||||
KCmdLineArgs::usageError(i18n("Couldn't share %1", url.toString()));
|
||||
} else if(args->isSet("pair")) {
|
||||
DeviceDbusInterface dev(device);
|
||||
if(dev.isPaired())
|
||||
std::cout << "Already paired" << std::endl;
|
||||
else {
|
||||
QDBusPendingReply<void> req = dev.requestPair();
|
||||
req.waitForFinished();
|
||||
}
|
||||
} else if(args->isSet("unpair")) {
|
||||
DeviceDbusInterface dev(device);
|
||||
if(!dev.isPaired())
|
||||
std::cout << "Already not paired" << std::endl;
|
||||
else {
|
||||
QDBusPendingReply<void> req = dev.unpair();
|
||||
req.waitForFinished();
|
||||
}
|
||||
} else if(args->isSet("ping")) {
|
||||
QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kdeconnect", "/modules/kdeconnect/devices/"+device+"/ping", "org.kde.kdeconnect.device.ping", "sendPing");
|
||||
QDBusConnection::sessionBus().call(msg);
|
||||
} else
|
||||
} else if(args->isSet("list-notifications")) {
|
||||
NotificationsModel notifications;
|
||||
notifications.setDeviceId(device);
|
||||
for(int i=0, rows=notifications.rowCount(); i<rows; ++i) {
|
||||
QModelIndex idx = notifications.index(i);
|
||||
std::cout << "- " << idx.data(NotificationsModel::AppNameModelRole).toString().toStdString()
|
||||
<< ": " << idx.data(NotificationsModel::NameModelRole).toString().toStdString() << std::endl;
|
||||
}
|
||||
} else {
|
||||
KCmdLineArgs::usageError(i18n("Nothing to be done with the device"));
|
||||
}
|
||||
}
|
||||
QMetaObject::invokeMethod(&app, "quit", Qt::QueuedConnection);
|
||||
|
||||
|
|
48
cmake/FindXTest.cmake
Normal file
48
cmake/FindXTest.cmake
Normal file
|
@ -0,0 +1,48 @@
|
|||
# - Find XTEST
|
||||
# Find the XTEST libraries
|
||||
#
|
||||
# This module defines the following variables:
|
||||
# XTEST_FOUND - true if XTEST_INCLUDE_DIR & XTEST_LIBRARY are found
|
||||
# XTEST_LIBRARIES - Set when XTEST_LIBRARY is found
|
||||
# XTEST_INCLUDE_DIRS - Set when XTEST_INCLUDE_DIR is found
|
||||
#
|
||||
# XTEST_INCLUDE_DIR - where to find XTest.h, etc.
|
||||
# XTEST_LIBRARY - the XTEST library
|
||||
#
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2011 O.S. Systems Software Ltda.
|
||||
# Copyright 2011 Otavio Salvador <otavio@ossystems.com.br>
|
||||
# Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#=============================================================================
|
||||
|
||||
find_path(XTEST_INCLUDE_DIR NAMES X11/extensions/XTest.h
|
||||
PATH_SUFFIXES X11/extensions
|
||||
DOC "The XTest include directory"
|
||||
)
|
||||
|
||||
find_library(XTEST_LIBRARY NAMES Xtst
|
||||
DOC "The XTest library"
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(XTest DEFAULT_MSG XTEST_LIBRARY XTEST_INCLUDE_DIR)
|
||||
|
||||
if(XTEST_FOUND)
|
||||
set( XTEST_LIBRARIES ${XTEST_LIBRARY} )
|
||||
set( XTEST_INCLUDE_DIRS ${XTEST_INCLUDE_DIR} )
|
||||
endif()
|
||||
|
||||
mark_as_advanced(XTEST_INCLUDE_DIR XTEST_LIBRARY)
|
|
@ -2,6 +2,11 @@ project(KDEConnectCore)
|
|||
|
||||
add_definitions(-DTRANSLATION_DOMAIN=\"kdeconnect-core\")
|
||||
|
||||
set(KDECONNECT_VERSION_MAJOR 1)
|
||||
set(KDECONNECT_VERSION_MINOR 0)
|
||||
set(KDECONNECT_VERSION_PATCH 1)
|
||||
set(KDECONNECT_VERSION "${KDECONNECT_VERSION_MAJOR}.${KDECONNECT_VERSION_MINOR}.${KDECONNECT_VERSION_PATCH}")
|
||||
|
||||
include_directories(
|
||||
${QJSON_INCLUDE_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
|
@ -24,21 +29,23 @@ set(kded_kdeconnect_SRCS
|
|||
filetransferjob.cpp
|
||||
daemon.cpp
|
||||
device.cpp
|
||||
kdebugnamespace.cpp
|
||||
)
|
||||
|
||||
add_library(kdeconnectcore SHARED ${kded_kdeconnect_SRCS})
|
||||
target_link_libraries(kdeconnectcore
|
||||
PUBLIC
|
||||
KF5::KDELibs4Support
|
||||
|
||||
PRIVATE
|
||||
KF5::KIOWidgets
|
||||
KF5::KCMUtils
|
||||
Qt5::Network
|
||||
${QJSON_LIBRARIES}
|
||||
${QCA2_LIBRARIES}
|
||||
)
|
||||
|
||||
set_target_properties(kdeconnectcore PROPERTIES
|
||||
VERSION ${KDECONNECT_VERSION}
|
||||
SOVERSION ${KDECONNECT_VERSION_MAJOR}
|
||||
)
|
||||
|
||||
target_include_directories(kdeconnectcore PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
|
||||
generate_export_header(kdeconnectcore EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/kdeconnectcore_export.h BASE_NAME KDEConnectCore)
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ void LanDeviceLink::dataReceived()
|
|||
|
||||
const QByteArray package = mSocketLineReader->readLine();
|
||||
|
||||
//kDebug(kdeconnect_kded()) << "LanDeviceLink dataReceived" << package;
|
||||
//kDebug(debugArea()) << "LanDeviceLink dataReceived" << package;
|
||||
|
||||
NetworkPackage unserialized(QString::null);
|
||||
NetworkPackage::unserialize(package, &unserialized);
|
||||
|
@ -90,7 +90,7 @@ void LanDeviceLink::dataReceived()
|
|||
unserialized.decrypt(mPrivateKey, &decrypted);
|
||||
|
||||
if (decrypted.hasPayloadTransferInfo()) {
|
||||
kDebug(kdeconnect_kded()) << "HasPayloadTransferInfo";
|
||||
kDebug(debugArea()) << "HasPayloadTransferInfo";
|
||||
DownloadJob* job = new DownloadJob(mSocketLineReader->peerAddress(), decrypted.payloadTransferInfo());
|
||||
job->start();
|
||||
decrypted.setPayload(job->getPayload(), decrypted.payloadSize());
|
||||
|
|
|
@ -68,7 +68,7 @@ LanLinkProvider::LanLinkProvider()
|
|||
|
||||
void LanLinkProvider::onStart()
|
||||
{
|
||||
bool buildSucceed = mUdpServer->bind(QHostAddress::Broadcast, port, QUdpSocket::ShareAddress);
|
||||
bool buildSucceed = mUdpServer->bind(QHostAddress::Any, port, QUdpSocket::ShareAddress);
|
||||
Q_ASSERT(buildSucceed);
|
||||
|
||||
mTcpPort = port;
|
||||
|
@ -151,7 +151,7 @@ void LanLinkProvider::connectError()
|
|||
disconnect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(connectError()));
|
||||
disconnect(socket, SIGNAL(connected()), this, SLOT(connected()));
|
||||
|
||||
kDebug(kdeconnect_kded()) << "Fallback (1), try reverse connection";
|
||||
kDebug(debugArea()) << "Fallback (1), try reverse connection";
|
||||
NetworkPackage np("");
|
||||
NetworkPackage::createIdentityPackage(&np);
|
||||
np.set("tcpPort", mTcpPort);
|
||||
|
@ -173,7 +173,7 @@ void LanLinkProvider::connected()
|
|||
|
||||
NetworkPackage* receivedPackage = receivedIdentityPackages[socket].np;
|
||||
const QString& deviceId = receivedPackage->get<QString>("deviceId");
|
||||
//kDebug(kdeconnect_kded()) << "Connected" << socket->isWritable();
|
||||
//kDebug(debugArea()) << "Connected" << socket->isWritable();
|
||||
|
||||
LanDeviceLink* deviceLink = new LanDeviceLink(deviceId, this, socket);
|
||||
|
||||
|
@ -185,7 +185,7 @@ void LanLinkProvider::connected()
|
|||
//TODO: Use reverse connection too to preffer connecting a unstable device (a phone) to a stable device (a computer)
|
||||
if (success) {
|
||||
|
||||
//kDebug(kdeconnect_kded()) << "Handshaking done (i'm the existing device)";
|
||||
//kDebug(debugArea()) << "Handshaking done (i'm the existing device)";
|
||||
|
||||
connect(deviceLink, SIGNAL(destroyed(QObject*)),
|
||||
this, SLOT(deviceLinkDestroyed(QObject*)));
|
||||
|
@ -206,7 +206,7 @@ void LanLinkProvider::connected()
|
|||
|
||||
} else {
|
||||
//I think this will never happen
|
||||
kDebug(kdeconnect_kded()) << "Fallback (2), try reverse connection";
|
||||
kDebug(debugArea()) << "Fallback (2), try reverse connection";
|
||||
mUdpSocket.writeDatagram(np2.serialize(), receivedIdentityPackages[socket].sender, port);
|
||||
delete deviceLink;
|
||||
}
|
||||
|
@ -220,7 +220,7 @@ void LanLinkProvider::connected()
|
|||
//I'm the new device and this is the answer to my UDP introduction (no data received yet)
|
||||
void LanLinkProvider::newConnection()
|
||||
{
|
||||
//kDebug(kdeconnect_kded()) << "LanLinkProvider newConnection";
|
||||
//kDebug(debugArea()) << "LanLinkProvider newConnection";
|
||||
|
||||
while(mTcpServer->hasPendingConnections()) {
|
||||
QTcpSocket* socket = mTcpServer->nextPendingConnection();
|
||||
|
@ -234,7 +234,7 @@ void LanLinkProvider::newConnection()
|
|||
NetworkPackage::createIdentityPackage(&np);
|
||||
int written = socket->write(np.serialize());
|
||||
|
||||
kDebug(kdeconnect_kded()) << "LanLinkProvider sent package." << written << " bytes written, waiting for reply";
|
||||
kDebug(debugArea()) << "LanLinkProvider sent package." << written << " bytes written, waiting for reply";
|
||||
*/
|
||||
}
|
||||
|
||||
|
@ -246,20 +246,20 @@ void LanLinkProvider::dataReceived()
|
|||
|
||||
const QByteArray data = socket->readLine();
|
||||
|
||||
//kDebug(kdeconnect_kded()) << "LanLinkProvider received reply:" << data;
|
||||
//kDebug(debugArea()) << "LanLinkProvider received reply:" << data;
|
||||
|
||||
NetworkPackage np("");
|
||||
bool success = NetworkPackage::unserialize(data, &np);
|
||||
|
||||
if (!success || np.type() != PACKAGE_TYPE_IDENTITY) {
|
||||
kDebug(kdeconnect_kded()) << "LanLinkProvider/newConnection: Not an identification package (wuh?)";
|
||||
kDebug(debugArea()) << "LanLinkProvider/newConnection: Not an identification package (wuh?)";
|
||||
return;
|
||||
}
|
||||
|
||||
const QString& deviceId = np.get<QString>("deviceId");
|
||||
LanDeviceLink* deviceLink = new LanDeviceLink(deviceId, this, socket);
|
||||
|
||||
//kDebug(kdeconnect_kded()) << "Handshaking done (i'm the new device)";
|
||||
//kDebug(debugArea()) << "Handshaking done (i'm the new device)";
|
||||
|
||||
connect(deviceLink, SIGNAL(destroyed(QObject*)),
|
||||
this, SLOT(deviceLinkDestroyed(QObject*)));
|
||||
|
@ -282,7 +282,7 @@ void LanLinkProvider::dataReceived()
|
|||
|
||||
void LanLinkProvider::deviceLinkDestroyed(QObject* destroyedDeviceLink)
|
||||
{
|
||||
//kDebug(kdeconnect_kded()) << "deviceLinkDestroyed";
|
||||
//kDebug(debugArea()) << "deviceLinkDestroyed";
|
||||
const QString id = destroyedDeviceLink->property("deviceId").toString();
|
||||
QMap< QString, DeviceLink* >::iterator oldLinkIterator = mLinks.find(id);
|
||||
if (oldLinkIterator != mLinks.end() && oldLinkIterator.value() == destroyedDeviceLink) {
|
||||
|
|
|
@ -39,7 +39,7 @@ void UploadJob::start()
|
|||
while(!mServer->listen(QHostAddress::Any, mPort)) {
|
||||
mPort++;
|
||||
if (mPort > 1764) { //No ports available?
|
||||
kDebug(kdeconnect_kded()) << "Error opening a port in range 1739-1764 for file transfer";
|
||||
kDebug(debugArea()) << "Error opening a port in range 1739-1764 for file transfer";
|
||||
mPort = 0;
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -66,13 +66,13 @@ Daemon::Daemon(QObject *parent)
|
|||
uuid = uuid.mid(1, uuid.length() - 2).replace("-", "_");
|
||||
config->group("myself").writeEntry("id", uuid);
|
||||
config->sync();
|
||||
kDebug(kdeconnect_kded()) << "My id:" << uuid;
|
||||
kDebug(debugArea()) << "My id:" << uuid;
|
||||
}
|
||||
|
||||
//kDebug(kdeconnect_kded()) << "QCA supported capabilities:" << QCA::supportedFeatures().join(",");
|
||||
//kDebug(debugArea()) << "QCA supported capabilities:" << QCA::supportedFeatures().join(",");
|
||||
if(!QCA::isSupported("rsa")) {
|
||||
//TODO: Maybe display this in a more visible way?
|
||||
kWarning(kdeconnect_kded()) << "Error: KDE Connect could not find support for RSA in your QCA installation, if your distribution provides"
|
||||
kWarning(debugArea()) << "Error: KDE Connect could not find support for RSA in your QCA installation, if your distribution provides"
|
||||
<< "separate packages for QCA-ossl and QCA-gnupg plugins, make sure you have them installed and try again";
|
||||
return;
|
||||
}
|
||||
|
@ -86,13 +86,13 @@ Daemon::Daemon(QObject *parent)
|
|||
|
||||
if (!privKey.open(QIODevice::ReadWrite | QIODevice::Truncate))
|
||||
{
|
||||
kWarning(kdeconnect_kded()) << "Error: KDE Connect could not create private keys file: " << privateKeyPath;
|
||||
kWarning(debugArea()) << "Error: KDE Connect could not create private keys file: " << privateKeyPath;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!privKey.setPermissions(strict))
|
||||
{
|
||||
kWarning(kdeconnect_kded()) << "Error: KDE Connect could not set permissions for private file: " << privateKeyPath;
|
||||
kWarning(debugArea()) << "Error: KDE Connect could not set permissions for private file: " << privateKeyPath;
|
||||
}
|
||||
|
||||
//http://delta.affinix.com/docs/qca/rsatest_8cpp-example.html
|
||||
|
@ -110,11 +110,11 @@ Daemon::Daemon(QObject *parent)
|
|||
|
||||
if (QFile::permissions(config->group("myself").readEntry("privateKeyPath")) != strict)
|
||||
{
|
||||
kWarning(kdeconnect_kded()) << "Error: KDE Connect detects wrong permissions for private file " << config->group("myself").readEntry("privateKeyPath");
|
||||
kWarning(debugArea()) << "Error: KDE Connect detects wrong permissions for private file " << config->group("myself").readEntry("privateKeyPath");
|
||||
}
|
||||
|
||||
//Debugging
|
||||
kDebug(kdeconnect_kded()) << "Starting KdeConnect daemon";
|
||||
kDebug(debugArea()) << "Starting KdeConnect daemon";
|
||||
|
||||
//Load backends (hardcoded by now, should be plugins in a future)
|
||||
d->mLinkProviders.insert(new LanLinkProvider());
|
||||
|
@ -182,14 +182,14 @@ void Daemon::onNewDeviceLink(const NetworkPackage& identityPackage, DeviceLink*
|
|||
|
||||
const QString& id = identityPackage.get<QString>("deviceId");
|
||||
|
||||
//kDebug(kdeconnect_kded()) << "Device discovered" << id << "via" << dl->provider()->name();
|
||||
//kDebug(debugArea()) << "Device discovered" << id << "via" << dl->provider()->name();
|
||||
|
||||
if (d->mDevices.contains(id)) {
|
||||
//kDebug(kdeconnect_kded()) << "It is a known device";
|
||||
//kDebug(debugArea()) << "It is a known device";
|
||||
Device* device = d->mDevices[id];
|
||||
device->addLink(identityPackage, dl);
|
||||
} else {
|
||||
//kDebug(kdeconnect_kded()) << "It is a new device";
|
||||
//kDebug(debugArea()) << "It is a new device";
|
||||
|
||||
Device* device = new Device(this, identityPackage, dl);
|
||||
connect(device, SIGNAL(reachableStatusChanged()), this, SLOT(onDeviceReachableStatusChanged()));
|
||||
|
@ -210,12 +210,12 @@ void Daemon::onDeviceReachableStatusChanged()
|
|||
|
||||
Q_EMIT deviceVisibilityChanged(id, device->isReachable());
|
||||
|
||||
//kDebug(kdeconnect_kded()) << "Device" << device->name() << "reachable status changed:" << device->isReachable();
|
||||
//kDebug(debugArea()) << "Device" << device->name() << "reachable status changed:" << device->isReachable();
|
||||
|
||||
if (!device->isReachable()) {
|
||||
|
||||
if (!device->isPaired()) {
|
||||
kDebug(kdeconnect_kded()) << "Destroying device" << device->name();
|
||||
kDebug(debugArea()) << "Destroying device" << device->name();
|
||||
Q_EMIT deviceRemoved(id);
|
||||
d->mDevices.remove(id);
|
||||
device->deleteLater();
|
||||
|
|
|
@ -235,7 +235,7 @@ static bool lessThan(DeviceLink* p1, DeviceLink* p2)
|
|||
|
||||
void Device::addLink(const NetworkPackage& identityPackage, DeviceLink* link)
|
||||
{
|
||||
//kDebug(kdeconnect_kded()) << "Adding link to" << id() << "via" << link->provider();
|
||||
//kDebug(debugArea()) << "Adding link to" << id() << "via" << link->provider();
|
||||
|
||||
m_protocolVersion = identityPackage.get<int>("protocolVersion");
|
||||
if (m_protocolVersion != NetworkPackage::ProtocolVersion) {
|
||||
|
@ -282,7 +282,7 @@ void Device::removeLink(DeviceLink* link)
|
|||
{
|
||||
m_deviceLinks.removeOne(link);
|
||||
|
||||
//kDebug(kdeconnect_kded()) << "RemoveLink" << m_deviceLinks.size() << "links remaining";
|
||||
//kDebug(debugArea()) << "RemoveLink" << m_deviceLinks.size() << "links remaining";
|
||||
|
||||
if (m_deviceLinks.isEmpty()) {
|
||||
reloadPlugins();
|
||||
|
@ -315,12 +315,12 @@ void Device::privateReceivedPackage(const NetworkPackage& np)
|
|||
{
|
||||
if (np.type() == PACKAGE_TYPE_PAIR) {
|
||||
|
||||
//kDebug(kdeconnect_kded()) << "Pair package";
|
||||
//kDebug(debugArea()) << "Pair package";
|
||||
|
||||
bool wantsPair = np.get<bool>("pair");
|
||||
|
||||
if (wantsPair == isPaired()) {
|
||||
kDebug(kdeconnect_kded()) << "Already" << (wantsPair? "paired":"unpaired");
|
||||
kDebug(debugArea()) << "Already" << (wantsPair? "paired":"unpaired");
|
||||
if (m_pairStatus == Device::Requested) {
|
||||
m_pairStatus = Device::NotPaired;
|
||||
m_pairingTimeut.stop();
|
||||
|
@ -335,7 +335,7 @@ void Device::privateReceivedPackage(const NetworkPackage& np)
|
|||
const QString& key = np.get<QString>("publicKey");
|
||||
m_publicKey = QCA::RSAPublicKey::fromPEM(key);
|
||||
if (m_publicKey.isNull()) {
|
||||
kDebug(kdeconnect_kded()) << "ERROR decoding key";
|
||||
kDebug(debugArea()) << "ERROR decoding key";
|
||||
if (m_pairStatus == Device::Requested) {
|
||||
m_pairStatus = Device::NotPaired;
|
||||
m_pairingTimeut.stop();
|
||||
|
@ -346,12 +346,12 @@ void Device::privateReceivedPackage(const NetworkPackage& np)
|
|||
|
||||
if (m_pairStatus == Device::Requested) { //We started pairing
|
||||
|
||||
kDebug(kdeconnect_kded()) << "Pair answer";
|
||||
kDebug(debugArea()) << "Pair answer";
|
||||
setAsPaired();
|
||||
|
||||
} else {
|
||||
|
||||
kDebug(kdeconnect_kded()) << "Pair request";
|
||||
kDebug(debugArea()) << "Pair request";
|
||||
|
||||
KNotification* notification = new KNotification("pingReceived"); //KNotification::Persistent
|
||||
notification->setPixmap(KIcon("dialog-information").pixmap(48, 48));
|
||||
|
@ -369,7 +369,7 @@ void Device::privateReceivedPackage(const NetworkPackage& np)
|
|||
|
||||
} else {
|
||||
|
||||
kDebug(kdeconnect_kded()) << "Unpair request";
|
||||
kDebug(debugArea()) << "Unpair request";
|
||||
|
||||
PairStatus prevPairStatus = m_pairStatus;
|
||||
m_pairStatus = Device::NotPaired;
|
||||
|
@ -392,7 +392,7 @@ void Device::privateReceivedPackage(const NetworkPackage& np)
|
|||
plugin->receivePackage(np);
|
||||
}
|
||||
} else {
|
||||
kDebug(kdeconnect_kded()) << "device" << name() << "not paired, ignoring package" << np.type();
|
||||
kDebug(debugArea()) << "device" << name() << "not paired, ignoring package" << np.type();
|
||||
unpair();
|
||||
|
||||
}
|
||||
|
@ -410,7 +410,7 @@ bool Device::sendOwnPublicKey()
|
|||
|
||||
void Device::rejectPairing()
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "Rejected pairing";
|
||||
kDebug(debugArea()) << "Rejected pairing";
|
||||
|
||||
m_pairStatus = Device::NotPaired;
|
||||
|
||||
|
@ -426,7 +426,7 @@ void Device::acceptPairing()
|
|||
{
|
||||
if (m_pairStatus != Device::RequestedByPeer) return;
|
||||
|
||||
kDebug(kdeconnect_kded()) << "Accepted pairing";
|
||||
kDebug(debugArea()) << "Accepted pairing";
|
||||
|
||||
bool success = sendOwnPublicKey();
|
||||
|
||||
|
@ -472,13 +472,6 @@ QStringList Device::availableLinks() const
|
|||
return sl;
|
||||
}
|
||||
|
||||
void Device::sendPing()
|
||||
{
|
||||
NetworkPackage np(PACKAGE_TYPE_PING);
|
||||
bool success = sendPackage(np);
|
||||
kDebug(kdeconnect_kded()) << "sendPing:" << success;
|
||||
}
|
||||
|
||||
Device::DeviceType Device::str2type(QString deviceType) {
|
||||
if (deviceType == "desktop") return Desktop;
|
||||
if (deviceType == "laptop") return Laptop;
|
||||
|
|
|
@ -105,7 +105,6 @@ public Q_SLOTS:
|
|||
Q_SCRIPTABLE void requestPair();
|
||||
Q_SCRIPTABLE void unpair();
|
||||
Q_SCRIPTABLE void reloadPlugins(); //From kconf
|
||||
Q_SCRIPTABLE void sendPing();
|
||||
void acceptPairing();
|
||||
void rejectPairing();
|
||||
|
||||
|
|
|
@ -41,18 +41,18 @@ FileTransferJob::FileTransferJob(const QSharedPointer<QIODevice>& origin, int si
|
|||
mDeviceName = i18nc("Device name that will appear on the jobs", "KDE-Connect");
|
||||
|
||||
setCapabilities(Killable);
|
||||
kDebug(kdeconnect_kded()) << "FileTransferJob Downloading payload to" << destination;
|
||||
kDebug(debugArea()) << "FileTransferJob Downloading payload to" << destination;
|
||||
}
|
||||
|
||||
void FileTransferJob::openFinished(KJob* job)
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << job->errorString();
|
||||
kDebug(debugArea()) << job->errorString();
|
||||
}
|
||||
|
||||
void FileTransferJob::start()
|
||||
{
|
||||
QMetaObject::invokeMethod(this, "doStart", Qt::QueuedConnection);
|
||||
//kDebug(kdeconnect_kded()) << "FileTransferJob start";
|
||||
//kDebug(debugArea()) << "FileTransferJob start";
|
||||
}
|
||||
|
||||
void FileTransferJob::doStart()
|
||||
|
@ -136,10 +136,10 @@ void FileTransferJob::open(KIO::Job* job)
|
|||
{
|
||||
Q_UNUSED(job);
|
||||
|
||||
//kDebug(kdeconnect_kded()) << "FileTransferJob open";
|
||||
//kDebug(debugArea()) << "FileTransferJob open";
|
||||
|
||||
if (!mOrigin) {
|
||||
kDebug(kdeconnect_kded()) << "FileTransferJob: Origin is null";
|
||||
kDebug(debugArea()) << "FileTransferJob: Origin is null";
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -161,7 +161,7 @@ void FileTransferJob::readyRead()
|
|||
mWritten += data.size();
|
||||
setProcessedAmount(Bytes, mWritten);
|
||||
|
||||
//kDebug(kdeconnect_kded()) << "readyRead" << mSize << mWritten << bytes;
|
||||
//kDebug(debugArea()) << "readyRead" << mSize << mWritten << bytes;
|
||||
|
||||
if (mSize > -1) {
|
||||
//If a least 1 second has passed since last update
|
||||
|
@ -192,11 +192,11 @@ void FileTransferJob::sourceFinished()
|
|||
|
||||
//TODO: MD5 check the file
|
||||
if (mSize > -1 && mWritten != mSize) {
|
||||
kDebug(kdeconnect_kded()) << "Received incomplete file (" << mWritten << " of " << mSize << " bytes)";
|
||||
kDebug(debugArea()) << "Received incomplete file (" << mWritten << " of " << mSize << " bytes)";
|
||||
setError(1);
|
||||
setErrorText(i18n("Received incomplete file"));
|
||||
} else {
|
||||
kDebug(kdeconnect_kded()) << "Finished transfer" << mDestinationJob->url();
|
||||
kDebug(debugArea()) << "Finished transfer" << mDestinationJob->url();
|
||||
}
|
||||
mDestinationJob->close();
|
||||
mDestinationJob->deleteLater();
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
/**
|
||||
* Copyright 2013 Albert Vaca <albertvaka@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License or (at your option) version 3 or any later version
|
||||
* accepted by the membership of KDE e.V. (or its successor approved
|
||||
* by the membership of KDE e.V.), which shall act as a proxy
|
||||
* defined in Section 14 of version 3 of the license.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "kdebugnamespace.h"
|
||||
|
||||
int kdeconnect_kded() {
|
||||
static int s_area = KDebug::registerArea("kdeconnect_kded", true);
|
||||
return s_area;
|
||||
}
|
||||
|
||||
|
|
@ -24,7 +24,11 @@
|
|||
#include <KDebug>
|
||||
#include <kdemacros.h>
|
||||
|
||||
KDE_EXPORT int kdeconnect_kded();
|
||||
inline int debugArea()
|
||||
{
|
||||
static int theArea = KDebug::registerArea("kdeconnect");
|
||||
return theArea;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -82,10 +82,10 @@ QByteArray NetworkPackage::serialize() const
|
|||
QJson::Serializer serializer;
|
||||
QByteArray json = serializer.serialize(variant,&ok);
|
||||
if (!ok) {
|
||||
kDebug(kdeconnect_kded()) << "Serialization error:" << serializer.errorMessage();
|
||||
kDebug(debugArea()) << "Serialization error:" << serializer.errorMessage();
|
||||
} else {
|
||||
if (!isEncrypted()) {
|
||||
//kDebug(kdeconnect_kded()) << "Serialized package:" << json;
|
||||
//kDebug(kDebugArea) << "Serialized package:" << json;
|
||||
}
|
||||
json.append('\n');
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ bool NetworkPackage::unserialize(const QByteArray& a, NetworkPackage* np)
|
|||
bool ok;
|
||||
QVariantMap variant = parser.parse(a, &ok).toMap();
|
||||
if (!ok) {
|
||||
kDebug(kdeconnect_kded()) << "Unserialization error:" << a;
|
||||
kDebug(debugArea()) << "Unserialization error:" << a;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -108,7 +108,7 @@ bool NetworkPackage::unserialize(const QByteArray& a, NetworkPackage* np)
|
|||
QJson::QObjectHelper::qvariant2qobject(variant, np);
|
||||
|
||||
if (!np->isEncrypted()) {
|
||||
//kDebug(kdeconnect_kded()) << "Unserialized: " << a;
|
||||
//kDebug(kDebugArea) << "Unserialized: " << a;
|
||||
}
|
||||
|
||||
np->mPayloadSize = variant["payloadSize"].toInt(); //Will return 0 if was not present, which is ok
|
||||
|
|
|
@ -50,7 +50,7 @@ KPluginInfo PluginLoader::getPluginInfo(const QString& name) const
|
|||
{
|
||||
KService::Ptr service = plugins[name];
|
||||
if (!service) {
|
||||
kDebug(kdeconnect_kded()) << "Plugin unknown" << name;
|
||||
kDebug(debugArea()) << "Plugin unknown" << name;
|
||||
return KPluginInfo();
|
||||
}
|
||||
|
||||
|
@ -63,13 +63,13 @@ PluginData PluginLoader::instantiatePluginForDevice(const QString& name, Device*
|
|||
|
||||
KService::Ptr service = plugins[name];
|
||||
if (!service) {
|
||||
kDebug(kdeconnect_kded()) << "Plugin unknown" << name;
|
||||
kDebug(debugArea()) << "Plugin unknown" << name;
|
||||
return ret;
|
||||
}
|
||||
|
||||
KPluginFactory *factory = KPluginLoader(service->library()).factory();
|
||||
if (!factory) {
|
||||
kDebug(kdeconnect_kded()) << "KPluginFactory could not load the plugin:" << service->library();
|
||||
kDebug(debugArea()) << "KPluginFactory could not load the plugin:" << service->library();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -81,11 +81,11 @@ PluginData PluginLoader::instantiatePluginForDevice(const QString& name, Device*
|
|||
//FIXME any reason to use QObject in template param instead KdeConnectPlugin?
|
||||
ret.plugin = factory->create<KdeConnectPlugin>(device, QVariantList() << deviceVariant << ret.outgoingInterfaces);
|
||||
if (!ret.plugin) {
|
||||
kDebug(kdeconnect_kded()) << "Error loading plugin";
|
||||
kDebug(debugArea()) << "Error loading plugin";
|
||||
return ret;
|
||||
}
|
||||
|
||||
kDebug(kdeconnect_kded()) << "Loaded plugin:" << service->name();
|
||||
kDebug(debugArea()) << "Loaded plugin:" << service->name();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
Type=Service
|
||||
Name=Send file via KDE Connect service
|
||||
Name[ca]=Envia un fitxer a través del servei KDE Connect
|
||||
Name[cs]=Poslat soubor přes službu KDE Connect
|
||||
Name[da]=Send fil via KDE Connect-tjeneste
|
||||
Name[es]=Enviar archivo usando el servicio KDE Connect
|
||||
Name[hu]=Fájl küldése a KDE csatlakozás szolgáltatáson keresztül
|
||||
Name[nl]=Bestand via de service KDE Connect versturen
|
||||
|
@ -15,6 +17,8 @@ Name[x-test]=xxSend file via KDE Connect servicexx
|
|||
X-KDE-Library=kdeconnectfiletiemaction
|
||||
X-KDE-Submenu=Connect
|
||||
X-KDE-Submenu[ca]=Connecta
|
||||
X-KDE-Submenu[cs]=Připojit
|
||||
X-KDE-Submenu[da]=Forbind
|
||||
X-KDE-Submenu[es]=Conectar
|
||||
X-KDE-Submenu[hu]=Csatlakozás
|
||||
X-KDE-Submenu[nl]=Verbinden
|
||||
|
|
|
@ -59,6 +59,7 @@ QList<QAction*> SendFileItemAction::actions(const KFileItemListProperties& fileI
|
|||
action->setProperty("id", idx.data(DevicesModel::IdModelRole));
|
||||
action->setProperty("urls", QVariant::fromValue(fileItemInfos.urlList()));
|
||||
action->setProperty("parentWidget", QVariant::fromValue(parentWidget));
|
||||
connect(action, SIGNAL(triggered(bool)), this, SLOT(sendFile()));
|
||||
actions += action;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,6 @@ set(libkdeconnect_SRC
|
|||
devicesmodel.cpp
|
||||
notificationsmodel.cpp
|
||||
modeltest.cpp
|
||||
kdebugnamespace.cpp
|
||||
)
|
||||
|
||||
set(libkdeconnect_public_HEADERS
|
||||
|
|
|
@ -26,9 +26,10 @@
|
|||
#include <KConfigGroup>
|
||||
#include <KIcon>
|
||||
|
||||
#include "kdebugnamespace.h"
|
||||
#include <core/kdebugnamespace.h>
|
||||
|
||||
#include "dbusinterfaces.h"
|
||||
// #include "modeltest.h"
|
||||
#include "interfaces/dbusinterfaces.h"
|
||||
|
||||
DevicesModel::DevicesModel(QObject *parent)
|
||||
: QAbstractListModel(parent)
|
||||
|
@ -85,19 +86,14 @@ void DevicesModel::deviceStatusChanged(const QString& id)
|
|||
refreshDeviceList();
|
||||
}
|
||||
|
||||
DevicesModel::StatusFlags DevicesModel::displayFilter() const
|
||||
int DevicesModel::displayFilter() const
|
||||
{
|
||||
return m_displayFilter;
|
||||
}
|
||||
|
||||
void DevicesModel::setDisplayFilter(int flags)
|
||||
{
|
||||
setDisplayFilter((StatusFlags)flags);
|
||||
}
|
||||
|
||||
void DevicesModel::setDisplayFilter(DevicesModel::StatusFlags flags)
|
||||
{
|
||||
m_displayFilter = flags;
|
||||
m_displayFilter = (StatusFlag)flags;
|
||||
refreshDeviceList();
|
||||
}
|
||||
|
||||
|
@ -110,16 +106,19 @@ void DevicesModel::refreshDeviceList()
|
|||
}
|
||||
|
||||
if (!m_dbusInterface->isValid()) {
|
||||
kDebug(debugArea()) << "dbus interface not valid";
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
bool onlyPaired = (m_displayFilter & StatusPaired);
|
||||
bool onlyReachable = (m_displayFilter & StatusReachable);
|
||||
|
||||
QDBusPendingReply<QStringList> pendingDeviceIds = m_dbusInterface->devices(onlyReachable, onlyPaired);
|
||||
pendingDeviceIds.waitForFinished();
|
||||
if (pendingDeviceIds.isError()) return;
|
||||
if (pendingDeviceIds.isError()) {
|
||||
kDebug(debugArea()) << pendingDeviceIds.error();
|
||||
return;
|
||||
}
|
||||
|
||||
const QStringList& deviceIds = pendingDeviceIds.value();
|
||||
Q_FOREACH(const QString& id, deviceIds) {
|
||||
|
|
|
@ -46,18 +46,20 @@ public:
|
|||
IdModelRole = Qt::UserRole,
|
||||
IconNameRole
|
||||
};
|
||||
enum StatusFlags {
|
||||
enum StatusFlag {
|
||||
StatusUnknown = 0x00,
|
||||
StatusPaired = 0x01,
|
||||
StatusReachable = 0x02
|
||||
};
|
||||
Q_DECLARE_FLAGS(StatusFlags, StatusFlag)
|
||||
Q_FLAGS(StatusFlags)
|
||||
Q_ENUMS(StatusFlag)
|
||||
|
||||
DevicesModel(QObject *parent = 0);
|
||||
virtual ~DevicesModel();
|
||||
|
||||
void setDisplayFilter(StatusFlags flags);
|
||||
void setDisplayFilter(int flags);
|
||||
StatusFlags displayFilter() const;
|
||||
int displayFilter() const;
|
||||
|
||||
virtual QVariant data(const QModelIndex& index, int role) const;
|
||||
virtual int rowCount(const QModelIndex& parent = QModelIndex()) const;
|
||||
|
@ -79,7 +81,8 @@ private:
|
|||
DaemonDbusInterface* m_dbusInterface;
|
||||
QList<DeviceDbusInterface*> m_deviceList;
|
||||
StatusFlags m_displayFilter;
|
||||
|
||||
};
|
||||
|
||||
//Q_DECLARE_OPERATORS_FOR_FLAGS(DevicesModel::StatusFlags)
|
||||
|
||||
#endif // DEVICESMODEL_H
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
/**
|
||||
* Copyright 2013 Albert Vaca <albertvaka@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License or (at your option) version 3 or any later version
|
||||
* accepted by the membership of KDE e.V. (or its successor approved
|
||||
* by the membership of KDE e.V.), which shall act as a proxy
|
||||
* defined in Section 14 of version 3 of the license.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "kdebugnamespace.h"
|
||||
|
||||
int libkdeconnect() {
|
||||
static int s_area = KDebug::registerArea("kdeconnect_libkdeconnect", true);
|
||||
return s_area;
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
/**
|
||||
* Copyright 2013 Albert Vaca <albertvaka@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License or (at your option) version 3 or any later version
|
||||
* accepted by the membership of KDE e.V. (or its successor approved
|
||||
* by the membership of KDE e.V.), which shall act as a proxy
|
||||
* defined in Section 14 of version 3 of the license.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef KDEBUG_LIBKDECONNECT_H
|
||||
#define KDEBUG_LIBKDECONNECT_H
|
||||
|
||||
#include <KDebug>
|
||||
|
||||
int libkdeconnect();
|
||||
|
||||
#endif
|
||||
|
|
@ -26,8 +26,10 @@
|
|||
#include <KConfigGroup>
|
||||
#include <KIcon>
|
||||
|
||||
#include "modeltest.h"
|
||||
#include "kdebugnamespace.h"
|
||||
#include <core/kdebugnamespace.h>
|
||||
|
||||
//#include "modeltest.h"
|
||||
|
||||
|
||||
NotificationsModel::NotificationsModel(QObject* parent)
|
||||
: QAbstractListModel(parent)
|
||||
|
@ -110,12 +112,14 @@ void NotificationsModel::refreshNotificationList()
|
|||
}
|
||||
|
||||
if (!m_dbusInterface->isValid()) {
|
||||
kDebug(debugArea()) << "dbus interface not valid";
|
||||
return;
|
||||
}
|
||||
|
||||
QDBusPendingReply<QStringList> pendingNotificationIds = m_dbusInterface->activeNotifications();
|
||||
pendingNotificationIds.waitForFinished();
|
||||
if (pendingNotificationIds.isError()) {
|
||||
kDebug(debugArea()) << pendingNotificationIds.error();
|
||||
return;
|
||||
}
|
||||
const QStringList& notificationIds = pendingNotificationIds.value();
|
||||
|
@ -205,7 +209,6 @@ bool NotificationsModel::isAnyDimissable() const
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
void NotificationsModel::dismissAll()
|
||||
{
|
||||
Q_FOREACH (NotificationDbusInterface* notification, m_notificationList) {
|
||||
|
|
|
@ -7,7 +7,6 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}
|
|||
set(kcm_SRCS
|
||||
kcm.cpp
|
||||
devicessortproxymodel.cpp
|
||||
kdebugnamespace.cpp
|
||||
)
|
||||
|
||||
qt5_wrap_ui(kcm_SRCS kcm.ui)
|
||||
|
|
|
@ -20,10 +20,9 @@
|
|||
|
||||
#include "devicessortproxymodel.h"
|
||||
|
||||
#include "interfaces/dbusinterfaces.h"
|
||||
#include "interfaces/devicesmodel.h"
|
||||
|
||||
#include "kdebugnamespace.h"
|
||||
#include <core/kdebugnamespace.h>
|
||||
#include <interfaces/dbusinterfaces.h>
|
||||
#include <interfaces/devicesmodel.h>
|
||||
|
||||
DevicesSortProxyModel::DevicesSortProxyModel(DevicesModel* devicesModel)
|
||||
: QSortFilterProxyModel(devicesModel)
|
||||
|
|
|
@ -36,11 +36,12 @@
|
|||
#include <KStandardDirs>
|
||||
#include <KLocalizedString>
|
||||
|
||||
#include <core/kdebugnamespace.h>
|
||||
|
||||
#include "ui_kcm.h"
|
||||
#include "interfaces/dbusinterfaces.h"
|
||||
#include "interfaces/devicesmodel.h"
|
||||
#include "devicessortproxymodel.h"
|
||||
#include "kdebugnamespace.h"
|
||||
|
||||
K_PLUGIN_FACTORY(KdeConnectKcmFactory, registerPlugin<KdeConnectKcm>();)
|
||||
K_EXPORT_PLUGIN(KdeConnectKcmFactory("kdeconnect-kcm", "kdeconnect-kcm"))
|
||||
|
@ -252,7 +253,8 @@ void KdeConnectKcm::save()
|
|||
void KdeConnectKcm::sendPing()
|
||||
{
|
||||
if (!currentDevice) return;
|
||||
currentDevice->sendPing();
|
||||
QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kdeconnect", "/modules/kdeconnect/devices/"+currentDevice->id()+"/ping", "org.kde.kdeconnect.device.ping", "sendPing");
|
||||
QDBusConnection::sessionBus().call(msg);
|
||||
}
|
||||
|
||||
#include "kcm.moc"
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
/**
|
||||
* Copyright 2013 Albert Vaca <albertvaka@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License or (at your option) version 3 or any later version
|
||||
* accepted by the membership of KDE e.V. (or its successor approved
|
||||
* by the membership of KDE e.V.), which shall act as a proxy
|
||||
* defined in Section 14 of version 3 of the license.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "kdebugnamespace.h"
|
||||
|
||||
int kdeconnect_kcm() {
|
||||
static int s_area = KDebug::registerArea("kdeconnect_kcm", true);
|
||||
return s_area;
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
/**
|
||||
* Copyright 2013 Albert Vaca <albertvaka@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License or (at your option) version 3 or any later version
|
||||
* accepted by the membership of KDE e.V. (or its successor approved
|
||||
* by the membership of KDE e.V.), which shall act as a proxy
|
||||
* defined in Section 14 of version 3 of the license.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef KDEBUG_KDECONNECT_KCM_H
|
||||
#define KDEBUG_KDECONNECT_KCM_H
|
||||
|
||||
#include <KDebug>
|
||||
|
||||
int kdeconnect_kcm();
|
||||
|
||||
#endif
|
||||
|
|
@ -68,6 +68,8 @@ int main(int argc, char* argv[])
|
|||
KLocalizedString(),
|
||||
"http://albertvaka.wordpress.com");
|
||||
|
||||
aboutData.setOrganizationDomain("kde.org");
|
||||
|
||||
KCmdLineArgs::init(argc, argv, &aboutData);
|
||||
|
||||
KUniqueApplication app(true); // WARNING GUI required for QClipboard access
|
||||
|
|
|
@ -27,8 +27,6 @@
|
|||
|
||||
#include "core/kdebugnamespace.h"
|
||||
|
||||
int theArea = KDebug::registerArea("kdeconnect-kded");
|
||||
|
||||
K_PLUGIN_FACTORY(KdeConnectFactory, registerPlugin<Kded>();)
|
||||
K_EXPORT_PLUGIN(KdeConnectFactory("kdeconnect", "kdeconnect-kded"))
|
||||
|
||||
|
@ -37,13 +35,13 @@ Kded::Kded(QObject *parent, const QList<QVariant>&)
|
|||
, m_daemon(0)
|
||||
{
|
||||
QMetaObject::invokeMethod(this, "start", Qt::QueuedConnection);
|
||||
kDebug(theArea) << "kded_kdeconnect started";
|
||||
kDebug(debugArea()) << "kded_kdeconnect started";
|
||||
}
|
||||
|
||||
Kded::~Kded()
|
||||
{
|
||||
stop();
|
||||
kDebug(theArea) << "kded_kdeconnect stopped";
|
||||
kDebug(debugArea()) << "kded_kdeconnect stopped";
|
||||
}
|
||||
|
||||
void Kded::start()
|
||||
|
@ -53,7 +51,7 @@ void Kded::start()
|
|||
}
|
||||
|
||||
const QString daemon = KStandardDirs::locate("exe", "kdeconnectd");
|
||||
kDebug(theArea) << "Starting daemon " << daemon;
|
||||
kDebug(debugArea()) << "Starting daemon " << daemon;
|
||||
m_daemon = new KProcess(this);
|
||||
connect(m_daemon, SIGNAL(started()), SLOT(daemonStarted()));
|
||||
connect(m_daemon, SIGNAL(error(QProcess::ProcessError)), this, SLOT(onError(QProcess::ProcessError)));
|
||||
|
@ -85,24 +83,24 @@ void Kded::restart()
|
|||
|
||||
void Kded::onError(QProcess::ProcessError errorCode)
|
||||
{
|
||||
kError(theArea) << "Process error code=" << errorCode;
|
||||
kError(debugArea()) << "Process error code=" << errorCode;
|
||||
}
|
||||
|
||||
void Kded::daemonStarted()
|
||||
{
|
||||
kDebug(theArea) << "Daemon successfuly started";
|
||||
kDebug(debugArea()) << "Daemon successfuly started";
|
||||
Q_EMIT started();
|
||||
}
|
||||
|
||||
void Kded::onFinished(int exitCode, QProcess::ExitStatus status)
|
||||
{
|
||||
if (status == QProcess::CrashExit) {
|
||||
kError(theArea) << "Process crashed with code=" << exitCode;
|
||||
kError(theArea) << m_daemon->readAllStandardError();
|
||||
kWarning(theArea) << "Restarting in 5 sec...";
|
||||
kError(debugArea()) << "Process crashed with code=" << exitCode;
|
||||
kError(debugArea()) << m_daemon->readAllStandardError();
|
||||
kWarning(debugArea()) << "Restarting in 5 sec...";
|
||||
QTimer::singleShot(5000, this, SLOT(start()));
|
||||
} else {
|
||||
kWarning(theArea) << "Process finished with code=" << exitCode;
|
||||
kWarning(debugArea()) << "Process finished with code=" << exitCode;
|
||||
}
|
||||
|
||||
Q_EMIT stopped();
|
||||
|
@ -116,7 +114,7 @@ void Kded::checkIfDaemonTerminated()
|
|||
}
|
||||
|
||||
m_daemon->kill();
|
||||
kWarning(theArea) << "Daemon killed";
|
||||
kWarning(debugArea()) << "Daemon killed";
|
||||
}
|
||||
|
||||
#include "kded.moc"
|
||||
|
|
|
@ -2,7 +2,7 @@ include_directories(${CMAKE_SOURCE_DIR})
|
|||
|
||||
set(kio_kdeconnect_PART_SRCS
|
||||
kiokdeconnect.cpp
|
||||
kdebugnamespace.cpp)
|
||||
)
|
||||
|
||||
add_library(kio_kdeconnect MODULE ${kio_kdeconnect_PART_SRCS})
|
||||
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
/**
|
||||
* Copyright 2013 Albert Vaca <albertvaka@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License or (at your option) version 3 or any later version
|
||||
* accepted by the membership of KDE e.V. (or its successor approved
|
||||
* by the membership of KDE e.V.), which shall act as a proxy
|
||||
* defined in Section 14 of version 3 of the license.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "kdebugnamespace.h"
|
||||
|
||||
int kdeconnect_kio() {
|
||||
static int s_area = KDebug::registerArea("kdeconnect_kio", true);
|
||||
return s_area;
|
||||
}
|
|
@ -33,7 +33,7 @@
|
|||
#include <k4aboutdata.h>
|
||||
#include <kdemacros.h>
|
||||
|
||||
#include "kdebugnamespace.h"
|
||||
#include <core/kdebugnamespace.h>
|
||||
|
||||
extern "C" int KDE_EXPORT kdemain(int argc, char **argv)
|
||||
{
|
||||
|
@ -75,7 +75,7 @@ bool handleDBusError(QDBusReply<T>& reply, KIO::SlaveBase* slave)
|
|||
{
|
||||
if (!reply.isValid())
|
||||
{
|
||||
kDebug(kdeconnect_kio()) << "Error in DBus request:" << reply.error();
|
||||
kDebug(debugArea()) << "Error in DBus request:" << reply.error();
|
||||
slave->error(toKioError(reply.error().type()),reply.error().message());
|
||||
return true;
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ void KioKdeconnect::listDevice()
|
|||
{
|
||||
infoMessage(i18n("Accessing device..."));
|
||||
|
||||
kDebug(kdeconnect_kio()) << "ListDevice" << m_currentDevice;
|
||||
kDebug(debugArea()) << "ListDevice" << m_currentDevice;
|
||||
|
||||
SftpDbusInterface interface(m_currentDevice);
|
||||
|
||||
|
@ -185,7 +185,7 @@ void KioKdeconnect::listDevice()
|
|||
|
||||
void KioKdeconnect::listDir(const QUrl &url)
|
||||
{
|
||||
kDebug(kdeconnect_kio()) << "Listing..." << url;
|
||||
kDebug(debugArea()) << "Listing..." << url;
|
||||
|
||||
/// Url is not used here becuase all we could care about the url is the host, and that's already
|
||||
/// handled in @p setHost
|
||||
|
@ -207,7 +207,7 @@ void KioKdeconnect::listDir(const QUrl &url)
|
|||
|
||||
void KioKdeconnect::stat(const QUrl &url)
|
||||
{
|
||||
kDebug(kdeconnect_kio()) << "Stat: " << url;
|
||||
kDebug(debugArea()) << "Stat: " << url;
|
||||
|
||||
KIO::UDSEntry entry;
|
||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||
|
@ -218,7 +218,7 @@ void KioKdeconnect::stat(const QUrl &url)
|
|||
|
||||
void KioKdeconnect::get(const QUrl &url)
|
||||
{
|
||||
kDebug(kdeconnect_kio()) << "Get: " << url;
|
||||
kDebug(debugArea()) << "Get: " << url;
|
||||
mimeType("");
|
||||
finished();
|
||||
}
|
||||
|
@ -228,7 +228,7 @@ void KioKdeconnect::setHost(const QString &hostName, quint16 port, const QString
|
|||
|
||||
//This is called before everything else to set the file we want to show
|
||||
|
||||
kDebug(kdeconnect_kio()) << "Setting host: " << hostName;
|
||||
kDebug(debugArea()) << "Setting host: " << hostName;
|
||||
|
||||
// In this kio only the hostname is used
|
||||
Q_UNUSED(port)
|
||||
|
|
|
@ -53,8 +53,8 @@ QtObject {
|
|||
if (available) {
|
||||
battery = DeviceBatteryDbusInterfaceFactory.create(deviceId)
|
||||
|
||||
battery.stateChanged.connect(function(charging) {root.charging = charging})
|
||||
battery.chargeChanged.connect(function(charge) {root.charge = charge})
|
||||
battery.stateChanged.connect(function(c) {charging = c})
|
||||
battery.chargeChanged.connect(function(c) {charge = c})
|
||||
|
||||
startupCheck1.setPendingCall(battery.isCharging())
|
||||
startupCheck2.setPendingCall(battery.charge())
|
||||
|
|
|
@ -62,9 +62,10 @@ Item {
|
|||
ListView {
|
||||
id: devicesView
|
||||
anchors.fill: parent
|
||||
model: KdeConnect.DevicesModel {
|
||||
model: DevicesModel {
|
||||
id: connectDeviceModel
|
||||
displayFilter: 0x11
|
||||
displayFilter: StatusFlags.StatusPaired | StatusFlags.StatusReachable
|
||||
|
||||
}
|
||||
delegate: DeviceDelegate { }
|
||||
onCountChanged: shouldPlasmoidBeShown()
|
||||
|
@ -72,14 +73,4 @@ Item {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
ListView {
|
||||
anchors.fill: parent
|
||||
id: devicesView
|
||||
model: KdeConnect.DevicesModel {
|
||||
displayFilter: 0x11
|
||||
}
|
||||
delegate: DeviceDelegate {}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
[Desktop Entry]
|
||||
Name=KDE Connect
|
||||
Name[bg]=KdeConnect
|
||||
Name[bs]=Kde konekcija
|
||||
Name[ca]=KdeConnect
|
||||
Name[cs]=KdeConnect
|
||||
Name[da]=KdeConnect
|
||||
Name[de]=KdeConnect
|
||||
Name[es]=KdeConnect
|
||||
Name[fr]=KdeConnect
|
||||
Name[hu]=KdeConnect
|
||||
Name[it]=KdeConnect
|
||||
Name[ko]=KdeConnect
|
||||
Name[nl]=KdeConnect
|
||||
Name[pl]=KdeConnect
|
||||
Name[pt]=KDEConnect
|
||||
Name[pt_BR]=KdeConnect
|
||||
Name[ro]=KdeConnect
|
||||
Name[ru]=KdeConnect
|
||||
Name[sk]=KdeConnect
|
||||
Name[bg]=KDE Connect
|
||||
Name[bs]=Konekcija KDE
|
||||
Name[ca]=KDE Connect
|
||||
Name[cs]=KDE Connect
|
||||
Name[da]=KDE Connect
|
||||
Name[de]=KDE-Connect
|
||||
Name[es]=KDE Connect
|
||||
Name[fr]=KDE Connect
|
||||
Name[hu]=KDE csatlakozás
|
||||
Name[it]=KDE Connect
|
||||
Name[ko]=KDE Connect
|
||||
Name[nl]=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[sv]=KDE anslut
|
||||
Name[tr]=KdeConnect
|
||||
Name[uk]=KdeConnect
|
||||
Name[x-test]=xxKdeConnectxx
|
||||
Name[tr]=KDE Bağlan
|
||||
Name[uk]=З’єднання KDE
|
||||
Name[x-test]=xxKDE Connectxx
|
||||
Comment=Show notifications from your devices using KDE Connect
|
||||
Comment[bg]=Показване на уведомления от вашите устройства чрез KDE Connect
|
||||
Comment[bs]=Prikaži obavlještenja sa uređaja koji koriste KDE konekciju
|
||||
|
|
|
@ -8,6 +8,7 @@ add_subdirectory(mpriscontrol)
|
|||
add_subdirectory(clipboard)
|
||||
add_subdirectory(telephony)
|
||||
add_subdirectory(battery)
|
||||
add_subdirectory(mousepad)
|
||||
add_subdirectory(share)
|
||||
add_subdirectory(notifications)
|
||||
add_subdirectory(sftp)
|
||||
|
|
|
@ -20,16 +20,17 @@
|
|||
|
||||
#include "batterydbusinterface.h"
|
||||
|
||||
#include <core/device.h>
|
||||
#include <core/kdebugnamespace.h>
|
||||
|
||||
BatteryDbusInterface::BatteryDbusInterface(QObject *parent)
|
||||
: QDBusAbstractAdaptor(parent)
|
||||
BatteryDbusInterface::BatteryDbusInterface(const Device *device)
|
||||
: QDBusAbstractAdaptor(const_cast<Device*>(device))
|
||||
{
|
||||
}
|
||||
|
||||
BatteryDbusInterface::~BatteryDbusInterface()
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "Destroying BatteryDbusInterface";
|
||||
kDebug(debugArea()) << "Destroying BatteryDbusInterface";
|
||||
}
|
||||
|
||||
void BatteryDbusInterface::updateValues(bool isCharging, int currentCharge)
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
|
||||
#include <QDBusAbstractAdaptor>
|
||||
|
||||
class Device;
|
||||
|
||||
class BatteryDbusInterface
|
||||
: public QDBusAbstractAdaptor
|
||||
{
|
||||
|
@ -30,7 +32,7 @@ class BatteryDbusInterface
|
|||
Q_CLASSINFO("D-Bus Interface", "org.kde.kdeconnect.device.battery")
|
||||
|
||||
public:
|
||||
explicit BatteryDbusInterface(QObject *parent);
|
||||
explicit BatteryDbusInterface(const Device *device);
|
||||
virtual ~BatteryDbusInterface();
|
||||
|
||||
Q_SCRIPTABLE int charge() const { return mCharge; }
|
||||
|
|
|
@ -32,7 +32,7 @@ K_EXPORT_PLUGIN( KdeConnectPluginFactory("kdeconnect_battery", "kdeconnect-plugi
|
|||
|
||||
BatteryPlugin::BatteryPlugin(QObject *parent, const QVariantList &args)
|
||||
: KdeConnectPlugin(parent, args)
|
||||
, batteryDbusInterface(new BatteryDbusInterface(parent))
|
||||
, batteryDbusInterface(new BatteryDbusInterface(device()))
|
||||
{
|
||||
|
||||
//TODO: Add battery reporting, could be based on:
|
||||
|
|
|
@ -59,3 +59,5 @@ Comment[uk]=Спільне використання буфера обміну д
|
|||
Comment[x-test]=xxShare the clipboard between devicesxx
|
||||
|
||||
X-KdeConnect-SupportedPackageType=kdeconnect.clipboard
|
||||
X-KdeConnect-OutgoingPackageType=kdeconnect.clipboard
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ X-KDE-Derived=KPluginInfo
|
|||
Name=KDEConnect Plugin
|
||||
Name[bg]=Приставка на KDEConnect
|
||||
Name[bs]=Priključak za KDE konekciju
|
||||
Name[ca]=Connector de KDEConnect
|
||||
Name[ca]=Connector del KDEConnect
|
||||
Name[cs]=Modul KDEConnect
|
||||
Name[da]=KDEConnect-plugin
|
||||
Name[de]=KDEConnect-Modul
|
||||
|
|
15
plugins/mousepad/CMakeLists.txt
Normal file
15
plugins/mousepad/CMakeLists.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
set(kdeconnect_mousepad_SRCS
|
||||
mousepadplugin.cpp
|
||||
)
|
||||
|
||||
find_package(XTest REQUIRED)
|
||||
find_package(X11 REQUIRED)
|
||||
|
||||
kde4_add_plugin(kdeconnect_mousepad ${kdeconnect_mousepad_SRCS})
|
||||
|
||||
include_directories(${XTEST_INCLUDE_DIRS} ${X11_INCLUDE_DIR})
|
||||
|
||||
target_link_libraries(kdeconnect_mousepad kdeconnectcore ${QT_QTGUI_LIBRARY} ${X11_LIBRARIES} ${XTEST_LIBRARIES})
|
||||
|
||||
install(TARGETS kdeconnect_mousepad DESTINATION ${PLUGIN_INSTALL_DIR} )
|
||||
install(FILES kdeconnect_mousepad.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
|
5
plugins/mousepad/README
Normal file
5
plugins/mousepad/README
Normal file
|
@ -0,0 +1,5 @@
|
|||
|
||||
When the user moves his on the phone, dx and dy (The difference between the last movement and the current movement of the X and Y Axis respectively)
|
||||
is sent inside a NetworkPackage QCursor is used to move mouse cursor according to its relative position.
|
||||
|
||||
When the user tap or double taps his phone, a mouse key button is simulated using XTestFakeButtonEvent
|
18
plugins/mousepad/kdeconnect_mousepad.desktop
Normal file
18
plugins/mousepad/kdeconnect_mousepad.desktop
Normal file
|
@ -0,0 +1,18 @@
|
|||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Type=Service
|
||||
ServiceTypes=KdeConnect/Plugin
|
||||
X-KDE-Library=kdeconnect_mousepad
|
||||
X-KDE-PluginInfo-Author=Ahmed I. Khalil
|
||||
X-KDE-PluginInfo-Email=ahmedibrahimkhali@gmail.com
|
||||
X-KDE-PluginInfo-Name=kdeconnect_mousepad
|
||||
X-KDE-PluginInfo-Version=0.1
|
||||
X-KDE-PluginInfo-License=GPL
|
||||
X-KDE-PluginInfo-EnabledByDefault=true
|
||||
Icon=input-mouse
|
||||
Name=Touchpad
|
||||
Comment=Use your phone as a touchpad
|
||||
|
||||
X-KdeConnect-SupportedPackageType=kdeconnect.mousepad
|
||||
X-KdeConnect-OutgoingPackageType=kdeconnect.mousepad
|
||||
|
92
plugins/mousepad/mousepadplugin.cpp
Normal file
92
plugins/mousepad/mousepadplugin.cpp
Normal file
|
@ -0,0 +1,92 @@
|
|||
/**
|
||||
* Copyright 2014 Ahmed I. Khalil <ahmedibrahimkhali@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License or (at your option) version 3 or any later version
|
||||
* accepted by the membership of KDE e.V. (or its successor approved
|
||||
* by the membership of KDE e.V.), which shall act as a proxy
|
||||
* defined in Section 14 of version 3 of the license.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "mousepadplugin.h"
|
||||
|
||||
#include <core/networkpackage.h>
|
||||
#include <X11/extensions/XTest.h>
|
||||
|
||||
K_PLUGIN_FACTORY( KdeConnectPluginFactory, registerPlugin< MousepadPlugin >(); )
|
||||
K_EXPORT_PLUGIN( KdeConnectPluginFactory("kdeconnect_mousepad", "kdeconnect-plugins") )
|
||||
|
||||
// Source: http://bharathisubramanian.wordpress.com/2010/04/01/x11-fake-mouse-events-generation-using-xtest/
|
||||
|
||||
MousepadPlugin::MousepadPlugin(QObject* parent, const QVariantList& args)
|
||||
: KdeConnectPlugin(parent, args), m_display(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
MousepadPlugin::~MousepadPlugin()
|
||||
{
|
||||
if (m_display) {
|
||||
XCloseDisplay(m_display);
|
||||
m_display = 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool MousepadPlugin::receivePackage(const NetworkPackage& np)
|
||||
{
|
||||
float dx = np.get<float>("dx", 0);
|
||||
float dy = np.get<float>("dy", 0);
|
||||
|
||||
bool isSingleClick = np.get<bool>("singleclick", false);
|
||||
bool isDoubleClick = np.get<bool>("doubleclick", false);
|
||||
bool isMiddleClick = np.get<bool>("middleclick", false);
|
||||
bool isRightClick = np.get<bool>("rightclick", false);
|
||||
bool isScroll = np.get<bool>("scroll", false);
|
||||
|
||||
if (isSingleClick || isDoubleClick || isMiddleClick || isRightClick || isScroll) {
|
||||
if(!m_display) {
|
||||
m_display = XOpenDisplay(NULL);
|
||||
}
|
||||
|
||||
if(m_display) {
|
||||
if (isSingleClick) {
|
||||
XTestFakeButtonEvent(m_display, LeftMouseButton, true, CurrentTime);
|
||||
XTestFakeButtonEvent(m_display, LeftMouseButton, false, CurrentTime);
|
||||
} else if (isDoubleClick) {
|
||||
XTestFakeButtonEvent(m_display, LeftMouseButton, true, CurrentTime);
|
||||
XTestFakeButtonEvent(m_display, LeftMouseButton, false, CurrentTime);
|
||||
XTestFakeButtonEvent(m_display, LeftMouseButton, true, CurrentTime);
|
||||
XTestFakeButtonEvent(m_display, LeftMouseButton, false, CurrentTime);
|
||||
} else if (isMiddleClick) {
|
||||
XTestFakeButtonEvent(m_display, MiddleMouseButton, true, CurrentTime);
|
||||
XTestFakeButtonEvent(m_display, MiddleMouseButton, false, CurrentTime);
|
||||
} else if (isRightClick) {
|
||||
XTestFakeButtonEvent(m_display, RightMouseButton, true, CurrentTime);
|
||||
XTestFakeButtonEvent(m_display, RightMouseButton, false, CurrentTime);
|
||||
} else if( isScroll ) {
|
||||
if (dy < 0) {
|
||||
XTestFakeButtonEvent(m_display, MouseWheelDown, true, CurrentTime);
|
||||
XTestFakeButtonEvent(m_display, MouseWheelDown, false, CurrentTime);
|
||||
} else if (dy > 0) {
|
||||
XTestFakeButtonEvent(m_display, MouseWheelUp, true, CurrentTime);
|
||||
XTestFakeButtonEvent(m_display, MouseWheelUp, false, CurrentTime);
|
||||
}
|
||||
}
|
||||
XFlush(m_display);
|
||||
}
|
||||
} else {
|
||||
QPoint point = QCursor::pos();
|
||||
QCursor::setPos(point.x() + (int)dx, point.y() + (int)dy);
|
||||
}
|
||||
return true;
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
* Copyright 2013 Albert Vaca <albertvaka@gmail.com>
|
||||
* Copyright 2014 Ahmed I. Khalil <albertvaka@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
|
@ -18,12 +18,39 @@
|
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef KDEBUG_KDECONNECT_KCM_H
|
||||
#define KDEBUG_KDECONNECT_KCM_H
|
||||
#ifndef MOUSEPADPLUGIN_H
|
||||
#define MOUSEPADPLUGIN_H
|
||||
|
||||
#include <KDebug>
|
||||
#include <QObject>
|
||||
#include <QApplication>
|
||||
|
||||
int kdeconnect_kio();
|
||||
#include <core/kdeconnectplugin.h>
|
||||
|
||||
#define PACKAGE_TYPE_MOUSEPAD QLatin1String("kdeconnect.mousepad")
|
||||
|
||||
class MousepadPlugin
|
||||
: public KdeConnectPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
enum MouseButtons {
|
||||
LeftMouseButton = 1,
|
||||
MiddleMouseButton = 2,
|
||||
RightMouseButton = 3,
|
||||
MouseWheelUp = 4,
|
||||
MouseWheelDown = 5
|
||||
};
|
||||
|
||||
public:
|
||||
explicit MousepadPlugin(QObject *parent, const QVariantList &args);
|
||||
virtual ~MousepadPlugin();
|
||||
|
||||
public Q_SLOTS:
|
||||
virtual bool receivePackage(const NetworkPackage& np);
|
||||
virtual void connected() { }
|
||||
|
||||
private:
|
||||
Display *m_display;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -62,7 +62,7 @@ void MprisControlPlugin::serviceOwnerChanged(const QString &name,
|
|||
|
||||
if (name.startsWith("org.mpris.MediaPlayer2")) {
|
||||
|
||||
kDebug(kdeconnect_kded()) << "Mpris (un)registered in bus" << name << oldOwner << newOwner;
|
||||
kDebug(debugArea()) << "Mpris (un)registered in bus" << name << oldOwner << newOwner;
|
||||
|
||||
if (oldOwner.isEmpty()) {
|
||||
addPlayer(name);
|
||||
|
@ -78,7 +78,7 @@ void MprisControlPlugin::addPlayer(const QString& service)
|
|||
//FIXME: This call hangs and returns an empty string if KDED is still starting!
|
||||
const QString identity = mprisInterface.property("Identity").toString();
|
||||
playerList[identity] = service;
|
||||
kDebug(kdeconnect_kded()) << "Mpris addPlayer" << service << "->" << identity;
|
||||
kDebug(debugArea()) << "Mpris addPlayer" << service << "->" << identity;
|
||||
sendPlayerList();
|
||||
|
||||
OrgFreedesktopDBusPropertiesInterface* freedesktopInterface = new OrgFreedesktopDBusPropertiesInterface(service, "/org/mpris/MediaPlayer2", QDBusConnection::sessionBus(), this);
|
||||
|
@ -89,7 +89,7 @@ void MprisControlPlugin::addPlayer(const QString& service)
|
|||
void MprisControlPlugin::propertiesChanged(const QString& propertyInterface, const QVariantMap& properties)
|
||||
{
|
||||
Q_UNUSED(propertyInterface);
|
||||
|
||||
|
||||
NetworkPackage np(PACKAGE_TYPE_MPRIS);
|
||||
bool somethingToSend = false;
|
||||
if (properties.contains("Volume")) {
|
||||
|
@ -132,7 +132,7 @@ void MprisControlPlugin::propertiesChanged(const QString& propertyInterface, con
|
|||
void MprisControlPlugin::removePlayer(const QString& ifaceName)
|
||||
{
|
||||
const QString identity = playerList.key(ifaceName);
|
||||
kDebug(kdeconnect_kded()) << "Mpris removePlayer" << ifaceName << "->" << identity;
|
||||
kDebug(debugArea()) << "Mpris removePlayer" << ifaceName << "->" << identity;
|
||||
playerList.remove(identity);
|
||||
sendPlayerList();
|
||||
}
|
||||
|
@ -157,18 +157,18 @@ bool MprisControlPlugin::receivePackage (const NetworkPackage& np)
|
|||
OrgMprisMediaPlayer2PlayerInterface mprisInterface(playerList[player], "/org/mpris/MediaPlayer2", QDBusConnection::sessionBus());
|
||||
if (np.has("action")) {
|
||||
const QString& action = np.get<QString>("action");
|
||||
kDebug(kdeconnect_kded()) << "Calling action" << action << "in" << playerList[player];
|
||||
kDebug(debugArea()) << "Calling action" << action << "in" << playerList[player];
|
||||
//TODO: Check for valid actions
|
||||
mprisInterface.call(action);
|
||||
}
|
||||
if (np.has("setVolume")) {
|
||||
double volume = np.get<int>("setVolume")/100.f;
|
||||
kDebug(kdeconnect_kded()) << "Setting volume" << volume << "to" << playerList[player];
|
||||
kDebug(debugArea()) << "Setting volume" << volume << "to" << playerList[player];
|
||||
mprisInterface.setVolume(volume);
|
||||
}
|
||||
if (np.has("Seek")) {
|
||||
int offset = np.get<int>("Seek");
|
||||
kDebug(kdeconnect_kded()) << "Seeking" << offset << "to" << playerList[player];
|
||||
kDebug(debugArea()) << "Seeking" << offset << "to" << playerList[player];
|
||||
mprisInterface.Seek(offset);
|
||||
}
|
||||
|
||||
|
@ -185,20 +185,15 @@ bool MprisControlPlugin::receivePackage (const NetworkPackage& np)
|
|||
|
||||
answer.set("nowPlaying",nowPlaying);
|
||||
|
||||
|
||||
|
||||
bool playing = (mprisInterface.playbackStatus() == QLatin1String("Playing"));
|
||||
answer.set("isPlaying", playing);
|
||||
|
||||
somethingToSend = true;
|
||||
|
||||
|
||||
}
|
||||
if (np.get<bool>("requestVolume")) {
|
||||
int volume = (int)(mprisInterface.volume() * 100);
|
||||
answer.set("volume",volume);
|
||||
somethingToSend = true;
|
||||
|
||||
}
|
||||
if (somethingToSend) {
|
||||
answer.set("player", player);
|
||||
|
@ -206,7 +201,6 @@ bool MprisControlPlugin::receivePackage (const NetworkPackage& np)
|
|||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
void MprisControlPlugin::sendPlayerList()
|
||||
|
|
|
@ -26,18 +26,22 @@
|
|||
#include <KIcon>
|
||||
#include <KMD5>
|
||||
|
||||
#include <core/device.h>
|
||||
#include <core/kdeconnectplugin.h>
|
||||
#include <core/kdebugnamespace.h>
|
||||
#include <core/filetransferjob.h>
|
||||
|
||||
#include "notificationsplugin.h"
|
||||
|
||||
NotificationsDbusInterface::NotificationsDbusInterface(KdeConnectPlugin* plugin)
|
||||
: QDBusAbstractAdaptor(plugin)
|
||||
: QDBusAbstractAdaptor(const_cast<Device*>(plugin->device()))
|
||||
, mDevice(plugin->device())
|
||||
, mPlugin(plugin)
|
||||
, mLastId(0)
|
||||
, imagesDir(QDir::temp().absoluteFilePath("kdeconnect"))
|
||||
{
|
||||
imagesDir.mkpath(imagesDir.absolutePath());
|
||||
|
||||
}
|
||||
|
||||
NotificationsDbusInterface::~NotificationsDbusInterface()
|
||||
|
@ -107,10 +111,10 @@ void NotificationsDbusInterface::addNotification(Notification* noti)
|
|||
|
||||
void NotificationsDbusInterface::removeNotification(const QString& internalId)
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "removeNotification" << internalId;
|
||||
kDebug(debugArea()) << "removeNotification" << internalId;
|
||||
|
||||
if (!mInternalIdToPublicId.contains(internalId)) {
|
||||
kDebug(kdeconnect_kded()) << "Not found";
|
||||
kDebug(debugArea()) << "Not found";
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -118,7 +122,7 @@ void NotificationsDbusInterface::removeNotification(const QString& internalId)
|
|||
|
||||
Notification* noti = mNotifications.take(publicId);
|
||||
if (!noti) {
|
||||
kDebug(kdeconnect_kded()) << "Not found";
|
||||
kDebug(debugArea()) << "Not found";
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -27,9 +27,11 @@
|
|||
#include <QStringList>
|
||||
#include <QDir>
|
||||
|
||||
#include <core/device.h>
|
||||
#include "notification.h"
|
||||
|
||||
class KdeConnectPlugin;
|
||||
class Device;
|
||||
|
||||
class NotificationsDbusInterface
|
||||
: public QDBusAbstractAdaptor
|
||||
{
|
||||
|
|
|
@ -59,4 +59,4 @@ Comment[uk]=Надсилання і отримання сигналів підт
|
|||
Comment[x-test]=xxSend and receive pingsxx
|
||||
|
||||
X-KdeConnect-SupportedPackageType=kdeconnect.ping
|
||||
# X-KdeConnect-OutgoingPackageType=kdeconnect.ping
|
||||
X-KdeConnect-OutgoingPackageType=kdeconnect.ping
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include <core/kdebugnamespace.h>
|
||||
#include <core/device.h>
|
||||
#include <QDBusConnection>
|
||||
|
||||
K_PLUGIN_FACTORY( KdeConnectPluginFactory, registerPlugin< PingPlugin >(); )
|
||||
K_EXPORT_PLUGIN( KdeConnectPluginFactory("kdeconnect_ping", "kdeconnect-plugins") )
|
||||
|
@ -33,12 +34,12 @@ K_EXPORT_PLUGIN( KdeConnectPluginFactory("kdeconnect_ping", "kdeconnect-plugins"
|
|||
PingPlugin::PingPlugin(QObject* parent, const QVariantList& args)
|
||||
: KdeConnectPlugin(parent, args)
|
||||
{
|
||||
//kDebug(kdeconnect_kded()) << "Ping plugin constructor for device" << device()->name();
|
||||
//kDebug(debugArea()) << "Ping plugin constructor for device" << device()->name();
|
||||
}
|
||||
|
||||
PingPlugin::~PingPlugin()
|
||||
{
|
||||
//kDebug(kdeconnect_kded()) << "Ping plugin destructor for device" << device()->name();
|
||||
//kDebug(debugArea()) << "Ping plugin destructor for device" << device()->name();
|
||||
}
|
||||
|
||||
bool PingPlugin::receivePackage(const NetworkPackage& np)
|
||||
|
@ -54,4 +55,22 @@ bool PingPlugin::receivePackage(const NetworkPackage& np)
|
|||
|
||||
}
|
||||
|
||||
void PingPlugin::sendPing()
|
||||
{
|
||||
NetworkPackage np(PACKAGE_TYPE_PING);
|
||||
bool success = sendPackage(np);
|
||||
kDebug(debugArea()) << "sendPing:" << success;
|
||||
}
|
||||
|
||||
void PingPlugin::connected()
|
||||
{
|
||||
QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportAllContents);
|
||||
}
|
||||
|
||||
QString PingPlugin::dbusPath() const
|
||||
{
|
||||
return "/modules/kdeconnect/devices/" + device()->id() + "/ping";
|
||||
}
|
||||
|
||||
#include "pingplugin.moc"
|
||||
|
||||
|
|
|
@ -29,15 +29,20 @@ class KDE_EXPORT PingPlugin
|
|||
: public KdeConnectPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_CLASSINFO("D-Bus Interface", "org.kde.kdeconnect.device.ping")
|
||||
|
||||
public:
|
||||
explicit PingPlugin(QObject *parent, const QVariantList &args);
|
||||
virtual ~PingPlugin();
|
||||
|
||||
Q_SCRIPTABLE void sendPing();
|
||||
|
||||
public Q_SLOTS:
|
||||
virtual bool receivePackage(const NetworkPackage& np);
|
||||
virtual void connected() { };
|
||||
virtual void connected();
|
||||
|
||||
private:
|
||||
QString dbusPath() const;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -59,13 +59,13 @@ Mounter::Mounter(SftpPlugin* sftp, int idleTimeout)
|
|||
m_idleTimer.setSingleShot(false);
|
||||
|
||||
QTimer::singleShot(0, this, SLOT(start()));
|
||||
kDebug(kdeconnect_kded()) << "Created";
|
||||
kDebug(debugArea()) << "Created";
|
||||
}
|
||||
|
||||
Mounter::~Mounter()
|
||||
{
|
||||
unmount();
|
||||
kDebug(kdeconnect_kded()) << "Destroyed";
|
||||
kDebug(debugArea()) << "Destroyed";
|
||||
}
|
||||
|
||||
bool Mounter::wait()
|
||||
|
@ -75,7 +75,7 @@ bool Mounter::wait()
|
|||
return true;
|
||||
}
|
||||
|
||||
kDebug(kdeconnect_kded()) << "Starting loop to wait for mount";
|
||||
kDebug(debugArea()) << "Starting loop to wait for mount";
|
||||
|
||||
MountLoop loop;
|
||||
connect(this, SIGNAL(mounted()), &loop, SLOT(successed()));
|
||||
|
@ -87,7 +87,7 @@ void Mounter::onPakcageReceived(const NetworkPackage& np)
|
|||
{
|
||||
if (np.get<bool>("stop", false))
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "SFTP server stopped";
|
||||
kDebug(debugArea()) << "SFTP server stopped";
|
||||
unmount();
|
||||
return;
|
||||
}
|
||||
|
@ -142,13 +142,13 @@ void Mounter::onPakcageReceived(const NetworkPackage& np)
|
|||
|
||||
cleanMountPoint();
|
||||
|
||||
kDebug(kdeconnect_kded()) << "Staring process: " << m_proc->program().join(" ");
|
||||
kDebug(debugArea()) << "Staring process: " << m_proc->program().join(" ");
|
||||
m_proc->start();
|
||||
}
|
||||
|
||||
void Mounter::onStarted()
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "Porcess started";
|
||||
kDebug(debugArea()) << "Porcess started";
|
||||
m_started = true;
|
||||
Q_EMIT mounted();
|
||||
|
||||
|
@ -167,7 +167,7 @@ void Mounter::onError(QProcess::ProcessError error)
|
|||
{
|
||||
if (error == QProcess::FailedToStart)
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "Porcess failed to start";
|
||||
kDebug(debugArea()) << "Porcess failed to start";
|
||||
m_started = false;
|
||||
Q_EMIT failed(i18n("Failed to start sshfs"));
|
||||
}
|
||||
|
@ -177,7 +177,7 @@ void Mounter::onFinished(int exitCode, QProcess::ExitStatus exitStatus)
|
|||
{
|
||||
if (exitStatus == QProcess::NormalExit)
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "Process finished (exit code: " << exitCode << ")";
|
||||
kDebug(debugArea()) << "Process finished (exit code: " << exitCode << ")";
|
||||
|
||||
if (m_proc->property(idleTimeout_c).toBool())
|
||||
{
|
||||
|
@ -190,7 +190,7 @@ void Mounter::onFinished(int exitCode, QProcess::ExitStatus exitStatus)
|
|||
}
|
||||
else
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "Porcess failed (exit code: " << exitCode << ")";
|
||||
kDebug(debugArea()) << "Porcess failed (exit code: " << exitCode << ")";
|
||||
Q_EMIT failed(i18n("Error when accessing to filesystem"));
|
||||
}
|
||||
|
||||
|
@ -201,7 +201,7 @@ void Mounter::onFinished(int exitCode, QProcess::ExitStatus exitStatus)
|
|||
|
||||
void Mounter::onMountTimeout()
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "Timeout: device not responding";
|
||||
kDebug(debugArea()) << "Timeout: device not responding";
|
||||
Q_EMIT failed(i18n("Failed to mount filesystem: device not responding"));
|
||||
}
|
||||
|
||||
|
@ -211,7 +211,7 @@ void Mounter::onIdleTimeout()
|
|||
|
||||
if (m_lastActivity.secsTo(QDateTime::currentDateTime()) >= m_idleTimer.interval() / 1000)
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "Timeout: there is no activity on moutned filesystem";
|
||||
kDebug(debugArea()) << "Timeout: there is no activity on moutned filesystem";
|
||||
m_proc->setProperty(idleTimeout_c, true);
|
||||
unmount();
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ SftpPlugin::SftpPlugin(QObject *parent, const QVariantList &args)
|
|||
, m_d(new Pimpl)
|
||||
{
|
||||
addToDolphin();
|
||||
kDebug(kdeconnect_kded()) << "Created device:" << device()->name();
|
||||
kDebug(debugArea()) << "Created device:" << device()->name();
|
||||
}
|
||||
|
||||
SftpPlugin::~SftpPlugin()
|
||||
|
@ -64,7 +64,7 @@ SftpPlugin::~SftpPlugin()
|
|||
QDBusConnection::sessionBus().unregisterObject(dbusPath(), QDBusConnection::UnregisterTree);
|
||||
removeFromDolphin();
|
||||
unmount();
|
||||
kDebug(kdeconnect_kded()) << "Destroyed device:" << device()->name();
|
||||
kDebug(debugArea()) << "Destroyed device:" << device()->name();
|
||||
}
|
||||
|
||||
void SftpPlugin::addToDolphin()
|
||||
|
@ -72,7 +72,7 @@ void SftpPlugin::addToDolphin()
|
|||
removeFromDolphin();
|
||||
KUrl kioUrl("kdeconnect://"+device()->id()+"/");
|
||||
m_d->placesModel.addPlace(device()->name(), kioUrl, "kdeconnect");
|
||||
kDebug(kdeconnect_kded()) << "add to dolphin";
|
||||
kDebug(debugArea()) << "add to dolphin";
|
||||
}
|
||||
|
||||
void SftpPlugin::removeFromDolphin()
|
||||
|
@ -88,12 +88,12 @@ void SftpPlugin::removeFromDolphin()
|
|||
void SftpPlugin::connected()
|
||||
{
|
||||
bool state = QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportScriptableContents);
|
||||
kDebug(kdeconnect_kded()) << "Exposing DBUS interface: " << state;
|
||||
kDebug(debugArea()) << "Exposing DBUS interface: " << state;
|
||||
}
|
||||
|
||||
void SftpPlugin::mount()
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "Mount device:" << device()->name();
|
||||
kDebug(debugArea()) << "Mount device:" << device()->name();
|
||||
if (m_d->mounter) {
|
||||
return;
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ QString SftpPlugin::mountPoint()
|
|||
|
||||
void SftpPlugin::onMounted()
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << device()->name() << QString("Remote filesystem mounted at %1").arg(mountPoint());
|
||||
kDebug(debugArea()) << device()->name() << QString("Remote filesystem mounted at %1").arg(mountPoint());
|
||||
|
||||
Q_EMIT mounted();
|
||||
}
|
||||
|
@ -168,9 +168,9 @@ void SftpPlugin::onMounted()
|
|||
void SftpPlugin::onUnmounted(bool idleTimeout)
|
||||
{
|
||||
if (idleTimeout) {
|
||||
kDebug(kdeconnect_kded()) << device()->name() << "Remote filesystem unmounted by idle timeout";
|
||||
kDebug(debugArea()) << device()->name() << "Remote filesystem unmounted by idle timeout";
|
||||
} else {
|
||||
kDebug(kdeconnect_kded()) << device()->name() << "Remote filesystem unmounted";
|
||||
kDebug(debugArea()) << device()->name() << "Remote filesystem unmounted";
|
||||
}
|
||||
|
||||
unmount();
|
||||
|
|
|
@ -55,7 +55,7 @@ KUrl SharePlugin::destinationDir() const
|
|||
QString url = dir.toLocalFile();
|
||||
if (url.contains("%1")) url = url.arg(device()->name());
|
||||
|
||||
kDebug(kdeconnect_kded()) << url;
|
||||
kDebug(debugArea()) << url;
|
||||
QDir().mkpath(url);
|
||||
|
||||
return url;
|
||||
|
@ -67,7 +67,7 @@ bool SharePlugin::receivePackage(const NetworkPackage& np)
|
|||
//TODO: Use this code to write a test
|
||||
if (np.type() == PACKAGE_TYPE_PING) {
|
||||
|
||||
kDebug(kdeconnect_kded()) << "sending file" << (QDesktopServices::storageLocation(QDesktopServices::HomeLocation) + "/.bashrc");
|
||||
kDebug(debugArea()) << "sending file" << (QDesktopServices::storageLocation(QDesktopServices::HomeLocation) + "/.bashrc");
|
||||
|
||||
NetworkPackage out(PACKAGE_TYPE_SHARE);
|
||||
out.set("filename", mDestinationDir + "itworks.txt");
|
||||
|
@ -83,10 +83,10 @@ bool SharePlugin::receivePackage(const NetworkPackage& np)
|
|||
}
|
||||
*/
|
||||
|
||||
kDebug(kdeconnect_kded()) << "File transfer";
|
||||
kDebug(debugArea()) << "File transfer";
|
||||
|
||||
if (np.hasPayload()) {
|
||||
//kDebug(kdeconnect_kded()) << "receiving file";
|
||||
//kDebug(debugArea()) << "receiving file";
|
||||
QString filename = np.get<QString>("filename", QString::number(QDateTime::currentMSecsSinceEpoch()));
|
||||
KUrl destination = destinationDir();
|
||||
destination.addPath(filename);
|
||||
|
@ -115,7 +115,7 @@ bool SharePlugin::receivePackage(const NetworkPackage& np)
|
|||
QUrl url(np.get<QString>("url"));
|
||||
QDesktopServices::openUrl(url);
|
||||
} else {
|
||||
kDebug(kdeconnect_kded()) << "Error: Nothing attached!";
|
||||
kDebug(debugArea()) << "Error: Nothing attached!";
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -124,7 +124,7 @@ bool SharePlugin::receivePackage(const NetworkPackage& np)
|
|||
|
||||
void SharePlugin::finished(KJob* job)
|
||||
{
|
||||
kDebug(kdeconnect_kded()) << "File transfer finished";
|
||||
kDebug(debugArea()) << "File transfer finished";
|
||||
|
||||
bool error = (job->error() != 0);
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ KNotification* TelephonyPlugin::createNotification(const NetworkPackage& np)
|
|||
content = i18n("Unknown telephony event: %2", event);
|
||||
}
|
||||
|
||||
kDebug(kdeconnect_kded()) << "Creating notification with type:" << type;
|
||||
kDebug(debugArea()) << "Creating notification with type:" << type;
|
||||
|
||||
KNotification* notification = new KNotification(type, KNotification::CloseOnTimeout, this); //, KNotification::Persistent
|
||||
notification->setPixmap(KIcon(icon).pixmap(48, 48));
|
||||
|
|
Loading…
Reference in a new issue