diff --git a/CMakeLists.txt b/CMakeLists.txt index 52066bfe..609ccac7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,6 +54,7 @@ add_subdirectory(bin) #add_subdirectory(services) add_subdirectory(applets) add_subdirectory(containments) + add_subdirectory(components) add_subdirectory(dialer) add_subdirectory(sounds) add_subdirectory(touchscreentest) diff --git a/components/CMakeLists.txt b/components/CMakeLists.txt new file mode 100644 index 00000000..a07d6e6d --- /dev/null +++ b/components/CMakeLists.txt @@ -0,0 +1,14 @@ +project(mobileshellprivate) + +set(mobileshellprivate_SRCS + mobileshellprivateplugin.cpp + fullscreenpanel.cpp + ) + +add_library(plasmamobileshellprivateplugin SHARED ${mobileshellprivate_SRCS}) +target_link_libraries(plasmamobileshellprivateplugin Qt5::Core Qt5::Qml Qt5::Quick KF5::WindowSystem KF5::WaylandClient) + +install(TARGETS plasmamobileshellprivateplugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/private/mobileshell) + + + diff --git a/components/Messages.sh b/components/Messages.sh new file mode 100644 index 00000000..5d9afc52 --- /dev/null +++ b/components/Messages.sh @@ -0,0 +1,2 @@ +#! /bin/sh +$XGETTEXT *.cpp -o $podir/plasmamobileshellprivateplugin.pot diff --git a/components/fullscreenpanel.cpp b/components/fullscreenpanel.cpp new file mode 100644 index 00000000..d42a9449 --- /dev/null +++ b/components/fullscreenpanel.cpp @@ -0,0 +1,51 @@ +/*************************************************************************** + * Copyright 2015 Marco Martin * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Library General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * 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 Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * + ***************************************************************************/ + +#include "fullscreenpanel.h" + +#include + +#include +#include + +#include + +FullScreenPanel::FullScreenPanel(QQuickWindow *parent) + : QQuickWindow(parent) +{ + setFlags(Qt::FramelessWindowHint); + setWindowState(Qt::WindowFullScreen); + // connect(this, &FullScreenPanel::activeFocusItemChanged, this, [this]() {qWarning()<<"hide()";}); + connect(this, &QWindow::activeChanged, this, &FullScreenPanel::activeChanged); +} + +FullScreenPanel::~FullScreenPanel() +{ +} + +void FullScreenPanel::showEvent(QShowEvent *event) +{ + QQuickWindow::showEvent(event); + setWindowState(Qt::WindowFullScreen); + KWindowSystem::setState(winId(), NET::SkipTaskbar); +} + + +#include "fullscreenpanel.moc" + diff --git a/components/fullscreenpanel.h b/components/fullscreenpanel.h new file mode 100644 index 00000000..beb893f7 --- /dev/null +++ b/components/fullscreenpanel.h @@ -0,0 +1,42 @@ +/*************************************************************************** + * Copyright 2015 Marco Martin * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Library General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * 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 Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * + ***************************************************************************/ +#ifndef FULLSCREENPANEL_H +#define FULLSCREENPANEL_H + +#include + +class FullScreenPanel : public QQuickWindow +{ + Q_OBJECT + Q_PROPERTY(bool active READ isActive NOTIFY activeChanged) + +public: + FullScreenPanel(QQuickWindow *parent = 0); + ~FullScreenPanel(); + +Q_SIGNALS: + void activeChanged(); + +protected: + void showEvent(QShowEvent *event); + + +}; + +#endif diff --git a/components/mobileshellprivateplugin.cpp b/components/mobileshellprivateplugin.cpp new file mode 100644 index 00000000..cf9a8a5c --- /dev/null +++ b/components/mobileshellprivateplugin.cpp @@ -0,0 +1,34 @@ +/* + Copyright 2015 Marco Martin + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#include "mobileshellprivateplugin.h" +#include "fullscreenpanel.h" + +#include + + +void PlasmaMobileShellPrivatePlugin::registerTypes(const char *uri) +{ + Q_ASSERT(uri == QLatin1String("org.kde.plasma.private.mobileshell")); + + qmlRegisterType(uri, 2, 0, "FullScreenPanel"); +} diff --git a/components/mobileshellprivateplugin.h b/components/mobileshellprivateplugin.h new file mode 100644 index 00000000..0801fa4a --- /dev/null +++ b/components/mobileshellprivateplugin.h @@ -0,0 +1,37 @@ +/* + Copyright 2015 Marco Martin + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +#ifndef MOBILESHELLPRIVATE_H +#define MOBILESHELLPRIVATE_H + +#include + +class PlasmaMobileShellPrivatePlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") + +public: + void registerTypes(const char *uri); +}; + +#endif diff --git a/components/qmldir b/components/qmldir new file mode 100644 index 00000000..78ea15ad --- /dev/null +++ b/components/qmldir @@ -0,0 +1,3 @@ +module org.kde.plasma.private.mobileshell +plugin plasmamobileshellprivateplugin +