WIP SUI's navbar

This commit is contained in:
Kylmakalle
2024-12-29 03:56:00 +02:00
parent 2449c06cfb
commit aa6db38db7
2 changed files with 56 additions and 38 deletions

View File

@@ -688,51 +688,64 @@ struct MessageFilterView: View {
}
}
init() {
init(wrapperController: LegacyController?) {
self.wrapperController = wrapperController
_keywords = State(initialValue: SGSimpleSettings.shared.messageFilterKeywords)
}
var body: some View {
List {
Section {
// Icon and title
VStack(spacing: 8) {
Image(systemName: "nosign.app.fill")
.font(.system(size: 50))
.foregroundColor(.secondary)
// NavigationView {
List {
Section {
// Icon and title
VStack(spacing: 8) {
Image(systemName: "nosign.app.fill")
.font(.system(size: 50))
.foregroundColor(.secondary)
Text("Message Filter")
.font(.title)
.bold()
Text("Remove distraction and reduce visibility of messages containing keywords below.\nKeywords are case-sensitive.")
.font(.body)
.foregroundColor(.secondary)
.multilineTextAlignment(.center)
.padding(.horizontal)
}
.frame(maxWidth: .infinity)
.padding(.vertical, 16)
.listRowInsets(EdgeInsets())
Text("Message Filter")
.font(.title)
.bold()
Text("Remove distraction and reduce visibility of messages containing keywords below.\nKeywords are case-sensitive.")
.font(.body)
.foregroundColor(.secondary)
.multilineTextAlignment(.center)
.padding(.horizontal)
}
.frame(maxWidth: .infinity)
.padding(.vertical, 16)
.listRowInsets(EdgeInsets())
}
Section {
MessageFilterKeywordInputView(newKeyword: $newKeyword, onAdd: addKeyword)
}
Section(header: Text("Keywords")) {
ForEach(keywords.reversed(), id: \.self) { keyword in
Text(keyword)
Section {
MessageFilterKeywordInputView(newKeyword: $newKeyword, onAdd: addKeyword)
}
.onDelete { indexSet in
let originalIndices = IndexSet(
indexSet.map { keywords.count - 1 - $0 }
)
deleteKeywords(at: originalIndices)
Section(header: Text("Keywords")) {
ForEach(keywords.reversed(), id: \.self) { keyword in
Text(keyword)
}
.onDelete { indexSet in
let originalIndices = IndexSet(
indexSet.map { keywords.count - 1 - $0 }
)
deleteKeywords(at: originalIndices)
}
}
}
}
// .navigationBarBackButtonHidden(true)
// .navigationBarItems(leading: Button(action: {
// wrapperController?.dismiss(animated: true)
// }) {
// HStack(spacing: 0) {
// Image(systemName: "chevron.left")
// .font(Font.body.weight(.bold))
// Text("Back")
// }
// })
// }
}
@@ -772,6 +785,7 @@ public func sgMessageFilterController(context: AccountContext, presentationData:
theme: theme,
strings: strings
)
// legacyController.displayNavigationBar = false
legacyController.statusBar.statusBarStyle = theme.rootController
.statusBarStyle.style
legacyController.title = "Message Filter" //i18n("BackupManager.Title", strings.baseLanguageCode)
@@ -780,7 +794,7 @@ public func sgMessageFilterController(context: AccountContext, presentationData:
navigationBarHeight: legacyController.navigationBarHeightModel,
containerViewLayout: legacyController.containerViewLayoutModel,
content: {
MessageFilterView(/*wrapperController: legacyController*//*, context: context*/)
MessageFilterView(wrapperController: legacyController)
}
)
let controller = UIHostingController(rootView: swiftUIView, ignoreSafeArea: true)

View File

@@ -45,6 +45,7 @@ public struct CustomSafeAreaPadding: ViewModifier {
public func body(content: Content) -> some View {
content
.edgesIgnoringSafeArea(.all)
// .padding(.top, /*totalTopSafeArea > navigationBarHeight.value ? totalTopSafeArea :*/ navigationBarHeight.value)
.padding(.top, totalTopSafeArea > navigationBarHeight.value ? totalTopSafeArea : navigationBarHeight.value)
.padding(.bottom, (containerViewLayout.value?.safeInsets.bottom ?? 0) /*+ (containerViewLayout.value?.intrinsicInsets.bottom ?? 0)*/)
.padding(.leading, containerViewLayout.value?.safeInsets.left ?? 0)
@@ -71,7 +72,10 @@ public final class LegacySwiftUIController: LegacyController {
override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
super.containerLayoutUpdated(layout, transition: transition)
let newNavigationBarHeight = navigationLayout(layout: layout).navigationFrame.maxY
var newNavigationBarHeight = navigationLayout(layout: layout).navigationFrame.maxY
if !self.displayNavigationBar {
newNavigationBarHeight = 0.0
}
if navigationBarHeightModel.value != newNavigationBarHeight {
navigationBarHeightModel.value = newNavigationBarHeight
}