Add base addressbook to GUI #102

Merged
pitmutt merged 21 commits from rvv041 into milestone3 2024-09-13 11:39:59 +00:00
2 changed files with 44 additions and 8 deletions
Showing only changes of commit e3de5c7624 - Show all commits

View file

@ -238,4 +238,5 @@ printUsage = do
putStrLn "Available commands:"
{-putStrLn "legacy\tLegacy CLI for zcashd"-}
putStrLn "tui\tTUI for zebrad"
putStrLn "gui\tGUI for zebrad"
putStrLn "rescan\tRescan the existing wallet(s)"

View file

@ -1,5 +1,6 @@
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE BlockArguments #-}
module Zenith.GUI where
@ -102,6 +103,9 @@ data AppEvent
| CheckRecipient !T.Text
| CheckAmount !Float
| ShowTxId !T.Text
| ShowAdrBook
| CloseAdrBook
| NotImplemented
deriving (Eq, Show)
data AppModel = AppModel
@ -144,6 +148,7 @@ data AppModel = AppModel
, _amountValid :: !Bool
, _showId :: !(Maybe T.Text)
, _home :: !FilePath
, _showAdrBook :: !Bool
} deriving (Eq, Show)
makeLenses ''AppModel
@ -185,6 +190,8 @@ buildUI wenv model = widgetTree
, txIdOverlay `nodeVisible` isJust (model ^. showId)
, msgOverlay `nodeVisible` isJust (model ^. msg)
, modalOverlay `nodeVisible` isJust (model ^. modalMsg)
, adrbookOverlay `nodeVisible` model ^. showAdrBook
pitmutt marked this conversation as resolved Outdated

Any new windows should be lower priority than msgOverlay, so the message window displays above. Also, the wallet sync notification uses modalOverlay and needs to be the top widget to make sure that no activities are performed during sync.

Any new windows should be lower priority than `msgOverlay`, so the message window displays above. Also, the wallet sync notification uses `modalOverlay` and needs to be the top widget to make sure that no activities are performed during sync.
, msgAdrBookOverlay `nodeVisible` model ^. notImplemented
]
mainWindow =
vstack
@ -247,6 +254,8 @@ buildUI wenv model = widgetTree
[bgColor white, borderB 1 gray, padding 3]
, box_ [alignLeft, onClick ShowSeed] (label "Backup Wallet") `styleBasic`
[bgColor white, borderB 1 gray, padding 3]
, box_ [alignLeft, onClick ShowAdrBook] (label "Address Book") `styleBasic`
[bgColor white, borderB 1 gray, padding 3]
]) `styleBasic`
[bgColor btnColor, padding 3]
newBox =
@ -750,6 +759,26 @@ buildUI wenv model = widgetTree
]
]) `styleBasic`
[padding 2, bgColor white, width 280, borderB 1 gray, borderT 1 gray]
adrbookOverlay =
alert CloseAdrBook $
vstack
[ box_
[]
(label "Address Book" `styleBasic`
[textFont "Bold", textSize 12, textColor white]) `styleBasic`
[bgColor btnColor, radius 2, padding 3]
, spacer
, hstack [
button "New" notImplemented
, spacer
, button "Edit" notImplemented
, spacer
, button "Copy" notImplemented
]
]
notImplemented = NotImplemented
pitmutt marked this conversation as resolved Outdated

This is unnecessary, the event can be used directly

This is unnecessary, the event can be used directly
generateQRCodes :: Config -> IO ()
generateQRCodes config = do
@ -1060,6 +1089,9 @@ handleEvent wenv node model evt =
(i < (fromIntegral (model ^. balance) / 100000000.0))
]
ShowTxId tx -> [Model $ model & showId ?~ tx & modalMsg .~ Nothing]
ShowAdrBook -> [Model $ model & showAdrBook .~ True & menuPopup .~ False]
CloseAdrBook -> [Model $ model & showAdrBook .~ False]
NotImplemented -> [Model $ model & msg ?~ "Function not implemented..." & menuPopup .~ False & modalMsg .~ Nothing]
pitmutt marked this conversation as resolved Outdated

Using model & msg ?~ ... uses the msgOverlay dialog box that is lower in the widgetTree priority.

Using `model & msg ?~ ...` uses the `msgOverlay` dialog box that is lower in the `widgetTree` priority.
where
currentWallet =
if null (model ^. wallets)
@ -1325,10 +1357,9 @@ runZenithGUI config = do
Nothing
""
""
(SaveAddress $
if not (null accList)
then Just (head accList)
else Nothing)
(SaveAddress (if not (null accList)
pitmutt marked this conversation as resolved Outdated

Too many parenthesis, use $ instead.

Too many parenthesis, use `$` instead.
then Just (head accList)
else Nothing ) )
False
False
Nothing
@ -1342,7 +1373,9 @@ runZenithGUI config = do
False
False
Nothing
hD
""
False
-- hD
startApp model handleEvent buildUI (params hD)
Left e -> do
initDb dbFilePath
@ -1358,9 +1391,9 @@ runZenithGUI config = do
0
[]
0
(Just $
(Just (
pitmutt marked this conversation as resolved Outdated

Too many parenthesis, use $ instead.

Too many parenthesis, use `$` instead.
"Couldn't connect to Zebra on " <>
host <> ":" <> showt port <> ". Check your configuration.")
host <> ":" <> showt port <> ". Check your configuration." ) )
False
314259000
(Just 30000)
@ -1388,7 +1421,9 @@ runZenithGUI config = do
False
False
Nothing
hD
""
False
-- hD
startApp model handleEvent buildUI (params hD)
where
params hd =