ui: register: left click enters transaction screen
This commit is contained in:
parent
35402fb472
commit
96a80fca70
@ -19,10 +19,10 @@ import Data.Maybe
|
|||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import Data.Time.Calendar
|
import Data.Time.Calendar
|
||||||
import qualified Data.Vector as V
|
import qualified Data.Vector as V
|
||||||
import Graphics.Vty (Event(..),Key(..),Modifier(..))
|
import Graphics.Vty (Event(..),Key(..),Modifier(..), Button (BLeft))
|
||||||
import Brick
|
import Brick
|
||||||
import Brick.Widgets.List
|
import Brick.Widgets.List
|
||||||
(handleListEvent, list, listElementsL, listMoveDown, listMoveTo, listNameL, listSelectedElement, listSelectedL, renderList)
|
(handleListEvent, list, listElementsL, listMoveDown, listMoveTo, listNameL, listSelectedElement, listSelectedL, renderList, listElements)
|
||||||
import Brick.Widgets.Edit
|
import Brick.Widgets.Edit
|
||||||
import Lens.Micro.Platform
|
import Lens.Micro.Platform
|
||||||
import Safe
|
import Safe
|
||||||
@ -39,6 +39,7 @@ import Hledger.UI.UIUtils
|
|||||||
import Hledger.UI.Editor
|
import Hledger.UI.Editor
|
||||||
import Hledger.UI.TransactionScreen
|
import Hledger.UI.TransactionScreen
|
||||||
import Hledger.UI.ErrorScreen
|
import Hledger.UI.ErrorScreen
|
||||||
|
import Data.Vector ((!?))
|
||||||
|
|
||||||
registerScreen :: Screen
|
registerScreen :: Screen
|
||||||
registerScreen = RegisterScreen{
|
registerScreen = RegisterScreen{
|
||||||
@ -357,6 +358,15 @@ rsHandle ui@UIState{
|
|||||||
Just _ -> continue $ screenEnter d transactionScreen{tsAccount=rsAccount} ui
|
Just _ -> continue $ screenEnter d transactionScreen{tsAccount=rsAccount} ui
|
||||||
Nothing -> continue ui
|
Nothing -> continue ui
|
||||||
|
|
||||||
|
-- or clicked transaction
|
||||||
|
MouseDown _n BLeft _mods Location{loc=(_x,y)} | not $ (=="") clickeddate -> do
|
||||||
|
let
|
||||||
|
list' = listMoveTo y rsList
|
||||||
|
ui' = ui{aScreen=s{rsList=list'}}
|
||||||
|
continue $ screenEnter d transactionScreen{tsAccount=rsAccount} ui'
|
||||||
|
where
|
||||||
|
clickeddate = maybe "" rsItemDate $ listElements rsList !? y
|
||||||
|
|
||||||
-- prevent moving down over blank padding items;
|
-- prevent moving down over blank padding items;
|
||||||
-- instead scroll down by one, until maximally scrolled - shows the end has been reached
|
-- instead scroll down by one, until maximally scrolled - shows the end has been reached
|
||||||
VtyEvent e | e `elem` moveDownEvents, isBlankElement mnextelement -> do
|
VtyEvent e | e `elem` moveDownEvents, isBlankElement mnextelement -> do
|
||||||
@ -382,9 +392,9 @@ rsHandle ui@UIState{
|
|||||||
newitems <- handleListEvent ev' rsList
|
newitems <- handleListEvent ev' rsList
|
||||||
continue ui{aScreen=s{rsList=newitems}}
|
continue ui{aScreen=s{rsList=newitems}}
|
||||||
|
|
||||||
AppEvent _ -> continue ui
|
|
||||||
MouseDown{} -> continue ui
|
MouseDown{} -> continue ui
|
||||||
MouseUp{} -> continue ui
|
MouseUp{} -> continue ui
|
||||||
|
AppEvent _ -> continue ui
|
||||||
|
|
||||||
rsHandle _ _ = error "event handler called with wrong screen type, should not happen" -- PARTIAL:
|
rsHandle _ _ = error "event handler called with wrong screen type, should not happen" -- PARTIAL:
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user