JJ_MKVMaker/lib/ui/explorer/explorer_flows.dart

53 lines
2.2 KiB
Dart

import 'delete_flow.dart';
import 'drop_flow.dart';
import 'explorer_controller.dart';
import 'explorer_jobs.dart';
import 'explorer_pane.dart';
import 'explorer_select.dart';
import 'open_flow.dart';
import 'rename_flow.dart';
import 'rsync_flow.dart';
import 'search_flow.dart';
import 'tools_flow.dart';
import 'transfer_flow.dart';
import 'view_dialogs.dart';
import 'write_guard.dart';
import '../../platform/windows/recycle_bin.dart' show RecycleBinBackend;
/// 약속 (E5d-6): 탐색기 하나의 흐름 모듈 묶음 - 버튼 · 줄 메뉴 · 단축키 · 끌어 놓기가 같은 것을 쓴다 (작업 목록 · 담아 둔 것이 하나).
/// 처음 쓸 때 만든다. 화면 배치에서 오는 것 (다른 창의 폴더 · 창이 둘인지 · 앱 휴지통을 쓰는 기기인지) 은 함수로 받는다
class ExplorerFlows {
ExplorerFlows(this.ctl, this.sel,
{required this.androidTrash, required this.recycleBin, required this.otherDirOf, required this.otherDir, required this.twoPanes});
final ExplorerController ctl;
final ExplorerSelect sel;
final bool Function() androidTrash;
final RecycleBinBackend Function() recycleBin;
/// [pane] 옆 창의 지금 폴더 (두 창일 때만, 압축 풀 곳)
final String? Function(ExplorerPane pane) otherDirOf;
/// 복사 · 이동 갈 곳 (두 창 · 숨은 다른 창, 없으면 담아 두기)
final String? Function() otherDir;
final bool Function() twoPanes;
late final guard = ExplorerGuard(ctl);
late final jobs = ExplorerJobs(ctl);
late final transfers = ExplorerTransfers(ctl, guard, jobs);
late final rsync = ExplorerRsyncFlow(ctl, jobs, transfers);
late final deletes = ExplorerDeleteFlow(ctl, sel, guard, androidTrash: androidTrash, recycleBin: recycleBin);
late final opener = ExplorerOpener(ctl, sel, guard, otherDirOf: otherDirOf);
late final renames = ExplorerRenames(ctl, guard);
late final tools = ExplorerTools(ctl, deletes, transfers);
late final dialogs = ExplorerViewDialogs(ctl, twoPanes: twoPanes);
late final search = ExplorerSearch(ctl, opener, transfers, deletes, otherDir: otherDir);
late final drops = ExplorerDrops(ctl, sel, guard, transfers);
void dispose() {
search.dispose();
transfers.dispose();
jobs.dispose();
}
}