import 'records.dart'; import 'settings_group.dart'; /// 약속 (설정 A): 환경 설정 > 일반 (즐겨찾기 · 저장 공간 정리 · 바뀐 기본값 알림 · 안쪽 → 바깥 동기화 · 비밀번호 기억 · 휴지통 · 모든 파일 안내) - 자기 키 (이름 · 처음 값 · 읽기 · 쓰기) 를 스스로 갖는다. /// 설정 하나를 더할 때는 이 파일만 고친다. 저장 파일의 키 이름은 예전 그대로 (평평한 키) class GeneralSettings implements SettingsGroup { /// 73: 파일 탐색기 · Rsync 즐겨찾기 (폴더, Rsync 는 짝) List folderBookmarks = []; /// 저장 공간 정리 창에서 미리 체크할 묶음 (작업 임시 파일 · 받다 만 다운로드) List cleanupPrechecked = ['work', 'download']; /// 19: 업데이트로 바뀐 기본값을 켤 때 한 번 알림 bool migrationNotice = true; /// 34: Rsync · 동기화에서 원본이 대상 안 (안쪽 → 바깥) 을 허용 (지우기가 있을 때만 막음). 끄면 늘 막음 bool allowInnerToOuter = true; /// 40 · 54: 비밀번호를 이 기기의 안전 저장소에 기억 (끄면 저장하지 않고 앱을 켤 때마다 다시 넣음) bool rememberPasswords = true; /// 65 (Windows): 탐색기에서 지우면 휴지통으로 (끄면 늘 영구 삭제로 묻는다) bool recycleOnDelete = true; /// 39: 켤 때 "모든 파일 접근" 안내를 한 번 보였는지 (그 뒤로는 파일 탐색기 안의 안내로) bool allFilesHintShown = false; @override void write(Map j, {required bool plainSecrets}) { j['folderBookmarks'] = [for (final b in folderBookmarks) b.toJson()]; j['cleanupPrechecked'] = cleanupPrechecked; j['migrationNotice'] = migrationNotice; j['allowInnerToOuter'] = allowInnerToOuter; j['rememberPasswords'] = rememberPasswords; j['recycleOnDelete'] = recycleOnDelete; // 116: 예전 판의 표시 ('allFilesHintShown') 는 권한이 없어진 것을 몰라 다시 띄우지 못했다 → 새 이름으로 한 번 더 j['allFilesHint2'] = allFilesHintShown; } @override void read(Map j) { folderBookmarks = [for (final x in (j['folderBookmarks'] as List?) ?? const []) ?FolderBookmark.fromJson(x)]; cleanupPrechecked = j['cleanupPrechecked'] is List ? [for (final x in j['cleanupPrechecked'] as List) '$x'] : ['work', 'download']; migrationNotice = j['migrationNotice'] != false; allowInnerToOuter = j['allowInnerToOuter'] != false; rememberPasswords = j['rememberPasswords'] != false; recycleOnDelete = j['recycleOnDelete'] != false; allFilesHintShown = j['allFilesHint2'] == true; } }