ui: use only shift-cursor keys for period; simplify

This commit is contained in:
Simon Michael 2016-08-10 07:17:35 -07:00
parent a263d50275
commit af9daa3b11
3 changed files with 16 additions and 45 deletions

View File

@ -287,19 +287,15 @@ asHandle ui0@UIState{
EvKey (KChar '_') [] -> continue $ regenerateScreens j d $ decDepth ui EvKey (KChar '_') [] -> continue $ regenerateScreens j d $ decDepth ui
EvKey (KChar c) [] | c `elem` ['+','='] -> continue $ regenerateScreens j d $ incDepth ui EvKey (KChar c) [] | c `elem` ['+','='] -> continue $ regenerateScreens j d $ incDepth ui
EvKey (KChar 't') [] -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui EvKey (KChar 't') [] -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui
EvKey (KChar 'd') [] -> continue $ regenerateScreens j d $ cycleReportDurationDown d ui
EvKey (KChar 'u') [] -> continue $ regenerateScreens j d $ cycleReportDurationUp d ui
EvKey (KDown) [MShift] -> continue $ regenerateScreens j d $ cycleReportDurationDown d ui
EvKey (KUp) [MShift] -> continue $ regenerateScreens j d $ cycleReportDurationUp d ui
EvKey (KChar 'n') [] -> continue $ regenerateScreens j d $ nextReportPeriod ui
EvKey (KChar 'p') [] -> continue $ regenerateScreens j d $ previousReportPeriod ui
EvKey (KRight) [MShift] -> continue $ regenerateScreens j d $ nextReportPeriod ui
EvKey (KLeft) [MShift] -> continue $ regenerateScreens j d $ previousReportPeriod ui
EvKey (KChar 'F') [] -> continue $ regenerateScreens j d $ toggleFlat ui EvKey (KChar 'F') [] -> continue $ regenerateScreens j d $ toggleFlat ui
EvKey (KChar 'Z') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleEmpty ui) EvKey (KChar 'Z') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleEmpty ui)
EvKey (KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleCleared ui) EvKey (KChar 'C') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleCleared ui)
EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui) EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui)
EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui) EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui)
EvKey (KDown) [MShift] -> continue $ regenerateScreens j d $ shrinkReportPeriod d ui
EvKey (KUp) [MShift] -> continue $ regenerateScreens j d $ growReportPeriod d ui
EvKey (KRight) [MShift] -> continue $ regenerateScreens j d $ nextReportPeriod ui
EvKey (KLeft) [MShift] -> continue $ regenerateScreens j d $ previousReportPeriod ui
EvKey (KChar '/') [] -> continue $ regenerateScreens j d $ showMinibuffer ui EvKey (KChar '/') [] -> continue $ regenerateScreens j d $ showMinibuffer ui
EvKey k [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui) EvKey k [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)
EvKey k [] | k `elem` [KLeft, KChar 'h'] -> continue $ popScreen ui EvKey k [] | k `elem` [KLeft, KChar 'h'] -> continue $ popScreen ui

View File

@ -260,14 +260,6 @@ rsHandle ui@UIState{
EvKey (KChar 'I') [] -> continue $ uiCheckBalanceAssertions d (toggleIgnoreBalanceAssertions ui) EvKey (KChar 'I') [] -> continue $ uiCheckBalanceAssertions d (toggleIgnoreBalanceAssertions ui)
EvKey (KChar 'a') [] -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui EvKey (KChar 'a') [] -> suspendAndResume $ clearScreen >> setCursorPosition 0 0 >> add copts j >> uiReloadJournalIfChanged copts d j ui
EvKey (KChar 't') [] -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui EvKey (KChar 't') [] -> continue $ regenerateScreens j d $ setReportPeriod (DayPeriod d) ui
EvKey (KChar 'd') [] -> continue $ regenerateScreens j d $ cycleReportDurationDown d ui
EvKey (KChar 'u') [] -> continue $ regenerateScreens j d $ cycleReportDurationUp d ui
EvKey (KDown) [MShift] -> continue $ regenerateScreens j d $ cycleReportDurationDown d ui
EvKey (KUp) [MShift] -> continue $ regenerateScreens j d $ cycleReportDurationUp d ui
EvKey (KChar 'n') [] -> continue $ regenerateScreens j d $ nextReportPeriod ui
EvKey (KChar 'p') [] -> continue $ regenerateScreens j d $ previousReportPeriod ui
EvKey (KRight) [MShift] -> continue $ regenerateScreens j d $ nextReportPeriod ui
EvKey (KLeft) [MShift] -> continue $ regenerateScreens j d $ previousReportPeriod ui
EvKey (KChar 'E') [] -> suspendAndResume $ void (runEditor pos f) >> uiReloadJournalIfChanged copts d j ui EvKey (KChar 'E') [] -> suspendAndResume $ void (runEditor pos f) >> uiReloadJournalIfChanged copts d j ui
where where
(pos,f) = case listSelectedElement rsList of (pos,f) = case listSelectedElement rsList of
@ -279,6 +271,10 @@ rsHandle ui@UIState{
EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui) EvKey (KChar 'U') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleUncleared ui)
EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui) EvKey (KChar 'R') [] -> scrollTop >> (continue $ regenerateScreens j d $ toggleReal ui)
EvKey (KChar '/') [] -> (continue $ regenerateScreens j d $ showMinibuffer ui) EvKey (KChar '/') [] -> (continue $ regenerateScreens j d $ showMinibuffer ui)
EvKey (KDown) [MShift] -> continue $ regenerateScreens j d $ shrinkReportPeriod d ui
EvKey (KUp) [MShift] -> continue $ regenerateScreens j d $ growReportPeriod d ui
EvKey (KRight) [MShift] -> continue $ regenerateScreens j d $ nextReportPeriod ui
EvKey (KLeft) [MShift] -> continue $ regenerateScreens j d $ previousReportPeriod ui
EvKey k [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui) EvKey k [] | k `elem` [KBS, KDel] -> (continue $ regenerateScreens j d $ resetFilter ui)
EvKey k [] | k `elem` [KLeft, KChar 'h'] -> continue $ popScreen ui EvKey k [] | k `elem` [KLeft, KChar 'h'] -> continue $ popScreen ui
EvKey k [] | k `elem` [KRight, KChar 'l', KEnter] -> do EvKey k [] | k `elem` [KRight, KChar 'l', KEnter] -> do

View File

@ -68,36 +68,15 @@ toggleIgnoreBalanceAssertions :: UIState -> UIState
toggleIgnoreBalanceAssertions ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{}}} = toggleIgnoreBalanceAssertions ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{}}} =
ui{aopts=uopts{cliopts_=copts{ignore_assertions_=not $ ignore_assertions_ copts}}} ui{aopts=uopts{cliopts_=copts{ignore_assertions_=not $ ignore_assertions_ copts}}}
-- | Cycle through larger report periods. -- | Step through larger report periods, up to all.
cycleReportDurationUp :: Day -> UIState -> UIState growReportPeriod :: Day -> UIState -> UIState
cycleReportDurationUp d ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} = growReportPeriod _d ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
ui{aopts=uopts{cliopts_=copts{reportopts_=reportOptsCycleDurationUp d ropts}}} ui{aopts=uopts{cliopts_=copts{reportopts_=ropts{period_=periodGrow $ period_ ropts}}}}
-- | Cycle through smaller report periods. -- | Step through smaller report periods, down to a day.
cycleReportDurationDown :: Day -> UIState -> UIState shrinkReportPeriod :: Day -> UIState -> UIState
cycleReportDurationDown d ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} = shrinkReportPeriod d ui@UIState{aopts=uopts@UIOpts{cliopts_=copts@CliOpts{reportopts_=ropts}}} =
ui{aopts=uopts{cliopts_=copts{reportopts_=reportOptsCycleDurationDown d ropts}}} ui{aopts=uopts{cliopts_=copts{reportopts_=ropts{period_=periodShrink d $ period_ ropts}}}}
-- | Cycle through increasingly large report periods using periodGrow,
-- then start again at today.
reportOptsCycleDurationUp :: Day -> ReportOpts -> ReportOpts
reportOptsCycleDurationUp d ropts@ReportOpts{period_=p} = ropts{period_=p'}
where
p' = case p of
PeriodAll -> DayPeriod d
PeriodFrom _ -> DayPeriod d
PeriodTo _ -> DayPeriod d
PeriodBetween _ _ -> DayPeriod d
_ -> periodGrow p
-- | Cycle through increasingly small report periods using periodShrink,
-- then start again at unlimited.
reportOptsCycleDurationDown :: Day -> ReportOpts -> ReportOpts
reportOptsCycleDurationDown d ropts@ReportOpts{period_=p} = ropts{period_=p'}
where
p' = case p of
DayPeriod _ -> PeriodAll
_ -> periodShrink d p
-- | Step the report start/end dates to the next period of same duration. -- | Step the report start/end dates to the next period of same duration.
nextReportPeriod :: UIState -> UIState nextReportPeriod :: UIState -> UIState