JJ_MKVMaker/lib/app/settings/general_settings.dart

53 lines
2.7 KiB
Dart

import 'records.dart';
import 'settings_group.dart';
/// 약속 (설정 A): 환경 설정 > 일반 (즐겨찾기 · 저장 공간 정리 · 바뀐 기본값 알림 · 안쪽 → 바깥 동기화 · 비밀번호 기억 · 휴지통 · 모든 파일 안내) - 자기 키 (이름 · 처음 값 · 읽기 · 쓰기) 를 스스로 갖는다.
/// 설정 하나를 더할 때는 이 파일만 고친다. 저장 파일의 키 이름은 예전 그대로 (평평한 키)
class GeneralSettings implements SettingsGroup {
/// 73: 파일 탐색기 · Rsync 즐겨찾기 (폴더, Rsync 는 짝)
List<FolderBookmark> folderBookmarks = [];
/// 저장 공간 정리 창에서 미리 체크할 묶음 (작업 임시 파일 · 받다 만 다운로드)
List<String> 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<String, Object?> 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<String, dynamic> 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;
}
}