ce0ac10b6d
Kirigami: remove stub .cpp, add Qt platform integration headers for QML gate. Matches KDE src/pattern for direct header-only builds. Cookbook: add --no-backup-if-mismatch to patch invocation (fetch.rs). Kernel: consolidate patch chain, add debug-scheme-serial-fix. Docs: archive old audit reports, add CHANGELOG and hardware validation matrix. Update AGENTS.md with Linux reference source policy. Scripts: add test-network-qemu.sh, test-storage-qemu.sh. .gitignore: add local/reference/ exclusion.
101 lines
2.9 KiB
C++
101 lines
2.9 KiB
C++
/*
|
|
* SPDX-FileCopyrightText: 2018 Marco Martin <mart@kde.org>
|
|
*
|
|
* SPDX-License-Identifier: LGPL-2.0-or-later
|
|
*/
|
|
|
|
#ifndef KIRIGAMI_TABLETMODEWATCHER_H
|
|
#define KIRIGAMI_TABLETMODEWATCHER_H
|
|
|
|
#include <QEvent>
|
|
#include <QObject>
|
|
|
|
#include "kirigamiplatform_export.h"
|
|
|
|
namespace Kirigami
|
|
{
|
|
namespace Platform
|
|
{
|
|
class TabletModeWatcherPrivate;
|
|
|
|
class KIRIGAMIPLATFORM_EXPORT TabletModeChangedEvent : public QEvent
|
|
{
|
|
public:
|
|
TabletModeChangedEvent(bool tablet)
|
|
: QEvent(TabletModeChangedEvent::type)
|
|
, tabletMode(tablet)
|
|
{
|
|
}
|
|
|
|
bool tabletMode = false;
|
|
|
|
inline static QEvent::Type type = QEvent::None;
|
|
};
|
|
|
|
/**
|
|
* @class TabletModeWatcher tabletmodewatcher.h <Kirigami/TabletModeWatcher>
|
|
*
|
|
* This class reports on the status of certain transformable
|
|
* devices which can be both tablets and laptops at the same time,
|
|
* with a detachable keyboard.
|
|
* It reports whether the device supports a tablet mode and if
|
|
* the device is currently in such mode or not, emitting a signal
|
|
* when the user switches.
|
|
*/
|
|
class KIRIGAMIPLATFORM_EXPORT TabletModeWatcher : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
Q_PROPERTY(bool tabletModeAvailable READ isTabletModeAvailable NOTIFY tabletModeAvailableChanged FINAL)
|
|
Q_PROPERTY(bool tabletMode READ isTabletMode NOTIFY tabletModeChanged FINAL)
|
|
|
|
public:
|
|
~TabletModeWatcher() override;
|
|
static TabletModeWatcher *self();
|
|
|
|
/**
|
|
* @returns true if the device supports a tablet mode and has a switch
|
|
* to report when the device has been transformed.
|
|
* For debug purposes, if either the environment variable QT_QUICK_CONTROLS_MOBILE
|
|
* or KDE_KIRIGAMI_TABLET_MODE are set to true, isTabletModeAvailable will be true
|
|
*/
|
|
bool isTabletModeAvailable() const;
|
|
|
|
/**
|
|
* @returns true if the machine is now in tablet mode, such as the
|
|
* laptop keyboard flipped away or detached.
|
|
* Note that this doesn't mean exactly a tablet form factor, but
|
|
* that the preferred input mode for the device is the touch screen
|
|
* and that pointer and keyboard are either secondary or not available.
|
|
*
|
|
* For debug purposes, if either the environment variable QT_QUICK_CONTROLS_MOBILE
|
|
* or KDE_KIRIGAMI_TABLET_MODE are set to true, isTabletMode will be true
|
|
*/
|
|
bool isTabletMode() const;
|
|
|
|
/**
|
|
* Register an arbitrary QObject to send events from this.
|
|
* At the moment only one event will be sent: TabletModeChangedEvent
|
|
*/
|
|
void addWatcher(QObject *watcher);
|
|
|
|
/*
|
|
* Unsubscribe watcher from receiving events from TabletModeWatcher.
|
|
*/
|
|
void removeWatcher(QObject *watcher);
|
|
|
|
Q_SIGNALS:
|
|
void tabletModeAvailableChanged(bool tabletModeAvailable);
|
|
void tabletModeChanged(bool tabletMode);
|
|
|
|
private:
|
|
KIRIGAMIPLATFORM_NO_EXPORT explicit TabletModeWatcher(QObject *parent = nullptr);
|
|
TabletModeWatcherPrivate *d;
|
|
friend class TabletModeWatcherSingleton;
|
|
};
|
|
|
|
}
|
|
}
|
|
|
|
#endif // KIRIGAMI_TABLETMODEWATCHER
|