diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 69646f0d..88d70935 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -1,46 +1,48 @@ include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR}/core) add_definitions(-DTRANSLATION_DOMAIN=\"kdeconnect-plugins\") install(FILES kdeconnect_plugin.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR}) add_subdirectory(ping) add_subdirectory(battery) add_subdirectory(sendnotifications) add_subdirectory(mpriscontrol) add_subdirectory(photo) if(NOT APPLE) add_subdirectory(systemvolume) endif() if(NOT SAILFISHOS) add_subdirectory(clipboard) add_subdirectory(contacts) add_subdirectory(share) add_subdirectory(remotekeyboard) add_subdirectory(notifications) add_subdirectory(findmyphone) add_subdirectory(telephony) add_subdirectory(mousepad) add_subdirectory(sms) add_subdirectory(runcommand) - if(NOT WIN32 AND NOT APPLE) + if(NOT WIN32) add_subdirectory(screensaver-inhibit) + endif() + if(NOT WIN32 AND NOT APPLE) add_subdirectory(sftp) add_subdirectory(pausemusic) endif() if(Qt5Multimedia_FOUND AND KF5PulseAudioQt_FOUND) add_subdirectory(findthisdevice) endif() endif() if(SAILFISHOS OR EXPERIMENTALAPP_ENABLED) add_subdirectory(remotecommands) add_subdirectory(mprisremote) add_subdirectory(remotecontrol) add_subdirectory(lockdevice) add_subdirectory(remotesystemvolume) endif() # If we split notifications per plugin, in several notifyrc files, they won't # appear in the same group in the Notifications KCM install(FILES kdeconnect.notifyrc DESTINATION ${KNOTIFYRC_INSTALL_DIR}) diff --git a/plugins/screensaver-inhibit/CMakeLists.txt b/plugins/screensaver-inhibit/CMakeLists.txt index e2b4c77a..55291d1f 100644 --- a/plugins/screensaver-inhibit/CMakeLists.txt +++ b/plugins/screensaver-inhibit/CMakeLists.txt @@ -1,10 +1,20 @@ +if(APPLE) +set(kdeconnect_screensaver_inhibit_SRCS + screensaverinhibitplugin-macos.cpp +) +else() set(kdeconnect_screensaver_inhibit_SRCS screensaverinhibitplugin.cpp ) +endif() kdeconnect_add_plugin(kdeconnect_screensaver_inhibit JSON kdeconnect_screensaver_inhibit.json SOURCES ${kdeconnect_screensaver_inhibit_SRCS}) -target_link_libraries(kdeconnect_screensaver_inhibit kdeconnectcore +target_link_libraries(kdeconnect_screensaver_inhibit kdeconnectcore) +if(NOT APPLE) +target_link_libraries(kdeconnect_screensaver_inhibit Qt5::DBus KF5::I18n ) +endif() + diff --git a/plugins/screensaver-inhibit/screensaverinhibitplugin-macos.cpp b/plugins/screensaver-inhibit/screensaverinhibitplugin-macos.cpp new file mode 100644 index 00000000..c89bbc0f --- /dev/null +++ b/plugins/screensaver-inhibit/screensaverinhibitplugin-macos.cpp @@ -0,0 +1,61 @@ +/** + * Copyright 2019 Weixuan XIAO + * + * 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 . + */ + +#include "screensaverinhibitplugin-macos.h" + +#include +#include + +K_PLUGIN_CLASS_WITH_JSON(ScreensaverInhibitPlugin, "kdeconnect_screensaver_inhibit.json") + +Q_LOGGING_CATEGORY(KDECONNECT_PLUGIN_SCREENSAVERINHIBIT, "kdeconnect.plugin.screensaverinhibit") + +ScreensaverInhibitPlugin::ScreensaverInhibitPlugin(QObject* parent, const QVariantList& args) + : KdeConnectPlugin(parent, args), m_caffeinateProcess(nullptr) +{ + if (QFile::exists(QStringLiteral("/usr/bin/caffeinate"))) { + m_caffeinateProcess = new QProcess(); + m_caffeinateProcess->setProgram(QStringLiteral("caffeinate")); + m_caffeinateProcess->setArguments({QStringLiteral("-d")}); // Prevent the display from sleeping + m_caffeinateProcess->start(); + } else { + qWarning(KDECONNECT_PLUGIN_SCREENSAVERINHIBIT) << "Cannot find caffeinate on macOS install"; + } +} + +ScreensaverInhibitPlugin::~ScreensaverInhibitPlugin() +{ + if (m_caffeinateProcess != nullptr) { + m_caffeinateProcess->terminate(); + m_caffeinateProcess = nullptr; + } +} + +void ScreensaverInhibitPlugin::connected() +{ +} + +bool ScreensaverInhibitPlugin::receivePacket(const NetworkPacket& np) +{ + Q_UNUSED(np); + return false; +} + +#include "screensaverinhibitplugin-macos.moc" diff --git a/plugins/screensaver-inhibit/screensaverinhibitplugin-macos.h b/plugins/screensaver-inhibit/screensaverinhibitplugin-macos.h new file mode 100644 index 00000000..9801d7b7 --- /dev/null +++ b/plugins/screensaver-inhibit/screensaverinhibitplugin-macos.h @@ -0,0 +1,45 @@ +/** + * Copyright 2019 Weixuan XIAO + * + * 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 . + */ + +#ifndef SCREENSAVERINHIBITPLUGIN_H +#define SCREENSAVERINHIBITPLUGIN_H + +#include +#include + +#include + +class Q_DECL_EXPORT ScreensaverInhibitPlugin + : public KdeConnectPlugin +{ + Q_OBJECT + +public: + explicit ScreensaverInhibitPlugin(QObject* parent, const QVariantList& args); + ~ScreensaverInhibitPlugin() override; + + bool receivePacket(const NetworkPacket& np) override; + void connected() override; + +private: + QProcess *m_caffeinateProcess; +}; + +#endif