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