Merge pull request #2213 from stuartbreckenridge/swiftui

Add Feed Folder Picker
This commit is contained in:
Maurice Parker 2020-07-05 14:23:23 -05:00 committed by GitHub
commit 3e2bf6f301
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 40 additions and 28 deletions

View File

@ -134,6 +134,11 @@ class AddWebFeedModel: ObservableObject {
}
}
func smallIconImage(for container: Container) -> RSImage? {
if let smallIconProvider = container as? SmallIconProvider {
return smallIconProvider.smallIcon?.image
}
return nil
}
}

View File

@ -56,7 +56,7 @@ struct AddWebFeedView: View {
Text("Add a Web Feed")
.font(.title)
Spacer()
}
}.padding()
LazyVGrid(columns: [GridItem(.fixed(75), spacing: 10, alignment: .trailing),GridItem(.fixed(400), spacing: 0, alignment: .leading) ], alignment: .leading, spacing: 10, pinnedViews: [], content:{
@ -82,7 +82,7 @@ struct AddWebFeedView: View {
#if os(iOS)
@ViewBuilder var iosForm: some View {
NavigationView {
Form {
List {
urlTextField
providedNameTextField
folderPicker
@ -111,10 +111,8 @@ struct AddWebFeedView: View {
}
#endif
var urlTextField: some View {
HStack {
@ViewBuilder var urlTextField: some View {
#if os(iOS)
Text("Feed:")
TextField("URL", text: $viewModel.providedURL)
.disableAutocorrection(true)
.autocapitalization(UITextAutocapitalizationType.none)
@ -123,28 +121,32 @@ struct AddWebFeedView: View {
.disableAutocorrection(true)
#endif
}
}
var providedNameTextField: some View {
HStack(alignment: .lastTextBaseline) {
#if os(iOS)
Text("Name:")
#endif
TextField("Optional", text: $viewModel.providedName)
}
}
@ViewBuilder var folderPicker: some View {
#if os(iOS)
Picker("Folder:", selection: $viewModel.selectedFolderIndex, content: {
Picker("Folder", selection: $viewModel.selectedFolderIndex, content: {
ForEach(0..<viewModel.containers.count, id: \.self, content: { index in
if let containerName = (viewModel.containers[index] as? DisplayNameProvider)?.nameForDisplay {
if viewModel.containers[index] is Folder {
Text("\(viewModel.containers[index].account?.nameForDisplay ?? "") / \(containerName)").tag(index)
HStack(alignment: .top) {
if let image = viewModel.smallIconImage(for: viewModel.containers[index]) {
Image(rsImage: image)
}
Text("\(containerName)").tag(index)
}.padding(.leading, 16)
} else {
HStack(alignment: .top) {
if let image = viewModel.smallIconImage(for: viewModel.containers[index]) {
Image(rsImage: image)
}
Text(containerName).tag(index)
}
}
}
})
})
#else
@ -152,7 +154,12 @@ struct AddWebFeedView: View {
ForEach(0..<viewModel.containers.count, id: \.self, content: { index in
if let containerName = (viewModel.containers[index] as? DisplayNameProvider)?.nameForDisplay {
if viewModel.containers[index] is Folder {
Text("\(viewModel.containers[index].account?.nameForDisplay ?? "") / \(containerName)").padding(.leading, 2).tag(index)
HStack {
if let image = viewModel.smallIconImage(for: viewModel.containers[index]) {
Image(rsImage: image)
}
Text("\(containerName)")
}.padding(.leading, 2).tag(index)
} else {
Text(containerName).padding(.leading, 2).tag(index)
}

View File

@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "localAccountMac.pdf",
"filename" : "mac.pdf",
"idiom" : "universal"
}
],

View File

@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "localAccountPad.pdf",
"filename" : "ipad.pdf",
"idiom" : "universal"
}
],

View File

@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "localAccountPhone.pdf",
"filename" : "phone.pdf",
"idiom" : "universal"
}
],