diff options
-rw-r--r-- | Types/State.hs | 7 | ||||
-rw-r--r-- | UI.hs | 12 |
2 files changed, 15 insertions, 4 deletions
diff --git a/Types/State.hs b/Types/State.hs index f49ee31..2fb081f 100644 --- a/Types/State.hs +++ b/Types/State.hs @@ -116,6 +116,13 @@ setScanSessDir dir st = case st^.stScanSess of Just (ScanSess c p _) -> st & stScanSess .~ (Just $ ScanSess c p (Just dir)) +setScanSessCommand :: Command -> St -> St +setScanSessCommand c st = case st^.stScanSess of + Just (ScanSess _ p d) -> + st & stScanSess .~ (Just $ ScanSess c p d) + Nothing -> + st & stScanSess .~ (Just $ ScanSess c 0 Nothing) + incrementPages :: St -> St incrementPages st = case st^.stScanSess of Nothing -> st @@ -99,16 +99,20 @@ drawUI st = [ui] ) handleQ :: St -> EventM () (Next St) -handleQ st = undefined +handleQ st = halt $ ifScanSess st + (setScanSessCommand Finalise st) + (resetScanSess st) handleRET :: St -> EventM () (Next St) -handleRET st = undefined +handleRET st = halt $ setScanSessCommand FinalPage st handleSPC :: St -> EventM () (Next St) -handleSPC st = undefined +handleSPC st = halt $ setScanSessCommand NextPage st handleESC :: St -> EventM () (Next St) -handleESC st = undefined +handleESC st = ifScanSess st + (halt $ setScanSessCommand Abort st) + (continue st) handleHotKey :: St -> Char -> EventM () (Next St) handleHotKey st 'q' = handleQ st |