packages feed

keera-posture-0.2.2: src/Controller/Conditions/Quit.hs

-- | Quit the program when the user requests it
module Controller.Conditions.Quit where

import Control.Monad
import Data.ReactiveValue
import Graphics.UI.Gtk
import Graphics.UI.Gtk.Reactive

import CombinedEnvironment

-- | Detect when the user activates the menu item 'Quit'
installHandlers :: CEnv -> IO()
installHandlers cenv = do
  menu <- mainMenuQuit $ mainWindowBuilder $ view cenv
  icon <- trayIcon $ mainWindowBuilder $ view cenv

  menuItemActivateField menu =:>
    ( (constW False (statusIconVisibleReactive icon))
      &.& (wrapDo_ mainQuit)
    )

-- -- | Deinstalls the status icon and stops the view, effectively stopping the
-- -- whole program.
-- condition :: CEnv -> IO()
-- condition cenv = do
--   icon <- trayIcon $ mainWindowBuilder $ view cenv
--   statusIconSetVisible icon False
--   mainQuit