;ui: refactor, drop old option support
This commit is contained in:
parent
349ffd7c0b
commit
8d1e3e638b
@ -22,17 +22,17 @@ import Hledger.UI.UIOptions
|
|||||||
-- | Toggle between showing only unmarked items or all items.
|
-- | Toggle between showing only unmarked items or all items.
|
||||||
toggleUnmarked :: UIState -> UIState
|
toggleUnmarked :: UIState -> UIState
|
||||||
toggleUnmarked ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}} =
|
toggleUnmarked ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}} =
|
||||||
ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatusSomehow Unmarked copts rspec}}}
|
ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatus Unmarked copts rspec}}}
|
||||||
|
|
||||||
-- | Toggle between showing only pending items or all items.
|
-- | Toggle between showing only pending items or all items.
|
||||||
togglePending :: UIState -> UIState
|
togglePending :: UIState -> UIState
|
||||||
togglePending ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}} =
|
togglePending ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}} =
|
||||||
ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatusSomehow Pending copts rspec}}}
|
ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatus Pending copts rspec}}}
|
||||||
|
|
||||||
-- | Toggle between showing only cleared items or all items.
|
-- | Toggle between showing only cleared items or all items.
|
||||||
toggleCleared :: UIState -> UIState
|
toggleCleared :: UIState -> UIState
|
||||||
toggleCleared ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}} =
|
toggleCleared ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportspec_=rspec}}} =
|
||||||
ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatusSomehow Cleared copts rspec}}}
|
ui{aopts=uopts{cliopts_=copts{reportspec_=reportSpecToggleStatus Cleared copts rspec}}}
|
||||||
|
|
||||||
-- TODO testing different status toggle styles
|
-- TODO testing different status toggle styles
|
||||||
|
|
||||||
@ -52,17 +52,12 @@ uiShowStatus copts ss =
|
|||||||
showstatus Pending = "pending"
|
showstatus Pending = "pending"
|
||||||
showstatus Unmarked = "unmarked"
|
showstatus Unmarked = "unmarked"
|
||||||
|
|
||||||
reportSpecToggleStatusSomehow :: Status -> CliOpts -> ReportSpec -> ReportSpec
|
reportSpecToggleStatus :: Status -> CliOpts -> ReportSpec -> ReportSpec
|
||||||
reportSpecToggleStatusSomehow s copts =
|
reportSpecToggleStatus s _copts =
|
||||||
either (error "reportSpecToggleStatusSomehow: updating Status should not result in an error") id -- PARTIAL:
|
either (error "reportSpecToggleStatus: changing status should not have caused this error") id -- PARTIAL:
|
||||||
. updateReportSpecWith update
|
. updateReportSpecWith (reportOptsToggleStatus1 s)
|
||||||
where
|
|
||||||
update = case maybeposintopt "status-toggles" $ rawopts_ copts of
|
-- various toggle behaviours:
|
||||||
Just 2 -> reportOptsToggleStatus2 s
|
|
||||||
Just 3 -> reportOptsToggleStatus3 s
|
|
||||||
-- Just 4 -> reportOptsToggleStatus4 s
|
|
||||||
-- Just 5 -> reportOptsToggleStatus5 s
|
|
||||||
_ -> reportOptsToggleStatus1 s
|
|
||||||
|
|
||||||
-- 1 UPC toggles only X/all
|
-- 1 UPC toggles only X/all
|
||||||
reportOptsToggleStatus1 s ropts@ReportOpts{statuses_=ss}
|
reportOptsToggleStatus1 s ropts@ReportOpts{statuses_=ss}
|
||||||
@ -77,21 +72,21 @@ reportOptsToggleStatus1 s ropts@ReportOpts{statuses_=ss}
|
|||||||
-- pressing Y after first or second step starts new cycle:
|
-- pressing Y after first or second step starts new cycle:
|
||||||
-- [u] P [p]
|
-- [u] P [p]
|
||||||
-- [pc] P [p]
|
-- [pc] P [p]
|
||||||
reportOptsToggleStatus2 s ropts@ReportOpts{statuses_=ss}
|
-- reportOptsToggleStatus2 s ropts@ReportOpts{statuses_=ss}
|
||||||
| ss == [s] = ropts{statuses_=complement [s]}
|
-- | ss == [s] = ropts{statuses_=complement [s]}
|
||||||
| ss == complement [s] = ropts{statuses_=[]}
|
-- | ss == complement [s] = ropts{statuses_=[]}
|
||||||
| otherwise = ropts{statuses_=[s]} -- XXX assume only three values
|
-- | otherwise = ropts{statuses_=[s]} -- XXX assume only three values
|
||||||
|
|
||||||
-- 3 UPC toggles each X
|
-- 3 UPC toggles each X
|
||||||
reportOptsToggleStatus3 s ropts@ReportOpts{statuses_=ss}
|
-- reportOptsToggleStatus3 s ropts@ReportOpts{statuses_=ss}
|
||||||
| s `elem` ss = ropts{statuses_=filter (/= s) ss}
|
-- | s `elem` ss = ropts{statuses_=filter (/= s) ss}
|
||||||
| otherwise = ropts{statuses_=simplifyStatuses (s:ss)}
|
-- | otherwise = ropts{statuses_=simplifyStatuses (s:ss)}
|
||||||
|
|
||||||
-- 4 upc sets X, UPC sets not-X
|
-- 4 upc sets X, UPC sets not-X
|
||||||
--reportOptsToggleStatus4 s ropts@ReportOpts{statuses_=ss}
|
--reportOptsToggleStatus4 s ropts@ReportOpts{statuses_=ss}
|
||||||
-- | s `elem` ss = ropts{statuses_=filter (/= s) ss}
|
-- | s `elem` ss = ropts{statuses_=filter (/= s) ss}
|
||||||
-- | otherwise = ropts{statuses_=simplifyStatuses (s:ss)}
|
-- | otherwise = ropts{statuses_=simplifyStatuses (s:ss)}
|
||||||
--
|
|
||||||
-- 5 upc toggles X, UPC toggles not-X
|
-- 5 upc toggles X, UPC toggles not-X
|
||||||
--reportOptsToggleStatus5 s ropts@ReportOpts{statuses_=ss}
|
--reportOptsToggleStatus5 s ropts@ReportOpts{statuses_=ss}
|
||||||
-- | s `elem` ss = ropts{statuses_=filter (/= s) ss}
|
-- | s `elem` ss = ropts{statuses_=filter (/= s) ss}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user