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:
Albert Vaca 2014-07-01 23:59:38 +02:00
commit a303b73238
57 changed files with 505 additions and 387 deletions

2
.gitignore vendored
View file

@ -1,5 +1,5 @@
build
android-shine.kdev4
*.kdev4
Makefile
lib
src/Makefile

View file

@ -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
View 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)

View file

@ -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)

View file

@ -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());

View file

@ -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) {

View file

@ -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;
}

View file

@ -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();

View file

@ -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;

View file

@ -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();

View file

@ -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();

View file

@ -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;
}

View file

@ -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

View file

@ -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

View file

@ -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;
}

View file

@ -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

View file

@ -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;
}
}

View file

@ -15,7 +15,6 @@ set(libkdeconnect_SRC
devicesmodel.cpp
notificationsmodel.cpp
modeltest.cpp
kdebugnamespace.cpp
)
set(libkdeconnect_public_HEADERS

View file

@ -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) {

View file

@ -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

View file

@ -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;
}

View file

@ -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

View file

@ -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) {

View file

@ -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)

View file

@ -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)

View file

@ -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"

View file

@ -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;
}

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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})

View file

@ -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;
}

View file

@ -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)

View file

@ -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())

View file

@ -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 {}
}
*/
}

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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; }

View file

@ -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:

View file

@ -59,3 +59,5 @@ Comment[uk]=Спільне використання буфера обміну д
Comment[x-test]=xxShare the clipboard between devicesxx
X-KdeConnect-SupportedPackageType=kdeconnect.clipboard
X-KdeConnect-OutgoingPackageType=kdeconnect.clipboard

View file

@ -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

View 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
View 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

View 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

View 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;
}

View file

@ -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

View file

@ -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()

View file

@ -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;
}

View file

@ -27,9 +27,11 @@
#include <QStringList>
#include <QDir>
#include <core/device.h>
#include "notification.h"
class KdeConnectPlugin;
class Device;
class NotificationsDbusInterface
: public QDBusAbstractAdaptor
{

View file

@ -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

View file

@ -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"

View file

@ -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

View file

@ -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();
}

View file

@ -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();

View file

@ -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);

View file

@ -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));