v5 settings almost finished (first half)

This commit is contained in:
Kima 2024-02-06 21:40:48 +01:00
parent bf81680b56
commit 1d92a5336e
8 changed files with 103 additions and 13 deletions

View File

@ -7,6 +7,7 @@ import 'package:filcnaplo_mobile_ui/common/panel/panel.dart';
import 'package:filcnaplo_mobile_ui/common/widgets/absence/absence_viewable.dart'; import 'package:filcnaplo_mobile_ui/common/widgets/absence/absence_viewable.dart';
import 'package:filcnaplo_mobile_ui/common/widgets/absence_group/absence_group_tile.dart'; import 'package:filcnaplo_mobile_ui/common/widgets/absence_group/absence_group_tile.dart';
import 'package:filcnaplo_mobile_ui/common/widgets/cretification/certification_card.dart'; import 'package:filcnaplo_mobile_ui/common/widgets/cretification/certification_card.dart';
import 'package:filcnaplo_mobile_ui/common/widgets/grade/new_grades.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:animated_list_plus/animated_list_plus.dart'; import 'package:animated_list_plus/animated_list_plus.dart';
import 'package:filcnaplo_mobile_ui/common/widgets/lesson/changed_lesson_tile.dart'; import 'package:filcnaplo_mobile_ui/common/widgets/lesson/changed_lesson_tile.dart';
@ -150,9 +151,11 @@ List<Widget> sortDateWidgets(
index, index,
len: elements.length, len: elements.length,
isAfterSeparated: index > 0 && isAfterSeparated: index > 0 &&
(elements[index - 1].widget is CertificationCard), (elements[index - 1].widget is CertificationCard ||
elements[index - 1].widget is NewGradesSurprise),
isBeforeSeparated: (index < elements.length - 1) && isBeforeSeparated: (index < elements.length - 1) &&
(elements[index + 1].widget is CertificationCard), (elements[index + 1].widget is CertificationCard ||
elements[index + 1].widget is NewGradesSurprise),
), ),
items: elements, items: elements,
), ),

View File

@ -26,6 +26,7 @@ import 'package:filcnaplo_kreta_api/providers/message_provider.dart';
import 'package:filcnaplo_kreta_api/providers/note_provider.dart'; import 'package:filcnaplo_kreta_api/providers/note_provider.dart';
import 'package:filcnaplo_kreta_api/providers/timetable_provider.dart'; import 'package:filcnaplo_kreta_api/providers/timetable_provider.dart';
import 'package:filcnaplo_mobile_ui/common/widgets/cretification/certification_card.dart'; import 'package:filcnaplo_mobile_ui/common/widgets/cretification/certification_card.dart';
import 'package:filcnaplo_mobile_ui/common/widgets/grade/new_grades.dart';
import 'package:filcnaplo_mobile_ui/common/widgets/note/note_viewable.dart'; import 'package:filcnaplo_mobile_ui/common/widgets/note/note_viewable.dart';
import 'package:refilc_plus/providers/premium_provider.dart'; import 'package:refilc_plus/providers/premium_provider.dart';
import 'package:refilc_plus/ui/mobile/premium/premium_inline.dart'; import 'package:refilc_plus/ui/mobile/premium/premium_inline.dart';
@ -213,7 +214,7 @@ Widget filterItemBuilder(
child: item, child: item,
); );
bool separated = item is CertificationCard; bool separated = item is CertificationCard || item is NewGradesSurprise;
return item is Panel return item is Panel
// Re-add & animate shadow // Re-add & animate shadow

View File

@ -22,7 +22,7 @@ class NewGradesSurprise extends StatelessWidget {
return Material( return Material(
type: MaterialType.transparency, type: MaterialType.transparency,
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 4.0), padding: const EdgeInsets.only(left: 4.0, right: 4.0, top: 1.0),
child: ListTile( child: ListTile(
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
side: BorderSide( side: BorderSide(

View File

@ -92,6 +92,10 @@ extension SettingsLocalization on String {
"paint_id": "Paint ID...", "paint_id": "Paint ID...",
"set_as_current": "Set as current", "set_as_current": "Set as current",
"share_subj_theme": "Share Theme", "share_subj_theme": "Share Theme",
"no_name": "Untitled Paint",
"current_paint": "Current Paint",
"rename_subjects": "Rename Subjects",
"rename_teachers": "Rename Teachers",
}, },
"hu_hu": { "hu_hu": {
"personal_details": "Személyes információk", "personal_details": "Személyes információk",
@ -182,6 +186,10 @@ extension SettingsLocalization on String {
"paint_id": "Téma azonosító...", "paint_id": "Téma azonosító...",
"set_as_current": "Beállítás jelenleginek", "set_as_current": "Beállítás jelenleginek",
"share_subj_theme": "Téma Megosztás", "share_subj_theme": "Téma Megosztás",
"no_name": "Névtelen téma",
"current_paint": "Jelenlegi téma",
"rename_subjects": "Tantárgyak átnevezése",
"rename_teachers": "Tanárok átnevezése",
}, },
"de_de": { "de_de": {
"personal_details": "Persönliche Angaben", "personal_details": "Persönliche Angaben",
@ -272,6 +280,10 @@ extension SettingsLocalization on String {
"paint_id": "Themen-ID...", "paint_id": "Themen-ID...",
"set_as_current": "Als aktuell einstellen", "set_as_current": "Als aktuell einstellen",
"share_subj_theme": "Thema Teilen", "share_subj_theme": "Thema Teilen",
"no_name": "Anonymes Thema",
"current_paint": "Aktuelles Thema",
"rename_subjects": "Fächer umbenennen",
"rename_teachers": "Lehrer umbenennen",
}, },
}; };

View File

@ -1,9 +1,14 @@
// import 'package:filcnaplo/models/settings.dart'; // import 'package:filcnaplo/models/settings.dart';
import 'package:filcnaplo/api/providers/user_provider.dart';
import 'package:filcnaplo/models/settings.dart';
import 'package:filcnaplo/theme/colors/colors.dart'; import 'package:filcnaplo/theme/colors/colors.dart';
import 'package:filcnaplo_mobile_ui/common/panel/panel_button.dart'; import 'package:filcnaplo_mobile_ui/common/panel/panel_button.dart';
import 'package:filcnaplo_mobile_ui/common/splitted_panel/splitted_panel.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_feather_icons/flutter_feather_icons.dart'; import 'package:flutter_feather_icons/flutter_feather_icons.dart';
import 'package:provider/provider.dart';
import 'package:refilc_plus/ui/mobile/settings/welcome_message.dart';
// import 'package:provider/provider.dart'; // import 'package:provider/provider.dart';
import 'submenu_screen.i18n.dart'; import 'submenu_screen.i18n.dart';
@ -38,12 +43,21 @@ class MenuExtrasSettings extends StatelessWidget {
} }
} }
class ExtrasSettingsScreen extends StatelessWidget { class ExtrasSettingsScreen extends StatefulWidget {
const ExtrasSettingsScreen({super.key}); const ExtrasSettingsScreen({super.key});
@override
ExtrasSettingsScreenState createState() => ExtrasSettingsScreenState();
}
class ExtrasSettingsScreenState extends State<ExtrasSettingsScreen> {
late SettingsProvider settingsProvider;
late UserProvider user;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
// SettingsProvider settings = Provider.of<SettingsProvider>(context); SettingsProvider settingsProvider = Provider.of<SettingsProvider>(context);
UserProvider user = Provider.of<UserProvider>(context);
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
@ -58,7 +72,58 @@ class ExtrasSettingsScreen extends StatelessWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 24.0), padding: const EdgeInsets.symmetric(vertical: 16.0, horizontal: 24.0),
child: Column( child: Column(
children: [], children: [
SplittedPanel(
padding: const EdgeInsets.only(top: 8.0),
cardPadding: const EdgeInsets.all(4.0),
isSeparated: true,
children: [
PanelButton(
padding: const EdgeInsets.only(left: 14.0, right: 6.0),
onPressed: () async {
settingsProvider.update(
gradeOpeningFun: !settingsProvider.gradeOpeningFun);
setState(() {});
},
title: Text(
"surprise_grades".i18n,
style: TextStyle(
color: AppColors.of(context).text.withOpacity(
settingsProvider.gradeOpeningFun ? .95 : .25),
),
),
leading: Icon(
FeatherIcons.gift,
size: 22.0,
color: AppColors.of(context).text.withOpacity(
settingsProvider.gradeOpeningFun ? .95 : .25),
),
trailing: Switch(
onChanged: (v) async {
settingsProvider.update(gradeOpeningFun: v);
setState(() {});
},
value: settingsProvider.gradeOpeningFun,
activeColor: Theme.of(context).colorScheme.secondary,
),
borderRadius: const BorderRadius.vertical(
top: Radius.circular(12.0),
bottom: Radius.circular(12.0),
),
),
],
),
SplittedPanel(
padding: const EdgeInsets.only(top: 9.0),
cardPadding: const EdgeInsets.all(4.0),
isSeparated: true,
children: [
WelcomeMessagePanelButton(settingsProvider, user),
],
),
],
), ),
), ),
), ),

View File

@ -264,10 +264,9 @@ class PaintListScreenState extends State<PaintListScreen>
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
settingsProvider.currentThemeDisplayName != settingsProvider.currentThemeDisplayName != ''
'displayName'
? settingsProvider.currentThemeDisplayName ? settingsProvider.currentThemeDisplayName
: 'Névtelen téma', : 'no_name'.i18n,
style: TextStyle( style: TextStyle(
color: color:
AppColors.of(context).text.withOpacity(.95), AppColors.of(context).text.withOpacity(.95),

View File

@ -7,16 +7,19 @@ extension SettingsLocalization on String {
"general": "General", "general": "General",
"personalization": "Personalization", "personalization": "Personalization",
"extras": "Extras", "extras": "Extras",
"surprise_grades": "Surprise Grades",
}, },
"hu_hu": { "hu_hu": {
"general": "Általános", "general": "Általános",
"personalization": "Személyre szabás", "personalization": "Személyre szabás",
"extras": "Extrák", "extras": "Extrák",
"surprise_grades": "Meglepetés jegyek",
}, },
"de_de": { "de_de": {
"general": "Allgemeine", "general": "Allgemeine",
"personalization": "Personalisierung", "personalization": "Personalisierung",
"extras": "Extras", "extras": "Extras",
"surprise_grades": "Überraschende Noten",
}, },
}; };

View File

@ -254,7 +254,7 @@ class _PremiumCustomAccentColorSettingState
colors: isBackgroundDifferent colors: isBackgroundDifferent
? [ ? [
Theme.of(context).colorScheme.background.withOpacity(1 - Theme.of(context).colorScheme.background.withOpacity(1 -
((currentTheme == ThemeMode.dark ? 0.65 : 0.45) * ((currentTheme == ThemeMode.dark ? 0.65 : 0.25) *
backgroundAnimation.value)), backgroundAnimation.value)),
backgroundGradientBottomColor, backgroundGradientBottomColor,
] ]
@ -396,8 +396,12 @@ class _PremiumCustomAccentColorSettingState
child: Column( child: Column(
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.only(
horizontal: 32.0, vertical: 6.0), left: 32.0,
right: 32.0,
top: 16.0,
bottom: 6.0,
),
child: FilterBar( child: FilterBar(
items: const [ items: const [
Tab(text: "All"), Tab(text: "All"),
@ -632,6 +636,9 @@ class _PremiumCustomAccentColorSettingState
}, },
), ),
censored: true, censored: true,
padding: const EdgeInsets.only(
right: 6.0,
),
), ),
), ),
), ),