JJ_MKVMaker/lib/app/settings/browser_settings.dart

64 lines
2.8 KiB
Dart

import 'settings_group.dart';
/// 약속 (설정 A): 환경 설정 > 웹 브라우저 (앱 안 · 외부) - 자기 키 (이름 · 처음 값 · 읽기 · 쓰기) 를 스스로 갖는다.
/// 설정 하나를 더할 때는 이 파일만 고친다. 저장 파일의 키 이름은 예전 그대로 (평평한 키)
class BrowserSettings implements SettingsGroup {
/// 웹 브라우저에서 YouTube 광고 자동 건너뛰기 (건너뛰기 버튼 누르기 · 건너뛸 수 없는 광고는 빨리 감기 · 소리 끄기)
bool adSkip = true;
/// YouTube 페이지의 광고 배너 · 광고 영역 숨기기
bool adHide = true;
/// 웹 브라우저 위에 다른 화면이 올라오거나 다른 화면으로 가면 페이지의 동영상 · 소리를 멈춤 (끄면 계속 들림)
bool pauseOnLeave = true;
String homeUrl = 'https://www.youtube.com/';
/// 앱 안 브라우저 엔진: 'edge' (WebView2, 기본). 'chrome' 은 내려받아 연결 (준비 중)
String engine = 'edge';
/// 207: 관리자 권한으로 실행 중일 때도 내장 Chrome 엔진을 쓸지 (처음 꺼짐 - 관리자 판단: 보안이 먼저, CEF 는 샌드박스가 꺼져 있다)
bool cefWhenElevated = false;
/// "외부 브라우저로 열기" 에 쓸 브라우저: 'system' · 'chrome' · 'firefox' · 'edge' · 'whale'
String external = 'system';
/// 앱 안 브라우저: 다른 언어로 된 웹 페이지를 화면 언어 ([uiLanguage]) 로 자동 번역 (Google 번역)
bool translate = false;
/// 앱 안 브라우저: 페이지의 JavaScript 실행 (끄면 스크립트 없이 글 · 그림만)
bool javaScript = true;
/// 66-2: 웹 브라우저에서 화면 옮기기 (위쪽 막대를 좌우로) 안내를 한 번 보였는지
bool swipeHinted = false;
@override
void write(Map<String, Object?> j, {required bool plainSecrets}) {
j['youtubeAdSkip'] = adSkip;
j['youtubeAdHide'] = adHide;
j['webPauseOnLeave'] = pauseOnLeave;
j['homeUrl'] = homeUrl;
j['browserEngine'] = engine;
j['cefWhenElevated'] = cefWhenElevated;
j['externalBrowser'] = external;
j['webTranslate'] = translate;
j['webJavaScript'] = javaScript;
j['browserSwipeHinted'] = swipeHinted;
}
@override
void read(Map<String, dynamic> j) {
adSkip = j['youtubeAdSkip'] as bool? ?? true;
adHide = j['youtubeAdHide'] as bool? ?? true;
pauseOnLeave = j['webPauseOnLeave'] as bool? ?? true;
homeUrl = j['homeUrl'] as String? ?? 'https://www.youtube.com/';
engine = j['browserEngine'] as String? ?? 'edge';
cefWhenElevated = j['cefWhenElevated'] == true;
external = j['externalBrowser'] as String? ?? 'system';
translate = j['webTranslate'] as bool? ?? false;
javaScript = j['webJavaScript'] as bool? ?? true;
swipeHinted = j['browserSwipeHinted'] == true;
}
}