import 'settings_group.dart'; /// 약속 (설정 A): 환경 설정 > 탐색기 도구 - 시스템 폴더 (Shizuku) · 루트 · Wi-Fi 공유 · ZIP 묶기 - 자기 키 (이름 · 처음 값 · 읽기 · 쓰기) 를 스스로 갖는다. /// 설정 하나를 더할 때는 이 파일만 고친다. 저장 파일의 키 이름은 예전 그대로 (평평한 키) class ExplorerToolSettings implements SettingsGroup { /// X-plore 비교 5-2 시스템 폴더 보기 (Shizuku, 읽기 전용, 사용자 결정 10/21 · 관리자 결정: 처음 끔 · 켤 때마다 경고) bool shizukuEnabled = false; /// X-plore 비교 5-2 루트 폴더 보기 (su, 읽기 전용, 관리자 결정 10/21: Shizuku 와 같은 틀 - 처음 끔 · 켤 때 · 처음 열 때 경고) bool rootEnabled = false; /// 89: Wi-Fi 공유 - 저절로 끄는 시간 (분, 0 = 끄지 않음). 처음 값 30분 (관리자 지시 10/17) int wifiShareMinutes = 30; /// 89 · 보안 검토 3: Wi-Fi 공유를 Tailscale (100.64/10, 내 tailnet 의 기기) 주소에서도 연다 (관리자 결정 10/18: 처음 켬) bool wifiShareTailscale = true; /// 89: Wi-Fi 공유로 마지막에 고른 폴더 (다시 켤 때 처음 고른 것) String wifiShareFolder = ''; /// 86: ZIP 으로 묶기의 압축 정도 (1 빠르게 · 6 보통 (처음 값) · 9 작게) - 마지막에 고른 것을 기억 int zipLevel = 6; @override void write(Map j, {required bool plainSecrets}) { j['shizukuEnabled'] = shizukuEnabled; j['rootEnabled'] = rootEnabled; j['wifiShareMinutes'] = wifiShareMinutes; j['wifiShareTailscale'] = wifiShareTailscale; j['wifiShareFolder'] = wifiShareFolder; j['zipLevel'] = zipLevel; } @override void read(Map j) { shizukuEnabled = j['shizukuEnabled'] == true; rootEnabled = j['rootEnabled'] == true; zipLevel = const [1, 6, 9].contains(j['zipLevel']) ? j['zipLevel'] as int : 6; wifiShareMinutes = const [0, 10, 30, 60, 120].contains(j['wifiShareMinutes']) ? j['wifiShareMinutes'] as int : 30; wifiShareTailscale = j['wifiShareTailscale'] is bool ? j['wifiShareTailscale'] as bool : true; wifiShareFolder = j['wifiShareFolder'] is String ? j['wifiShareFolder'] as String : ''; } }