forked from firka/student-legacy
moved non-premium features from premium folder
This commit is contained in:
parent
774f63aa89
commit
316039463f
2
.gitignore
vendored
2
.gitignore
vendored
@ -35,3 +35,5 @@ filcnaplo_premium/android/
|
|||||||
.github
|
.github
|
||||||
.idea
|
.idea
|
||||||
.gitmodules
|
.gitmodules
|
||||||
|
|
||||||
|
filcnaplo/.DS_Store
|
||||||
|
@ -14,7 +14,7 @@ import 'package:filcnaplo/theme/theme.dart';
|
|||||||
import 'package:filcnaplo_kreta_api/client/client.dart';
|
import 'package:filcnaplo_kreta_api/client/client.dart';
|
||||||
import 'package:filcnaplo_kreta_api/providers/grade_provider.dart';
|
import 'package:filcnaplo_kreta_api/providers/grade_provider.dart';
|
||||||
import 'package:filcnaplo_premium/providers/goal_provider.dart';
|
import 'package:filcnaplo_premium/providers/goal_provider.dart';
|
||||||
import 'package:filcnaplo_premium/providers/share_provider.dart';
|
import 'package:filcnaplo_kreta_api/providers/share_provider.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
@ -11,12 +11,12 @@ library hsv_picker;
|
|||||||
|
|
||||||
import 'package:filcnaplo/models/shared_theme.dart';
|
import 'package:filcnaplo/models/shared_theme.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/common/custom_snack_bar.dart';
|
import 'package:filcnaplo_mobile_ui/common/custom_snack_bar.dart';
|
||||||
import 'package:filcnaplo_premium/providers/share_provider.dart';
|
import 'package:filcnaplo_kreta_api/providers/share_provider.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/flutter_colorpicker/block_picker.dart';
|
import 'package:filcnaplo/ui/flutter_colorpicker/block_picker.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/flutter_colorpicker/palette.dart';
|
import 'package:filcnaplo/ui/flutter_colorpicker/palette.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/flutter_colorpicker/utils.dart';
|
import 'package:filcnaplo/ui/flutter_colorpicker/utils.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/settings/theme.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/theme_screen.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/settings/theme.i18n.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/theme_screen.i18n.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:filcnaplo/theme/colors/colors.dart';
|
import 'package:filcnaplo/theme/colors/colors.dart';
|
@ -21,7 +21,7 @@ import 'package:filcnaplo_desktop_ui/pages/grades/grade_subject_view.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:filcnaplo/helpers/average_helper.dart';
|
import 'package:filcnaplo/helpers/average_helper.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/grades/average_selector.dart';
|
import 'package:filcnaplo_mobile_ui/pages/grades/average_selector.dart';
|
||||||
import 'grades_page.i18n.dart';
|
import 'grades_page.i18n.dart';
|
||||||
|
|
||||||
class GradesPage extends StatefulWidget {
|
class GradesPage extends StatefulWidget {
|
||||||
@ -41,14 +41,15 @@ class _GradesPageState extends State<GradesPage> {
|
|||||||
|
|
||||||
int avgDropValue = 0;
|
int avgDropValue = 0;
|
||||||
|
|
||||||
List<Grade> getSubjectGrades(GradeSubject subject, {int days = 0}) => gradeProvider
|
List<Grade> getSubjectGrades(GradeSubject subject, {int days = 0}) =>
|
||||||
.grades
|
gradeProvider.grades
|
||||||
.where((e) =>
|
.where((e) =>
|
||||||
e.subject == subject &&
|
e.subject == subject &&
|
||||||
e.type == GradeType.midYear &&
|
e.type == GradeType.midYear &&
|
||||||
(days == 0 ||
|
(days == 0 ||
|
||||||
e.date.isBefore(DateTime.now().subtract(Duration(days: days)))))
|
e.date
|
||||||
.toList();
|
.isBefore(DateTime.now().subtract(Duration(days: days)))))
|
||||||
|
.toList();
|
||||||
|
|
||||||
void generateTiles() {
|
void generateTiles() {
|
||||||
List<GradeSubject> subjects = gradeProvider.grades
|
List<GradeSubject> subjects = gradeProvider.grades
|
||||||
@ -144,8 +145,9 @@ class _GradesPageState extends State<GradesPage> {
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: StatisticsTile(
|
child: StatisticsTile(
|
||||||
outline: true,
|
outline: true,
|
||||||
title: AutoSizeText( // https://discord.com/channels/1111649116020285532/1153397476578050130
|
title: AutoSizeText(
|
||||||
"classavg".i18n,
|
// https://discord.com/channels/1111649116020285532/1153397476578050130
|
||||||
|
"classavg".i18n,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
maxLines: 2,
|
maxLines: 2,
|
||||||
wrapWords: false,
|
wrapWords: false,
|
||||||
@ -208,7 +210,7 @@ class _GradesPageState extends State<GradesPage> {
|
|||||||
title: Row(
|
title: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
PremiumAverageSelector(
|
AverageSelector(
|
||||||
value: avgDropValue,
|
value: avgDropValue,
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
setState(() {
|
setState(() {
|
||||||
|
@ -38,8 +38,7 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import 'settings_screen.i18n.dart';
|
import 'settings_screen.i18n.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/settings/nickname.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/user/nickname.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/settings/icon_pack.dart';
|
|
||||||
|
|
||||||
class SettingsScreen extends StatefulWidget {
|
class SettingsScreen extends StatefulWidget {
|
||||||
const SettingsScreen({Key? key}) : super(key: key);
|
const SettingsScreen({Key? key}) : super(key: key);
|
||||||
@ -586,7 +585,8 @@ class _SettingsScreenState extends State<SettingsScreen>
|
|||||||
.secondary,
|
.secondary,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const PremiumIconPackSelector(),
|
// we need icon pack selector here
|
||||||
|
// const PremiumIconPackSelector(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -16,17 +16,17 @@ final Map<int, String> avgDropItems = {
|
|||||||
7: "7_days_average",
|
7: "7_days_average",
|
||||||
};
|
};
|
||||||
|
|
||||||
class PremiumAverageSelector extends StatefulWidget {
|
class AverageSelector extends StatefulWidget {
|
||||||
const PremiumAverageSelector({Key? key, this.onChanged, required this.value}) : super(key: key);
|
const AverageSelector({Key? key, this.onChanged, required this.value}) : super(key: key);
|
||||||
|
|
||||||
final Function(int?)? onChanged;
|
final Function(int?)? onChanged;
|
||||||
final int value;
|
final int value;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_PremiumAverageSelectorState createState() => _PremiumAverageSelectorState();
|
_AverageSelectorState createState() => _AverageSelectorState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _PremiumAverageSelectorState extends State<PremiumAverageSelector> {
|
class _AverageSelectorState extends State<AverageSelector> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
List<DropdownMenuItem<int>> dropdownItems = avgDropItems.keys.map((item) {
|
List<DropdownMenuItem<int>> dropdownItems = avgDropItems.keys.map((item) {
|
@ -26,7 +26,7 @@ import 'package:filcnaplo_premium/providers/premium_provider.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:filcnaplo/helpers/average_helper.dart';
|
import 'package:filcnaplo/helpers/average_helper.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/grades/average_selector.dart';
|
import 'average_selector.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/premium/premium_inline.dart';
|
import 'package:filcnaplo_premium/ui/mobile/premium/premium_inline.dart';
|
||||||
import 'grades_page.i18n.dart';
|
import 'grades_page.i18n.dart';
|
||||||
|
|
||||||
@ -240,7 +240,7 @@ class _GradesPageState extends State<GradesPage> {
|
|||||||
title: Row(
|
title: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
PremiumAverageSelector(
|
AverageSelector(
|
||||||
value: avgDropValue,
|
value: avgDropValue,
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
setState(() {
|
setState(() {
|
||||||
|
@ -12,17 +12,17 @@ import 'package:intl/intl.dart';
|
|||||||
import 'package:i18n_extension/i18n_widget.dart';
|
import 'package:i18n_extension/i18n_widget.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class PremiumFSTimetable extends StatefulWidget {
|
class FSTimetable extends StatefulWidget {
|
||||||
const PremiumFSTimetable({Key? key, required this.controller})
|
const FSTimetable({Key? key, required this.controller})
|
||||||
: super(key: key);
|
: super(key: key);
|
||||||
|
|
||||||
final TimetableController controller;
|
final TimetableController controller;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<PremiumFSTimetable> createState() => _PremiumFSTimetableState();
|
State<FSTimetable> createState() => _FSTimetableState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _PremiumFSTimetableState extends State<PremiumFSTimetable> {
|
class _FSTimetableState extends State<FSTimetable> {
|
||||||
late SettingsProvider settings;
|
late SettingsProvider settings;
|
||||||
|
|
||||||
@override
|
@override
|
@ -12,19 +12,21 @@ import 'package:filcnaplo_mobile_ui/common/empty.dart';
|
|||||||
import 'package:filcnaplo_mobile_ui/common/panel/panel.dart';
|
import 'package:filcnaplo_mobile_ui/common/panel/panel.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/common/profile_image/profile_button.dart';
|
import 'package:filcnaplo_mobile_ui/common/profile_image/profile_button.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/common/profile_image/profile_image.dart';
|
import 'package:filcnaplo_mobile_ui/common/profile_image/profile_image.dart';
|
||||||
|
import 'package:filcnaplo_mobile_ui/common/system_chrome.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/common/widgets/lesson/lesson_view.dart';
|
import 'package:filcnaplo_mobile_ui/common/widgets/lesson/lesson_view.dart';
|
||||||
import 'package:filcnaplo_kreta_api/controllers/timetable_controller.dart';
|
import 'package:filcnaplo_kreta_api/controllers/timetable_controller.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/common/widgets/lesson/lesson_viewable.dart';
|
import 'package:filcnaplo_mobile_ui/common/widgets/lesson/lesson_viewable.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/pages/timetable/day_title.dart';
|
import 'package:filcnaplo_mobile_ui/pages/timetable/day_title.dart';
|
||||||
|
import 'package:filcnaplo_mobile_ui/pages/timetable/fs_timetable.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/screens/navigation/navigation_route_handler.dart';
|
import 'package:filcnaplo_mobile_ui/screens/navigation/navigation_route_handler.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/screens/navigation/navigation_screen.dart';
|
import 'package:filcnaplo_mobile_ui/screens/navigation/navigation_screen.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.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:provider/provider.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:i18n_extension/i18n_widget.dart';
|
import 'package:i18n_extension/i18n_widget.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/timetable/fs_timetable_button.dart';
|
|
||||||
import 'timetable_page.i18n.dart';
|
import 'timetable_page.i18n.dart';
|
||||||
|
|
||||||
// todo: "fix" overflow (priority: -1)
|
// todo: "fix" overflow (priority: -1)
|
||||||
@ -199,7 +201,38 @@ class _TimetablePageState extends State<TimetablePage>
|
|||||||
snap: false,
|
snap: false,
|
||||||
surfaceTintColor: Theme.of(context).scaffoldBackgroundColor,
|
surfaceTintColor: Theme.of(context).scaffoldBackgroundColor,
|
||||||
actions: [
|
actions: [
|
||||||
PremiumFSTimetableButton(controller: _controller, tabcontroller: _tabController),
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: IconButton(
|
||||||
|
splashRadius: 24.0,
|
||||||
|
onPressed: () {
|
||||||
|
// If timetable empty, show empty
|
||||||
|
if (_tabController.length == 0) {
|
||||||
|
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
|
||||||
|
content: Text("empty_timetable".i18n),
|
||||||
|
duration: const Duration(seconds: 2),
|
||||||
|
));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Navigator.of(context, rootNavigator: true)
|
||||||
|
.push(PageRouteBuilder(
|
||||||
|
pageBuilder:
|
||||||
|
(context, animation, secondaryAnimation) =>
|
||||||
|
FSTimetable(
|
||||||
|
controller: _controller,
|
||||||
|
),
|
||||||
|
))
|
||||||
|
.then((_) {
|
||||||
|
SystemChrome.setPreferredOrientations(
|
||||||
|
[DeviceOrientation.portraitUp]);
|
||||||
|
setSystemChrome(context);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
icon: Icon(FeatherIcons.trello,
|
||||||
|
color: AppColors.of(context).text),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
// Profile Icon
|
// Profile Icon
|
||||||
Padding(
|
Padding(
|
||||||
|
@ -27,7 +27,7 @@ import 'package:filcnaplo_mobile_ui/screens/settings/settings_screen.i18n.dart';
|
|||||||
import 'package:flutter_material_color_picker/flutter_material_color_picker.dart';
|
import 'package:flutter_material_color_picker/flutter_material_color_picker.dart';
|
||||||
import 'package:filcnaplo/models/icon_pack.dart';
|
import 'package:filcnaplo/models/icon_pack.dart';
|
||||||
import 'package:filcnaplo/utils/format.dart';
|
import 'package:filcnaplo/utils/format.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/settings/theme.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/theme_screen.dart';
|
||||||
|
|
||||||
class SettingsHelper {
|
class SettingsHelper {
|
||||||
static const Map<String, String> langMap = {
|
static const Map<String, String> langMap = {
|
||||||
|
@ -27,6 +27,7 @@ import 'package:filcnaplo_mobile_ui/screens/news/news_screen.dart';
|
|||||||
import 'package:filcnaplo_mobile_ui/screens/settings/accounts/account_tile.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/accounts/account_tile.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/screens/settings/accounts/account_view.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/accounts/account_view.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/screens/settings/debug/subject_icon_gallery.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/debug/subject_icon_gallery.dart';
|
||||||
|
import 'package:filcnaplo_mobile_ui/screens/settings/modify_subject_names.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/screens/settings/notifications_screen.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/notifications_screen.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/screens/settings/privacy_view.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/privacy_view.dart';
|
||||||
import 'package:filcnaplo_mobile_ui/screens/settings/settings_helper.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/settings_helper.dart';
|
||||||
@ -39,10 +40,8 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import 'settings_screen.i18n.dart';
|
import 'settings_screen.i18n.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/settings/nickname.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/user/nickname.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/settings/profile_pic.dart';
|
import 'package:filcnaplo_mobile_ui/screens/settings/user/profile_pic.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/settings/icon_pack.dart';
|
|
||||||
import 'package:filcnaplo_premium/ui/mobile/settings/modify_subject_names.dart';
|
|
||||||
import 'package:filcnaplo_premium/ui/mobile/settings/modify_teacher_names.dart';
|
import 'package:filcnaplo_premium/ui/mobile/settings/modify_teacher_names.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/settings/welcome_message.dart';
|
import 'package:filcnaplo_premium/ui/mobile/settings/welcome_message.dart';
|
||||||
|
|
||||||
@ -685,7 +684,17 @@ class _SettingsScreenState extends State<SettingsScreen>
|
|||||||
activeColor: Theme.of(context).colorScheme.secondary,
|
activeColor: Theme.of(context).colorScheme.secondary,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const PremiumIconPackSelector(),
|
PanelButton(
|
||||||
|
onPressed: () {
|
||||||
|
SettingsHelper.iconPack(context);
|
||||||
|
},
|
||||||
|
title: Text("icon_pack".i18n),
|
||||||
|
leading: const Icon(FeatherIcons.grid),
|
||||||
|
trailing: Text(
|
||||||
|
settings.iconPack.name.capital(),
|
||||||
|
style: const TextStyle(fontSize: 14.0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
// if ios show live activity color option
|
// if ios show live activity color option
|
||||||
if (defaultTargetPlatform == TargetPlatform.iOS)
|
if (defaultTargetPlatform == TargetPlatform.iOS)
|
||||||
|
@ -15,14 +15,14 @@ import 'package:filcnaplo_mobile_ui/common/widgets/grade/new_grades.dart';
|
|||||||
import 'package:filcnaplo_mobile_ui/common/widgets/homework/homework_tile.dart';
|
import 'package:filcnaplo_mobile_ui/common/widgets/homework/homework_tile.dart';
|
||||||
import 'package:filcnaplo_premium/models/premium_scopes.dart';
|
import 'package:filcnaplo_premium/models/premium_scopes.dart';
|
||||||
import 'package:filcnaplo_premium/providers/premium_provider.dart';
|
import 'package:filcnaplo_premium/providers/premium_provider.dart';
|
||||||
import 'package:filcnaplo_premium/providers/share_provider.dart';
|
import 'package:filcnaplo_kreta_api/providers/share_provider.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/flutter_colorpicker/colorpicker.dart';
|
import 'package:filcnaplo/ui/flutter_colorpicker/colorpicker.dart';
|
||||||
import 'package:filcnaplo_premium/ui/mobile/premium/upsell.dart';
|
import 'package:filcnaplo_premium/ui/mobile/premium/upsell.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.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:provider/provider.dart';
|
||||||
import 'theme.i18n.dart';
|
import 'theme_screen.i18n.dart';
|
||||||
import 'package:share_plus/share_plus.dart';
|
import 'package:share_plus/share_plus.dart';
|
||||||
|
|
||||||
class PremiumCustomAccentColorSetting extends StatefulWidget {
|
class PremiumCustomAccentColorSetting extends StatefulWidget {
|
@ -1,39 +0,0 @@
|
|||||||
import 'package:filcnaplo/models/settings.dart';
|
|
||||||
import 'package:filcnaplo_mobile_ui/common/panel/panel_button.dart';
|
|
||||||
import 'package:filcnaplo_mobile_ui/screens/settings/settings_helper.dart';
|
|
||||||
import 'package:filcnaplo_premium/models/premium_scopes.dart';
|
|
||||||
import 'package:filcnaplo_premium/providers/premium_provider.dart';
|
|
||||||
import 'package:filcnaplo_premium/ui/mobile/premium/upsell.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:filcnaplo_mobile_ui/screens/settings/settings_screen.i18n.dart';
|
|
||||||
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
|
||||||
import 'package:filcnaplo/utils/format.dart';
|
|
||||||
|
|
||||||
class PremiumIconPackSelector extends StatelessWidget {
|
|
||||||
const PremiumIconPackSelector({Key? key}) : super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
final settings = Provider.of<SettingsProvider>(context);
|
|
||||||
|
|
||||||
return PanelButton(
|
|
||||||
onPressed: () {
|
|
||||||
if (!Provider.of<PremiumProvider>(context, listen: false)
|
|
||||||
.hasScope(PremiumScopes.customIcons)) {
|
|
||||||
PremiumLockedFeatureUpsell.show(
|
|
||||||
context: context, feature: PremiumFeature.iconpack);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SettingsHelper.iconPack(context);
|
|
||||||
},
|
|
||||||
title: Text("icon_pack".i18n),
|
|
||||||
leading: const Icon(FeatherIcons.grid),
|
|
||||||
trailing: Text(
|
|
||||||
settings.iconPack.name.capital(),
|
|
||||||
style: const TextStyle(fontSize: 14.0),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -17,8 +17,7 @@ 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:provider/provider.dart';
|
||||||
|
import 'package:filcnaplo_mobile_ui/screens/settings/modify_names.i18n.dart';
|
||||||
import 'modify_names.i18n.dart';
|
|
||||||
|
|
||||||
class MenuRenamedTeachers extends StatelessWidget {
|
class MenuRenamedTeachers extends StatelessWidget {
|
||||||
const MenuRenamedTeachers({Key? key, required this.settings})
|
const MenuRenamedTeachers({Key? key, required this.settings})
|
||||||
|
@ -1,62 +0,0 @@
|
|||||||
import 'package:filcnaplo/theme/colors/colors.dart';
|
|
||||||
import 'package:filcnaplo_kreta_api/controllers/timetable_controller.dart';
|
|
||||||
import 'package:filcnaplo_mobile_ui/common/system_chrome.dart';
|
|
||||||
import 'package:filcnaplo_premium/models/premium_scopes.dart';
|
|
||||||
import 'package:filcnaplo_premium/providers/premium_provider.dart';
|
|
||||||
import 'package:filcnaplo_premium/ui/mobile/premium/upsell.dart';
|
|
||||||
import 'package:filcnaplo_premium/ui/mobile/timetable/fs_timetable.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
import 'package:flutter_feather_icons/flutter_feather_icons.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
|
||||||
import 'package:filcnaplo_mobile_ui/pages/timetable/timetable_page.i18n.dart';
|
|
||||||
|
|
||||||
class PremiumFSTimetableButton extends StatelessWidget {
|
|
||||||
const PremiumFSTimetableButton(
|
|
||||||
{Key? key, required this.controller, required this.tabcontroller})
|
|
||||||
: super(key: key);
|
|
||||||
|
|
||||||
final TimetableController controller;
|
|
||||||
final TabController tabcontroller;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Padding(
|
|
||||||
padding: const EdgeInsets.all(8.0),
|
|
||||||
child: IconButton(
|
|
||||||
splashRadius: 24.0,
|
|
||||||
onPressed: () {
|
|
||||||
if (!Provider.of<PremiumProvider>(context, listen: false)
|
|
||||||
.hasScope(PremiumScopes.fsTimetable)) {
|
|
||||||
PremiumLockedFeatureUpsell.show(
|
|
||||||
context: context, feature: PremiumFeature.weeklytimetable);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If timetable empty, show empty
|
|
||||||
if (tabcontroller.length == 0) {
|
|
||||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
|
|
||||||
content: Text("empty_timetable".i18n),
|
|
||||||
duration: const Duration(seconds: 2),
|
|
||||||
));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Navigator.of(context, rootNavigator: true)
|
|
||||||
.push(PageRouteBuilder(
|
|
||||||
pageBuilder: (context, animation, secondaryAnimation) =>
|
|
||||||
PremiumFSTimetable(
|
|
||||||
controller: controller,
|
|
||||||
),
|
|
||||||
))
|
|
||||||
.then((_) {
|
|
||||||
SystemChrome.setPreferredOrientations(
|
|
||||||
[DeviceOrientation.portraitUp]);
|
|
||||||
setSystemChrome(context);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
icon: Icon(FeatherIcons.trello, color: AppColors.of(context).text),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user