diff --git a/refilc_mobile_ui/lib/common/widgets/absence/absence_display.dart b/refilc_mobile_ui/lib/common/widgets/absence/absence_display.dart index 0c0b5c1..efaa6f1 100644 --- a/refilc_mobile_ui/lib/common/widgets/absence/absence_display.dart +++ b/refilc_mobile_ui/lib/common/widgets/absence/absence_display.dart @@ -32,7 +32,7 @@ class AbsenceDisplay extends StatelessWidget { if (excused > 0 && pending > 0) const SizedBox(width: 6.0), if (pending > 0) Icon( - FeatherIcons.slash, + Icons.hourglass_bottom, size: 14.0, color: AppColors.of(context).orange, ), diff --git a/refilc_mobile_ui/lib/common/widgets/absence/absence_subject_tile.dart b/refilc_mobile_ui/lib/common/widgets/absence/absence_subject_tile.dart index 29d9684..fbe4f63 100644 --- a/refilc_mobile_ui/lib/common/widgets/absence/absence_subject_tile.dart +++ b/refilc_mobile_ui/lib/common/widgets/absence/absence_subject_tile.dart @@ -3,18 +3,21 @@ import 'package:refilc/models/settings.dart'; import 'package:refilc/theme/colors/colors.dart'; import 'package:refilc/utils/format.dart'; import 'package:refilc_kreta_api/models/subject.dart'; +import 'package:refilc_mobile_ui/common/round_border_icon.dart'; import 'package:refilc_mobile_ui/common/widgets/absence/absence_display.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class AbsenceSubjectTile extends StatelessWidget { - const AbsenceSubjectTile(this.subject, - {super.key, - this.percentage = 0.0, - this.excused = 0, - this.unexcused = 0, - this.pending = 0, - this.onTap}); + const AbsenceSubjectTile( + this.subject, { + super.key, + this.percentage = 0.0, + this.excused = 0, + this.unexcused = 0, + this.pending = 0, + this.onTap, + }); final GradeSubject subject; final void Function()? onTap; @@ -28,54 +31,65 @@ class AbsenceSubjectTile extends StatelessWidget { Widget build(BuildContext context) { SettingsProvider settingsProvider = Provider.of(context); return Material( - type: MaterialType.transparency, - child: ListTile( - // minLeadingWidth: 32.0, - dense: true, - contentPadding: const EdgeInsets.only(left: 8.0, right: 6.0), - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.0)), - visualDensity: VisualDensity.compact, - onTap: onTap, - leading: Icon( - SubjectIcon.resolveVariant(subject: subject, context: context), - size: 32.0), - title: Text( - subject.renamedTo ?? subject.name.capital(), - maxLines: 2, - overflow: TextOverflow.ellipsis, - style: TextStyle( - fontWeight: FontWeight.w600, - fontSize: 15.0, - fontStyle: - subject.isRenamed && settingsProvider.renamedSubjectsItalics - ? FontStyle.italic - : null), - ), - subtitle: AbsenceDisplay(excused, unexcused, pending), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - const SizedBox(width: 8.0), - if (percentage >= 0) - Stack( - alignment: Alignment.centerRight, - children: [ - const Opacity( - opacity: 0, - child: Text("100%", - style: TextStyle(fontFamily: "monospace"))), - Text( - "${percentage.round()}%", - style: TextStyle( - // fontFamily: "monospace", - color: getColorByPercentage(percentage, context: context), - fontWeight: FontWeight.w700, - fontSize: 24.0, + type: MaterialType.card, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16.0)), + child: Padding( + padding: const EdgeInsets.all(4.0), + child: ListTile( + // minLeadingWidth: 32.0, + dense: true, + contentPadding: const EdgeInsets.only(left: 12.0, right: 12.0), + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)), + visualDensity: VisualDensity.compact, + onTap: onTap, + leading: RoundBorderIcon( + padding: 8.0, + icon: Icon( + SubjectIcon.resolveVariant(subject: subject, context: context), + size: 20.0, + ), + ), + title: Text( + subject.renamedTo ?? subject.name.capital(), + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.w600, + fontSize: 15.0, + fontStyle: + subject.isRenamed && settingsProvider.renamedSubjectsItalics + ? FontStyle.italic + : null), + ), + subtitle: AbsenceDisplay(excused, unexcused, pending), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(width: 8.0), + if (percentage >= 0) + Stack( + alignment: Alignment.centerRight, + children: [ + const Opacity( + opacity: 0, + child: Text("100%", + style: TextStyle(fontFamily: "monospace"))), + Text( + "${percentage.round()}%", + style: TextStyle( + // fontFamily: "monospace", + color: + getColorByPercentage(percentage, context: context) + .withOpacity(0.8), + fontSize: 16.0, + fontWeight: FontWeight.w500, + ), ), - ), - ], - ), - ], + ], + ), + ], + ), ), ), ); diff --git a/refilc_mobile_ui/lib/common/widgets/absence/absence_tile.dart b/refilc_mobile_ui/lib/common/widgets/absence/absence_tile.dart index 3f866a0..0bab917 100644 --- a/refilc_mobile_ui/lib/common/widgets/absence/absence_tile.dart +++ b/refilc_mobile_ui/lib/common/widgets/absence/absence_tile.dart @@ -143,7 +143,7 @@ class AbsenceTile extends StatelessWidget { case Justification.excused: return FeatherIcons.check; case Justification.pending: - return FeatherIcons.slash; + return Icons.hourglass_bottom; case Justification.unexcused: return FeatherIcons.x; } diff --git a/refilc_mobile_ui/lib/pages/absences/absences_page.dart b/refilc_mobile_ui/lib/pages/absences/absences_page.dart index f87495c..0251f45 100644 --- a/refilc_mobile_ui/lib/pages/absences/absences_page.dart +++ b/refilc_mobile_ui/lib/pages/absences/absences_page.dart @@ -276,6 +276,9 @@ class AbsencesPageState extends State Padding( padding: const EdgeInsets.only(bottom: 24.0), child: Panel( + padding: EdgeInsets.zero, + isTransparent: true, + hasShadow: false, title: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -318,11 +321,14 @@ class AbsencesPageState extends State return FadeThroughTransition( animation: primaryAnimation, secondaryAnimation: secondaryAnimation, - fillColor: Theme.of(context).colorScheme.background, + fillColor: Colors.transparent, child: child, ); }, - child: Column( + child: SplittedPanel( + padding: EdgeInsets.zero, + isSeparated: true, + isTransparent: true, children: absWidgets, ), ),