6 #if QT_VERSION < QT_VERSION_CHECK(5,14,0)
9 #include <QRecursiveMutex>
42 FeatureShutdown = 0x01,
43 FeatureSuspend = 0x02,
44 FeatureHibernate = 0x04,
45 FeatureRestart = 0x08,
46 FeatureHybridSleep = 0x10
49 Q_DECLARE_FLAGS(Features, Feature)
51 static MythPower* AcquireRelease(
void* Reference,
bool Acquire, std::chrono::seconds MinimumDelay = 0s);
52 virtual bool RequestFeature (Feature
Request,
bool Delay =
true);
53 Features GetFeatures (
void);
54 bool IsFeatureSupported(Feature Supported);
55 int GetPowerLevel (
void)
const;
56 QStringList GetFeatureList (
void);
59 virtual void CancelFeature (
void);
62 void ShuttingDown (
void);
63 void Suspending (
void);
64 void Hibernating (
void);
65 void Restarting (
void);
66 void HybridSleeping (
void);
67 void WillShutDown (std::chrono::milliseconds MilliSeconds = 0ms);
68 void WillSuspend (std::chrono::milliseconds MilliSeconds = 0ms);
69 void WillHibernate (std::chrono::milliseconds MilliSeconds = 0ms);
70 void WillRestart (std::chrono::milliseconds MilliSeconds = 0ms);
71 void WillHybridSleep(std::chrono::milliseconds MilliSeconds = 0ms);
72 void WokeUp (std::chrono::seconds SecondsAsleep);
73 void LowBattery (
void);
76 void FeatureTimeout (
void);
80 #if QT_VERSION < QT_VERSION_CHECK(5,14,0)
89 virtual void Init (
void);
90 virtual bool DoFeature (
bool =
false) {
return false; }
91 virtual void DidWakeUp (
void);
92 virtual void FeatureHappening (Feature Spontaneous = FeatureNone);
93 virtual bool ScheduleFeature (
enum Feature Type, std::chrono::seconds Delay);
94 void SetRequestedDelay (std::chrono::seconds Delay);
95 void PowerLevelChanged (
int Level);
96 static QString FeatureToString (
enum Feature Type);
97 static bool FeatureIsEquivalent(Feature First, Feature Second);
99 Features m_features { FeatureNone };
101 bool m_isSpontaneous {
false };
102 std::chrono::seconds m_maxRequestedDelay { 0s };
104 QTimer m_featureTimer { };
105 QDateTime m_sleepTime { };
106 int m_powerLevel { Unset };
107 bool m_warnForLowBattery {
false };
113 Q_DECLARE_OPERATORS_FOR_FLAGS(MythPower::Features)
115 #endif // MYTHPOWER_H