Added function Live Activity Color change, Fixes

This commit is contained in:
Tihanyi Marcell 2023-08-29 02:06:18 +02:00
parent 625c43d786
commit 0245ddb99e
11 changed files with 123 additions and 7 deletions

View File

@ -216,13 +216,13 @@
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = ( buildPhases = (
779338C8D92BCBC36F75F791 /* [CP] Check Pods Manifest.lock */, 779338C8D92BCBC36F75F791 /* [CP] Check Pods Manifest.lock */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
71459C0EB905E05018E3D78F /* [CP] Embed Pods Frameworks */,
9740EEB61CF901F6004384FC /* Run Script */, 9740EEB61CF901F6004384FC /* Run Script */,
97C146EC1CF9000F007C117D /* Resources */,
97C146EA1CF9000F007C117D /* Sources */, 97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */, 97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */, 9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
71459C0EB905E05018E3D78F /* [CP] Embed Pods Frameworks */,
3127F74F28EAEC8A00C2EFB3 /* Embed Foundation Extensions */, 3127F74F28EAEC8A00C2EFB3 /* Embed Foundation Extensions */,
); );
buildRules = ( buildRules = (
@ -299,7 +299,7 @@
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1; alwaysOutOfDate = 1;
buildActionMask = 2147483647; buildActionMask = 12;
files = ( files = (
); );
inputPaths = ( inputPaths = (
@ -314,7 +314,7 @@
}; };
71459C0EB905E05018E3D78F /* [CP] Embed Pods Frameworks */ = { 71459C0EB905E05018E3D78F /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 12;
files = ( files = (
); );
inputFileListPaths = ( inputFileListPaths = (

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.refilcnaplo.livecard</string> <string>group.refilcnaplo.livecard</string>

View File

@ -1,6 +1,7 @@
import Foundation import Foundation
class LessonData { class LessonData {
var color: String
var icon: String var icon: String
var index: String var index: String
var title: String var title: String
@ -13,8 +14,9 @@ class LessonData {
var nextRoom: String var nextRoom: String
init?() { init?() {
let sharedDefault = UserDefaults(suiteName: "group.refilc.livecard")! let sharedDefault = UserDefaults(suiteName: "group.refilc2.livecard")!
self.color = sharedDefault.string(forKey: "color")!
self.icon = sharedDefault.string(forKey: "icon")! self.icon = sharedDefault.string(forKey: "icon")!
self.index = sharedDefault.string(forKey: "index")! self.index = sharedDefault.string(forKey: "index")!
self.title = sharedDefault.string(forKey: "title")! self.title = sharedDefault.string(forKey: "title")!

View File

@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.security.application-groups</key> <key>com.apple.security.application-groups</key>
<array> <array>
<string>group.refilcnaplo.livecard</string> <string>group.refilcnaplo.livecard</string>

View File

@ -68,6 +68,9 @@ struct LockScreenLiveActivityView: View {
.monospacedDigit() .monospacedDigit()
.padding(.trailing, CGFloat(24)) .padding(.trailing, CGFloat(24))
} }
.activityBackgroundTint(
lesson!.color != "0xFF676767" ? Color(lesson!.color) : nil
)
} }
} }

View File

@ -110,6 +110,7 @@ class LiveCardProvider extends ChangeNotifier {
switch (currentState) { switch (currentState) {
case LiveCardState.duringLesson: case LiveCardState.duringLesson:
return { return {
"color": _settings.liveActivityColor.toString(),
"icon": currentLesson != null "icon": currentLesson != null
? SubjectIcon.resolveName(subject: currentLesson?.subject) ? SubjectIcon.resolveName(subject: currentLesson?.subject)
: "book", : "book",
@ -142,6 +143,7 @@ class LiveCardProvider extends ChangeNotifier {
final diff = getFloorDifference(); final diff = getFloorDifference();
return { return {
"color": _settings.liveActivityColor.toString(),
"icon": iconFloorMap[diff] ?? "cup.and.saucer", "icon": iconFloorMap[diff] ?? "cup.and.saucer",
"title": "Szünet", "title": "Szünet",
"description": "go $diff".i18n.fill([ "description": "go $diff".i18n.fill([

View File

@ -28,6 +28,7 @@ const settingsDB = DatabaseStruct("settings", {
"last_account_id": String, "renamed_subjects_enabled": int, "last_account_id": String, "renamed_subjects_enabled": int,
"renamed_subjects_italics": int, "renamed_teachers_enabled": int, "renamed_subjects_italics": int, "renamed_teachers_enabled": int,
"renamed_teachers_italics": int, "renamed_teachers_italics": int,
"live_activity_color": String,
}); });
// DON'T FORGET TO UPDATE DEFAULT VALUES IN `initDB` MIGRATION OR ELSE PARENTS WILL COMPLAIN ABOUT THEIR CHILDREN MISSING // DON'T FORGET TO UPDATE DEFAULT VALUES IN `initDB` MIGRATION OR ELSE PARENTS WILL COMPLAIN ABOUT THEIR CHILDREN MISSING
// YOU'VE BEEN WARNED!!! // YOU'VE BEEN WARNED!!!

View File

@ -71,6 +71,7 @@ class SettingsProvider extends ChangeNotifier {
bool _renamedSubjectsItalics; bool _renamedSubjectsItalics;
bool _renamedTeachersEnabled; bool _renamedTeachersEnabled;
bool _renamedTeachersItalics; bool _renamedTeachersItalics;
Color _liveActivityColor;
SettingsProvider({ SettingsProvider({
DatabaseProvider? database, DatabaseProvider? database,
@ -110,6 +111,7 @@ class SettingsProvider extends ChangeNotifier {
required bool renameSubjectsItalics, required bool renameSubjectsItalics,
required bool renameTeachersEnabled, required bool renameTeachersEnabled,
required bool renameTeachersItalics, required bool renameTeachersItalics,
required Color liveActivityColor,
}) : _database = database, }) : _database = database,
_language = language, _language = language,
_startPage = startPage, _startPage = startPage,
@ -146,7 +148,8 @@ class SettingsProvider extends ChangeNotifier {
_renamedSubjectsEnabled = renameSubjectsEnabled, _renamedSubjectsEnabled = renameSubjectsEnabled,
_renamedSubjectsItalics = renameSubjectsItalics, _renamedSubjectsItalics = renameSubjectsItalics,
_renamedTeachersEnabled = renameTeachersEnabled, _renamedTeachersEnabled = renameTeachersEnabled,
_renamedTeachersItalics = renameTeachersItalics; _renamedTeachersItalics = renameTeachersItalics,
_liveActivityColor = liveActivityColor;
factory SettingsProvider.fromMap(Map map, factory SettingsProvider.fromMap(Map map,
{required DatabaseProvider database}) { {required DatabaseProvider database}) {
@ -205,6 +208,7 @@ class SettingsProvider extends ChangeNotifier {
renameSubjectsItalics: map["renamed_subjects_italics"] == 1, renameSubjectsItalics: map["renamed_subjects_italics"] == 1,
renameTeachersEnabled: map["renamed_teachers_enabled"] == 1, renameTeachersEnabled: map["renamed_teachers_enabled"] == 1,
renameTeachersItalics: map["renamed_teachers_italics"] == 1, renameTeachersItalics: map["renamed_teachers_italics"] == 1,
liveActivityColor: Color(map["live_activity_color"]),
); );
} }
@ -249,6 +253,7 @@ class SettingsProvider extends ChangeNotifier {
"renamed_subjects_italics": _renamedSubjectsItalics ? 1 : 0, "renamed_subjects_italics": _renamedSubjectsItalics ? 1 : 0,
"renamed_teachers_enabled": _renamedTeachersEnabled ? 1 : 0, "renamed_teachers_enabled": _renamedTeachersEnabled ? 1 : 0,
"renamed_teachers_italics": _renamedTeachersItalics ? 1 : 0, "renamed_teachers_italics": _renamedTeachersItalics ? 1 : 0,
"live_activity_color": _liveActivityColor.value,
}; };
} }
@ -297,6 +302,7 @@ class SettingsProvider extends ChangeNotifier {
renameSubjectsItalics: false, renameSubjectsItalics: false,
renameTeachersEnabled: false, renameTeachersEnabled: false,
renameTeachersItalics: false, renameTeachersItalics: false,
liveActivityColor: Color(0xFF676767),
); );
} }
@ -340,6 +346,7 @@ class SettingsProvider extends ChangeNotifier {
bool get renamedSubjectsItalics => _renamedSubjectsItalics; bool get renamedSubjectsItalics => _renamedSubjectsItalics;
bool get renamedTeachersEnabled => _renamedTeachersEnabled; bool get renamedTeachersEnabled => _renamedTeachersEnabled;
bool get renamedTeachersItalics => _renamedTeachersItalics; bool get renamedTeachersItalics => _renamedTeachersItalics;
Color get liveActivityColor => _liveActivityColor;
Future<void> update({ Future<void> update({
bool store = true, bool store = true,
@ -379,6 +386,7 @@ class SettingsProvider extends ChangeNotifier {
bool? renamedSubjectsItalics, bool? renamedSubjectsItalics,
bool? renamedTeachersEnabled, bool? renamedTeachersEnabled,
bool? renamedTeachersItalics, bool? renamedTeachersItalics,
Color? liveActivityColor,
}) async { }) async {
if (language != null && language != _language) _language = language; if (language != null && language != _language) _language = language;
if (startPage != null && startPage != _startPage) _startPage = startPage; if (startPage != null && startPage != _startPage) _startPage = startPage;
@ -478,6 +486,9 @@ class SettingsProvider extends ChangeNotifier {
renamedTeachersItalics != _renamedTeachersItalics) { renamedTeachersItalics != _renamedTeachersItalics) {
_renamedTeachersItalics = renamedTeachersItalics; _renamedTeachersItalics = renamedTeachersItalics;
} }
if (liveActivityColor != null && liveActivityColor != _liveActivityColor) {
_liveActivityColor = liveActivityColor;
}
if (store) await _database?.store.storeSettings(this); if (store) await _database?.store.storeSettings(this);
notifyListeners(); notifyListeners();
} }

View File

@ -261,6 +261,13 @@ class SettingsHelper {
); );
} }
static void liveActivityColor(BuildContext context) {
showRoundedModalBottomSheet(
context,
child: const LiveActivityColorSetting(),
);
}
static void vibrate(BuildContext context) { static void vibrate(BuildContext context) {
showBottomSheetMenu( showBottomSheetMenu(
context, context,
@ -607,3 +614,67 @@ class _GradeColorsSettingState extends State<GradeColorsSetting> {
]); ]);
} }
} }
class LiveActivityColorSetting extends StatefulWidget {
const LiveActivityColorSetting({Key? key}) : super(key: key);
@override
_LiveActivityColorSettingState createState() =>
_LiveActivityColorSettingState();
}
class _LiveActivityColorSettingState extends State<LiveActivityColorSetting> {
late SettingsProvider settings;
Color currentColor = const Color(0x00000000);
@override
void initState() {
super.initState();
settings = Provider.of<SettingsProvider>(context, listen: false);
}
@override
Widget build(BuildContext context) {
return Column(children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Material(
type: MaterialType.transparency,
child: Column(children: [
MaterialColorPicker(
allowShades: false,
selectedColor: settings.liveActivityColor,
onMainColorChange: (k) {
setState(() {
currentColor = k as Color;
settings.update(
liveActivityColor: currentColor.withAlpha(255));
Navigator.of(context).maybePop();
});
},
elevation: 0,
physics: const NeverScrollableScrollPhysics(),
),
Padding(
padding: const EdgeInsets.only(bottom: 8.0, top: 40.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
MaterialActionButton(
onPressed: () {
var defaultColors =
SettingsProvider.defaultSettings().liveActivityColor;
settings.update(liveActivityColor: defaultColors);
Navigator.of(context).maybePop();
},
child: Text(SettingsLocalization("reset").i18n),
),
],
),
),
]),
),
),
]);
}
}

View File

@ -712,6 +712,25 @@ class _SettingsScreenState extends State<SettingsScreen>
), ),
), ),
const PremiumIconPackSelector(), const PremiumIconPackSelector(),
// If iOS, show the iOS specific settings
if (defaultTargetPlatform == TargetPlatform.iOS)
PanelButton(
onPressed: () {
SettingsHelper.liveActivityColor(context);
setState(() {});
},
title: Text("live_activity_color".i18n),
leading: const Icon(FeatherIcons.activity),
trailing: Container(
width: 12.0,
height: 12.0,
decoration: BoxDecoration(
color: settings.liveActivityColor,
shape: BoxShape.circle,
),
),
),
], ],
), ),
), ),

View File

@ -25,6 +25,7 @@ extension SettingsLocalization on String {
"theme": "Theme", "theme": "Theme",
"color": "Color", "color": "Color",
"grade_colors": "Grade Colors", "grade_colors": "Grade Colors",
"live_activity_color": "Live Activity Color",
"notifications": "Notifications", "notifications": "Notifications",
"news": "News", "news": "News",
"extras": "Extras", "extras": "Extras",
@ -94,6 +95,7 @@ extension SettingsLocalization on String {
"theme": "Téma", "theme": "Téma",
"color": "Színek", "color": "Színek",
"grade_colors": "Jegyek színei", "grade_colors": "Jegyek színei",
"live_activity_color": "Live Activity színe",
"notifications": "Értesítések", "notifications": "Értesítések",
"news": "Hírek", "news": "Hírek",
"extras": "Extrák", "extras": "Extrák",
@ -163,6 +165,7 @@ extension SettingsLocalization on String {
"theme": "Thema", "theme": "Thema",
"color": "Farbe", "color": "Farbe",
"grade_colors": "Grad Farben", "grade_colors": "Grad Farben",
"live_activity_color": "Live Activity Farben",
"notifications": "Mitteilung", "notifications": "Mitteilung",
"news": "Nachrichten", "news": "Nachrichten",
"extras": "Extras", "extras": "Extras",