diff options
Diffstat (limited to 'lib/Daffm/View.hs')
| -rw-r--r-- | lib/Daffm/View.hs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/Daffm/View.hs b/lib/Daffm/View.hs new file mode 100644 index 0000000..02529ac --- /dev/null +++ b/lib/Daffm/View.hs @@ -0,0 +1,25 @@ +module Daffm.View where + +import Brick.Types (Widget) +import Brick.Widgets.Core (str, vBox, vLimit, withAttr, (<+>)) +import qualified Brick.Widgets.List as L +import Daffm.Attrs (selectedFileAttr) +import Daffm.Types (AppState (..), FileInfo (..)) +import qualified Data.Vector as Vec + +appView :: AppState -> [Widget ()] +appView (AppState {stateFiles, stateCwd}) = [ui] + where + ui = vBox [vLimit 1 header, box, vLimit 1 cmdline] + header = str stateCwd + cmdline = str "Item " <+> cur <+> str " of " <+> total + cur = case L.listSelected stateFiles of + Nothing -> str "-" + Just i -> str (show (i + 1)) + total = str $ show $ Vec.length $ L.listElements stateFiles + box = L.renderList fileItemView True stateFiles + +fileItemView :: Bool -> FileInfo -> Widget () +fileItemView sel (FileInfo {fileName, fileSize, fileType}) = + let wrap w = if sel then withAttr selectedFileAttr w else w + in wrap (str fileName) <+> str (" : " <> show fileSize <> " | " <> show fileType) |
