Files
RedBear-OS/local/recipes/kde/kirigami/source/src/platform/tabletmodewatcher.h
T
vasilito ce0ac10b6d chore: sync all pending changes — kirigami platform headers, cookbook fix, docs, patches
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.
2026-05-04 11:57:48 +01:00

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