Implement Settings About View
This commit is contained in:
parent
3c1b0cf961
commit
622dba7c14
@ -29,6 +29,8 @@
|
|||||||
5132285B232FF2C40033D4ED /* SettingsRefreshSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5132285A232FF2C40033D4ED /* SettingsRefreshSelectionView.swift */; };
|
5132285B232FF2C40033D4ED /* SettingsRefreshSelectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5132285A232FF2C40033D4ED /* SettingsRefreshSelectionView.swift */; };
|
||||||
513228FB233037630033D4ED /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513228F2233037620033D4ED /* Reachability.swift */; };
|
513228FB233037630033D4ED /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513228F2233037620033D4ED /* Reachability.swift */; };
|
||||||
513228FC233037630033D4ED /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513228F2233037620033D4ED /* Reachability.swift */; };
|
513228FC233037630033D4ED /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513228F2233037620033D4ED /* Reachability.swift */; };
|
||||||
|
513229312330523F0033D4ED /* AttributedStringView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513229302330523F0033D4ED /* AttributedStringView.swift */; };
|
||||||
|
5132293B23305D4C0033D4ED /* SettingsAboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5132293A23305D4C0033D4ED /* SettingsAboutView.swift */; };
|
||||||
513C5CE9232571C2003D4054 /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513C5CE8232571C2003D4054 /* ShareViewController.swift */; };
|
513C5CE9232571C2003D4054 /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 513C5CE8232571C2003D4054 /* ShareViewController.swift */; };
|
||||||
513C5CEC232571C2003D4054 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 513C5CEA232571C2003D4054 /* MainInterface.storyboard */; };
|
513C5CEC232571C2003D4054 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 513C5CEA232571C2003D4054 /* MainInterface.storyboard */; };
|
||||||
513C5CF0232571C2003D4054 /* NetNewsWire iOS Share Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 513C5CE6232571C2003D4054 /* NetNewsWire iOS Share Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
513C5CF0232571C2003D4054 /* NetNewsWire iOS Share Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 513C5CE6232571C2003D4054 /* NetNewsWire iOS Share Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||||
@ -771,6 +773,8 @@
|
|||||||
51322858232FDDB80033D4ED /* VibrantButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VibrantButtonStyle.swift; sourceTree = "<group>"; };
|
51322858232FDDB80033D4ED /* VibrantButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VibrantButtonStyle.swift; sourceTree = "<group>"; };
|
||||||
5132285A232FF2C40033D4ED /* SettingsRefreshSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsRefreshSelectionView.swift; sourceTree = "<group>"; };
|
5132285A232FF2C40033D4ED /* SettingsRefreshSelectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsRefreshSelectionView.swift; sourceTree = "<group>"; };
|
||||||
513228F2233037620033D4ED /* Reachability.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reachability.swift; sourceTree = "<group>"; };
|
513228F2233037620033D4ED /* Reachability.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reachability.swift; sourceTree = "<group>"; };
|
||||||
|
513229302330523F0033D4ED /* AttributedStringView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttributedStringView.swift; sourceTree = "<group>"; };
|
||||||
|
5132293A23305D4C0033D4ED /* SettingsAboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsAboutView.swift; sourceTree = "<group>"; };
|
||||||
513C5CE6232571C2003D4054 /* NetNewsWire iOS Share Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "NetNewsWire iOS Share Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
|
513C5CE6232571C2003D4054 /* NetNewsWire iOS Share Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "NetNewsWire iOS Share Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
513C5CE8232571C2003D4054 /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = "<group>"; };
|
513C5CE8232571C2003D4054 /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = "<group>"; };
|
||||||
513C5CEB232571C2003D4054 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = "<group>"; };
|
513C5CEB232571C2003D4054 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = "<group>"; };
|
||||||
@ -1236,6 +1240,7 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
51F35D0822AFD4760003CE1B /* SettingsView.swift */,
|
51F35D0822AFD4760003CE1B /* SettingsView.swift */,
|
||||||
|
5132293A23305D4C0033D4ED /* SettingsAboutView.swift */,
|
||||||
5132285A232FF2C40033D4ED /* SettingsRefreshSelectionView.swift */,
|
5132285A232FF2C40033D4ED /* SettingsRefreshSelectionView.swift */,
|
||||||
5194B5F122B69FCC00144881 /* SettingsSubscriptionsExportDocumentPickerView.swift */,
|
5194B5F122B69FCC00144881 /* SettingsSubscriptionsExportDocumentPickerView.swift */,
|
||||||
5194B5ED22B6965300144881 /* SettingsSubscriptionsImportDocumentPickerView.swift */,
|
5194B5ED22B6965300144881 /* SettingsSubscriptionsImportDocumentPickerView.swift */,
|
||||||
@ -1258,9 +1263,10 @@
|
|||||||
5194B5E222B693EC00144881 /* SwiftUI Extensions */ = {
|
5194B5E222B693EC00144881 /* SwiftUI Extensions */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
513229302330523F0033D4ED /* AttributedStringView.swift */,
|
||||||
DF999FF622B5AEFA0064B687 /* SafariView.swift */,
|
DF999FF622B5AEFA0064B687 /* SafariView.swift */,
|
||||||
51322854232EED360033D4ED /* VibrantSelectAction.swift */,
|
|
||||||
51322858232FDDB80033D4ED /* VibrantButtonStyle.swift */,
|
51322858232FDDB80033D4ED /* VibrantButtonStyle.swift */,
|
||||||
|
51322854232EED360033D4ED /* VibrantSelectAction.swift */,
|
||||||
);
|
);
|
||||||
path = "SwiftUI Extensions";
|
path = "SwiftUI Extensions";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -1279,6 +1285,7 @@
|
|||||||
children = (
|
children = (
|
||||||
51F85BFA2275D85000C787DC /* Array-Extensions.swift */,
|
51F85BFA2275D85000C787DC /* Array-Extensions.swift */,
|
||||||
51F85BF42273625800C787DC /* Bundle-Extensions.swift */,
|
51F85BF42273625800C787DC /* Bundle-Extensions.swift */,
|
||||||
|
5F323808231DF9F000706F6B /* NNWTableViewCell.swift */,
|
||||||
51EAED95231363EF00A9EEE3 /* NonIntrinsicButton.swift */,
|
51EAED95231363EF00A9EEE3 /* NonIntrinsicButton.swift */,
|
||||||
5183CCD9226E31A50010922C /* NonIntrinsicImageView.swift */,
|
5183CCD9226E31A50010922C /* NonIntrinsicImageView.swift */,
|
||||||
5183CCCF226E1E880010922C /* NonIntrinsicLabel.swift */,
|
5183CCCF226E1E880010922C /* NonIntrinsicLabel.swift */,
|
||||||
@ -1405,14 +1412,6 @@
|
|||||||
path = UIKit;
|
path = UIKit;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
5F3237FF231DF9D000706F6B /* Views */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
5F323808231DF9F000706F6B /* NNWTableViewCell.swift */,
|
|
||||||
);
|
|
||||||
path = Views;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
6581C73620CED60100F4AD34 /* SafariExtension */ = {
|
6581C73620CED60100F4AD34 /* SafariExtension */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -1934,7 +1933,6 @@
|
|||||||
51C452802265093600C03939 /* Add */,
|
51C452802265093600C03939 /* Add */,
|
||||||
5183CCEB227117C70010922C /* Settings */,
|
5183CCEB227117C70010922C /* Settings */,
|
||||||
5183CCDB226F1EEB0010922C /* Progress */,
|
5183CCDB226F1EEB0010922C /* Progress */,
|
||||||
5F3237FF231DF9D000706F6B /* Views */,
|
|
||||||
519D740423243C68008BB345 /* Model Extensions */,
|
519D740423243C68008BB345 /* Model Extensions */,
|
||||||
5194B5E222B693EC00144881 /* SwiftUI Extensions */,
|
5194B5E222B693EC00144881 /* SwiftUI Extensions */,
|
||||||
51C45245226506C800C03939 /* UIKit Extensions */,
|
51C45245226506C800C03939 /* UIKit Extensions */,
|
||||||
@ -2672,6 +2670,7 @@
|
|||||||
51C452852265093600C03939 /* FlattenedAccountFolderPickerData.swift in Sources */,
|
51C452852265093600C03939 /* FlattenedAccountFolderPickerData.swift in Sources */,
|
||||||
51C4526B226508F600C03939 /* MasterFeedViewController.swift in Sources */,
|
51C4526B226508F600C03939 /* MasterFeedViewController.swift in Sources */,
|
||||||
5126EE97226CB48A00C22AFC /* SceneCoordinator.swift in Sources */,
|
5126EE97226CB48A00C22AFC /* SceneCoordinator.swift in Sources */,
|
||||||
|
5132293B23305D4C0033D4ED /* SettingsAboutView.swift in Sources */,
|
||||||
84CAFCB022BC8C35007694F0 /* FetchRequestOperation.swift in Sources */,
|
84CAFCB022BC8C35007694F0 /* FetchRequestOperation.swift in Sources */,
|
||||||
51EF0F77227716200050506E /* FaviconGenerator.swift in Sources */,
|
51EF0F77227716200050506E /* FaviconGenerator.swift in Sources */,
|
||||||
51938DF3231AFC660055A1A0 /* SearchTimelineFeedDelegate.swift in Sources */,
|
51938DF3231AFC660055A1A0 /* SearchTimelineFeedDelegate.swift in Sources */,
|
||||||
@ -2741,6 +2740,7 @@
|
|||||||
519D73FB2323FF35008BB345 /* SettingsView.swift in Sources */,
|
519D73FB2323FF35008BB345 /* SettingsView.swift in Sources */,
|
||||||
511D4419231FC02D00FB1562 /* KeyboardManager.swift in Sources */,
|
511D4419231FC02D00FB1562 /* KeyboardManager.swift in Sources */,
|
||||||
51C45293226509C800C03939 /* StarredFeedDelegate.swift in Sources */,
|
51C45293226509C800C03939 /* StarredFeedDelegate.swift in Sources */,
|
||||||
|
513229312330523F0033D4ED /* AttributedStringView.swift in Sources */,
|
||||||
51D6A5BC23199C85001C27D8 /* MasterTimelineDataSource.swift in Sources */,
|
51D6A5BC23199C85001C27D8 /* MasterTimelineDataSource.swift in Sources */,
|
||||||
51934CCB230F599B006127BE /* ThemedNavigationController.swift in Sources */,
|
51934CCB230F599B006127BE /* ThemedNavigationController.swift in Sources */,
|
||||||
);
|
);
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf400
|
{\rtf1\ansi\ansicpg1252\cocoartf2507
|
||||||
{\fonttbl\f0\fnil\fcharset0 LucidaGrande-Bold;}
|
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 LucidaGrande-Bold;}
|
||||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
|
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
|
||||||
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;}
|
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;}
|
||||||
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
\margl1440\margr1440\vieww11860\viewh9620\viewkind0
|
||||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\sl360\slmult1\pardirnatural\partightenfactor0
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
|
||||||
|
|
||||||
\f0\b\fs28 \cf2 By Brent Simmons
|
\f0\b\fs28 \cf2 By Brent Simmons
|
||||||
\fs22 \
|
\fs22 \
|
||||||
|
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
|
||||||
{\field{\*\fldinst{HYPERLINK "http://inessential.com/"}}{\fldrslt
|
{\field{\*\fldinst{HYPERLINK "http://inessential.com/"}}{\fldrslt
|
||||||
\fs28 inessential.com}}}
|
\fs28 \cf2 inessential.com}}}
|
@ -1,10 +1,10 @@
|
|||||||
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf400
|
{\rtf1\ansi\ansicpg1252\cocoartf2507
|
||||||
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
||||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
|
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
|
||||||
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;}
|
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;}
|
||||||
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
||||||
\deftab720
|
\deftab720
|
||||||
\pard\pardeftab720\li360\sa60\partightenfactor0
|
\pard\pardeftab720\li82\fi-83\sa60\partightenfactor0
|
||||||
{\field{\*\fldinst{HYPERLINK "https://github.com/ccgus/fmdb"}}{\fldrslt
|
{\field{\*\fldinst{HYPERLINK "https://github.com/ccgus/fmdb"}}{\fldrslt
|
||||||
\f0\fs28 \cf2 FMDB}}
|
\f0\fs28 \cf2 FMDB}}
|
||||||
\f0\fs28 \cf2 (greatest SQLite wrapper ever in history) is by {\field{\*\fldinst{HYPERLINK "http://flyingmeat.com/"}}{\fldrslt \cf2 Flying Meat Software}}.}
|
\f0\fs28 \cf2 (greatest SQLite wrapper ever in history) is by {\field{\*\fldinst{HYPERLINK "http://flyingmeat.com/"}}{\fldrslt Flying Meat Software}}.}
|
@ -1,10 +1,10 @@
|
|||||||
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf400
|
{\rtf1\ansi\ansicpg1252\cocoartf2507
|
||||||
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
||||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
|
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
|
||||||
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;}
|
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;}
|
||||||
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
||||||
\deftab720
|
\deftab720
|
||||||
\pard\pardeftab720\li360\sa60\partightenfactor0
|
\pard\pardeftab720\sa60\partightenfactor0
|
||||||
|
|
||||||
\f0\fs28 \cf2 App icon and most other icons: {\field{\*\fldinst{HYPERLINK "https://twitter.com/BradEllis"}}{\fldrslt Brad Ellis}}\
|
\f0\fs28 \cf2 App icon and most other icons: {\field{\*\fldinst{HYPERLINK "https://twitter.com/BradEllis"}}{\fldrslt Brad Ellis}}\
|
||||||
Major code contributors: {\field{\*\fldinst{HYPERLINK "https://github.com/olofhellman"}}{\fldrslt Olof Hellman}}, {\field{\*\fldinst{HYPERLINK "https://github.com/vincode-io"}}{\fldrslt Maurice Parker}}, and {\field{\*\fldinst{HYPERLINK "https://github.com/danielpunkass"}}{\fldrslt Daniel Jalkut}}}
|
Major code contributors: {\field{\*\fldinst{HYPERLINK "https://github.com/olofhellman"}}{\fldrslt Olof Hellman}}, {\field{\*\fldinst{HYPERLINK "https://github.com/vincode-io"}}{\fldrslt Maurice Parker}}, and {\field{\*\fldinst{HYPERLINK "https://github.com/danielpunkass"}}{\fldrslt Daniel Jalkut}}}
|
@ -1,9 +1,9 @@
|
|||||||
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf400
|
{\rtf1\ansi\ansicpg1252\cocoartf2507
|
||||||
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
||||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
|
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
|
||||||
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;}
|
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;}
|
||||||
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
||||||
\deftab720
|
\deftab720
|
||||||
\pard\pardeftab720\li360\sa60\partightenfactor0
|
\pard\pardeftab720\sa60\partightenfactor0
|
||||||
|
|
||||||
\f0\fs28 \cf2 NetNewsWire 5.0 is dedicated to Aaron Swartz, Derek Miller, and Alex King, who helped with earlier versions of NetNewsWire, who I miss.}
|
\f0\fs28 \cf2 NetNewsWire 5.0 is dedicated to Aaron Swartz, Derek Miller, and Alex King, who helped with earlier versions of NetNewsWire, who I miss.}
|
@ -1,9 +1,9 @@
|
|||||||
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf400
|
{\rtf1\ansi\ansicpg1252\cocoartf2507
|
||||||
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
||||||
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
|
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
|
||||||
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;}
|
{\*\expandedcolortbl;;\cssrgb\c0\c0\c0;}
|
||||||
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
|
||||||
\deftab720
|
\deftab720
|
||||||
\pard\pardeftab720\li360\sa60\partightenfactor0
|
\pard\pardeftab720\sa60\partightenfactor0
|
||||||
|
|
||||||
\f0\fs28 \cf2 Thanks to Sheila and my family; thanks to my friends in Seattle and around the globe; thanks to my co-workers and friends at {\field{\*\fldinst{HYPERLINK "https://www.omnigroup.com/"}}{\fldrslt \cf2 The Omni Group}}; thanks to the ever-patient and ever-awesome NetNewsWire beta testers.}
|
\f0\fs28 \cf2 Thanks to Sheila and my family; thanks to my friends in Seattle and around the globe; thanks to my co-workers and friends at {\field{\*\fldinst{HYPERLINK "https://www.omnigroup.com/"}}{\fldrslt The Omni Group}}; thanks to the ever-patient and ever-awesome NetNewsWire beta testers.}
|
65
iOS/Settings/SettingsAboutView.swift
Normal file
65
iOS/Settings/SettingsAboutView.swift
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
//
|
||||||
|
// SettingsAboutView.swift
|
||||||
|
// NetNewsWire-iOS
|
||||||
|
//
|
||||||
|
// Created by Maurice Parker on 9/16/19.
|
||||||
|
// Copyright © 2019 Ranchero Software. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
import Combine
|
||||||
|
|
||||||
|
struct SettingsAboutView: View {
|
||||||
|
|
||||||
|
@ObservedObject var viewModel: ViewModel
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
Form {
|
||||||
|
Text("NetNewsWire 5").font(.largeTitle)
|
||||||
|
AttributedStringView(string: viewModel.about).frame(height: 54)
|
||||||
|
Section(header: Text("CREDITS")) {
|
||||||
|
AttributedStringView(string: viewModel.credits).frame(height: 81)
|
||||||
|
}
|
||||||
|
Section(header: Text("ACKNOWLEDGEMENTS")) {
|
||||||
|
AttributedStringView(string: viewModel.acknowledgements).frame(height: 54)
|
||||||
|
}
|
||||||
|
Section(header: Text("THANKS")) {
|
||||||
|
AttributedStringView(string: viewModel.thanks).frame(height: 135)
|
||||||
|
}
|
||||||
|
Section(header: Text("DEDICATION"), footer: Text("Copyright © 2002-2019 Ranchero Software").font(.footnote)) {
|
||||||
|
AttributedStringView(string: viewModel.dedication).frame(height: 108)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ViewModel: ObservableObject {
|
||||||
|
let objectWillChange = ObservableObjectPublisher()
|
||||||
|
|
||||||
|
var about: NSAttributedString
|
||||||
|
var credits: NSAttributedString
|
||||||
|
var acknowledgements: NSAttributedString
|
||||||
|
var thanks: NSAttributedString
|
||||||
|
var dedication: NSAttributedString
|
||||||
|
|
||||||
|
init() {
|
||||||
|
about = ViewModel.loadResource("About")
|
||||||
|
credits = ViewModel.loadResource("Credits")
|
||||||
|
acknowledgements = ViewModel.loadResource("Acknowledgments")
|
||||||
|
thanks = ViewModel.loadResource("Thanks")
|
||||||
|
dedication = ViewModel.loadResource("Dedication")
|
||||||
|
}
|
||||||
|
|
||||||
|
private static func loadResource(_ resource: String) -> NSAttributedString {
|
||||||
|
let url = Bundle.main.url(forResource: resource, withExtension: "rtf")!
|
||||||
|
return try! NSAttributedString(url: url, options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.rtf], documentAttributes: nil)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct SettingsAboutView_Previews: PreviewProvider {
|
||||||
|
static var previews: some View {
|
||||||
|
SettingsAboutView(viewModel: SettingsAboutView.ViewModel())
|
||||||
|
}
|
||||||
|
}
|
@ -19,6 +19,7 @@ struct SettingsView : View {
|
|||||||
|
|
||||||
@State private var accountAction: Int? = nil
|
@State private var accountAction: Int? = nil
|
||||||
@State private var refreshAction: Int? = nil
|
@State private var refreshAction: Int? = nil
|
||||||
|
@State private var aboutAction: Int? = nil
|
||||||
|
|
||||||
@State private var isWebsitePresented: Bool = false
|
@State private var isWebsitePresented: Bool = false
|
||||||
@State private var website: String? = nil
|
@State private var website: String? = nil
|
||||||
@ -120,7 +121,13 @@ struct SettingsView : View {
|
|||||||
|
|
||||||
func buildAboutSection() -> some View {
|
func buildAboutSection() -> some View {
|
||||||
Section(header: Text("ABOUT"), footer: buildFooter()) {
|
Section(header: Text("ABOUT"), footer: buildFooter()) {
|
||||||
Text("About NetNewsWire")
|
|
||||||
|
NavigationLink(destination: SettingsAboutView(viewModel: SettingsAboutView.ViewModel()), tag: 1, selection: $aboutAction) {
|
||||||
|
Text("About NetNewsWire")
|
||||||
|
}
|
||||||
|
.modifier(VibrantSelectAction(action: {
|
||||||
|
self.aboutAction = 1
|
||||||
|
}))
|
||||||
|
|
||||||
Button(action: {
|
Button(action: {
|
||||||
self.isWebsitePresented.toggle()
|
self.isWebsitePresented.toggle()
|
||||||
|
31
iOS/SwiftUI Extensions/AttributedStringView.swift
Normal file
31
iOS/SwiftUI Extensions/AttributedStringView.swift
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
//
|
||||||
|
// RichTextView.swift
|
||||||
|
// NetNewsWire-iOS
|
||||||
|
//
|
||||||
|
// Created by Maurice Parker on 9/16/19.
|
||||||
|
// Copyright © 2019 Ranchero Software. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct AttributedStringView: UIViewRepresentable {
|
||||||
|
|
||||||
|
let string: NSAttributedString
|
||||||
|
|
||||||
|
func makeUIView(context: Context) -> UITextView {
|
||||||
|
|
||||||
|
let textView = UITextView()
|
||||||
|
textView.attributedText = string
|
||||||
|
textView.adjustsFontForContentSizeCategory = true
|
||||||
|
textView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
textView.font = .preferredFont(forTextStyle: .body)
|
||||||
|
textView.textColor = UIColor.label
|
||||||
|
textView.backgroundColor = UIColor.secondarySystemGroupedBackground
|
||||||
|
|
||||||
|
return textView
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateUIView(_ textView: UITextView, context: Context) {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user