63 lines
2.9 KiB
Dart
63 lines
2.9 KiB
Dart
|
|
import 'settings_group.dart';
|
|
|
|
/// 약속 (설정 A): 환경 설정 > 보기 화면 (그림 · 만화 · PDF · 문서) - 자기 키 (이름 · 처음 값 · 읽기 · 쓰기) 를 스스로 갖는다.
|
|
/// 설정 하나를 더할 때는 이 파일만 고친다. 저장 파일의 키 이름은 예전 그대로 (평평한 키)
|
|
class ReaderSettings implements SettingsGroup {
|
|
/// 보기: 'page' 한 쪽 맞추기 · 'width' 좌우 맞추기 (세로로 밀어 봄)
|
|
String fit = 'page';
|
|
|
|
/// 보기: 오른쪽에서 왼쪽으로 넘김 (일본 만화)
|
|
bool rtl = false;
|
|
|
|
/// 보기: 밝기 (-0.7 어둡게 ~ 0.7 밝게)
|
|
double brightness = 0;
|
|
|
|
/// 30 · 101: 보기 화면에서 위 · 아래 시스템 막대 (시계 · 알림 · 뒤로) 를 그대로 보이기 (기본: 보임 - 기기의 평소 동작, 화면 가득은 버튼 · 설정으로)
|
|
bool systemBars = true;
|
|
|
|
/// 117: 보기 화면 "계속 보기" 간격 (초, 1 ~ 60)
|
|
int autoSeconds = 3;
|
|
|
|
/// X-plore 맞추기 (관리자 지시 10/20): 그림 보기 화면 아래 갤러리 줄 (썸네일, 누르면 그 장으로). 처음 끔
|
|
bool gallery = false;
|
|
|
|
/// X-plore 맞추기 (관리자 지시 10/20): 보기 화면에서 볼륨 키로 넘기기 (아래 = 다음 장, 위 = 이전 장, Android). 처음 끔.
|
|
/// 보기 화면에서만 가로챈다 (동영상 · 다른 화면의 볼륨은 그대로)
|
|
bool volumeKeys = false;
|
|
|
|
/// 119: 한 장에 두 쪽이 붙은 그림을 반씩 나눠 보기 - 'auto' 가로가 세로보다 긴 그림만 · 'on' 늘 · 'off' 안 함
|
|
String split = 'auto';
|
|
|
|
/// ZIP · CBZ 를 두 번 누르면 안의 그림을 만화처럼 보기 (끄면 목록). 기본은 목록 (사용자 지시)
|
|
bool zipComic = false;
|
|
|
|
@override
|
|
void write(Map<String, Object?> j, {required bool plainSecrets}) {
|
|
j['readerFit'] = fit;
|
|
j['readerRtl'] = rtl;
|
|
j['readerBrightness'] = brightness;
|
|
j['readerSystemBars'] = systemBars;
|
|
j['readerAutoSeconds'] = autoSeconds;
|
|
j['readerGallery'] = gallery;
|
|
j['readerVolumeKeys'] = volumeKeys;
|
|
j['readerSplit'] = split;
|
|
j['zipComic'] = zipComic;
|
|
// 예전 기본값 (만화 보기 켜짐) 은 지시와 반대였으므로 한 번 꺼진 상태 (목록) 로
|
|
j['zipComicV2'] = true;
|
|
}
|
|
|
|
@override
|
|
void read(Map<String, dynamic> j) {
|
|
fit = j['readerFit'] == 'width' ? 'width' : 'page';
|
|
rtl = j['readerRtl'] as bool? ?? false;
|
|
brightness = ((j['readerBrightness'] as num?)?.toDouble() ?? 0).clamp(-0.7, 0.7);
|
|
systemBars = j['readerSystemBars'] != false;
|
|
autoSeconds = ((j['readerAutoSeconds'] as num?)?.toInt() ?? 3).clamp(1, 60);
|
|
gallery = j['readerGallery'] as bool? ?? false;
|
|
volumeKeys = j['readerVolumeKeys'] as bool? ?? false;
|
|
split = const ['auto', 'on', 'off'].contains(j['readerSplit']) ? j['readerSplit'] as String : 'auto';
|
|
zipComic = j['zipComic'] == true && j['zipComicV2'] == true;
|
|
}
|
|
}
|