End-Of-Session: Created keyboard grid array
This commit is contained in:
		@@ -12,7 +12,7 @@
 | 
			
		||||
		<key>awkbd.xcscheme_^#shared#^_</key>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>orderHint</key>
 | 
			
		||||
			<integer>1</integer>
 | 
			
		||||
			<integer>0</integer>
 | 
			
		||||
		</dict>
 | 
			
		||||
	</dict>
 | 
			
		||||
</dict>
 | 
			
		||||
 
 | 
			
		||||
@@ -8,14 +8,6 @@
 | 
			
		||||
 | 
			
		||||
import Foundation
 | 
			
		||||
 | 
			
		||||
//struct Database {
 | 
			
		||||
//    var groups: [String]
 | 
			
		||||
//    var phrases: [Phrase]
 | 
			
		||||
//    var phrasesByGroup(group: String): [Phrase] = {
 | 
			
		||||
//        
 | 
			
		||||
//    }
 | 
			
		||||
//}
 | 
			
		||||
 | 
			
		||||
class Database {
 | 
			
		||||
    // TODO: if empty, save+return default phrases
 | 
			
		||||
    var phrases: [Phrase] {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,26 +7,54 @@
 | 
			
		||||
//
 | 
			
		||||
// TODO:
 | 
			
		||||
// - if touch up outside view, close Kbd
 | 
			
		||||
 | 
			
		||||
import SwiftUI
 | 
			
		||||
 | 
			
		||||
struct KeyboardView: View {
 | 
			
		||||
    @State var db = Database()
 | 
			
		||||
    @State var cfg = Config()
 | 
			
		||||
    @State var size: CGSize = .zero
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        ScrollView {
 | 
			
		||||
            VStack {
 | 
			
		||||
                ForEach(db.groups) { group in
 | 
			
		||||
                    Text(group.name)
 | 
			
		||||
                        .foregroundColor(cfg.highlightColor)
 | 
			
		||||
                    HStack {
 | 
			
		||||
                        ForEach(group.phrases) { phrase in
 | 
			
		||||
                            Text(phrase.string)
 | 
			
		||||
        VStack {
 | 
			
		||||
            HStack {
 | 
			
		||||
                ForEach(1...4, id: \.self) { z in
 | 
			
		||||
                    VStack {
 | 
			
		||||
                        ForEach(1...2, id: \.self) { y in
 | 
			
		||||
                            quarterButton(label: "\(z) \(y)")
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                Button("Clear") { db.groups[1].name = NSUUID().uuidString}
 | 
			
		||||
            }
 | 
			
		||||
            HStack {
 | 
			
		||||
                ForEach(1...3, id: \.self) { z in
 | 
			
		||||
                    VStack {
 | 
			
		||||
                        ForEach(1...2, id: \.self) { y in
 | 
			
		||||
                            quarterButton(label: "\(z) \(y)")
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                VStack {
 | 
			
		||||
                    quarterButton(label: "RET")
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        GeometryReader { proxy in
 | 
			
		||||
            HStack {} // just an empty container to triggers the onAppear
 | 
			
		||||
                .onAppear {
 | 
			
		||||
                    size = proxy.size
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    func quarterButton(label: any StringProtocol) -> some View {
 | 
			
		||||
        Button (label) {
 | 
			
		||||
            
 | 
			
		||||
        }
 | 
			
		||||
        .border(cfg.highlightColor)
 | 
			
		||||
        .frame(
 | 
			
		||||
            width: round(size.width/4),
 | 
			
		||||
            height: round(size.height/4)
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -20,9 +20,9 @@ class KeyboardViewController: UIInputViewController {
 | 
			
		||||
    
 | 
			
		||||
    override func viewDidLoad() {
 | 
			
		||||
        super.viewDidLoad()
 | 
			
		||||
        
 | 
			
		||||
        let hostController = UIHostingController(rootView: KeyboardView())
 | 
			
		||||
        hostController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
 | 
			
		||||
        hostController.sizingOptions = [.intrinsicContentSize]
 | 
			
		||||
        self.view.addSubview(hostController.view)
 | 
			
		||||
        addChild(hostController)
 | 
			
		||||
        
 | 
			
		||||
@@ -64,5 +64,9 @@ class KeyboardViewController: UIInputViewController {
 | 
			
		||||
        }
 | 
			
		||||
        self.nextKeyboardButton.setTitleColor(textColor, for: [])
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    func sendText(text: String) {
 | 
			
		||||
        textDocumentProxy.insertText(text)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user