new: prefer temperature device (#285)

This commit is contained in:
lollipopkit
2024-02-26 09:57:59 +08:00
parent 1f586a2c31
commit 2137bfbcd0
17 changed files with 145 additions and 22 deletions

View File

@@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:toolbox/core/extension/listx.dart';
import 'package:toolbox/data/res/logger.dart';
import 'package:toolbox/data/res/store.dart';
final class SensorAdaptor {
final String raw;
@@ -101,6 +102,22 @@ final class SensorItem {
return items;
}
static double? findPreferTempVal(List<SensorItem> items) {
if (items.isEmpty) {
return null;
}
final preferTemperatureDevs = Stores.setting.preferTemperatureDevs.fetch();
if (preferTemperatureDevs.isNotEmpty) {
for (final key in preferTemperatureDevs) {
final item = items.firstWhereOrNull((e) => e.device == key);
if (item != null) {
return item.props.values.firstOrNull?.current;
}
}
}
return items.first.props.values.firstOrNull?.current;
}
static const sensorsRaw = '''
{
"coretemp-isa-0000":{

View File

@@ -1,3 +1,5 @@
import 'package:toolbox/data/res/store.dart';
class Temperatures {
final Map<String, double> _map = {};
@@ -35,8 +37,16 @@ class Temperatures {
if (_map.isEmpty) {
return null;
}
for (final key in _map.keys) {
if (cpuTempReg.hasMatch(key)) {
final preferTemperatureDevs = Stores.setting.preferTemperatureDevs.fetch();
if (preferTemperatureDevs.isNotEmpty) {
for (final key in preferTemperatureDevs) {
if (_map.containsKey(key)) {
return _map[key];
}
}
}
for (final key in _cpuTemp) {
if (_map.containsKey(key)) {
return _map[key];
}
}
@@ -45,5 +55,5 @@ class Temperatures {
}
/// soc: mobile phone
/// cpu_thermal / x86_pkg_temp: x86
final cpuTempReg = RegExp(r'(x86_pkg_temp|cpu_thermal|soc)');
/// cpu_thermal / x86_pkg_temp / coretemp / zenpower: x86
const _cpuTemp = ['x86_pkg_temp', 'coretemp', 'zenpower', 'cpu_thermal', 'soc'];

View File

@@ -239,6 +239,13 @@ class SettingStore extends PersistentStore {
/// Auto refresh container status
late final contaienrAutoRefresh = property('contaienrAutoRefresh', true);
/// eg:
/// Available devices: ['iwlwifi','x86pkg_temp']
/// Prefer list: ['x86pkg_temp','example']
/// Result: use x86pkg_temp's temperature as the temperature
late final preferTemperatureDevs =
listProperty('preferTemperatureDevs', <String>[]);
// Never show these settings for users
//
// ------BEGIN------