WIP 다운로드 줄이 자동 추가로 빠질 때 이유 알림 · [보기] (931 관리자 판단) (검토 대기)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>묶음6
parent
2d2f7055ba
commit
ed5a1407c1
|
|
@ -750,6 +750,8 @@
|
|||
"늘 주소로 열기": "Always open by address",
|
||||
"다 받는 대로 MKV 만들기의 동영상 목록에 넣고, 다운로드 목록에서는 뺍니다 (다운로드 화면의 체크 상자와 같음)": "As soon as they finish, put them in the Make MKV video list and remove them from the download list (same as the checkbox on the download screen)",
|
||||
"다 받으면 MKV 만들기의 동영상 목록에 자동으로 넣고, 이 다운로드 목록에서는 뺍니다 (받은 파일은 그대로)": "When finished, automatically add to the Make MKV video list and remove from this download list (the downloaded file stays)",
|
||||
"다 받은 {0} 은 이미 MKV 목록에 있어 다운로드 목록에서 뺐습니다 (받은 파일은 그대로)": "{0} is already in the MKV list, so it was removed from the download list (the file is kept)",
|
||||
"다 받은 {0} 을 MKV 목록에 넣고 다운로드 목록에서 뺐습니다 (받은 파일은 그대로)": "Added {0} to the MKV list and removed it from the download list (the file is kept)",
|
||||
"다른 곳에서 지웠거나 옮겼을 수 있습니다. 위 폴더로 가 보세요.": "It may have been deleted or moved elsewhere. Try the parent folder.",
|
||||
"다른 버전 ({0}) 을 쓰다가 v{1} 로 돌아왔습니다. 그 버전은 이 버전의 설정 일부를 모를 수 있습니다.\nv{1} 를 마지막으로 쓸 때 보관해 둔 설정 (동영상 목록 · 즐겨찾기 포함) 으로 되돌릴까요?": "You came back to v{1} after using another version ({0}). That version may not know some of this version's settings.\nRestore the settings kept when you last used v{1} (including the video list and bookmarks)?",
|
||||
"다른 버전 고르기": "Choose another version",
|
||||
|
|
|
|||
|
|
@ -750,6 +750,8 @@
|
|||
"늘 주소로 열기": "常にアドレスで開く",
|
||||
"다 받는 대로 MKV 만들기의 동영상 목록에 넣고, 다운로드 목록에서는 뺍니다 (다운로드 화면의 체크 상자와 같음)": "ダウンロードが終わり次第 MKV 作成の動画リストに入れ、ダウンロードリストからは外します(ダウンロード画面のチェックボックスと同じ)",
|
||||
"다 받으면 MKV 만들기의 동영상 목록에 자동으로 넣고, 이 다운로드 목록에서는 뺍니다 (받은 파일은 그대로)": "ダウンロードが終わると MKV 作成の動画リストに自動で入れ、このダウンロードリストからは外します(ダウンロードしたファイルはそのまま)",
|
||||
"다 받은 {0} 은 이미 MKV 목록에 있어 다운로드 목록에서 뺐습니다 (받은 파일은 그대로)": "ダウンロードした {0} はすでに MKV 一覧にあるため、ダウンロード一覧から外しました (ファイルはそのまま)",
|
||||
"다 받은 {0} 을 MKV 목록에 넣고 다운로드 목록에서 뺐습니다 (받은 파일은 그대로)": "ダウンロードした {0} を MKV 一覧に入れ、ダウンロード一覧から外しました (ファイルはそのまま)",
|
||||
"다른 곳에서 지웠거나 옮겼을 수 있습니다. 위 폴더로 가 보세요.": "別の場所で削除・移動された可能性があります。上のフォルダーへ移動してみてください。",
|
||||
"다른 버전 ({0}) 을 쓰다가 v{1} 로 돌아왔습니다. 그 버전은 이 버전의 설정 일부를 모를 수 있습니다.\nv{1} 를 마지막으로 쓸 때 보관해 둔 설정 (동영상 목록 · 즐겨찾기 포함) 으로 되돌릴까요?": "別のバージョン ({0}) を使ったあと v{1} に戻りました。そのバージョンはこのバージョンの設定の一部を知らない可能性があります。\nv{1} を最後に使ったときに保管した設定 (動画リスト · ブックマークを含む) に戻しますか?",
|
||||
"다른 버전 고르기": "別のバージョンを選ぶ",
|
||||
|
|
|
|||
|
|
@ -750,6 +750,8 @@
|
|||
"늘 주소로 열기": "始终按地址打开",
|
||||
"다 받는 대로 MKV 만들기의 동영상 목록에 넣고, 다운로드 목록에서는 뺍니다 (다운로드 화면의 체크 상자와 같음)": "下载完成后立即放入制作 MKV 的视频列表,并从下载列表移除(与下载界面的复选框相同)",
|
||||
"다 받으면 MKV 만들기의 동영상 목록에 자동으로 넣고, 이 다운로드 목록에서는 뺍니다 (받은 파일은 그대로)": "下载完成后自动加入制作 MKV 的视频列表,并从此下载列表移除(已下载的文件保留)",
|
||||
"다 받은 {0} 은 이미 MKV 목록에 있어 다운로드 목록에서 뺐습니다 (받은 파일은 그대로)": "下载完成的 {0} 已在 MKV 列表中,已从下载列表移除(文件保留)",
|
||||
"다 받은 {0} 을 MKV 목록에 넣고 다운로드 목록에서 뺐습니다 (받은 파일은 그대로)": "已将下载完成的 {0} 加入 MKV 列表并从下载列表移除(文件保留)",
|
||||
"다른 곳에서 지웠거나 옮겼을 수 있습니다. 위 폴더로 가 보세요.": "可能已在别处被删除或移动。请返回上级文件夹。",
|
||||
"다른 버전 ({0}) 을 쓰다가 v{1} 로 돌아왔습니다. 그 버전은 이 버전의 설정 일부를 모를 수 있습니다.\nv{1} 를 마지막으로 쓸 때 보관해 둔 설정 (동영상 목록 · 즐겨찾기 포함) 으로 되돌릴까요?": "使用其他版本 ({0}) 后回到了 v{1}。该版本可能不认识此版本的部分设置。\n要恢复最后一次使用 v{1} 时保存的设置 (包括视频列表 · 书签) 吗?",
|
||||
"다른 버전 고르기": "选择其他版本",
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import 'app/component_store.dart';
|
|||
import 'app/net_guard.dart';
|
||||
import 'app/tor_service.dart';
|
||||
import 'app/web_proxy.dart';
|
||||
import 'ui/added_to_mkv_notice.dart';
|
||||
import 'ui/settings_problem.dart';
|
||||
import 'ui/exit_guard.dart' show confirmStopCopies;
|
||||
import 'app/copy_center.dart';
|
||||
|
|
@ -296,9 +297,8 @@ Future<void> main(List<String> args) async {
|
|||
final n = await controller.addDownloaded(files);
|
||||
// MKV 만들기 목록으로 넘어갔으므로 다운로드 목록에서는 뺀다 (받은 파일은 그대로)
|
||||
downloads.dropFromList(t);
|
||||
if (n > 0) {
|
||||
messengerKey.currentState?.showSnackBar(SnackBar(content: Text(trf('동영상 목록에 추가: {0}', [t.title]))));
|
||||
}
|
||||
// 줄이 사라진 이유와 [보기] (MKV 화면 · 그 동영상)
|
||||
showAddedToMkvNotice(messengerKey, navigatorKey, controller, title: t.title, files: files, added: n);
|
||||
});
|
||||
downloads.setAutoAdd = (on) async {
|
||||
await controller.updateSettings((x) => x.addFinishedDownloads = on);
|
||||
|
|
@ -612,9 +612,8 @@ Future<void> runAndroid(String dataDir) async {
|
|||
if (files.isEmpty) return;
|
||||
final n = await controller.addDownloaded(files);
|
||||
downloads.dropFromList(t);
|
||||
if (n > 0) {
|
||||
messengerKey.currentState?.showSnackBar(SnackBar(content: Text(trf('동영상 목록에 추가: {0}', [t.title]))));
|
||||
}
|
||||
// 줄이 사라진 이유와 [보기] (MKV 화면 · 그 동영상)
|
||||
showAddedToMkvNotice(messengerKey, navigatorKey, controller, title: t.title, files: files, added: n);
|
||||
});
|
||||
downloads.setAutoAdd = (on) async {
|
||||
await controller.updateSettings((x) => x.addFinishedDownloads = on);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../app/app_controller.dart';
|
||||
import '../core/file_ops.dart' show samePath;
|
||||
import '../l10n/tr.dart';
|
||||
|
||||
/// "완료 시 자동 동영상 추가" 로 다 받은 동영상을 MKV 목록에 넣고 다운로드 목록에서 뺐을 때의 알림.
|
||||
/// 줄이 갑자기 사라져 "다운로드 (0)" 이 된 이유를 알 수 있게 [보기] (MKV 화면 · 그 동영상) 를 함께 (관리자 판단, 931)
|
||||
void showAddedToMkvNotice(GlobalKey<ScaffoldMessengerState> messenger, GlobalKey<NavigatorState> navigator,
|
||||
AppController c, {required String title, required List<String> files, required int added}) {
|
||||
final m = messenger.currentState;
|
||||
if (m == null) return;
|
||||
m.showSnackBar(SnackBar(
|
||||
duration: const Duration(seconds: 8),
|
||||
showCloseIcon: true,
|
||||
content: Text(added > 0
|
||||
? trf('다 받은 {0} 을 MKV 목록에 넣고 다운로드 목록에서 뺐습니다 (받은 파일은 그대로)', [title])
|
||||
: trf('다 받은 {0} 은 이미 MKV 목록에 있어 다운로드 목록에서 뺐습니다 (받은 파일은 그대로)', [title])),
|
||||
action: SnackBarAction(
|
||||
label: tr('보기'),
|
||||
onPressed: () {
|
||||
// MKV 화면 (맨 처음 화면) 으로 가서 그 동영상을 보이게
|
||||
navigator.currentState?.popUntil((r) => r.isFirst);
|
||||
final v = c.videos.where((x) => files.any((f) => samePath(f, x.path))).firstOrNull;
|
||||
if (v != null) c.select(v);
|
||||
},
|
||||
),
|
||||
));
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:jj_mkvmaker/app/app_controller.dart';
|
||||
import 'package:jj_mkvmaker/core/models.dart';
|
||||
import 'package:jj_mkvmaker/platform/windows/desktop_storage_service.dart';
|
||||
import 'package:jj_mkvmaker/platform/windows/process_media_tool.dart';
|
||||
import 'package:jj_mkvmaker/services/platform_services.dart';
|
||||
import 'package:jj_mkvmaker/ui/added_to_mkv_notice.dart';
|
||||
|
||||
/// 다운로드 줄이 "완료 시 자동 동영상 추가" 로 빠질 때 이유를 알리고 [보기] (931 관리자 판단)
|
||||
void main() {
|
||||
testWidgets('다 받은 동영상을 MKV 목록에 넣고 뺐다고 알림 · [보기] 는 MKV 화면의 그 동영상', (tester) async {
|
||||
final nav = GlobalKey<NavigatorState>(), messenger = GlobalKey<ScaffoldMessengerState>();
|
||||
final c = AppController(PlatformServices(mediaTool: ProcessMediaTool('x', 'y'), storage: DesktopStorageService()));
|
||||
final a = VideoItem(r'D:\dl\a.mp4'), b = VideoItem(r'D:\dl\받은 영상.mp4');
|
||||
c.videos.addAll([a, b]);
|
||||
c.selected = a;
|
||||
await tester.pumpWidget(MaterialApp(
|
||||
navigatorKey: nav, scaffoldMessengerKey: messenger, home: const Scaffold(body: Text('MKV'))));
|
||||
unawaited(nav.currentState!.push(MaterialPageRoute<void>(builder: (_) => const Scaffold(body: Text('다운로드 화면')))));
|
||||
await tester.pumpAndSettle();
|
||||
showAddedToMkvNotice(messenger, nav, c, title: '받은 영상', files: [r'D:\dl\받은 영상.mp4'], added: 1);
|
||||
await tester.pump(const Duration(milliseconds: 800));
|
||||
await tester.pump(const Duration(seconds: 1)); // 알림이 다 올라올 때까지
|
||||
expect(find.text('다 받은 받은 영상 을 MKV 목록에 넣고 다운로드 목록에서 뺐습니다 (받은 파일은 그대로)'), findsOneWidget);
|
||||
await tester.tap(find.byType(SnackBarAction).hitTestable()); // 화면마다 Scaffold 가 있어 보이는 쪽
|
||||
await tester.pumpAndSettle();
|
||||
expect(find.text('다운로드 화면'), findsNothing, reason: 'MKV 화면 (맨 처음) 으로');
|
||||
expect(c.selected, b, reason: '그 동영상을 보이게');
|
||||
});
|
||||
}
|
||||
Loading…
Reference in New Issue