save page turn mode and background color to local state
This commit is contained in:
@@ -5,7 +5,7 @@ enum PageTurn {
|
|||||||
case previous
|
case previous
|
||||||
}
|
}
|
||||||
|
|
||||||
enum PageTurnMode {
|
enum PageTurnMode: Codable {
|
||||||
case leftToRight
|
case leftToRight
|
||||||
case rightToLeft
|
case rightToLeft
|
||||||
case scroll
|
case scroll
|
||||||
@@ -24,6 +24,8 @@ struct GlobalState: Codable {
|
|||||||
struct LocalState: Codable {
|
struct LocalState: Codable {
|
||||||
var chapter: Int
|
var chapter: Int
|
||||||
var page: Int
|
var page: Int
|
||||||
|
var turnMode: PageTurnMode
|
||||||
|
var backgroundColor: String = "clear"
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Metadata: Decodable {
|
struct Metadata: Decodable {
|
||||||
@@ -93,8 +95,18 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func setup() {
|
func setup() {
|
||||||
|
do {
|
||||||
|
if try fileManager.contentsOfDirectory(atPath: documentsURL.path).isEmpty {
|
||||||
|
saveGlobalState()
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
saveGlobalState()
|
||||||
|
}
|
||||||
|
|
||||||
homeView.translatesAutoresizingMaskIntoConstraints = false
|
homeView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
readerView.translatesAutoresizingMaskIntoConstraints = false
|
readerView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
readerView.isHidden = true
|
||||||
|
homeView.isHidden = false
|
||||||
view.addSubview(homeView)
|
view.addSubview(homeView)
|
||||||
view.addSubview(readerView)
|
view.addSubview(readerView)
|
||||||
NSLayoutConstraint.activate([
|
NSLayoutConstraint.activate([
|
||||||
@@ -115,9 +127,6 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
|||||||
setupHomeView()
|
setupHomeView()
|
||||||
if let name = globalState.comicName {
|
if let name = globalState.comicName {
|
||||||
readComic(name: name)
|
readComic(name: name)
|
||||||
} else {
|
|
||||||
readerView.isHidden = true
|
|
||||||
homeView.isHidden = false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,9 +194,36 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func convertColorToString(color: UIColor) -> String {
|
||||||
|
return switch color {
|
||||||
|
case .white: "white"
|
||||||
|
case .gray: "gray"
|
||||||
|
case .black: "black"
|
||||||
|
case .red: "red"
|
||||||
|
case .blue: "blue"
|
||||||
|
default: "clear"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func convertStringToColor(str: String) -> UIColor {
|
||||||
|
return switch str {
|
||||||
|
case "white": .white
|
||||||
|
case "gray": .gray
|
||||||
|
case "black": .black
|
||||||
|
case "red": .red
|
||||||
|
case "blue": .blue
|
||||||
|
default: .clear
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func saveLocalState() {
|
func saveLocalState() {
|
||||||
do {
|
do {
|
||||||
try JSONEncoder().encode(LocalState(chapter: currentChapter, page: currentPage)).write(
|
try JSONEncoder().encode(
|
||||||
|
LocalState(
|
||||||
|
chapter: currentChapter, page: currentPage, turnMode: mode,
|
||||||
|
backgroundColor: convertColorToString(
|
||||||
|
color: readerView.backgroundColor ?? .white))
|
||||||
|
).write(
|
||||||
to: currentPath.appendingPathComponent("state.json"))
|
to: currentPath.appendingPathComponent("state.json"))
|
||||||
} catch {
|
} catch {
|
||||||
print("failed to save local state")
|
print("failed to save local state")
|
||||||
@@ -203,6 +239,8 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
|||||||
let l = try JSONDecoder().decode(LocalState.self, from: json)
|
let l = try JSONDecoder().decode(LocalState.self, from: json)
|
||||||
currentPage = l.page
|
currentPage = l.page
|
||||||
currentChapter = l.chapter
|
currentChapter = l.chapter
|
||||||
|
mode = l.turnMode
|
||||||
|
readerView.backgroundColor = convertStringToColor(str: l.backgroundColor)
|
||||||
} catch {
|
} catch {
|
||||||
print("failed to load local state")
|
print("failed to load local state")
|
||||||
}
|
}
|
||||||
@@ -326,6 +364,8 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
|||||||
@objc func goHome() {
|
@objc func goHome() {
|
||||||
readerView.isHidden = true
|
readerView.isHidden = true
|
||||||
homeView.isHidden = false
|
homeView.isHidden = false
|
||||||
|
globalState.comicName = nil
|
||||||
|
saveGlobalState()
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupBackgroundColorDropdown() {
|
func setupBackgroundColorDropdown() {
|
||||||
@@ -472,6 +512,7 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
togglePageTurnDropdown()
|
togglePageTurnDropdown()
|
||||||
|
saveLocalState()
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc func handleBackgroundColorOption(_ sender: UIButton) {
|
@objc func handleBackgroundColorOption(_ sender: UIButton) {
|
||||||
@@ -486,6 +527,7 @@ class ViewController: UIViewController, UIGestureRecognizerDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
toggleBackgroundColorDropdown()
|
toggleBackgroundColorDropdown()
|
||||||
|
saveLocalState()
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc func togglePageTurnDropdown() {
|
@objc func togglePageTurnDropdown() {
|
||||||
|
Reference in New Issue
Block a user