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