implemented dynamic module settings and configurable bottom bar, added all-day event support to timetable, and overhauled marianum dates UI with month grouping and search
This commit is contained in:
@@ -113,8 +113,42 @@ class AppModule {
|
||||
return { for (var element in settings.val().modulesSettings.moduleOrder.where((element) => available.containsKey(element))) element : available[element]! };
|
||||
}
|
||||
|
||||
static List<AppModule> getBottomBarModules(BuildContext context) => modules(context).values.toList().getRange(0, 3).toList();
|
||||
static List<AppModule> getOverhangModules(BuildContext context) => modules(context).values.skip(3).toList();
|
||||
static const int minBottomBarSlots = 3;
|
||||
static const int maxBottomBarSlots = 5;
|
||||
|
||||
static int resolveBottomBarSlotCount(BuildContext context) {
|
||||
final settings = context.read<SettingsCubit>().val().modulesSettings;
|
||||
final available = modules(context).length;
|
||||
|
||||
int desired;
|
||||
if (settings.autoFillBottomBar) {
|
||||
final width = MediaQuery.of(context).size.width;
|
||||
if (width >= 840) {
|
||||
desired = 5;
|
||||
} else if (width >= 600) {
|
||||
desired = 4;
|
||||
} else {
|
||||
desired = 3;
|
||||
}
|
||||
} else {
|
||||
desired = settings.fixedBottomBarSlots;
|
||||
}
|
||||
|
||||
desired = desired.clamp(minBottomBarSlots, maxBottomBarSlots);
|
||||
return desired.clamp(0, available);
|
||||
}
|
||||
|
||||
static List<AppModule> getBottomBarModules(BuildContext context) {
|
||||
final all = modules(context).values.toList();
|
||||
final slots = resolveBottomBarSlotCount(context);
|
||||
return all.take(slots).toList();
|
||||
}
|
||||
|
||||
static List<AppModule> getOverhangModules(BuildContext context) {
|
||||
final all = modules(context).values.toList();
|
||||
final slots = resolveBottomBarSlotCount(context);
|
||||
return all.skip(slots).toList();
|
||||
}
|
||||
|
||||
Widget toListTile(BuildContext context, {Key? key, bool isReorder = false, Function()? onVisibleChange, bool isVisible = true}) => ListTile(
|
||||
key: key,
|
||||
|
||||
Reference in New Issue
Block a user