diff --git a/refilc/android/app/src/main/res/layout/timetable_item.xml b/refilc/android/app/src/main/res/layout/timetable_item.xml
index f057d2d..c72dc65 100644
--- a/refilc/android/app/src/main/res/layout/timetable_item.xml
+++ b/refilc/android/app/src/main/res/layout/timetable_item.xml
@@ -20,7 +20,7 @@
android:gravity="center"
android:text="1."
android:textColor="@color/filc"
- android:textColorLink="#ff3D7BF4"
+ android:textColorLink="#ff052460"
android:textSize="30sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
@@ -110,4 +110,4 @@
android:textColor="@color/white"
tools:ignore="HardcodedText" />
-
\ No newline at end of file
+
diff --git a/refilc/android/app/src/main/res/values/colors.xml b/refilc/android/app/src/main/res/values/colors.xml
index 955cc10..f1facef 100644
--- a/refilc/android/app/src/main/res/values/colors.xml
+++ b/refilc/android/app/src/main/res/values/colors.xml
@@ -27,7 +27,7 @@
#ffFFCC00
#40FFD60A
#ff34C759
- #ff3D7BF4
+ #ff052460
#ff5AC8FA
#ff007AFF
#ff5856D6
@@ -49,8 +49,8 @@
#ffFFD60A
#40FFD60A
#ff32D74B
- #ff3D7BF4
- #ff3D93F5
+ #ff052460
+ #ff06348f
#ff64D2FF
#ff0A84FF
#ff5E5CE6
@@ -66,4 +66,4 @@
#FFF06292
#FFBA68C8
#FF22AC9B
-
\ No newline at end of file
+
diff --git a/refilc/ios/livecard/livecard.swift b/refilc/ios/livecard/livecard.swift
index f5f27e7..0271d1c 100644
--- a/refilc/ios/livecard/livecard.swift
+++ b/refilc/ios/livecard/livecard.swift
@@ -52,14 +52,31 @@ struct LockScreenLiveActivityView: View {
VStack(alignment: .center) {
// Jelenlegi óra
VStack {
- Text(context.state.index + " " + context.state.title)
- .font(.body)
- .bold()
- .multilineTextAlignment(.center)
+ if(context.state.title.contains("Az első órádig")) {
+ Text(context.state.title)
+ .font(.system(size: 15))
+ .bold()
+ .multilineTextAlignment(.center)
+ } else if(context.state.title == "Szünet") {
+ Text(context.state.title)
+ .font(.body)
+ .bold()
+ .padding(.trailing, 90)
- Text("Terem: \(context.state.subtitle)")
- .italic()
- .font(.caption)
+ } else {
+ MultilineTextView(text: "\(context.state.index) \(context.state.title)", limit: 25)
+ .font(.body)
+ .bold()
+ .multilineTextAlignment(.center)
+ }
+
+ //Terem
+ if (!context.state.subtitle.isEmpty) {
+ Text(context.state.subtitle)
+ .italic()
+ .bold()
+ .font(.system(size: 13))
+ }
}
// Leírás
@@ -69,6 +86,7 @@ struct LockScreenLiveActivityView: View {
}
// Következő óra
+ if(context.state.nextSubject != "" && context.state.nextRoom != "") {
HStack {
Image(systemName: "arrow.right")
.resizable()
@@ -80,18 +98,24 @@ struct LockScreenLiveActivityView: View {
.font(.caption2)
}
.multilineTextAlignment(.center)
+ } else {
+ Spacer(minLength: 5)
+ Text("Ez az utolsó óra! Kitartást!")
+ .font(.system(size: 15))
+ }
+
}
.padding(15)
Spacer()
-
+
// Visszaszámláló
Text(timerInterval: context.state.date, countsDown: true)
.multilineTextAlignment(.center)
.frame(width: 85)
.font(.title2)
.monospacedDigit()
- .padding(.trailing, CGFloat(24))
+ .padding(.trailing)
}
.activityBackgroundTint(
context.state.color != "#676767"
@@ -109,7 +133,7 @@ struct LiveCardWidget: Widget {
LockScreenLiveActivityView(context: context)
/// Dynamic Island
} dynamicIsland: { context in
-
+
/// Expanded
return DynamicIsland {
DynamicIslandExpandedRegion(.leading) {
@@ -133,39 +157,95 @@ struct LiveCardWidget: Widget {
).progressViewStyle(.circular)
}
}
- DynamicIslandExpandedRegion(.center) {
- VStack(alignment: .center) {
- Text(context.state.index + context.state.title)
- .lineLimit(1)
- .font(.body)
- .bold()
-
- Text(context.state.subtitle)
- .lineLimit(1)
- .font(.subheadline)
- Spacer()
-
- Text(context.state.description)
- .lineLimit(2)
- .font(.caption)
- }.padding(EdgeInsets(top: 0.0, leading: 5.0, bottom: 0.0, trailing: 0.0))
- }
+ DynamicIslandExpandedRegion(.center) {
+ VStack(alignment: .center) {
+ // Első óra előtti expanded DynamicIsland
+ if(context.state.title.contains("Az első órádig")) {
+ Text("Az első órád:")
+ .font(.body)
+ .bold()
+ .padding(.trailing, -15)
+ MultilineTextView(text: "\(context.state.nextSubject)", limit: 25)
+ .font(.body)
+ .padding(.trailing, -25)
+
+ Text("Ebben a teremben:")
+ .font(.body)
+ .bold()
+ .padding(.leading, 15)
+ Text(context.state.nextRoom)
+ .font(.body)
+ .padding(.leading, 15)
+ } else if(context.state.title == "Szünet") {
+ // Amikor szünet van, expanded DynamicIsland
+ Text(context.state.title)
+ .lineLimit(1)
+ .font(.body)
+ .bold()
+ .padding(.leading, 15)
+
+ Spacer(minLength: 5)
+ Text("Következő óra és terem:")
+ .font(.system(size: 13))
+ .padding(.leading, 25)
+ Text(context.state.nextSubject)
+ .font(.caption)
+ .padding(.leading, 15)
+ Text(context.state.nextRoom)
+ .font(.caption2)
+ .padding(.leading, 15)
+
+ } else {
+ // Amikor óra van, expanded DynamicIsland
+ MultilineTextView(text: "\(context.state.index) \(context.state.title)", limit: 25)
+ .lineLimit(1)
+ .font(.body)
+ .bold()
+ .padding(.trailing, -35)
+
+ Text(context.state.subtitle)
+ .lineLimit(1)
+ .italic()
+ .bold()
+ .font(.system(size: 13))
+ .padding(.trailing, -50)
+
+ Spacer(minLength: 5)
+
+ if(context.state.nextRoom != "" && context.state.nextSubject != "") {
+ Text("Következő óra és terem:")
+ .font(.system(size: 14))
+ .padding(.trailing, -35)
+ Spacer(minLength: 2)
+ Text(context.state.nextSubject)
+ .modifier(DynamicFontSizeModifier(text: context.state.nextSubject))
+ .padding(.trailing, -35)
+ Text(context.state.nextRoom)
+ // ignore: based on nextSubject characters, I check that the font size of the room is the same as the next subject.
+ .modifier(DynamicFontSizeModifier(text: context.state.nextSubject))
+ .padding(.trailing, -35)
+ } else {
+ Text("Ez az utolsó óra! Kitartást!")
+ .font(.system(size: 14))
+ .padding(.trailing, -30)
+ }
+ }
+
+
+ }.padding(EdgeInsets(top: 0.0, leading: 5.0, bottom: 0.0, trailing: 0.0))
+ }
+
/// Compact
} compactLeading: {
- Label {
- Text(context.state.title)
- } icon: {
- Image(systemName: context.state.icon)
- }
- .font(.caption2)
+ Image(systemName: context.state.icon)
}
compactTrailing: {
Text(timerInterval: context.state.date, countsDown: true)
.multilineTextAlignment(.center)
.frame(width: 40)
.font(.caption2)
-
+
/// Collapsed
} minimal: {
VStack(alignment: .center, content: {
@@ -191,7 +271,59 @@ struct LiveCardWidget: Widget {
context.state.color != "#676767"
? Color(hex: context.state.color)
: Color.clear
- )
+ )
+ }
+ }
+}
+
+struct MultilineTextView: View {
+ var text: String
+ var limit: Int = 20 // default is 20 character
+
+ var body: some View {
+ let words = text.split(separator: " ")
+ var currentLine = ""
+ var lines: [String] = []
+
+ for word in words {
+ if (currentLine.count + word.count + 1) > limit {
+ lines.append(currentLine)
+ currentLine = ""
+ }
+ if !currentLine.isEmpty {
+ currentLine += " "
+ }
+ currentLine += word
+ }
+ if !currentLine.isEmpty {
+ lines.append(currentLine)
+ }
+
+ return VStack(alignment: .center) {
+ ForEach(lines, id: \.self) { line in
+ Text(line)
+ }
+ Spacer(minLength: 1)
+ }
+ }
+}
+
+struct DynamicFontSizeModifier: ViewModifier {
+ var text: String
+
+ func body(content: Content) -> some View {
+ content
+ .font(.system(size: fontSize(for: text)))
+ }
+
+ private func fontSize(for text: String) -> CGFloat {
+ let length = text.count
+ if length < 10 {
+ return 12
+ } else if length < 20 {
+ return 12
+ } else {
+ return 11
}
}
}
diff --git a/refilc/lib/api/providers/live_card_provider.dart b/refilc/lib/api/providers/live_card_provider.dart
index 1d581db..4e0443b 100644
--- a/refilc/lib/api/providers/live_card_provider.dart
+++ b/refilc/lib/api/providers/live_card_provider.dart
@@ -92,7 +92,7 @@ class LiveCardProvider extends ChangeNotifier {
"icon": nextLesson != null
? SubjectIcon.resolveName(subject: nextLesson?.subject)
: "book",
- "title": "Első órádig:",
+ "title": "Jó reggelt! Az első órádig:",
"subtitle": "",
"description": "",
"startDate": storeFirstRunDate != null
@@ -117,7 +117,7 @@ class LiveCardProvider extends ChangeNotifier {
"icon": nextLesson != null
? SubjectIcon.resolveName(subject: nextLesson?.subject)
: "book",
- "title": "Első órádig:",
+ "title": "Jó napot! Az első órádig:",
"subtitle": "",
"description": "",
"startDate": storeFirstRunDate != null
@@ -142,7 +142,7 @@ class LiveCardProvider extends ChangeNotifier {
"icon": nextLesson != null
? SubjectIcon.resolveName(subject: nextLesson?.subject)
: "book",
- "title": "Első órádig:",
+ "title": "Jó estét! Az első órádig:",
"subtitle": "",
"description": "",
"startDate": storeFirstRunDate != null
@@ -174,7 +174,7 @@ class LiveCardProvider extends ChangeNotifier {
ShortSubject.resolve(subject: currentLesson?.subject)
.capital()
: "",
- "subtitle": currentLesson?.room.replaceAll("_", " ") ?? "",
+ "subtitle": "Terem: ${currentLesson?.room.replaceAll("_", " ") ?? ""}",
"description": currentLesson?.description ?? "",
"startDate": ((currentLesson?.start.millisecondsSinceEpoch ?? 0) -
_delay.inMilliseconds)