mirror of
https://gitlab.com/openlp/openlp-mobile-remote.git
synced 2024-12-22 11:52:49 +00:00
some changes in display options
This commit is contained in:
parent
7e4c623ae2
commit
419302a77b
@ -26,6 +26,8 @@ import 'package:meta/meta.dart';
|
|||||||
|
|
||||||
import '../network/api.dart' as api;
|
import '../network/api.dart' as api;
|
||||||
|
|
||||||
|
enum DisplayOptionsState { none, success, failure }
|
||||||
|
|
||||||
@immutable
|
@immutable
|
||||||
abstract class SetDisplayTypeEvent extends Equatable {
|
abstract class SetDisplayTypeEvent extends Equatable {
|
||||||
final String type;
|
final String type;
|
||||||
@ -49,11 +51,10 @@ class SetDisplayTypeShowEvent extends SetDisplayTypeEvent {
|
|||||||
SetDisplayTypeShowEvent() : super('show');
|
SetDisplayTypeShowEvent() : super('show');
|
||||||
}
|
}
|
||||||
|
|
||||||
class DisplayOptionDialogBloc extends Bloc<SetDisplayTypeEvent, void> {
|
class DisplayOptionsDialogBloc
|
||||||
|
extends Bloc<SetDisplayTypeEvent, DisplayOptionsState> {
|
||||||
@override
|
@override
|
||||||
void get initialState {
|
DisplayOptionsState get initialState => DisplayOptionsState.none;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setBlankScreen() {
|
void setBlankScreen() {
|
||||||
dispatch(SetDisplayTypeBlankEvent());
|
dispatch(SetDisplayTypeBlankEvent());
|
||||||
@ -72,7 +73,14 @@ class DisplayOptionDialogBloc extends Bloc<SetDisplayTypeEvent, void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Stream<void> mapEventToState(SetDisplayTypeEvent event) async* {
|
Stream<DisplayOptionsState> mapEventToState(
|
||||||
api.setDisplayState(event.type);
|
SetDisplayTypeEvent event) async* {
|
||||||
|
try {
|
||||||
|
await api.setDisplayState(event.type);
|
||||||
|
yield DisplayOptionsState.success;
|
||||||
|
} catch (e) {
|
||||||
|
yield DisplayOptionsState.failure;
|
||||||
|
}
|
||||||
|
yield DisplayOptionsState.none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,84 +55,88 @@ Uri _uri(String path, {Map<String, String> queryParams}) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<http.Response> _get(String path,
|
Future<String> _get(String path, {Map<String, String> queryParams}) {
|
||||||
{Map<String, String> queryParams}) async {
|
|
||||||
Uri uri = _uri(path, queryParams: queryParams);
|
Uri uri = _uri(path, queryParams: queryParams);
|
||||||
final response = await http.get(uri, headers: _headers());
|
return http.get(uri, headers: _headers()).then((response) {
|
||||||
return response;
|
if (response.statusCode == 200) {
|
||||||
}
|
return response.body;
|
||||||
|
}
|
||||||
Future<PollState> pollState() async {
|
throw Exception('Invalid request.');
|
||||||
final response = await _get('api/poll');
|
|
||||||
if (response.statusCode != 200) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
final jsonResponse = convert.jsonDecode(response.body);
|
|
||||||
return PollState.fromJson(jsonResponse['results']);
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<List<SearchResult>> search(Plugin plugin, String query) async {
|
|
||||||
final response = await _get('api/${plugin.id}/search', queryParams: {
|
|
||||||
'data': '{"request":{"text":"$query"}}',
|
|
||||||
});
|
});
|
||||||
if (response.statusCode != 200) {
|
// final response = await http.get(uri, headers: _headers());
|
||||||
return [];
|
// return response;
|
||||||
}
|
|
||||||
final jsonResponse = convert.jsonDecode(response.body);
|
|
||||||
return (jsonResponse['results']['items'] as List)
|
|
||||||
.map((i) => SearchResult.fromJson(i))
|
|
||||||
.toList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> projectItem(Plugin plugin, String itemId) async {
|
// Future<PollState> pollState() async {
|
||||||
final response = await _get('api/${plugin.id}/live', queryParams: {
|
// final response = await _get('api/poll');
|
||||||
'data': '{"request": {"id": $itemId}}',
|
// if (response.statusCode != 200) {
|
||||||
|
// return null;
|
||||||
|
// }
|
||||||
|
// final jsonResponse = convert.jsonDecode(response.body);
|
||||||
|
// return PollState.fromJson(jsonResponse['results']);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Future<List<SearchResult>> search(Plugin plugin, String query) async {
|
||||||
|
// final response = await _get('api/${plugin.id}/search', queryParams: {
|
||||||
|
// 'data': '{"request":{"text":"$query"}}',
|
||||||
|
// });
|
||||||
|
// if (response.statusCode != 200) {
|
||||||
|
// return [];
|
||||||
|
// }
|
||||||
|
// final jsonResponse = convert.jsonDecode(response.body);
|
||||||
|
// return (jsonResponse['results']['items'] as List)
|
||||||
|
// .map((i) => SearchResult.fromJson(i))
|
||||||
|
// .toList();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Future<void> projectItem(Plugin plugin, String itemId) async {
|
||||||
|
// final response = await _get('api/${plugin.id}/live', queryParams: {
|
||||||
|
// 'data': '{"request": {"id": $itemId}}',
|
||||||
|
// });
|
||||||
|
// if (response.statusCode != 200) {
|
||||||
|
// // Do some stuff...
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Future<void> addItemToService(Plugin plugin, String itemId) async {
|
||||||
|
// final response = await _get('api/${plugin.id}/add', queryParams: {
|
||||||
|
// 'data': '{"request": {"id": $itemId}}',
|
||||||
|
// });
|
||||||
|
// if (response.statusCode != 200) {
|
||||||
|
// // Do some stuff...
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Future<bool> alert(String text) async {
|
||||||
|
// final response = await _get('api/alert', queryParams: {
|
||||||
|
// 'data': '{"request": {"text": "$text"}}',
|
||||||
|
// });
|
||||||
|
// if (response.statusCode != 200) {
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
|
||||||
|
Future<void> setDisplayState(String state) {
|
||||||
|
return _get('api/display/$state').then((_) {
|
||||||
|
return;
|
||||||
});
|
});
|
||||||
if (response.statusCode != 200) {
|
|
||||||
// Do some stuff...
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> addItemToService(Plugin plugin, String itemId) async {
|
// Future<void> setServiceItem(int itemIndex) async {
|
||||||
final response = await _get('api/${plugin.id}/add', queryParams: {
|
// final response = await _get('api/service/set', queryParams: {
|
||||||
'data': '{"request": {"id": $itemId}}',
|
// 'data': '{"request": {"id": $itemIndex}}',
|
||||||
});
|
// });
|
||||||
if (response.statusCode != 200) {
|
// if (response.statusCode != 200) {
|
||||||
// Do some stuff...
|
// // Do some stuff...
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
Future<bool> alert(String text) async {
|
// Future<void> setLiveSlide(int slideIndex) async {
|
||||||
final response = await _get('api/alert', queryParams: {
|
// final response = await _get('api/controller/live/set', queryParams: {
|
||||||
'data': '{"request": {"text": "$text"}}',
|
// 'data': '{"request": {"id": $slideIndex}}',
|
||||||
});
|
// });
|
||||||
if (response.statusCode != 200) {
|
// if (response.statusCode != 200) {
|
||||||
return false;
|
// // Do some stuff...
|
||||||
}
|
// }
|
||||||
return true;
|
// }
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> setDisplayState(String state) async {
|
|
||||||
final response = await _get('api/display/$state');
|
|
||||||
if (response.statusCode != 200) {
|
|
||||||
// Do some stuff...
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> setServiceItem(int itemIndex) async {
|
|
||||||
final response = await _get('api/service/set', queryParams: {
|
|
||||||
'data': '{"request": {"id": $itemIndex}}',
|
|
||||||
});
|
|
||||||
if (response.statusCode != 200) {
|
|
||||||
// Do some stuff...
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> setLiveSlide(int slideIndex) async {
|
|
||||||
final response = await _get('api/controller/live/set', queryParams: {
|
|
||||||
'data': '{"request": {"id": $slideIndex}}',
|
|
||||||
});
|
|
||||||
if (response.statusCode != 200) {
|
|
||||||
// Do some stuff...
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -21,13 +21,14 @@
|
|||||||
// DEALINGS IN THE SOFTWARE.
|
// DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
import '../bloc/display_options_dialog_bloc.dart';
|
import '../bloc/display_options_dialog_bloc.dart';
|
||||||
import '../configurations/app_localizations.dart';
|
import '../configurations/app_localizations.dart';
|
||||||
|
|
||||||
class _Action {
|
class _Action {
|
||||||
String titleKey;
|
String titleKey;
|
||||||
Function(DisplayOptionDialogBloc) callback;
|
Function(DisplayOptionsDialogBloc) callback;
|
||||||
_Action({@required this.titleKey, @required this.callback});
|
_Action({@required this.titleKey, @required this.callback});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,21 +62,43 @@ class DisplayOptionsDialog extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final bloc = DisplayOptionDialogBloc();
|
final bloc = DisplayOptionsDialogBloc();
|
||||||
return SimpleDialog(
|
return BlocListener<DisplayOptionsDialogBloc, DisplayOptionsState>(
|
||||||
contentPadding: EdgeInsets.all(20.0),
|
bloc: bloc,
|
||||||
children: _actions
|
condition: (previous, current) => current != DisplayOptionsState.none,
|
||||||
.map((action) => OutlineButton(
|
listener: (context, state) {
|
||||||
borderSide: BorderSide(color: Theme.of(context).primaryColor),
|
print(state);
|
||||||
textColor: Theme.of(context).primaryColor,
|
switch (state) {
|
||||||
child: Text(
|
case DisplayOptionsState.success:
|
||||||
AppLocalizations.of(context).translate(action.titleKey)),
|
Scaffold.of(context).showSnackBar(SnackBar(
|
||||||
onPressed: () {
|
content: Text('Sucesso!'),
|
||||||
action.callback(bloc);
|
));
|
||||||
Navigator.of(context).pop();
|
break;
|
||||||
},
|
case DisplayOptionsState.failure:
|
||||||
))
|
Scaffold.of(context).showSnackBar(SnackBar(
|
||||||
.toList(),
|
content: Text('Falha!'),
|
||||||
|
backgroundColor: Colors.red,
|
||||||
|
));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
child: SimpleDialog(
|
||||||
|
contentPadding: EdgeInsets.all(20.0),
|
||||||
|
children: _actions
|
||||||
|
.map((action) => OutlineButton(
|
||||||
|
borderSide: BorderSide(color: Theme.of(context).primaryColor),
|
||||||
|
textColor: Theme.of(context).primaryColor,
|
||||||
|
child: Text(
|
||||||
|
AppLocalizations.of(context).translate(action.titleKey)),
|
||||||
|
onPressed: () {
|
||||||
|
action.callback(bloc);
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
},
|
||||||
|
))
|
||||||
|
.toList(),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user