diff --git a/lib/widgets/movies/details/details_screen.dart b/lib/widgets/movies/details/details_screen.dart index a38e519..588f1d5 100644 --- a/lib/widgets/movies/details/details_screen.dart +++ b/lib/widgets/movies/details/details_screen.dart @@ -15,6 +15,9 @@ import 'package:multimedia/widgets/movies/details/companies_box.dart'; import 'package:multimedia/widgets/movies/details/countries_box.dart'; import 'package:multimedia/widgets/movies/details/settings_box.dart'; +import 'package:logger/logger.dart'; +import 'package:multimedia/log_printer.dart'; + // ignore: must_be_immutable class MovieDetailsScreen extends StatelessWidget { MovieDetailsScreen({ @@ -24,6 +27,7 @@ class MovieDetailsScreen extends StatelessWidget { final Movie movie; late Movie movieDetails; + Logger logger = getLogger(); Future loadMovieDetails(int movieID) async { SharedPreferences prefs = await SharedPreferences.getInstance(); @@ -290,52 +294,52 @@ class MovieDetailsScreen extends StatelessWidget { } Future updateMovie() async { - // SharedPreferences prefs = await SharedPreferences.getInstance(); + SharedPreferences prefs = await SharedPreferences.getInstance(); - // String? dbProtocol = prefs.getString('dbProtocol'); - // String? dbHost = prefs.getString('dbHost'); - // String? dbPath = prefs.getString('dbPath'); + String? dbProtocol = prefs.getString('dbProtocol'); + String? dbHost = prefs.getString('dbHost'); + String? dbPath = prefs.getString('dbPath'); - // Uri url = Uri( - // scheme: dbProtocol, - // host: dbHost, - // path: dbPath, - // ); + Uri url = Uri( + scheme: dbProtocol, + host: dbHost, + path: dbPath, + ); - // try { - // final r = await http.post( - // url, - // headers: { - // 'Content-Type': 'application/json; charset=UTF-8', - // }, - // body: jsonEncode( - // { - // 'module': 'movie', - // 'function': 'update', - // 'movieID': movieDetails.movieID.toString(), - // 'movieTitle': movieDetails.movieTitle, - // 'originalTitle': movieDetails.originalTitle, - // 'overview': movieDetails.overview, - // 'releaseDate': - // DateFormat('yyyy-MM-dd').format(movieDetails.releaseDate), - // 'resolution': movieDetails.resolution, - // 'state': movieDetails.state.toString(), - // 'backdropPath': movieDetails.backdropPath, - // 'languages': movieDetails.languages, - // 'productionCountries': movieDetails.productionCountries, - // 'productionCompanies': movieDetails.productionCompanies, - // 'voteAverage': movieDetails.voteAverage.toString(), - // 'voteCount': movieDetails.voteCount.toString(), - // 'cast': movieDetails.cast, - // 'crew': movieDetails.crew, - // 'genre': movieDetails.genre, - // 'localPath': movieDetails.localPath, - // }, - // ), - // ); - // } catch (e) { - // print(e.toString()); - // } + try { + final r = await http.post( + url, + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + }, + body: jsonEncode( + { + 'module': 'movie', + 'function': 'update', + 'movieID': movieDetails.movieID.toString(), + 'movieTitle': movieDetails.movieTitle, + 'originalTitle': movieDetails.originalTitle, + 'overview': movieDetails.overview, + 'releaseDate': + DateFormat('yyyy-MM-dd').format(movieDetails.releaseDate), + 'resolution': movieDetails.resolution, + 'state': movieDetails.state.toString(), + 'backdropPath': movieDetails.backdropPath, + 'languages': movieDetails.languages, + 'productionCountries': movieDetails.productionCountries, + 'productionCompanies': movieDetails.productionCompanies, + 'voteAverage': movieDetails.voteAverage.toString(), + 'voteCount': movieDetails.voteCount.toString(), + 'cast': movieDetails.cast, + 'crew': movieDetails.crew, + 'genre': movieDetails.genre, + 'localPath': movieDetails.localPath, + }, + ), + ); + } catch (e) { + logger.e(e.toString()); + } return true; } diff --git a/lib/widgets/movies/list_screen.dart b/lib/widgets/movies/list_screen.dart index 7963da4..fe27169 100644 --- a/lib/widgets/movies/list_screen.dart +++ b/lib/widgets/movies/list_screen.dart @@ -1,5 +1,6 @@ import 'dart:convert'; import 'package:multimedia/widgets/movies/details/details_screen.dart'; +import 'package:multimedia/widgets/movies/filter_box.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:intl/intl.dart'; @@ -13,6 +14,9 @@ import 'package:multimedia/data/movies.dart'; import 'package:multimedia/constants.dart'; +import 'package:logger/logger.dart'; +import 'package:multimedia/log_printer.dart'; + class MoviesScreen extends StatefulWidget { const MoviesScreen({ super.key, @@ -28,6 +32,8 @@ class _MoviesScreenState extends State { List _columns = []; late List _moviesList; + Logger logger = getLogger(); + Future> generateMovieList() async { SharedPreferences prefs = await SharedPreferences.getInstance(); @@ -165,7 +171,7 @@ class _MoviesScreenState extends State { DataGridCell(columnName: 'movieID', value: e.movieID), DataGridCell(columnName: 'state', value: e.state), DataGridCell( - columnName: 'backdropPath', value: e.backdropPath), + columnName: 'backdropPath', value: e.backdropPath), DataGridCell(columnName: 'movieTitle', value: e.movieTitle), DataGridCell( columnName: 'releaseDate', @@ -186,11 +192,35 @@ class _MoviesScreenState extends State { rowColumnIndex: RowColumnIndex(index, 4)); movieDataSource.updateDataGridSource( rowColumnIndex: RowColumnIndex(index, 5)); - } else { - } + } else {} } } + void setFilter(String text, bool showInit, bool showProg, bool showDone) { +// movieDataSource.clearFilters(); + + if (showInit) + movieDataSource.addFilter( + 'state', FilterCondition(type: FilterType.equals, value: 1)); + else + movieDataSource.removeFilter( + 'state', FilterCondition(type: FilterType.equals, value: 1)); + + if (showProg) + movieDataSource.addFilter( + 'state', FilterCondition(type: FilterType.equals, value: 2)); + else + movieDataSource.removeFilter( + 'state', FilterCondition(type: FilterType.equals, value: 2)); + + if (showDone) + movieDataSource.addFilter( + 'state', FilterCondition(type: FilterType.equals, value: 3)); + else + movieDataSource.removeFilter( + 'state', FilterCondition(type: FilterType.equals, value: 3)); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -198,36 +228,45 @@ class _MoviesScreenState extends State { future: generateMovieList(), builder: (context, data) { return data.hasData - ? SfDataGridTheme( - data: const SfDataGridThemeData( - headerColor: Color(0xff009889), - ), - child: SfDataGrid( - source: movieDataSource, - selectionMode: SelectionMode.single, - navigationMode: GridNavigationMode.row, - columns: _columns, - controller: _dataGridController, - columnWidthMode: ColumnWidthMode.auto, - columnWidthCalculationRange: - ColumnWidthCalculationRange.allRows, - onCellTap: (DataGridCellTapDetails details) { - int index = details.rowColumnIndex.rowIndex - 1; - if (index < 0) { - return; - } - showMovieDetails(index); - }, - onCellDoubleTap: (DataGridCellDoubleTapDetails details) { - print(details.rowColumnIndex); - }, - onCellLongPress: (DataGridCellLongPressDetails details) { - print(details.rowColumnIndex); - }, - onCellSecondaryTap: (DataGridCellTapDetails details) { - print(details.rowColumnIndex); - }, - ), + ? Column( + children: [ + MovieFilterBox(setFilter: setFilter), + Expanded( + child: SfDataGridTheme( + data: const SfDataGridThemeData( + headerColor: Color(0xff009889), + ), + child: SfDataGrid( + allowFiltering: true, + source: movieDataSource, + selectionMode: SelectionMode.single, + navigationMode: GridNavigationMode.row, + columns: _columns, + controller: _dataGridController, + columnWidthMode: ColumnWidthMode.auto, + columnWidthCalculationRange: + ColumnWidthCalculationRange.allRows, + onCellTap: (DataGridCellTapDetails details) { + int index = details.rowColumnIndex.rowIndex - 1; + if (index < 0) { + return; + } + showMovieDetails(index); + }, + onCellDoubleTap: + (DataGridCellDoubleTapDetails details) { + print(details.rowColumnIndex); + }, + onCellLongPress: + (DataGridCellLongPressDetails details) { + print(details.rowColumnIndex); + }, + onCellSecondaryTap: (DataGridCellTapDetails details) { + print(details.rowColumnIndex); + }, + ), + )), + ], ) : const Center( child: CircularProgressIndicator( @@ -247,6 +286,8 @@ class MovieDataSource extends DataGridSource { buildDataGridRow(); } + Logger logger = getLogger(); + void buildDataGridRow() { _movieDataGridRows = movies .map((e) => DataGridRow(cells: [ diff --git a/lib/widgets/tvshows/details/details_screen.dart b/lib/widgets/tvshows/details/details_screen.dart index 2ac9392..cae4a5b 100644 --- a/lib/widgets/tvshows/details/details_screen.dart +++ b/lib/widgets/tvshows/details/details_screen.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; +import 'package:intl/intl.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -341,57 +342,57 @@ class TVShowDetailsScreen extends StatelessWidget { } Future updateTVShow() async { - // SharedPreferences prefs = await SharedPreferences.getInstance(); + SharedPreferences prefs = await SharedPreferences.getInstance(); - // String? dbProtocol = prefs.getString('dbProtocol'); - // String? dbHost = prefs.getString('dbHost'); - // String? dbPath = prefs.getString('dbPath'); + String? dbProtocol = prefs.getString('dbProtocol'); + String? dbHost = prefs.getString('dbHost'); + String? dbPath = prefs.getString('dbPath'); - // Uri url = Uri( - // scheme: dbProtocol, - // host: dbHost, - // path: dbPath, - // ); + Uri url = Uri( + scheme: dbProtocol, + host: dbHost, + path: dbPath, + ); - // var seasonState = jsonEncode(tvShowDetails.seasonStatus.map((e) => e.toJson()).toList()); + var seasonState = jsonEncode(tvShowDetails.seasonStatus.map((e) => e.toJson()).toList()); - // try { - // final r = await http.post( - // url, - // headers: { - // 'Content-Type': 'application/json; charset=UTF-8', - // }, - // body: jsonEncode( - // { - // 'module': 'tvshow', - // 'function': 'update', - // 'seriesID': tvShowDetails.seriesID.toString(), - // 'seriesName': tvShowDetails.seriesName, - // 'overview': tvShowDetails.overview, - // 'firstAired': - // DateFormat('yyyy-MM-dd').format(tvShowDetails.firstAired), - // 'resolution': tvShowDetails.resolution, - // 'cliffhanger': tvShowDetails.cliffhanger.toString(), - // 'status': tvShowDetails.status.toString(), - // 'backdropPath': tvShowDetails.backdropPath, - // 'seriesState': tvShowDetails.seriesState.toString(), - // 'languages': tvShowDetails.languages, - // 'networks': tvShowDetails.networks, - // 'productionCompanies': tvShowDetails.productionCompanies, - // 'voteAverage': tvShowDetails.voteAverage.toString(), - // 'voteCount': tvShowDetails.voteCount.toString(), - // 'cast': tvShowDetails.cast, - // 'crew': tvShowDetails.crew, - // 'genre': tvShowDetails.genre, - // 'download': tvShowDetails.download, - // 'localPath': tvShowDetails.localPath, - // 'seasons': seasonState, - // }, - // ), - // ); - // } catch (e) { - // logger.e(e.toString()); - // } + try { + final r = await http.post( + url, + headers: { + 'Content-Type': 'application/json; charset=UTF-8', + }, + body: jsonEncode( + { + 'module': 'tvshow', + 'function': 'update', + 'seriesID': tvShowDetails.seriesID.toString(), + 'seriesName': tvShowDetails.seriesName, + 'overview': tvShowDetails.overview, + 'firstAired': + DateFormat('yyyy-MM-dd').format(tvShowDetails.firstAired), + 'resolution': tvShowDetails.resolution, + 'cliffhanger': tvShowDetails.cliffhanger.toString(), + 'status': tvShowDetails.status.toString(), + 'backdropPath': tvShowDetails.backdropPath, + 'seriesState': tvShowDetails.seriesState.toString(), + 'languages': tvShowDetails.languages, + 'networks': tvShowDetails.networks, + 'productionCompanies': tvShowDetails.productionCompanies, + 'voteAverage': tvShowDetails.voteAverage.toString(), + 'voteCount': tvShowDetails.voteCount.toString(), + 'cast': tvShowDetails.cast, + 'crew': tvShowDetails.crew, + 'genre': tvShowDetails.genre, + 'download': tvShowDetails.download, + 'localPath': tvShowDetails.localPath, + 'seasons': seasonState, + }, + ), + ); + } catch (e) { + logger.e(e.toString()); + } return true; } diff --git a/lib/widgets/tvshows/list_screen.dart b/lib/widgets/tvshows/list_screen.dart index 68c4320..3c90f19 100644 --- a/lib/widgets/tvshows/list_screen.dart +++ b/lib/widgets/tvshows/list_screen.dart @@ -13,6 +13,9 @@ import 'package:multimedia/data/tvshows.dart'; import 'package:multimedia/constants.dart'; +import 'package:logger/logger.dart'; +import 'package:multimedia/log_printer.dart'; + String convertState(String state) { List stateList = state.split(','); int maxEpisode = 0; @@ -348,6 +351,8 @@ class TVShowDataSource extends DataGridSource { buildDataGridRow(); } + Logger logger = getLogger(); + void buildDataGridRow() { _tvshowDataGridRows = tvshows .map((e) => DataGridRow(cells: [