diff --git a/README.md b/README.md index 2801cd5..18b0cb9 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Enjoy podcasts with tsacdop! Tsacdop is a podcasts player developed with flutter. The development is still on early stage. -Thanks for flutter team and all plugin developers, especially [webfeed](https://github.com/witochandra/webfeed) and [audiofileplayer](https://github.com/google/flutter.plugins/tree/master/packages/audiofileplayer/). +Thanks for flutter team and all involved plugin developers, especially [webfeed](https://github.com/witochandra/webfeed) and [audiofileplayer](https://github.com/google/flutter.plugins/tree/master/packages/audiofileplayer/). The podcasts search engine is powered by [ListenNotes](https://listennotes.com). diff --git a/lib/class/sqflite_localpodcast.dart b/lib/class/sqflite_localpodcast.dart index 65fc6fd..7c93c9e 100644 --- a/lib/class/sqflite_localpodcast.dart +++ b/lib/class/sqflite_localpodcast.dart @@ -7,7 +7,7 @@ import 'package:flutter_downloader/flutter_downloader.dart'; import 'package:path_provider/path_provider.dart'; import 'podcastlocal.dart'; import 'episodebrief.dart'; -import '../webfeed/webfeed.dart'; +import 'package:tsacdop/webfeed/webfeed.dart'; class DBHelper { static Database _db; @@ -133,12 +133,11 @@ class DBHelper { return ximalaya.hasMatch(input); } - Future savePodcastRss(String rss) async { + Future savePodcastRss(RssFeed _p) async { String _title; String _url; String _description; int _duration; - var _p = RssFeed.parse(rss); int _result = _p.items.length; var dbClient = await database; int _count = Sqflite.firstIntValue(await dbClient.rawQuery( diff --git a/lib/home/appbar/addpodcast.dart b/lib/home/appbar/addpodcast.dart index 6398960..87ebcee 100644 --- a/lib/home/appbar/addpodcast.dart +++ b/lib/home/appbar/addpodcast.dart @@ -207,6 +207,7 @@ class _SearchResultState extends State { @override Widget build(BuildContext context) { final importOmpl = Provider.of(context); + savePodcast(String rss) async { print(rss); if (mounted) setState(() => _adding = true); @@ -240,7 +241,7 @@ class _SearchResultState extends State { importOmpl.importState = ImportState.parse; - await dbHelper.savePodcastRss(response.data); + await dbHelper.savePodcastRss(_p); importOmpl.importState = ImportState.complete; importOmpl.importState = ImportState.stop; diff --git a/lib/home/appbar/popupmenu.dart b/lib/home/appbar/popupmenu.dart index e4566b0..a28096a 100644 --- a/lib/home/appbar/popupmenu.dart +++ b/lib/home/appbar/popupmenu.dart @@ -32,7 +32,6 @@ class OmplOutline { } class PopupMenu extends StatelessWidget { - Future getColor(File file) async { final imageProvider = FileImage(file); var colorImage = await getImageFromProvider(imageProvider); @@ -45,6 +44,21 @@ class PopupMenu extends StatelessWidget { Widget build(BuildContext context) { final importOmpl = Provider.of(context); + _refreshAll() async { + var dbHelper = DBHelper(); + List podcastList = await dbHelper.getPodcastLocal(); + await Future.forEach(podcastList, (podcastLocal) async { + importOmpl.rssTitle = podcastLocal.title; + importOmpl.importState = ImportState.parse; + Response response = await Dio().get(podcastLocal.rssUrl); + var _p = RssFeed.parse(response.data); + await dbHelper.savePodcastRss(_p); + print('Refresh ' + podcastLocal.title); + }); + importOmpl.importState = ImportState.complete; + importOmpl.importState = ImportState.stop; + } + saveOmpl(String rss) async { var dbHelper = DBHelper(); try { @@ -74,7 +88,7 @@ class PopupMenu extends StatelessWidget { importOmpl.importState = ImportState.parse; - await dbHelper.savePodcastRss(response.data); + await dbHelper.savePodcastRss(_p); } catch (e) { print(e); } @@ -120,24 +134,30 @@ class PopupMenu extends StatelessWidget { } return PopupMenuButton( - elevation: 2, + elevation: 3, tooltip: 'Menu', itemBuilder: (context) => [ PopupMenuItem( value: 1, - child: Text('Impoer OMPL'), + child: Text('Refresh All'), ), PopupMenuItem( value: 2, + child: Text('Impoer OMPL'), + ), + PopupMenuItem( + value: 3, child: Text('About'), ), ], onSelected: (value) { - if (value == 2) { + if (value == 3) { Navigator.push( context, MaterialPageRoute(builder: (context) => AboutApp())); - } else if (value == 1) { + } else if (value == 2) { _getFilePath(); + } else if (value == 1) { + _refreshAll(); } }, ); diff --git a/pubspec.yaml b/pubspec.yaml index 600b534..3a33e12 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,4 +1,4 @@ -name: Tsacdop +name: tsacdop description: An easy-use podacasts player. # The following defines the version and build number for your application. diff --git a/test/widget_test.dart b/test/widget_test.dart index 54ecf53..c22e120 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:Tsacdop/main.dart'; +import 'package:tsacdop/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async {