71 lines
5.2 KiB
Dart
71 lines
5.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import '../app/app_controller.dart';
|
|
import '../l10n/tr.dart';
|
|
import 'settings_page.dart';
|
|
|
|
/// 업데이트하면서 예전 기본값을 새 기본값으로 한 번 옮겼으면, 켤 때 무엇이 바뀌었는지와
|
|
/// 환경 설정에서 되돌릴 수 있다는 것을 한 번 알린다 ([AppSettings.migrated]).
|
|
Future<void> showMigrationNotice(BuildContext context, AppController c) async {
|
|
if (!c.settings.migrationNotice) return; // 102: 환경 설정에서 끌 수 있음
|
|
final items = c.settings.migrated;
|
|
if (items.isEmpty) return;
|
|
String line(String id) => switch (id) {
|
|
'orientation' => tr('화면 방향: 가로 고정 → 자동 (기기를 돌리는 대로). 되돌리기: 환경 설정 > 화면 > 화면 방향'),
|
|
'explorerLayout' =>
|
|
tr('파일 탐색기 창: 두 창 → 화면 크기 따라 (폰 세로는 한 창). 되돌리기: 환경 설정 > 파일 탐색기 > 창 배치'),
|
|
'explorerClick' => tr('파일 탐색기 누르기: 한 번 누르면 선택 → 한 번 누르면 바로 실행. 되돌리기: 환경 설정 > 파일 탐색기 > 누르기'),
|
|
'cookieScope' => tr('앱 안 브라우저의 로그인 쿠키: YouTube · Google 에 더해 Instagram · X · 네이버 (치지직) 로그인도 '
|
|
'다운로드 (yt-dlp) 에 씁니다. 고르기 · 끄기 · 지우기: 환경 설정 > 다운로드 > YouTube 쿠키'),
|
|
'aiImage' => tr('새 화면 "AI 그림" 을 위쪽 이동 버튼에 넣었습니다 (글 → 그림 · 그림 → 그림, 모델은 환경 설정에서 받기). '
|
|
'끄기: 환경 설정 > 컴포넌트'),
|
|
'explorerOrientation' => tr(
|
|
'파일 탐색기 두 창 배치: 화면 모양 따라 → 좌우. 되돌리기: 파일 탐색기의 [좌우 ⇆ / 위아래 ⇅] 버튼 또는 창 배치'),
|
|
'zipComic' => tr('ZIP · CBZ 두 번 누르기: 만화 보기 → 목록. 되돌리기: 환경 설정 > 파일 탐색기 > ZIP · CBZ 를 만화로 보기'),
|
|
'background' =>
|
|
tr('백그라운드로 실행: 꺼짐 → 켜짐 (← 나 최근 앱에서 밀어도 작업이 계속됨). 되돌리기: 환경 설정 > Rsync > 백그라운드로 실행'),
|
|
'explorerClickNew' => tr('파일 탐색기: 파일을 한 번 누르면 바로 엽니다 (고르기 · 메뉴는 길게 누르기). '
|
|
'바꾸기: 환경 설정 > 파일 탐색기 > 누르기'),
|
|
'dnsForced' => tr('DNS: 기기 DNS → 직접 지정 (8.8.8.8 · 8.8.4.4). 앱의 인터넷 연결 (브라우저 · 다운로드 · 업데이트) 은 이 서버로 주소를 찾습니다. '
|
|
'되돌리기: 환경 설정 > 네트워크 · DNS > 시스템 DNS (끄기) '
|
|
'회사 · 학교망처럼 8.8.8.8 이 막힌 곳에서는 닿지 않는다는 안내의 [시스템 DNS 로 바꾸기] 를 누르세요.'),
|
|
'swipeNav' => tr('화면 가운데를 좌우로 밀면 다른 화면 (파일 탐색기 · 다운로드 등) 으로 넘어갑니다. '
|
|
'끄기: 환경 설정 > 컴포넌트 > 좌우로 밀어 화면 이동'),
|
|
'copySkipNewer' => tr('복사 · 이동: 받는 쪽 파일이 더 새것이면 건너뜁니다 (예전에는 예전 원본으로 덮어쓰고, 이동이면 원본도 지웠습니다). '
|
|
'건너뛴 파일은 원본에 남고 끝 알림에 그 수가 나옵니다. 되돌리기: 환경 설정 > 파일 탐색기 (또는 Rsync) > 받는 쪽이 더 새것이면 건너뛰기'),
|
|
'robocopyLinks' => tr('robocopy 복사 · 이동: 원본 안의 링크 · junction 은 따라가지 않고 건너뜁니다 (/XJ - 예전에는 링크가 가리키는 바깥 폴더의 파일까지 '
|
|
'복사 · 이동했습니다). 링크째 복사하려면 robocopy 옵션 칸에 /SJ 를 넣으세요'),
|
|
_ => id,
|
|
};
|
|
final open = await showDialog<bool>(
|
|
context: context,
|
|
builder: (ctx) => AlertDialog(
|
|
scrollable: true,
|
|
icon: const Icon(Icons.update),
|
|
title: Text(tr('이번 업데이트로 바뀐 기본 설정')),
|
|
content: Column(mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [
|
|
Text(tr('직접 고른 적이 없는 예전 기본값을 새 기본값으로 바꿨습니다. 원래대로 쓰려면 환경 설정에서 되돌리세요.')),
|
|
const SizedBox(height: 10),
|
|
for (final id in items)
|
|
Padding(
|
|
padding: const EdgeInsets.only(bottom: 6),
|
|
child: Row(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
|
const Text('• '),
|
|
Expanded(child: Text(line(id), style: const TextStyle(fontSize: 13))),
|
|
]),
|
|
),
|
|
]),
|
|
actions: [
|
|
TextButton(onPressed: () => Navigator.pop(ctx, true), child: Text(tr('환경 설정 열기'))),
|
|
FilledButton(onPressed: () => Navigator.pop(ctx, false), child: Text(tr('확인'))),
|
|
],
|
|
),
|
|
);
|
|
c.settings.migrated = [];
|
|
// 126: 옮긴 값을 바로 파일에 남긴다 (안 그러면 강제 종료 뒤 켤 때 예전 값을 다시 읽어 이 창이 또 뜬다)
|
|
await c.updateSettings((_) {});
|
|
if (open == true && context.mounted) {
|
|
await Navigator.push(context, MaterialPageRoute<void>(builder: (_) => SettingsPage(c: c)));
|
|
}
|
|
}
|