diff --git a/lib/pangea/activity_generator/activity_generator_view.dart b/lib/pangea/activity_generator/activity_generator_view.dart index 39855c035..862d523ae 100644 --- a/lib/pangea/activity_generator/activity_generator_view.dart +++ b/lib/pangea/activity_generator/activity_generator_view.dart @@ -10,6 +10,7 @@ import 'package:fluffychat/pangea/activity_planner/activity_plan_card.dart'; import 'package:fluffychat/pangea/activity_planner/activity_planner_builder.dart'; import 'package:fluffychat/pangea/activity_planner/suggestion_form_field.dart'; import 'package:fluffychat/pangea/activity_suggestions/activity_suggestions_constants.dart'; +import 'package:fluffychat/pangea/chat_settings/widgets/language_level_dropdown.dart'; import 'package:fluffychat/pangea/instructions/instructions_enum.dart'; import 'package:fluffychat/pangea/instructions/instructions_inline_tooltip.dart'; import 'package:fluffychat/pangea/learning_settings/utils/p_language_store.dart'; @@ -195,6 +196,11 @@ class ActivityGeneratorView extends StatelessWidget { }, ), const SizedBox(height: 16.0), + LanguageLevelDropdown( + onChanged: controller.setSelectedCefrLevel, + initialLevel: controller.selectedCefrLevel, + ), + const SizedBox(height: 16.0), Row( children: [ Expanded( diff --git a/lib/pangea/activity_planner/activity_plan_card.dart b/lib/pangea/activity_planner/activity_plan_card.dart index 9166903d6..68ed306a3 100644 --- a/lib/pangea/activity_planner/activity_plan_card.dart +++ b/lib/pangea/activity_planner/activity_plan_card.dart @@ -13,8 +13,10 @@ import 'package:fluffychat/pangea/activity_planner/activity_plan_model.dart'; import 'package:fluffychat/pangea/activity_planner/activity_planner_builder.dart'; import 'package:fluffychat/pangea/activity_planner/bookmarked_activities_repo.dart'; import 'package:fluffychat/pangea/activity_suggestions/activity_room_selection.dart'; +import 'package:fluffychat/pangea/chat_settings/widgets/language_level_dropdown.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/common/widgets/full_width_dialog.dart'; +import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; class ActivityPlanCard extends StatefulWidget { @@ -264,6 +266,32 @@ class ActivityPlanCardState extends State { ], ), const SizedBox(height: itemPadding), + Row( + children: [ + Icon( + Icons.school_outlined, + color: Theme.of(context).colorScheme.secondary, + ), + const SizedBox(width: itemPadding), + Expanded( + child: widget.controller.isEditing + ? LanguageLevelDropdown( + initialLevel: + widget.controller.languageLevel, + onChanged: + widget.controller.setLanguageLevel, + ) + : Text( + widget.controller.updatedActivity.req + .cefrLevel + .title(context), + style: + Theme.of(context).textTheme.bodyMedium, + ), + ), + ], + ), + const SizedBox(height: itemPadding), if (widget.controller.vocab.isNotEmpty) ...[ Row( children: [ diff --git a/lib/pangea/activity_planner/activity_plan_request.dart b/lib/pangea/activity_planner/activity_plan_request.dart index 76063d629..3fabd9eb7 100644 --- a/lib/pangea/activity_planner/activity_plan_request.dart +++ b/lib/pangea/activity_planner/activity_plan_request.dart @@ -7,7 +7,7 @@ class ActivityPlanRequest { final String mode; final String objective; final MediaEnum media; - final LanguageLevelTypeEnum cefrLevel; + LanguageLevelTypeEnum cefrLevel; final String languageOfInstructions; final String targetLanguage; final int count; diff --git a/lib/pangea/activity_planner/activity_planner_builder.dart b/lib/pangea/activity_planner/activity_planner_builder.dart index 48948cff0..42e84bce2 100644 --- a/lib/pangea/activity_planner/activity_planner_builder.dart +++ b/lib/pangea/activity_planner/activity_planner_builder.dart @@ -9,6 +9,7 @@ import 'package:matrix/matrix.dart'; import 'package:fluffychat/pangea/activity_planner/activity_plan_model.dart'; import 'package:fluffychat/pangea/common/utils/error_handler.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension.dart'; +import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart'; import 'package:fluffychat/utils/client_download_content_extension.dart'; import 'package:fluffychat/utils/file_selector.dart'; import 'package:fluffychat/widgets/matrix.dart'; @@ -52,6 +53,7 @@ class ActivityPlannerBuilderState extends State { TextEditingController(); final List vocab = []; + late LanguageLevelTypeEnum languageLevel; final GlobalKey formKey = GlobalKey(); @@ -79,6 +81,7 @@ class ActivityPlannerBuilderState extends State { final updatedReq = widget.initialActivity.req; updatedReq.numberOfParticipants = participants; + updatedReq.cefrLevel = languageLevel; return ActivityPlanModel( req: updatedReq, @@ -105,6 +108,8 @@ class ActivityPlannerBuilderState extends State { vocab.clear(); vocab.addAll(widget.initialActivity.vocab); + languageLevel = widget.initialActivity.req.cefrLevel; + imageURL = widget.initialActivity.imageURL; filename = widget.initialFilename; await _setAvatarByURL(); @@ -133,6 +138,11 @@ class ActivityPlannerBuilderState extends State { if (mounted) setState(() {}); } + void setLanguageLevel(LanguageLevelTypeEnum level) { + languageLevel = level; + if (mounted) setState(() {}); + } + void selectAvatar() async { final photo = await selectFiles( context, diff --git a/lib/pangea/activity_suggestions/activity_suggestion_dialog.dart b/lib/pangea/activity_suggestions/activity_suggestion_dialog.dart index 825836ab8..287bffb83 100644 --- a/lib/pangea/activity_suggestions/activity_suggestion_dialog.dart +++ b/lib/pangea/activity_suggestions/activity_suggestion_dialog.dart @@ -10,7 +10,9 @@ import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pangea/activity_planner/activity_planner_builder.dart'; import 'package:fluffychat/pangea/activity_suggestions/activity_room_selection.dart'; import 'package:fluffychat/pangea/activity_suggestions/activity_suggestion_card_row.dart'; +import 'package:fluffychat/pangea/chat_settings/widgets/language_level_dropdown.dart'; import 'package:fluffychat/pangea/common/widgets/full_width_dialog.dart'; +import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; import 'package:fluffychat/widgets/mxc_image.dart'; @@ -294,6 +296,26 @@ class ActivitySuggestionDialogState extends State { style: theme.textTheme.bodyLarge, ), ), + if (widget.controller.isEditing) + ActivitySuggestionCardRow( + icon: Icons.school_outlined, + child: LanguageLevelDropdown( + initialLevel: + widget.controller.languageLevel, + onChanged: widget + .controller.setLanguageLevel, + ), + ) + else + ActivitySuggestionCardRow( + icon: Icons.school_outlined, + child: Text( + widget.controller.updatedActivity.req + .cefrLevel + .title(context), + style: theme.textTheme.bodyLarge, + ), + ), if (widget.controller.isEditing) ActivitySuggestionCardRow( icon: Symbols.dictionary,