diff --git a/src/Zenith/CLI.hs b/src/Zenith/CLI.hs index f7ec123..e5b1179 100644 --- a/src/Zenith/CLI.hs +++ b/src/Zenith/CLI.hs @@ -153,6 +153,7 @@ data DialogType | AdrBook | AdrBookForm | AdrBookUpdForm + | AdrBookDelForm data DisplayType = AddrDisplay @@ -403,6 +404,14 @@ drawUI s = [splashDialog s, helpDialog s, displayDialog s, inputDialog s, ui s] (renderForm (st ^. abForm) <=> C.hCenter (hBox [capCommand "↲" " Save", capCommand3 "" "" " Cancel"])) + -- Address Book edit/update entry form + AdrBookDelForm -> + D.renderDialog + (D.dialog (Just $ str " Delete Address Book Entry ") Nothing 50) + (renderForm (st ^. abForm) <=> + C.hCenter + (hBox [capCommand "↲" " Delete", capCommand3 "" "" " Cancel"])) + splashDialog :: State -> Widget Name splashDialog st = @@ -783,6 +792,7 @@ appEvent (BT.AppEvent t) = do AdrBook -> return () AdrBookForm -> return () AdrBookUpdForm -> return () + AdrBookDelForm -> return () Blank -> do if s ^. timer == 90 then do @@ -1057,10 +1067,19 @@ appEvent (BT.VtyEvent e) = do set abForm $ mkNewABForm (AdrBookEntry (addressBookDescrip (entityVal a)) (addressBookAddress (entityVal a))) BT.modify $ set dialogBox AdrBookUpdForm - _ -> do BT.modify $ set dialogBox Blank - + -- Delete an entry from Address Book + V.EvKey (V.KChar 'd') [] -> do + case L.listSelectedElement $ s ^. abaddresses of + Just (_, a) -> do + BT.modify $ set abCurAdrs (addressBookAddress (entityVal a)) + BT.modify $ + set abForm $ + mkNewABForm (AdrBookEntry (addressBookDescrip (entityVal a)) (addressBookAddress (entityVal a))) + BT.modify $ set dialogBox AdrBookDelForm + _ -> do + BT.modify $ set dialogBox Blank -- Create a new entry in Address Book V.EvKey (V.KChar 'n') [] -> do BT.modify $ set abForm $ mkNewABForm (AdrBookEntry "" "") @@ -1115,8 +1134,9 @@ appEvent (BT.VtyEvent e) = do BT.modify $ set msg ("AddressBook entry modified!!\n" ++ T.unpack (fs ^.address)) BT.modify $ set displayBox MsgDisplay -- case end - abookList <- liftIO $ getAdrBook pool (s ^. network) - let abL = L.listReplace (Vec.fromList abookList) (Just 0) (s ^. abaddresses) +-- BT.modify $ set dialogBox AdrBook + s' <- liftIO $ refreshAddressBook s + BT.put s' BT.modify $ set dialogBox AdrBook else do BT.modify $ set msg "Invalid or missing data!!: " @@ -1129,6 +1149,12 @@ appEvent (BT.VtyEvent e) = do setFieldValid (isRecipientValid (fs ^. address)) AddressField + -- Process new address book entry + AdrBookDelForm -> do + case e of + V.EvKey V.KEsc [] -> BT.modify $ set dialogBox AdrBook + V.EvKey V.KEnter [] -> BT.modify $ set dialogBox AdrBook + ev -> BT.modify $ set dialogBox AdrBookDelForm Blank -> do case e of V.EvKey (V.KChar '\t') [] -> focusRing %= F.focusNext