diff --git a/daemon/plugins/CMakeLists.txt b/daemon/plugins/CMakeLists.txt index 3ca5f909c..a8992c224 100644 --- a/daemon/plugins/CMakeLists.txt +++ b/daemon/plugins/CMakeLists.txt @@ -7,4 +7,6 @@ add_subdirectory(mpriscontrol) add_subdirectory(clipboard) add_subdirectory(telephony) add_subdirectory(battery) +add_subdirectory(filetransfer) +add_subdirectory(notifications) diff --git a/daemon/plugins/battery/CMakeLists.txt b/daemon/plugins/battery/CMakeLists.txt index e20f13bc4..74c56b690 100644 --- a/daemon/plugins/battery/CMakeLists.txt +++ b/daemon/plugins/battery/CMakeLists.txt @@ -6,6 +6,9 @@ set(kdeconnect_battery_SRCS batteryplugin.cpp batterydbusinterface.cpp ../kdeconnectplugin.cpp + ../pluginloader.cpp + ../../networkpackage.cpp + ../../device.cpp ) kde4_add_plugin(kdeconnect_battery ${kdeconnect_battery_SRCS}) diff --git a/daemon/plugins/filetransfer/CMakeLists.txt b/daemon/plugins/filetransfer/CMakeLists.txt index 2ffb4fc67..fc25242a1 100644 --- a/daemon/plugins/filetransfer/CMakeLists.txt +++ b/daemon/plugins/filetransfer/CMakeLists.txt @@ -2,19 +2,22 @@ find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories(${KDE4_INCLUDES}) -set(kdeconnect_telephony_SRCS +set(kdeconnect_filetransfer_SRCS filetransferplugin.cpp ../kdeconnectplugin.cpp + ../pluginloader.cpp + ../../networkpackage.cpp + ../../device.cpp ) -kde4_add_plugin(kdeconnect_telephony ${kdeconnect_telephony_SRCS}) +kde4_add_plugin(kdeconnect_filetransfer ${kdeconnect_filetransfer_SRCS}) -target_link_libraries(kdeconnect_telephony +target_link_libraries(kdeconnect_filetransfer ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBS} ${QT_QTNETWORK_LIBRARY} qjson ) -install(TARGETS kdeconnect_telephony DESTINATION ${PLUGIN_INSTALL_DIR} ) -install(FILES kdeconnect_telephony.desktop DESTINATION ${SERVICES_INSTALL_DIR} ) +install(TARGETS kdeconnect_filetransfer DESTINATION ${PLUGIN_INSTALL_DIR} ) +install(FILES kdeconnect_filetransfer.desktop DESTINATION ${SERVICES_INSTALL_DIR} ) diff --git a/daemon/plugins/filetransfer/filetransferplugin.cpp b/daemon/plugins/filetransfer/filetransferplugin.cpp index 8562cc426..41cdf7d94 100644 --- a/daemon/plugins/filetransfer/filetransferplugin.cpp +++ b/daemon/plugins/filetransfer/filetransferplugin.cpp @@ -33,6 +33,7 @@ FileTransferPlugin::FileTransferPlugin(QObject* parent, const QVariantList& args bool FileTransferPlugin::receivePackage(const NetworkPackage& np) { + Q_UNUSED(np); return false; diff --git a/daemon/plugins/filetransfer/filetransferplugin.h b/daemon/plugins/filetransfer/filetransferplugin.h index 2f2142777..efe1bdbda 100644 --- a/daemon/plugins/filetransfer/filetransferplugin.h +++ b/daemon/plugins/filetransfer/filetransferplugin.h @@ -31,7 +31,7 @@ class FileTransferPlugin Q_OBJECT public: - explicit FileTranferPlugin(QObject *parent, const QVariantList &args); + explicit FileTransferPlugin(QObject *parent, const QVariantList &args); public Q_SLOTS: virtual bool receivePackage(const NetworkPackage& np); diff --git a/daemon/plugins/filetransfer/kdeconnect_filetransfer.desktop b/daemon/plugins/filetransfer/kdeconnect_filetransfer.desktop index ba1306e26..0ae74cde5 100644 --- a/daemon/plugins/filetransfer/kdeconnect_filetransfer.desktop +++ b/daemon/plugins/filetransfer/kdeconnect_filetransfer.desktop @@ -10,6 +10,6 @@ X-KDE-PluginInfo-Version=0.1 X-KDE-PluginInfo-Website=http://albertvaka.wordpress.com X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=true -Icon=preferences-desktop-notification +Icon=folder-downloads Name=File transfer Comment=Allows to send and receive files diff --git a/daemon/plugins/notifications/CMakeLists.txt b/daemon/plugins/notifications/CMakeLists.txt index 00a747c06..90f748c0e 100644 --- a/daemon/plugins/notifications/CMakeLists.txt +++ b/daemon/plugins/notifications/CMakeLists.txt @@ -5,6 +5,9 @@ include_directories(${KDE4_INCLUDES}) set(kdeconnect_notifications_SRCS notificationsplugin.cpp ../kdeconnectplugin.cpp + ../pluginloader.cpp + ../../networkpackage.cpp + ../../device.cpp ) kde4_add_plugin(kdeconnect_notifications ${kdeconnect_notifications_SRCS}) diff --git a/daemon/plugins/notifications/notificationsplugin.cpp b/daemon/plugins/notifications/notificationsplugin.cpp index d712053d7..8eeb73c83 100644 --- a/daemon/plugins/notifications/notificationsplugin.cpp +++ b/daemon/plugins/notifications/notificationsplugin.cpp @@ -24,130 +24,20 @@ #include -K_PLUGIN_FACTORY( KdeConnectPluginFactory, registerPlugin< NotificationPlugin >(); ) +K_PLUGIN_FACTORY( KdeConnectPluginFactory, registerPlugin< NotificationsPlugin >(); ) K_EXPORT_PLUGIN( KdeConnectPluginFactory("kdeconnect_notifications", "kdeconnect_notifications") ) NotificationsPlugin::NotificationsPlugin(QObject* parent, const QVariantList& args) : KdeConnectPlugin(parent, args) { - //TODO: Split in EventNotificationInterface and NotificationDrawerSyncInterface - //TODO: Add low battery notifications - - trayIcon = new KStatusNotifierItem(parent); - trayIcon->setIconByName("pda"); - trayIcon->setTitle("KdeConnect"); - connect(trayIcon,SIGNAL(activateRequested(bool,QPoint)),this,SLOT(showPendingNotifications())); -} - -KNotification* NotificationsPlugin::createNotification(const QString& deviceName, const NetworkPackage& np) -{ - - QString id = QString::number(np.id()); - - QString npType = np.get("notificationType"); - - QString title, content, type, icon; - bool transient; - - title = deviceName; - - if (npType == "ringing") { - type = "callReceived"; - icon = "call-start"; - content = "Incoming call from " + np.get("phoneNumber","unknown number"); - transient = false; - } else if (npType == "missedCall") { - type = "missedCall"; - icon = "call-start"; - content = "Missed call from " + np.get("phoneNumber","unknown number"); - transient = true; - } else if (npType == "sms") { - type = "smsReceived"; - icon = "mail-receive"; - content = "SMS from " - + np.get("phoneNumber","unknown number") - + ":\n" - + np.get("messageBody",""); - transient = true; - } else { - //TODO: return NULL if !debug - type = "unknownEvent"; - icon = "pda"; - content = "Unknown notification type: " + npType; - transient = false; - } - - qDebug() << "Creating notification with type:" << type; - - - if (transient) { - trayIcon->setStatus(KStatusNotifierItem::Active); - - KNotification* notification = new KNotification(type); //KNotification::Persistent - notification->setPixmap(KIcon(icon).pixmap(48, 48)); - notification->setComponentData(KComponentData("kdeconnect", "kdeconnect")); - notification->setTitle(title); - notification->setText(content); - - pendingNotifications.insert(id, notification); - } - - - KNotification* notification = new KNotification(type); //KNotification::Persistent - notification->setPixmap(KIcon(icon).pixmap(48, 48)); - notification->setComponentData(KComponentData("kdeconnect", "kdeconnect")); - notification->setTitle(title); - notification->setText(content); - notification->setProperty("id",id); - - connect(notification,SIGNAL(activated()),this,SLOT(notificationAttended())); - connect(notification,SIGNAL(closed()),this,SLOT(notificationAttended())); - - return notification; } -void NotificationsPlugin::notificationAttended() +bool NotificationsPlugin::receivePackage(const NetworkPackage& np) { - KNotification* normalNotification = (KNotification*)sender(); - QString id = normalNotification->property("id").toString(); - if (pendingNotifications.contains(id)) { - delete pendingNotifications[id]; - pendingNotifications.remove(id); - if (pendingNotifications.isEmpty()) { - trayIcon->setStatus(KStatusNotifierItem::Passive); - } - } -} - -void NotificationsPlugin::showPendingNotifications() -{ - trayIcon->setStatus(KStatusNotifierItem::Passive); - Q_FOREACH (KNotification* notification, pendingNotifications) { - notification->sendEvent(); - } - pendingNotifications.clear(); -} - -bool NotificationsPlugin::receivePackage(const Device& device, const NetworkPackage& np) -{ - if (np.type() != PACKAGE_TYPE_NOTIFICATION) return false; - if (np.get("isCancel")) { - - //It would be awesome to remove the old notification from the system tray here, but there is no way to do it :( - //Now I realize why at the end of the day I have hundreds of notifications from facebook messages that I HAVE ALREADY READ, - //...it's just because the telepathy client has no way to remove them! even when it knows that I have read those messages! - - } else { - - KNotification* n = createNotification(device.name(), np); - if (n != NULL) n->sendEvent(); - - } - return true; - } + diff --git a/daemon/plugins/notifications/notificationsplugin.h b/daemon/plugins/notifications/notificationsplugin.h index 1f07b0e2e..37b6d88db 100644 --- a/daemon/plugins/notifications/notificationsplugin.h +++ b/daemon/plugins/notifications/notificationsplugin.h @@ -27,25 +27,17 @@ #include -class NotificationPlugin +class NotificationsPlugin : public KdeConnectPlugin { Q_OBJECT public: - explicit NotificationPlugin(QObject *parent, const QVariantList &args); + explicit NotificationsPlugin(QObject *parent, const QVariantList &args); public Q_SLOTS: virtual bool receivePackage(const NetworkPackage& np); -private: - KNotification* createNotification(const QString& deviceName,const NetworkPackage& np); - KStatusNotifierItem* trayIcon; - QHash pendingNotifications; - -public slots: - void showPendingNotifications(); - void notificationAttended(); }; #endif