Skip to content

Commit

Permalink
feat: Optimize the power module
Browse files Browse the repository at this point in the history
- Replace Chinese with English for easy translation
- Add the function of configuring scales for Slider
- Some submodules will be named using their original names
- update icon resource

Log: As title
Task: https://pms.uniontech.com/task-view-362041.html
  • Loading branch information
mhduiy committed Sep 13, 2024
1 parent fd30c4f commit 1f84161
Show file tree
Hide file tree
Showing 26 changed files with 660 additions and 490 deletions.
73 changes: 73 additions & 0 deletions misc/configs/org.deepin.dde.control-center.power.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
{
"magic": "dsg.config.meta",
"version": "1.0",
"contents": {
"linePowerScreenBlackDelay": {
"value": ["1m","5m","10m","15m","30m","1h"],
"serial": 0,
"flags": [],
"name": "Control-center_LinePowerScreenBlackDelay",
"name[zh_CN]": "使用电源-关闭显示器",
"description[zh_CN]": "此配置用于设置插入电源关闭显示器的时间",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"linePowerSleepDelay": {
"value": ["10m","15m","30m","1h","2h","3h"],
"serial": 0,
"flags": [],
"name": "Control-center_LinePowerSleepDelay",
"name[zh_CN]": "使用电源-进入待机时间",
"description[zh_CN]": "此配置用于设置插入电源进入待机的时间",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"linePowerLockDelay": {
"value": ["10m","15m","30m","1h","2h","3h"],
"serial": 0,
"flags": [],
"name": "Control-center_LinePowerLockDelay",
"name[zh_CN]": "使用电源-自动锁屏时间",
"description[zh_CN]": "此配置用于设置插入电源自动锁屏的时间",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"batteryScreenBlackDelay": {
"value": ["1m","5m","10m","15m","30m","1h"],
"serial": 0,
"flags": [],
"name": "Control-center_BatteryScreenBlackDelay",
"name[zh_CN]": "使用电池-关闭显示器",
"description[zh_CN]": "此配置用于设置使用电池关闭显示器的时间",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"batterySleepDelay": {
"value": ["10m","15m","30m","1h","2h","3h"],
"serial": 0,
"flags": [],
"name": "Control-center_BatterySleepDelay",
"name[zh_CN]": "使用电池-进入待机时间",
"description[zh_CN]": "此配置用于设置使用电池进入待机的时间",
"description": "",
"permissions": "readwrite",
"visibility": "private"
},
"batteryLockDelay": {
"value": ["1m","5m","10m","15m","30m","1h"],
"serial": 0,
"flags": [],
"name": "Control-center_BatteryLockDelay",
"name[zh_CN]": "使用电池-自动锁屏时间",
"description[zh_CN]": "此配置用于设置使用电池自动锁屏的时间",
"description": "",
"permissions": "readwrite",
"visibility": "private"
}
}
}

62 changes: 62 additions & 0 deletions src/plugin-power/operation/powerinterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,68 @@ PowerInterface::PowerInterface(QObject *parent)
m_model->setSuspend(!IsServerSystem && true);
m_model->setHibernate(!IsServerSystem && true);
m_model->setShutdown(true);

m_powerLidClosedOperatorModel->setVisible(POT_ShutDown, false);
m_batteryLidClosedOperatorModel->setVisible(POT_ShutDown, false);

connect(m_model, &PowerModel::hibernateChanged, this, [this](bool value){
m_powerLidClosedOperatorModel->setVisible(POT_Hibernate, value);
m_powerPressedOperatorModel->setVisible(POT_Hibernate, value);
m_batteryLidClosedOperatorModel->setVisible(POT_Hibernate, value);
m_batteryPressedOperatorModel->setVisible(POT_Hibernate, value);
});
connect(m_model, &PowerModel::suspendChanged, this, [this](bool value){
m_powerLidClosedOperatorModel->setVisible(POT_Suspend, value);
m_powerPressedOperatorModel->setVisible(POT_Suspend, value);
m_batteryLidClosedOperatorModel->setVisible(POT_Suspend, value);
m_batteryPressedOperatorModel->setVisible(POT_Suspend, value);
});
connect(m_model, &PowerModel::shutdownChanged, this, [this](bool value){
m_powerPressedOperatorModel->setVisible(POT_ShutDown, value);
m_batteryPressedOperatorModel->setVisible(POT_ShutDown, value);
});
}

int PowerInterface::indexByValueOnModel(QAbstractListModel *model, int targetValue)
{
if (!model) return -1;

QHash<int, QByteArray> roles = model->roleNames();
int valueRole = -1;

for (auto it = roles.constBegin(); it != roles.constEnd(); ++it) {
if (it.value() == "value") {
valueRole = it.key();
break;
}
}

if (valueRole == -1) {
return -1;
}

for (int i = 0; i < model->rowCount(); i++) {
QModelIndex index = model->index(i, 0);
QVariant value = model->data(index, valueRole);

if (value.toInt() == targetValue) {
return i;
}
}

return -1;
}

int PowerInterface::indexByValueOnMap(const QVariantList& dataMap, int targetValue)
{
for (int i = 0; i < dataMap.size(); i++) {
QVariantMap map = dataMap.at(i).toMap();
if (map.value("value").toInt() == targetValue) {
return i;
}
}

return -1;
}

DCC_FACTORY_CLASS(PowerInterface)
Expand Down
12 changes: 8 additions & 4 deletions src/plugin-power/operation/powerinterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,18 @@ class PowerInterface : public QObject
Q_PROPERTY(PowerModel *model READ getModel NOTIFY powerModelChanged)
Q_PROPERTY(PowerWorker *worker READ getWorker NOTIFY powerWorkerChanged)

Q_PROPERTY(PowerOperatorModel *powerLidModel MEMBER m_powerLidClosedOperatorModel)
Q_PROPERTY(PowerOperatorModel *powerPressModel MEMBER m_powerPressedOperatorModel)
Q_PROPERTY(PowerOperatorModel *batteryLidModel MEMBER m_batteryLidClosedOperatorModel)
Q_PROPERTY(PowerOperatorModel *batteryPressModel MEMBER m_batteryPressedOperatorModel)
Q_PROPERTY(PowerOperatorModel *powerLidModel MEMBER m_powerLidClosedOperatorModel CONSTANT)
Q_PROPERTY(PowerOperatorModel *powerPressModel MEMBER m_powerPressedOperatorModel CONSTANT)
Q_PROPERTY(PowerOperatorModel *batteryLidModel MEMBER m_batteryLidClosedOperatorModel CONSTANT)
Q_PROPERTY(PowerOperatorModel *batteryPressModel MEMBER m_batteryPressedOperatorModel CONSTANT)
public:
explicit PowerInterface(QObject *parent = nullptr);
PowerModel *getModel() const { return m_model; };
PowerWorker *getWorker() const { return m_worker; };

Q_INVOKABLE int indexByValueOnModel(QAbstractListModel *model, int targetValue);
Q_INVOKABLE int indexByValueOnMap(const QVariantList& dataMap, int targetValue);

signals:
void powerModelChanged(PowerModel *model);
void powerWorkerChanged(PowerWorker *worker);
Expand Down
56 changes: 55 additions & 1 deletion src/plugin-power/operation/powermodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -381,4 +381,58 @@ void PowerModel::setShowBatteryTimeToFull(bool value)

Q_EMIT showBatteryTimeToFullChanged(value);
}
}
}

void PowerModel::setBatteryLockDelayModel(const QVariantList &value)
{
if (m_batteryLockDelayModel != value) {
m_batteryLockDelayModel = value;

Q_EMIT batteryLockDelayModelChanged(value);
}
}

void PowerModel::setBatteryScreenBlackDelayModel(const QVariantList &value)
{
if (m_batteryScreenBlackDelayModel != value) {
m_batteryScreenBlackDelayModel = value;

Q_EMIT batteryScreenBlackDelayModelChanged(value);
}
}

void PowerModel::setBatterySleepDelayModel(const QVariantList &value)
{
if (m_batterySleepDelayModel != value) {
m_batterySleepDelayModel = value;

Q_EMIT batterySleepDelayModelChanged(value);
}
}

void PowerModel::setLinePowerLockDelayModel(const QVariantList &value)
{
if (m_linePowerLockDelayModel != value) {
m_linePowerLockDelayModel = value;

Q_EMIT linePowerLockDelayModelChanged(value);
}
}

void PowerModel::setLinePowerScreenBlackDelayModel(const QVariantList &value)
{
if (m_linePowerScreenBlackDelayModel != value) {
m_linePowerScreenBlackDelayModel = value;

Q_EMIT linePowerScreenBlackDelayModelChanged(value);
}
}

void PowerModel::setLinePowerSleepDelayModel(const QVariantList &value)
{
if (m_linePowerSleepDelayModel != value) {
m_linePowerSleepDelayModel = value;

Q_EMIT linePowerSleepDelayModelChanged(value);
}
}
44 changes: 40 additions & 4 deletions src/plugin-power/operation/powermodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@ class PowerModel : public QObject
Q_PROPERTY(double batteryCapacity READ batteryCapacity WRITE setBatteryCapacity NOTIFY batteryCapacityChanged)
Q_PROPERTY(bool showBatteryTimeToFull READ showBatteryTimeToFull WRITE setShowBatteryTimeToFull NOTIFY showBatteryTimeToFullChanged)

Q_PROPERTY(QVariantList batteryLockDelayModel READ batteryLockDelayModel WRITE setBatteryLockDelayModel NOTIFY batteryLockDelayModelChanged)
Q_PROPERTY(QVariantList batteryScreenBlackDelayModel READ batteryScreenBlackDelayModel WRITE setBatteryScreenBlackDelayModel NOTIFY batteryScreenBlackDelayModelChanged)
Q_PROPERTY(QVariantList batterySleepDelayModel READ batterySleepDelayModel WRITE setBatterySleepDelayModel NOTIFY batterySleepDelayModelChanged)
Q_PROPERTY(QVariantList linePowerLockDelayModel READ linePowerLockDelayModel WRITE setLinePowerLockDelayModel NOTIFY linePowerLockDelayModelChanged)
Q_PROPERTY(QVariantList linePowerScreenBlackDelayModel READ linePowerScreenBlackDelayModel WRITE setLinePowerScreenBlackDelayModel NOTIFY linePowerScreenBlackDelayModelChanged)
Q_PROPERTY(QVariantList linePowerSleepDelayModel READ linePowerSleepDelayModel WRITE setLinePowerSleepDelayModel NOTIFY linePowerSleepDelayModelChanged)

QML_NAMED_ELEMENT(PowerModel)
QML_SINGLETON

Expand Down Expand Up @@ -94,10 +101,7 @@ class PowerModel : public QObject
inline int getPowerLockScreenDelay() const { return m_powerLockScreenDelay; }
void setPowerLockScreenDelay(const int value);

inline bool autoPowerSaveMode() const
{
return m_autoPowerSaveMode;
}
inline bool autoPowerSaveMode() const { return m_autoPowerSaveMode; }
void setAutoPowerSaveMode(bool autoPowerSavingMode);

inline bool powerSaveMode() const { return m_powerSaveMode; }
Expand Down Expand Up @@ -178,6 +182,24 @@ class PowerModel : public QObject
inline bool showBatteryTimeToFull() const { return m_showBatteryTimeToFull; }
void setShowBatteryTimeToFull(bool showBatteryTimeToFull);

inline QVariantList batteryLockDelayModel() const { return m_batteryLockDelayModel; };
void setBatteryLockDelayModel(const QVariantList &value);

inline QVariantList batteryScreenBlackDelayModel() const { return m_batteryScreenBlackDelayModel; };
void setBatteryScreenBlackDelayModel(const QVariantList& value);

inline QVariantList batterySleepDelayModel() const { return m_batterySleepDelayModel; };
void setBatterySleepDelayModel(const QVariantList &value);

inline QVariantList linePowerLockDelayModel() const { return m_linePowerScreenBlackDelayModel; };
void setLinePowerLockDelayModel(const QVariantList &value);

inline QVariantList linePowerScreenBlackDelayModel() const { return m_linePowerScreenBlackDelayModel; };
void setLinePowerScreenBlackDelayModel(const QVariantList &value);

inline QVariantList linePowerSleepDelayModel() const { return m_linePowerSleepDelayModel; };
void setLinePowerSleepDelayModel(const QVariantList &value);

Q_SIGNALS:
void sleepLockChanged(const bool sleepLock);
void canSleepChanged(const bool canSleep);
Expand Down Expand Up @@ -224,6 +246,13 @@ class PowerModel : public QObject
void batteryCapacityChanged(double value);
void showBatteryTimeToFullChanged(bool value);

void batteryLockDelayModelChanged(const QVariantList &value);
void batteryScreenBlackDelayModelChanged(const QVariantList &value);
void batterySleepDelayModelChanged(const QVariantList &value);
void linePowerLockDelayModelChanged(const QVariantList &value);
void linePowerScreenBlackDelayModelChanged(const QVariantList &value);
void linePowerSleepDelayModelChanged(const QVariantList &value);

private:
bool m_lidPresent; //以此判断是否为笔记本
bool m_sleepOnLidOnPowerClose;
Expand Down Expand Up @@ -270,6 +299,13 @@ class PowerModel : public QObject

double m_batteryCapacity;
bool m_showBatteryTimeToFull;

QVariantList m_batteryLockDelayModel;
QVariantList m_batteryScreenBlackDelayModel;
QVariantList m_batterySleepDelayModel;
QVariantList m_linePowerLockDelayModel;
QVariantList m_linePowerScreenBlackDelayModel;
QVariantList m_linePowerSleepDelayModel;
};

#endif // POWERMODEL_H
26 changes: 13 additions & 13 deletions src/plugin-power/operation/poweroperatormodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
PowerOperatorModel::PowerOperatorModel(QObject *parent)
: QAbstractListModel(parent)
{
appendRow(new PowerOperator(0, "关机", true, true));
appendRow(new PowerOperator(1, "待机", true, true));
appendRow(new PowerOperator(2, "休眠", true, true));
appendRow(new PowerOperator(3, "关闭显示器", true, true));
appendRow(new PowerOperator(4, "进入关机界面", true, true));
appendRow(new PowerOperator(5, "无任何操作", true, true));
appendRow(new PowerOperator(0, tr("Shut down"), true, true));
appendRow(new PowerOperator(1, tr("Suspend"), true, true));
appendRow(new PowerOperator(2, tr("Hibernate"), true, true));
appendRow(new PowerOperator(3, tr("Turn off the monitor"), true, true));
appendRow(new PowerOperator(4, tr("Show the shutdown Interface"), true, true));
appendRow(new PowerOperator(5, tr("Do nothing"), true, true));
}

PowerOperatorModel::~PowerOperatorModel()
Expand All @@ -34,8 +34,8 @@ QVariant PowerOperatorModel::data(const QModelIndex &index, int role) const
return {};
const auto operatorItem = m_powerOperatorList[index.row()];
switch (role) {
case ValueRole:
return operatorItem->value;
case KeyRole:
return operatorItem->key;
case TextRole:
return operatorItem->text;
case EnableRole:
Expand All @@ -56,15 +56,15 @@ void PowerOperatorModel::appendRow(PowerOperator *powerOperator)

void PowerOperatorModel::setEnable(int index, bool enable)
{
if (index > 0 && index < m_powerOperatorList.size()) {
if (index >= 0 && index < m_powerOperatorList.size()) {
m_powerOperatorList[index]->enable = enable;
emit dataChanged(PowerOperatorModel::index(index, 0), PowerOperatorModel::index(index, 0));
}
}

void PowerOperatorModel::setVisible(int index, bool visible)
{
if (index > 0 && index < m_powerOperatorList.size()) {
if (index >= 0 && index < m_powerOperatorList.size()) {
m_powerOperatorList[index]->visible = visible;
emit dataChanged(PowerOperatorModel::index(index, 0), PowerOperatorModel::index(index, 0));
}
Expand All @@ -73,7 +73,7 @@ void PowerOperatorModel::setVisible(int index, bool visible)
QHash<int, QByteArray> PowerOperatorModel::roleNames() const
{
QHash<int, QByteArray> roles;
roles[ValueRole] = "value";
roles[KeyRole] = "key";
roles[TextRole] = "text";
roles[EnableRole] = "enable";
roles[VisibleRole] = "visible";
Expand All @@ -85,13 +85,13 @@ quint8 PowerOperatorModel::keyOfIndex(int rowIndex) const
if (rowIndex < 0 || rowIndex >= m_powerOperatorList.size()) {
return -1;
}
return m_powerOperatorList[rowIndex]->value;
return m_powerOperatorList[rowIndex]->key;
}

int PowerOperatorModel::indexOfKey(quint8 key) const
{
for (int i = 0; i < m_powerOperatorList.size(); i++) {
if (m_powerOperatorList[i]->value == key) {
if (m_powerOperatorList[i]->key == key) {
return i;
}
}
Expand Down
Loading

0 comments on commit 1f84161

Please sign in to comment.