mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-03-11 17:25:32 +00:00
Merge pull request #421 from Schnitzel5/feature/custom-subtitles
added option to load own subtitles
This commit is contained in:
commit
13fddac7bf
3 changed files with 53 additions and 27 deletions
|
|
@ -444,5 +444,6 @@
|
||||||
"repo_added": "Erweiterungs-Repository hinzugefügt!",
|
"repo_added": "Erweiterungs-Repository hinzugefügt!",
|
||||||
"genre_search_library": "Genre im Bibliothek suchen",
|
"genre_search_library": "Genre im Bibliothek suchen",
|
||||||
"genre_search_source": "Zur Erweiterung navigieren",
|
"genre_search_source": "Zur Erweiterung navigieren",
|
||||||
"source_not_added": "Die Erweiterung ist nicht installiert!"
|
"source_not_added": "Die Erweiterung ist nicht installiert!",
|
||||||
|
"load_own_subtitles": "Deine eigene Untertiteln laden..."
|
||||||
}
|
}
|
||||||
|
|
@ -457,5 +457,6 @@
|
||||||
"add_repo": "Add Repository?",
|
"add_repo": "Add Repository?",
|
||||||
"genre_search_library": "Search genre in library",
|
"genre_search_library": "Search genre in library",
|
||||||
"genre_search_source": "Browse in source",
|
"genre_search_source": "Browse in source",
|
||||||
"source_not_added": "Source is not installed!"
|
"source_not_added": "Source is not installed!",
|
||||||
|
"load_own_subtitles": "Load your own subtitles..."
|
||||||
}
|
}
|
||||||
|
|
@ -1,10 +1,12 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:bot_toast/bot_toast.dart';
|
import 'package:bot_toast/bot_toast.dart';
|
||||||
|
import 'package:file_picker/file_picker.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart' as riv;
|
import 'package:flutter_riverpod/flutter_riverpod.dart' as riv;
|
||||||
|
import 'package:mangayomi/eval/model/m_bridge.dart';
|
||||||
import 'package:mangayomi/main.dart';
|
import 'package:mangayomi/main.dart';
|
||||||
import 'package:mangayomi/models/chapter.dart';
|
import 'package:mangayomi/models/chapter.dart';
|
||||||
import 'package:mangayomi/models/video.dart' as vid;
|
import 'package:mangayomi/models/video.dart' as vid;
|
||||||
|
|
@ -627,32 +629,54 @@ class _AnimeStreamPageState extends riv.ConsumerState<AnimeStreamPage>
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 15, horizontal: 12),
|
padding: const EdgeInsets.symmetric(vertical: 15, horizontal: 12),
|
||||||
child: Column(
|
child: Column(
|
||||||
children:
|
children: [
|
||||||
videoSubtitleLast.toSet().toList().map((sub) {
|
...videoSubtitleLast.toSet().toList().map((sub) {
|
||||||
final title =
|
final title =
|
||||||
sub.title ??
|
sub.title ??
|
||||||
sub.subtitle?.title ??
|
sub.subtitle?.title ??
|
||||||
sub.subtitle?.language ??
|
sub.subtitle?.language ??
|
||||||
sub.subtitle?.channels ??
|
sub.subtitle?.channels ??
|
||||||
"None";
|
"None";
|
||||||
|
|
||||||
final selected =
|
final selected =
|
||||||
(title ==
|
(title ==
|
||||||
(subtitle.title ??
|
(subtitle.title ??
|
||||||
subtitle.language ??
|
subtitle.language ??
|
||||||
subtitle.channels ??
|
subtitle.channels ??
|
||||||
"None")) ||
|
"None")) ||
|
||||||
(subtitle.id == "no" && title == "None");
|
(subtitle.id == "no" && title == "None");
|
||||||
return GestureDetector(
|
return GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
try {
|
try {
|
||||||
_player.setSubtitleTrack(sub.subtitle!);
|
_player.setSubtitleTrack(sub.subtitle!);
|
||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
},
|
},
|
||||||
child: textWidget(title, selected),
|
child: textWidget(title, selected),
|
||||||
);
|
);
|
||||||
}).toList(),
|
}),
|
||||||
|
GestureDetector(
|
||||||
|
onTap: () async {
|
||||||
|
try {
|
||||||
|
FilePickerResult? result = await FilePicker.platform.pickFiles(
|
||||||
|
allowMultiple: false,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (result != null && context.mounted) {
|
||||||
|
_player.setSubtitleTrack(
|
||||||
|
SubtitleTrack.uri(result.files.first.path!),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (!context.mounted) return;
|
||||||
|
Navigator.pop(context);
|
||||||
|
} catch (_) {
|
||||||
|
botToast("Error");
|
||||||
|
Navigator.pop(context);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: textWidget(context.l10n.load_own_subtitles, false),
|
||||||
|
),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue