diff --git a/lib/screens/feed_screen.dart b/lib/screens/feed_screen.dart index 9744a87..d21f7cd 100644 --- a/lib/screens/feed_screen.dart +++ b/lib/screens/feed_screen.dart @@ -7,6 +7,7 @@ import 'package:grades/providers/current_session.dart'; import 'package:grades/providers/data_persistence.dart'; import 'package:grades/sis-cache/sis_loader.dart'; import 'package:grades/utilities/helpers/error.dart'; +import 'package:grades/utilities/strings.dart'; import 'package:grades/widgets/grade_item_card.dart'; import 'package:grades/widgets/refreshable/refreshable_icon_message.dart'; import 'package:pedantic/pedantic.dart'; @@ -169,7 +170,7 @@ class _FeedScreenState extends State Padding( padding: const EdgeInsets.only(left: 11.0), child: Text( - courseName, + smartCourseTitleCase(courseName), style: const TextStyle( color: Colors.white, fontSize: 17, diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index 21d72b3..92f3182 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -12,7 +12,7 @@ class HomeScreen extends StatefulWidget { class _HomeScreenState extends State { // Initial page state - String title = 'COURSES'; + String title = 'Courses'; int previous = -1; List pages = [ FeedScreen(), @@ -87,11 +87,11 @@ class _HomeScreenState extends State { onPageChanged: (page) { setState(() { if (page == 0) { - title = 'RECENT'; + title = 'Recent'; } else if (page == 2) { - title = 'UPCOMING'; + title = 'Upcoming'; } else { - title = 'COURSES'; + title = 'Courses'; } }); }, diff --git a/lib/utilities/strings.dart b/lib/utilities/strings.dart new file mode 100644 index 0000000..5666f0f --- /dev/null +++ b/lib/utilities/strings.dart @@ -0,0 +1,7 @@ +String smartCourseTitleCase(String courseName) { + print(courseName); + return courseName.replaceAllMapped( + RegExp(r'\b(?!\b(?:ADV|AICE|MYP|PYP|[A-z]{1,2})\b)([A-z])([A-z]*?)\b'), + (match) => match.group(1).toUpperCase() + match.group(2).toLowerCase(), + ); +} diff --git a/lib/widgets/class_list_item.dart b/lib/widgets/class_list_item.dart index c405f44..76962cb 100644 --- a/lib/widgets/class_list_item.dart +++ b/lib/widgets/class_list_item.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:grades/utilities/strings.dart'; import 'package:grades/widgets/indicator_dots/colored_grade_dot.dart'; class ClassListItem extends StatelessWidget { @@ -90,7 +91,7 @@ class ClassListItem extends StatelessWidget { child: Row(children: [ Expanded( child: _buildColumn( - course, + smartCourseTitleCase(course), teacher.replaceAll(' ', ' '), CrossAxisAlignment.start, Theme.of(context).primaryColorLight, diff --git a/lib/widgets/upcoming_grade_item.dart b/lib/widgets/upcoming_grade_item.dart index abf2312..887e7b5 100644 --- a/lib/widgets/upcoming_grade_item.dart +++ b/lib/widgets/upcoming_grade_item.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:grades/utilities/helpers/date.dart'; +import 'package:grades/utilities/strings.dart'; import 'package:sis_loader/sis_loader.dart'; class UpcomingGradeItem extends StatelessWidget { @@ -76,28 +77,15 @@ Column getColumn(Color textColor, Grade grade, String courseName) { ), ], ), - Text(courseName), + Text(smartCourseTitleCase(courseName)), ], ); } else { return Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ - Text(courseName), + Text(smartCourseTitleCase(courseName)), ], ); } } - -// TODO: Finish titleCase for courseName -// String titleCase(String text) { -// if (text == null) throw ArgumentError("string: $text"); - -// if (text.isEmpty) return text; - -// return text -// .toLowerCase() -// .split(' ') -// .map((word) => word[0].toUpperCase() + word.substring(1)) -// .join(' '); -// }