rvv041 - AddressBook -

Added a  window to show a address book entry
	 It is activated pressing Enter inside Address Book window
This commit is contained in:
Rene V. Vergara A. 2024-06-01 18:02:43 -04:00
parent 4cb4f401a3
commit a33ae3b595

View file

@ -162,6 +162,7 @@ data DisplayType
| TxDisplay
| SyncDisplay
| SendDisplay
| AdrBookEntryDisplay
| BlankDisplay
data Tick
@ -194,6 +195,9 @@ data State = State
, _abaddresses :: !(L.List Name (Entity AddressBook))
, _abForm :: !(Form AdrBookEntry () Name)
, _abCurAdrs :: !T.Text
, _abTxt :: !T.Text
, _showConfirm :: Bool
, _confirmResult :: Maybe Bool
}
makeLenses ''State
@ -411,7 +415,7 @@ drawUI s = [splashDialog s, helpDialog s, displayDialog s, inputDialog s, ui s]
(renderForm (st ^. abForm) <=>
C.hCenter
(hBox [capCommand "" " Delete", capCommand3 "" "<Esc>" " Cancel"]))
--
splashDialog :: State -> Widget Name
splashDialog st =
@ -547,6 +551,14 @@ drawUI s = [splashDialog s, helpDialog s, displayDialog s, inputDialog s, ui s]
(strWrapWith
(WrapSettings False True NoFill FillAfterFirst)
(st ^. msg)))
AdrBookEntryDisplay ->
withBorderStyle unicodeBold $
D.renderDialog
(D.dialog (Just $ txt " Address Book Entry ") Nothing 60)
(padAll 1 $
txtWrapWith (WrapSettings False True NoFill FillAfterFirst) $
(st ^. abTxt))
BlankDisplay -> emptyWidget
mkInputForm :: DialogInput -> Form DialogInput e Name
@ -749,6 +761,7 @@ appEvent (BT.AppEvent t) = do
TxDisplay -> return ()
SyncDisplay -> return ()
SendDisplay -> BT.modify $ set msg m
AdrBookEntryDisplay -> return ()
BlankDisplay -> return ()
TickVal v -> do
case s ^. displayBox of
@ -757,6 +770,7 @@ appEvent (BT.AppEvent t) = do
PhraseDisplay -> return ()
TxDisplay -> return ()
SendDisplay -> return ()
AdrBookEntryDisplay -> return ()
SyncDisplay -> do
if s ^. barValue == 1.0
then do
@ -880,6 +894,7 @@ appEvent (BT.VtyEvent e) = do
TxDisplay -> BT.modify $ set displayBox BlankDisplay
SendDisplay -> BT.modify $ set displayBox BlankDisplay
SyncDisplay -> BT.modify $ set displayBox BlankDisplay
AdrBookEntryDisplay -> BT.modify $ set displayBox BlankDisplay
BlankDisplay -> do
case s ^. dialogBox of
WName -> do
@ -1084,6 +1099,18 @@ appEvent (BT.VtyEvent e) = do
V.EvKey (V.KChar 'n') [] -> do
BT.modify $ set abForm $ mkNewABForm (AdrBookEntry "" "")
BT.modify $ set dialogBox AdrBookForm
-- Show AddressBook entry data
V.EvKey V.KEnter [] -> do
case L.listSelectedElement $ s ^. abaddresses of
Just (_, a) -> do
BT.modify $ set abTxt $ T.pack $
" Descr: " ++
T.unpack (addressBookDescrip (entityVal a)) ++
"\n Address: " ++
T.unpack (addressBookAddress (entityVal a))
BT.modify $ set displayBox AdrBookEntryDisplay
_ -> do
BT.modify $ set dialogBox Blank
-- Process any other event
ev -> BT.zoom abaddresses $ L.handleListEvent ev
-- Process new address book entry
@ -1106,8 +1133,8 @@ appEvent (BT.VtyEvent e) = do
BT.modify $ set msg ("New AddressBook entry created!!\n" ++ T.unpack (fs ^.address))
BT.modify $ set displayBox MsgDisplay
-- case end
ab <- liftIO $ refreshAddressBook s
BT.put ab
s' <- liftIO $ refreshAddressBook s
BT.put s'
BT.modify $ set dialogBox AdrBook
else do
BT.modify $ set msg "Invalid or missing data!!: "
@ -1134,7 +1161,6 @@ appEvent (BT.VtyEvent e) = do
BT.modify $ set msg ("AddressBook entry modified!!\n" ++ T.unpack (fs ^.address))
BT.modify $ set displayBox MsgDisplay
-- case end
-- BT.modify $ set dialogBox AdrBook
s' <- liftIO $ refreshAddressBook s
BT.put s'
BT.modify $ set dialogBox AdrBook
@ -1149,7 +1175,7 @@ appEvent (BT.VtyEvent e) = do
setFieldValid
(isRecipientValid (fs ^. address))
AddressField
-- Process new address book entry
-- Process delete AddresBook entry
AdrBookDelForm -> do
case e of
V.EvKey V.KEsc [] -> BT.modify $ set dialogBox AdrBook
@ -1306,6 +1332,9 @@ runZenithCLI config = do
(L.list ABList (Vec.fromList abookList) 1)
(mkNewABForm (AdrBookEntry "" ""))
" "
""
False
Nothing
Left e -> print $
"No Zebra node available on port " <>
show port <> ". Check your configuration."