ScreenLockDetector/src/platform/screenlockdetector_macos.h

68 lines
1.5 KiB
C++

#ifndef SCREENLOCKDETECTOR_MACOS_H
#define SCREENLOCKDETECTOR_MACOS_H
#include "screenlockdetector_base.h"
#ifdef Q_OS_MAC
/**
* @brief macOS 屏幕锁定检测器类
*
* 通过监听 macOS 的分布式通知中心来检测屏幕锁定/解锁状态
* 使用 NSDistributedNotificationCenter 监听系统通知
*/
class ScreenLockDetectorMacOS : public ScreenLockDetectorBase
{
Q_OBJECT
public:
explicit ScreenLockDetectorMacOS(QObject *parent = nullptr);
~ScreenLockDetectorMacOS() override;
/**
* @brief 初始化 macOS 平台的锁屏检测
* @return true 如果初始化成功,否则返回 false
*/
bool initialize() override;
public:
/**
* @brief 处理屏幕锁定通知的回调
*/
void handleScreenLocked();
/**
* @brief 处理屏幕解锁通知的回调
*/
void handleScreenUnlocked();
/**
* @brief 处理屏幕保护程序启动通知的回调
*/
void handleScreenSaverStarted();
/**
* @brief 处理屏幕保护程序停止通知的回调
*/
void handleScreenSaverStopped();
private:
/**
* @brief 注册通知观察者
* @return true 如果注册成功
*/
bool registerNotificationObservers();
/**
* @brief 注销通知观察者
*/
void unregisterNotificationObservers();
private:
void *m_observerToken; // Objective-C 观察者令牌(不透明指针)
bool m_initialized; // 是否已初始化
};
#endif // Q_OS_MAC
#endif // SCREENLOCKDETECTOR_MACOS_H