From a33ae3b595dac13c7f50d2000726dfcdadbab8b1 Mon Sep 17 00:00:00 2001 From: "Rene Vergara A." Date: Sat, 1 Jun 2024 18:02:43 -0400 Subject: [PATCH] rvv041 - AddressBook - Added a window to show a address book entry It is activated pressing Enter inside Address Book window --- src/Zenith/CLI.hs | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/src/Zenith/CLI.hs b/src/Zenith/CLI.hs index e5b1179..db001aa 100644 --- a/src/Zenith/CLI.hs +++ b/src/Zenith/CLI.hs @@ -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 "" "" " 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."