mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-05-18 11:01:53 +00:00
Added no sources installed widget
This commit is contained in:
parent
7382ef0d96
commit
6a9ee991ac
13 changed files with 73 additions and 16 deletions
|
|
@ -273,5 +273,7 @@
|
|||
"markEpisodeAsSeenSetting": "في أي نقطة لوضع علامة على الحلقة كمشاهدة",
|
||||
"default_skip_intro_length": "طول تخطي المقدمة الافتراضي",
|
||||
"default_playback_speed_length": "طول سرعة التشغيل الافتراضية",
|
||||
"updateProgressAfterReading": "تحديث التقدم بعد القراءة"
|
||||
"updateProgressAfterReading": "تحديث التقدم بعد القراءة",
|
||||
"no_sources_installed": "لم يتم تثبيت مصادر!",
|
||||
"show_extensions": "عرض الإضافات"
|
||||
}
|
||||
|
|
@ -273,5 +273,7 @@
|
|||
"markEpisodeAsSeenSetting": "At what point to mark the episode as seen",
|
||||
"default_skip_intro_length": "Default Skip intro length",
|
||||
"default_playback_speed_length": "Default Playback speed length",
|
||||
"updateProgressAfterReading": "Update progress after reading"
|
||||
"updateProgressAfterReading": "Update progress after reading",
|
||||
"no_sources_installed": "No sources installed!",
|
||||
"show_extensions": "Show extensions"
|
||||
}
|
||||
|
|
@ -273,5 +273,7 @@
|
|||
"markEpisodeAsSeenSetting": "En qué punto marcar el episodio como visto",
|
||||
"default_skip_intro_length": "Duración predeterminada para saltar la introducción",
|
||||
"default_playback_speed_length": "Duración predeterminada de la velocidad de reproducción",
|
||||
"updateProgressAfterReading": "Actualizar el progreso después de leer"
|
||||
"updateProgressAfterReading": "Actualizar el progreso después de leer",
|
||||
"no_sources_installed": "¡No hay fuentes instaladas!",
|
||||
"show_extensions": "Mostrar extensiones"
|
||||
}
|
||||
|
|
@ -273,5 +273,7 @@
|
|||
"markEpisodeAsSeenSetting": "À quel moment marquer l'épisode comme vu",
|
||||
"default_skip_intro_length": "Longueur par défaut du passage de l'intro",
|
||||
"default_playback_speed_length": "Longueur par défaut de la vitesse de lecture",
|
||||
"updateProgressAfterReading": "Synchroniser la progression après lecture"
|
||||
"updateProgressAfterReading": "Synchroniser la progression après lecture",
|
||||
"no_sources_installed": "Aucune source installée !",
|
||||
"show_extensions": "Afficher les extensions"
|
||||
}
|
||||
|
|
@ -273,5 +273,7 @@
|
|||
"markEpisodeAsSeenSetting": "Pada titik mana menandai episode sebagai terlihat",
|
||||
"default_skip_intro_length": "Panjang lewati intro default",
|
||||
"default_playback_speed_length": "Panjang kecepatan pemutaran default",
|
||||
"updateProgressAfterReading": "Perbarui kemajuan setelah membaca"
|
||||
"updateProgressAfterReading": "Perbarui kemajuan setelah membaca",
|
||||
"no_sources_installed": "Tidak ada sumber yang terpasang!",
|
||||
"show_extensions": "Tampilkan ekstensi"
|
||||
}
|
||||
|
|
@ -273,5 +273,7 @@
|
|||
"markEpisodeAsSeenSetting": "In quale momento contrassegnare l'episodio come visto",
|
||||
"default_skip_intro_length": "Durata predefinita per saltare l'introduzione",
|
||||
"default_playback_speed_length": "Durata predefinita per la velocità di riproduzione",
|
||||
"updateProgressAfterReading": "Aggiorna il progresso dopo aver letto"
|
||||
"updateProgressAfterReading": "Aggiorna il progresso dopo aver letto",
|
||||
"no_sources_installed": "Nessuna fonte installata!",
|
||||
"show_extensions": "Mostra estensioni"
|
||||
}
|
||||
|
|
@ -273,5 +273,7 @@
|
|||
"markEpisodeAsSeenSetting": "Em que ponto marcar o episódio como visto",
|
||||
"default_skip_intro_length": "Duração padrão para pular a introdução",
|
||||
"default_playback_speed_length": "Duração padrão da velocidade de reprodução",
|
||||
"updateProgressAfterReading": "Atualizar progresso após a leitura"
|
||||
"updateProgressAfterReading": "Atualizar progresso após a leitura",
|
||||
"no_sources_installed": "Nenhuma fonte instalada!",
|
||||
"show_extensions": "mostrar extensões"
|
||||
}
|
||||
|
|
@ -273,5 +273,7 @@
|
|||
"markEpisodeAsSeenSetting": "Em que ponto marcar o episódio como visto",
|
||||
"default_skip_intro_length": "Duração padrão para pular a introdução",
|
||||
"default_playback_speed_length": "Duração padrão da velocidade de reprodução",
|
||||
"updateProgressAfterReading": "Atualize o progresso após a leitura"
|
||||
"updateProgressAfterReading": "Atualize o progresso após a leitura",
|
||||
"no_sources_installed": "Nenhuma fonte instalada!",
|
||||
"show_extensions": "Mostrar extensões"
|
||||
}
|
||||
|
|
@ -273,5 +273,7 @@
|
|||
"markEpisodeAsSeenSetting": "В какой момент отметить эпизод как просмотренный",
|
||||
"default_skip_intro_length": "Стандартная длина пропуска вступления",
|
||||
"default_playback_speed_length": "Стандартная длина скорости воспроизведения",
|
||||
"updateProgressAfterReading": "Обновить прогресс после чтения"
|
||||
"updateProgressAfterReading": "Обновить прогресс после чтения",
|
||||
"no_sources_installed": "Источники не установлены!",
|
||||
"show_extensions": "Показать расширения"
|
||||
}
|
||||
|
|
@ -273,5 +273,7 @@
|
|||
"markEpisodeAsSeenSetting": "Bölümün izlendiği olarak işaretleneceği nokta",
|
||||
"default_skip_intro_length": "Varsayılan Giriş Atla süresi",
|
||||
"default_playback_speed_length": "Varsayılan Oynatma hızı süresi",
|
||||
"updateProgressAfterReading": "Okuduktan Sonra İlerlemeyi Güncelle"
|
||||
"updateProgressAfterReading": "Okuduktan Sonra İlerlemeyi Güncelle",
|
||||
"no_sources_installed": "Hiçbir kaynak yüklü değil!",
|
||||
"show_extensions": "uzantıları göster"
|
||||
}
|
||||
|
|
@ -151,11 +151,17 @@ class _BrowseScreenState extends ConsumerState<BrowseScreen>
|
|||
),
|
||||
),
|
||||
body: TabBarView(controller: _tabBarController, children: [
|
||||
const SourcesScreen(
|
||||
SourcesScreen(
|
||||
isManga: true,
|
||||
tabIndex: (index) {
|
||||
_tabBarController.animateTo(index);
|
||||
},
|
||||
),
|
||||
const SourcesScreen(
|
||||
SourcesScreen(
|
||||
isManga: false,
|
||||
tabIndex: (index) {
|
||||
_tabBarController.animateTo(index);
|
||||
},
|
||||
),
|
||||
ExtensionScreen(
|
||||
query: _textEditingController.text,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import 'package:mangayomi/models/source.dart';
|
|||
import 'package:mangayomi/modules/browse/extension/providers/extensions_provider.dart';
|
||||
import 'package:mangayomi/modules/browse/extension/providers/fetch_anime_sources.dart';
|
||||
import 'package:mangayomi/modules/browse/extension/providers/fetch_manga_sources.dart';
|
||||
import 'package:mangayomi/modules/widgets/error_text.dart';
|
||||
import 'package:mangayomi/modules/widgets/progress_center.dart';
|
||||
import 'package:mangayomi/providers/l10n_providers.dart';
|
||||
import 'package:mangayomi/sources/source_test.dart';
|
||||
|
|
@ -160,7 +159,19 @@ class ExtensionScreen extends ConsumerWidget {
|
|||
],
|
||||
);
|
||||
},
|
||||
error: (error, _) => ErrorText(error),
|
||||
error: (error, _) => Center(
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
if (isManga) {
|
||||
ref.invalidate(
|
||||
fetchMangaSourcesListProvider(id: null, reFresh: true));
|
||||
} else {
|
||||
ref.invalidate(
|
||||
fetchAnimeSourcesListProvider(id: null, reFresh: true));
|
||||
}
|
||||
},
|
||||
child: Text(context.l10n.refresh)),
|
||||
),
|
||||
loading: () => const ProgressCenter(),
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -11,8 +11,10 @@ import 'package:mangayomi/utils/language.dart';
|
|||
import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart';
|
||||
|
||||
class SourcesScreen extends ConsumerWidget {
|
||||
final Function(int) tabIndex;
|
||||
final bool isManga;
|
||||
const SourcesScreen({required this.isManga, super.key});
|
||||
const SourcesScreen(
|
||||
{required this.tabIndex, required this.isManga, super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
|
|
@ -32,11 +34,29 @@ class SourcesScreen extends ConsumerWidget {
|
|||
.watch(fireImmediately: true),
|
||||
builder: (context, snapshot) {
|
||||
if (!snapshot.hasData) {
|
||||
return Center(child: Text(l10n.no_result));
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
List<Source> sources = snapshot.data!
|
||||
.where((element) => showNSFW ? true : element.isNsfw == false)
|
||||
.toList();
|
||||
if (sources.isEmpty) {
|
||||
return Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Text(context.l10n.no_sources_installed),
|
||||
),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: ElevatedButton.icon(
|
||||
onPressed: () => tabIndex(isManga ? 2 : 3),
|
||||
icon: const Icon(Icons.extension_rounded),
|
||||
label: Text(context.l10n.show_extensions)),
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
final lastUsedEntries =
|
||||
sources.where((element) => element.lastUsed!).toList();
|
||||
final isPinnedEntries =
|
||||
|
|
|
|||
Loading…
Reference in a new issue