aboutsummaryrefslogtreecommitdiff
path: root/lib/Daffm/View.hs
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-10-03 17:30:44 +0530
committerAkshay Nair <phenax5@gmail.com>2025-10-03 17:30:44 +0530
commit4d669ba5d5858e47b8d5723aae89b75481a2df2f (patch)
tree8a939aa17cf850a74b51637a8a7e1a1846e3a02a /lib/Daffm/View.hs
parenta3d5295ee745ab851c28d0a53147cbad65a7805f (diff)
downloaddaffm-4d669ba5d5858e47b8d5723aae89b75481a2df2f.tar.gz
daffm-4d669ba5d5858e47b8d5723aae89b75481a2df2f.zip
Add multifile selection/marking
Diffstat (limited to '')
-rw-r--r--lib/Daffm/View.hs11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/Daffm/View.hs b/lib/Daffm/View.hs
index 906fe26..9e0294d 100644
--- a/lib/Daffm/View.hs
+++ b/lib/Daffm/View.hs
@@ -7,6 +7,7 @@ import qualified Brick.Widgets.List as L
import Daffm.Attrs (directoryAttr, directorySelectedAttr, fileAttr, fileSelectedAttr)
import Daffm.Types (AppState (..), FileInfo (..), FileType (..), FocusTarget (..))
import Data.Int (Int64)
+import qualified Data.Set as Set
import qualified Data.Vector as Vec
import System.Posix.Types (FileMode)
import qualified System.PosixCompat as Posix
@@ -18,7 +19,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 True stateFiles
+ box = L.renderList (fileItemView appState) True stateFiles
hFixed :: Int -> Widget n -> Widget n
hFixed w = hLimit w . padRight Max
@@ -26,10 +27,11 @@ hFixed w = hLimit w . padRight Max
headerView :: AppState -> Widget n
headerView (AppState {stateCwd}) = str stateCwd
-fileItemView :: Bool -> FileInfo -> Widget FocusTarget
-fileItemView sel fileInfo@(FileInfo {fileSize, fileType, fileMode}) =
+fileItemView :: AppState -> Bool -> FileInfo -> Widget FocusTarget
+fileItemView appState sel fileInfo@(FileInfo {filePath, fileSize, fileType, fileMode}) =
hBox
- [ hFixed 10 $ fileModeView fileMode,
+ [ hFixed 2 fileSelectionView,
+ hFixed 10 $ fileModeView fileMode,
hFixed 6 $ fileTypeView fileType,
hFixed 7 $ fileSizeView fileSize,
fileNameView sel fileInfo
@@ -38,6 +40,7 @@ fileItemView sel fileInfo@(FileInfo {fileSize, fileType, fileMode}) =
fileSizeView = str . prettyFileSize . fromIntegral
fileTypeView = str . showFileType
fileModeView = str . showFileMode
+ fileSelectionView = str $ if Set.member filePath $ stateFileSelections appState then ">" else " "
showFileType :: FileType -> String
showFileType Directory = "dir"