aboutsummaryrefslogtreecommitdiff
path: root/lib/Daffm/View.hs
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-10-05 23:32:17 +0530
committerAkshay Nair <phenax5@gmail.com>2025-10-08 13:08:32 +0530
commit41d8a90746cd97d1dcb8228c1e9a0846ba9d9b6a (patch)
tree942f95367163ad967323ba41f8a400b654e99688 /lib/Daffm/View.hs
parent424d65e53b99c65f07f36578e3d0975c4d093c0e (diff)
downloaddaffm-41d8a90746cd97d1dcb8228c1e9a0846ba9d9b6a.tar.gz
daffm-41d8a90746cd97d1dcb8228c1e9a0846ba9d9b6a.zip
Add search command
Diffstat (limited to '')
-rw-r--r--lib/Daffm/View.hs14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/Daffm/View.hs b/lib/Daffm/View.hs
index 387fffc..081cd38 100644
--- a/lib/Daffm/View.hs
+++ b/lib/Daffm/View.hs
@@ -4,7 +4,7 @@ import Brick.Types (Widget)
import Brick.Widgets.Core (Padding (Max, Pad), emptyWidget, hBox, hLimit, padLeft, padRight, str, txt, vBox, vLimit, withAttr, (<+>))
import Brick.Widgets.Edit (renderEditor)
import qualified Brick.Widgets.List as L
-import Daffm.Attrs (directoryAttr, directorySelectedAttr, fileAttr, fileSelectedAttr)
+import Daffm.Attrs (directoryAttr, directorySelectedAttr, fileAttr, fileSelectedAttr, searchMarchAttr)
import Daffm.Keymap (showKeySequence)
import Daffm.Types (AppState (..), FileInfo (..), FileType (..), FocusTarget (..))
import Data.Int (Int64)
@@ -21,7 +21,7 @@ appView appState@(AppState {stateFiles}) = [ui]
ui = vBox [vLimit 1 header, box, vLimit 1 cmdline]
header = headerView appState
cmdline = cmdlineView appState
- box = L.renderList (fileItemView appState) True stateFiles
+ box = L.renderListWithIndex (fileItemView appState) True stateFiles
hFixed :: Int -> Widget n -> Widget n
hFixed w = hLimit w . padRight Max
@@ -29,20 +29,24 @@ hFixed w = hLimit w . padRight Max
headerView :: AppState -> Widget n
headerView (AppState {stateCwd}) = txt stateCwd
-fileItemView :: AppState -> Bool -> FileInfo -> Widget FocusTarget
-fileItemView appState sel fileInfo@(FileInfo {filePath, fileSize, fileType, fileMode}) =
+fileItemView :: AppState -> Int -> Bool -> FileInfo -> Widget FocusTarget
+fileItemView appState index sel fileInfo@(FileInfo {filePath, fileSize, fileType, fileMode}) =
hBox
[ hFixed 2 fileSelectionView,
hFixed 10 $ fileModeView fileMode,
hFixed 6 $ fileTypeView fileType,
hFixed 7 $ fileSizeView fileSize,
- fileNameView sel fileInfo
+ fileNameView sel fileInfo,
+ searchMatchIndicatorView
]
where
fileSizeView = txt . prettyFileSize . fromIntegral
fileTypeView = txt . showFileType
fileModeView = txt . showFileMode
fileSelectionView = txt $ if Set.member filePath $ stateFileSelections appState then ">" else " "
+ searchMatchIndicatorView
+ | index `Vec.elem` stateSearchMatches appState = padLeft (Pad 1) $ withAttr searchMarchAttr $ txt "*"
+ | otherwise = emptyWidget
showFileType :: FileType -> Text.Text
showFileType Directory = "dir"