update movie, tvshow

main
Herwig Birke 2 years ago
parent 4b77501676
commit fda80b014b

@ -1,3 +1,5 @@
import 'dart:convert';
import 'package:intl/intl.dart';
import 'package:flutter/material.dart';
@ -37,6 +39,13 @@ class Season {
seasonID: int.parse(json['seasonID']),
state: json['state']);
}
Map toJson() =>
{
'seasonNumber': seasonNumber.toString(),
'seasonID': seasonID.toString(),
'state': state,
};
}
class TVShow {

@ -337,6 +337,58 @@ class TVShowDetailsScreen extends StatelessWidget {
}
Future<bool> updateTVShow() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String? dbProtocol = prefs.getString('dbProtocol');
String? dbHost = prefs.getString('dbHost');
String? dbPath = prefs.getString('dbPath');
Uri url = Uri(
scheme: dbProtocol,
host: dbHost,
path: dbPath,
);
var seasonState = jsonEncode(tvShowDetails.seasonStatus.map((e) => e.toJson()).toList());
try {
final r = await http.post(
url,
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: jsonEncode(
<String, dynamic>{
'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) {
print(e.toString());
}
return true;
}
@ -351,8 +403,34 @@ class TVShowDetailsScreen extends StatelessWidget {
void stateChanged(List<Season> seasonStatus) {
tvShowDetails.seasonStatus = seasonStatus;
for (var s in tvShowDetails.seasonStatus) {
print('Season: ${s.seasonNumber}, State: ${s.state}');
bool hasInit = false;
bool hasProg = false;
bool hasDone = false;
for (var season in tvShowDetails.seasonStatus) {
var episodeList = season.state.split(',');
for (var s in episodeList) {
var states = s.split('|');
if (states[1] == '1') {
hasInit = true;
}
if (states[1] == '2') {
hasProg = true;
}
if (states[1] == '3') {
hasDone = true;
}
}
}
if (hasProg) {
tvShowDetails.seriesState = 2;
} else if (hasInit) {
tvShowDetails.seriesState = 1;
} else if (hasDone) {
tvShowDetails.seriesState = 3;
}
}

@ -16,7 +16,6 @@ class TVShowDetailsSeasons extends StatefulWidget {
final Function(List<Season>) stateChanged;
void stateChanged1(int seasonNumber, String state) {
print('start stateChanged1 in seasons ...');
for (int seasonID = 0; seasonID < seasonStatus.length; seasonID++) {
if (seasonStatus[seasonID].seasonNumber == seasonNumber) {
seasonStatus[seasonID].state = state;

@ -15,6 +15,54 @@ import 'package:multimedia/data/tvshows.dart';
import 'package:multimedia/constants.dart';
String convertState(String state) {
List<String> stateList = state.split(',');
int maxEpisode = 0;
Map stateListMap = {};
for (var x = 0; x < stateList.length; x++) {
List<String> tmp = stateList[x].split('|');
stateListMap[tmp[0]] = tmp[1];
int episode = int.parse(tmp[0]);
if (episode > maxEpisode) {
maxEpisode = episode;
}
}
String stateString = "";
for (int x = 0; x < maxEpisode; x++) {
String s = '0';
int key = x + 1;
if (stateListMap.containsKey('$key')) {
s = stateListMap['$key'];
}
stateString = stateString + s;
}
return stateString;
}
List<DataGridCell> setSeasonData(int maxSeason, List<Season> seasonList) {
List<DataGridCell> dataGridCell = [];
int length = seasonList.length;
for (int x = 1; x <= maxSeason; x++) {
String status = '';
if (x <= length) {
status = convertState(seasonList[x - 1].state);
}
dataGridCell.add(DataGridCell(columnName: 'season$x', value: status));
}
return dataGridCell;
}
class TVShowsScreen extends StatefulWidget {
const TVShowsScreen({
super.key,
@ -195,7 +243,7 @@ class _TVShowsScreenState extends State<TVShowsScreen> {
_columns = getColumns();
}
void showTVShowDetails(int index) {
Future<void> showTVShowDetails(int index) async {
List<DataGridCell<dynamic>> cells =
tvshowDataSource.effectiveRows.elementAt(index).getCells();
@ -211,11 +259,43 @@ class _TVShowsScreenState extends State<TVShowsScreen> {
}
if (found) {
Navigator.push(
final t = await Navigator.push(
context,
MaterialPageRoute(
builder: (ctx) =>
TVShowDetailsScreen(tvShow: _tvshowsList[tvShowIndex])));
if (t != null) {
_tvshowsList[tvShowIndex].seriesName = t.seriesName;
_tvshowsList[tvShowIndex].download = t.download;
_tvshowsList[tvShowIndex].localPath = t.localPath;
_tvshowsList[tvShowIndex].resolution = t.resolution;
_tvshowsList[tvShowIndex].cliffhanger = t.cliffhanger;
_tvshowsList[tvShowIndex].seasonStatus = t.seasonStatus;
_tvshowsList[tvShowIndex].seriesState = t.seriesState;
TVShow e = _tvshowsList[tvShowIndex];
tvshowDataSource._tvshowDataGridRows[index] = DataGridRow(cells: [
DataGridCell<int>(columnName: 'seriesID', value: e.seriesID),
DataGridCell<int>(columnName: 'seriesState', value: e.seriesState),
DataGridCell<String>(columnName: 'status', value: e.status),
DataGridCell<int>(columnName: 'cliffhanger', value: e.cliffhanger),
DataGridCell<String>(
columnName: 'backdropPath', value: e.backdropPath),
DataGridCell<String>(columnName: 'overview', value: e.overview),
DataGridCell<String>(columnName: 'seriesName', value: e.seriesName),
DataGridCell<String>(
columnName: 'firstAired',
value: DateFormat('yyyy-MM-dd').format(e.firstAired)),
DataGridCell<String>(columnName: 'resolution', value: e.resolution),
...setSeasonData(maxSeason, e.seasonStatus),
]);
for (int i = 0;i < _columns.length;i++) {
tvshowDataSource.updateDataGridSource(
rowColumnIndex: RowColumnIndex(index, i));
}
} else {}
}
}
@ -275,53 +355,6 @@ class TVShowDataSource extends DataGridSource {
buildDataGridRow();
}
String convertState(String state) {
List<String> stateList = state.split(',');
int maxEpisode = 0;
Map stateListMap = {};
for (var x = 0; x < stateList.length; x++) {
List<String> tmp = stateList[x].split('|');
stateListMap[tmp[0]] = tmp[1];
int episode = int.parse(tmp[0]);
if (episode > maxEpisode) {
maxEpisode = episode;
}
}
String stateString = "";
for (int x = 0; x < maxEpisode; x++) {
String s = '0';
int key = x + 1;
if (stateListMap.containsKey('$key')) {
s = stateListMap['$key'];
}
stateString = stateString + s;
}
return stateString;
}
List<DataGridCell> setSeasonData(int maxSeason, List<Season> seasonList) {
List<DataGridCell> dataGridCell = [];
int length = seasonList.length;
for (int x = 1; x <= maxSeason; x++) {
String status = '';
if (x <= length) {
status = convertState(seasonList[x - 1].state);
}
dataGridCell.add(DataGridCell(columnName: 'season$x', value: status));
}
return dataGridCell;
}
void buildDataGridRow() {
_tvshowDataGridRows = tvshows
.map<DataGridRow>((e) => DataGridRow(cells: [
@ -466,4 +499,8 @@ class TVShowDataSource extends DataGridSource {
void updateDataGrid() {
notifyListeners();
}
void updateDataGridSource({required RowColumnIndex rowColumnIndex}) {
notifyDataSourceListeners(rowColumnIndex: rowColumnIndex);
}
}

Loading…
Cancel
Save