mirror of https://github.com/cutefishos/core
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
6.0 KiB
C++
188 lines
6.0 KiB
C++
#ifndef BATTERY_H
|
|
#define BATTERY_H
|
|
|
|
#include <QObject>
|
|
#include <QTimer>
|
|
#include <QSettings>
|
|
#include "upowerdevice.h"
|
|
|
|
class Battery : public QObject
|
|
{
|
|
Q_OBJECT
|
|
Q_PROPERTY(int isPresent READ isPresent)
|
|
Q_PROPERTY(int type READ type)
|
|
Q_PROPERTY(int chargePercent READ chargePercent NOTIFY chargePercentChanged)
|
|
Q_PROPERTY(int capacity READ capacity NOTIFY capacityChanged)
|
|
Q_PROPERTY(int voltage READ voltage NOTIFY voltageChanged)
|
|
Q_PROPERTY(int isRechargeable READ isRechargeable)
|
|
Q_PROPERTY(int isPowerSupply READ isPowerSupply)
|
|
Q_PROPERTY(int chargeState READ chargeState NOTIFY chargeStateChanged)
|
|
Q_PROPERTY(qlonglong remainingTime READ remainingTime NOTIFY remainingTimeChanged)
|
|
Q_PROPERTY(QString statusString READ statusString NOTIFY remainingTimeChanged)
|
|
Q_PROPERTY(int lastChargedPercent READ lastChargedPercent NOTIFY lastChargedPercentChanged)
|
|
Q_PROPERTY(quint64 lastChargedSecs READ lastChargedSecs NOTIFY lastChargedSecsChanged)
|
|
Q_PROPERTY(QString lastChargedTime READ lastChargedTime NOTIFY lastChargedSecsChanged)
|
|
Q_PROPERTY(QString udi READ udi)
|
|
|
|
public:
|
|
/**
|
|
* This enum type defines the type of the device holding the battery
|
|
*
|
|
* - PdaBattery : A battery in a Personal Digital Assistant
|
|
* - UpsBattery : A battery in an Uninterruptible Power Supply
|
|
* - PrimaryBattery : A primary battery for the system (for example laptop battery)
|
|
* - MouseBattery : A battery in a mouse
|
|
* - KeyboardBattery : A battery in a keyboard
|
|
* - KeyboardMouseBattery : A battery in a combined keyboard and mouse
|
|
* - CameraBattery : A battery in a camera
|
|
* - PhoneBattery : A battery in a phone
|
|
* - MonitorBattery : A battery in a monitor
|
|
* - GamingInputBattery : A battery in a gaming input device (for example a wireless game pad)
|
|
* - BluetoothBattery: A generic Bluetooth device battery (if its type isn't known, a Bluetooth
|
|
* mouse would normally show up as a MouseBattery), @since 5.54
|
|
* - UnknownBattery : A battery in an unknown device
|
|
*/
|
|
enum BatteryType { UnknownBattery, PdaBattery, UpsBattery,
|
|
PrimaryBattery, MouseBattery, KeyboardBattery,
|
|
KeyboardMouseBattery, CameraBattery,
|
|
PhoneBattery, MonitorBattery, GamingInputBattery,
|
|
BluetoothBattery
|
|
};
|
|
Q_ENUM(BatteryType)
|
|
|
|
/**
|
|
* This enum type defines charge state of a battery
|
|
*
|
|
* - NoCharge : Battery charge is stable, not charging or discharging or
|
|
* the state is Unknown
|
|
* - Charging : Battery is charging
|
|
* - Discharging : Battery is discharging
|
|
* - FullyCharged: The battery is fully charged; a battery not necessarily
|
|
* charges up to 100%
|
|
*/
|
|
enum ChargeState { NoCharge, Charging, Discharging, FullyCharged };
|
|
Q_ENUM(ChargeState)
|
|
|
|
/**
|
|
* Technology used in the battery
|
|
*
|
|
* 0: Unknown
|
|
* 1: Lithium ion
|
|
* 2: Lithium polymer
|
|
* 3: Lithium iron phosphate
|
|
* 4: Lead acid
|
|
* 5: Nickel cadmium
|
|
* 6: Nickel metal hydride
|
|
*/
|
|
enum Technology { UnknownTechnology = 0, LithiumIon, LithiumPolymer, LithiumIronPhosphate,
|
|
LeadAcid, NickelCadmium, NickelMetalHydride
|
|
};
|
|
Q_ENUM(Technology)
|
|
|
|
// Begin
|
|
|
|
explicit Battery(UPowerDevice *device, QObject *parent = nullptr);
|
|
|
|
void updateCache();
|
|
void init();
|
|
void refresh();
|
|
|
|
bool isPresent() const;
|
|
Battery::BatteryType type() const;
|
|
|
|
int chargePercent() const;
|
|
int capacity() const;
|
|
|
|
bool isRechargeable() const;
|
|
|
|
bool isPowerSupply() const;
|
|
|
|
Battery::ChargeState chargeState() const;
|
|
|
|
// Number of seconds until the power source is considered empty. Is set to 0 if unknown.
|
|
// This property is only valid if the property type has the value "battery".
|
|
qlonglong timeToEmpty() const;
|
|
// Number of seconds until the power source is considered full. Is set to 0 if unknown.
|
|
// This property is only valid if the property type has the value "battery".
|
|
qlonglong timeToFull() const;
|
|
|
|
Battery::Technology technology() const;
|
|
|
|
double energy() const;
|
|
|
|
double energyFull() const;
|
|
|
|
double energyFullDesign() const;
|
|
|
|
double energyRate() const;
|
|
|
|
double voltage() const;
|
|
|
|
double temperature() const;
|
|
|
|
bool isRecalled() const;
|
|
|
|
QString recallVendor() const;
|
|
|
|
QString recallUrl() const;
|
|
|
|
QString serial() const;
|
|
|
|
qlonglong remainingTime() const;
|
|
|
|
QString formatDuration(qlonglong seconds) const;
|
|
QString statusString() const;
|
|
int lastChargedPercent() const;
|
|
quint64 lastChargedSecs() const;
|
|
|
|
QString lastChargedTime() const;
|
|
|
|
QString udi() const { return m_device->udi(); }
|
|
|
|
signals:
|
|
void presentStateChanged(bool newState);
|
|
void chargePercentChanged(int value);
|
|
void capacityChanged(int value);
|
|
void powerSupplyStateChanged(bool newState);
|
|
void chargeStateChanged(int newState);
|
|
void timeToEmptyChanged(qlonglong time);
|
|
void timeToFullChanged(qlonglong time);
|
|
void energyChanged(double energy);
|
|
void energyFullChanged(double energyFull);
|
|
void energyFullDesignChanged(double energyFullDesign);
|
|
void energyRateChanged(double energyRate);
|
|
void voltageChanged(double voltage);
|
|
void temperatureChanged(double temperature);
|
|
void remainingTimeChanged(qlonglong time);
|
|
void lastChargedPercentChanged();
|
|
void lastChargedSecsChanged();
|
|
|
|
private slots:
|
|
void slotChanged();
|
|
|
|
private:
|
|
UPowerDevice *m_device;
|
|
|
|
bool m_isPresent;
|
|
int m_chargePercent;
|
|
int m_capacity;
|
|
bool m_isPowerSupply;
|
|
Battery::ChargeState m_chargeState;
|
|
qlonglong m_timeToEmpty;
|
|
qlonglong m_timeToFull;
|
|
double m_energy;
|
|
double m_energyFull;
|
|
double m_energyFullDesign;
|
|
double m_energyRate;
|
|
double m_voltage;
|
|
double m_temperature;
|
|
|
|
QSettings *m_settings;
|
|
int m_lastChargedPercent;
|
|
quint64 m_lastChargedSecs;
|
|
|
|
// QTimer m_refreshTimer;
|
|
};
|
|
|
|
#endif // BATTERY_H
|