module Taskell.Events.State.Types.Mode where

import ClassyPrelude

import Taskell.Data.Task     (Task)
import Taskell.Types         (Pointer)
import Taskell.UI.Draw.Field (Field)

data DetailMode
    = DetailNormal
    | DetailInsert Field
    deriving (DetailMode -> DetailMode -> Bool
(DetailMode -> DetailMode -> Bool)
-> (DetailMode -> DetailMode -> Bool) -> Eq DetailMode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DetailMode -> DetailMode -> Bool
$c/= :: DetailMode -> DetailMode -> Bool
== :: DetailMode -> DetailMode -> Bool
$c== :: DetailMode -> DetailMode -> Bool
Eq, Int -> DetailMode -> ShowS
[DetailMode] -> ShowS
DetailMode -> String
(Int -> DetailMode -> ShowS)
-> (DetailMode -> String)
-> ([DetailMode] -> ShowS)
-> Show DetailMode
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DetailMode] -> ShowS
$cshowList :: [DetailMode] -> ShowS
show :: DetailMode -> String
$cshow :: DetailMode -> String
showsPrec :: Int -> DetailMode -> ShowS
$cshowsPrec :: Int -> DetailMode -> ShowS
Show)

data DetailItem
    = DetailItem Int
    | DetailDescription
    | DetailDate
    deriving (DetailItem -> DetailItem -> Bool
(DetailItem -> DetailItem -> Bool)
-> (DetailItem -> DetailItem -> Bool) -> Eq DetailItem
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DetailItem -> DetailItem -> Bool
$c/= :: DetailItem -> DetailItem -> Bool
== :: DetailItem -> DetailItem -> Bool
$c== :: DetailItem -> DetailItem -> Bool
Eq, Int -> DetailItem -> ShowS
[DetailItem] -> ShowS
DetailItem -> String
(Int -> DetailItem -> ShowS)
-> (DetailItem -> String)
-> ([DetailItem] -> ShowS)
-> Show DetailItem
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DetailItem] -> ShowS
$cshowList :: [DetailItem] -> ShowS
show :: DetailItem -> String
$cshow :: DetailItem -> String
showsPrec :: Int -> DetailItem -> ShowS
$cshowsPrec :: Int -> DetailItem -> ShowS
Show)

data ModalType
    = Help
    | MoveTo
    | Due (Seq (Pointer, Task))
          Int
    | Detail DetailItem
             DetailMode
    deriving (ModalType -> ModalType -> Bool
(ModalType -> ModalType -> Bool)
-> (ModalType -> ModalType -> Bool) -> Eq ModalType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModalType -> ModalType -> Bool
$c/= :: ModalType -> ModalType -> Bool
== :: ModalType -> ModalType -> Bool
$c== :: ModalType -> ModalType -> Bool
Eq, Int -> ModalType -> ShowS
[ModalType] -> ShowS
ModalType -> String
(Int -> ModalType -> ShowS)
-> (ModalType -> String)
-> ([ModalType] -> ShowS)
-> Show ModalType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModalType] -> ShowS
$cshowList :: [ModalType] -> ShowS
show :: ModalType -> String
$cshow :: ModalType -> String
showsPrec :: Int -> ModalType -> ShowS
$cshowsPrec :: Int -> ModalType -> ShowS
Show)

data InsertType
    = ITask
    | IList
    deriving (InsertType -> InsertType -> Bool
(InsertType -> InsertType -> Bool)
-> (InsertType -> InsertType -> Bool) -> Eq InsertType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InsertType -> InsertType -> Bool
$c/= :: InsertType -> InsertType -> Bool
== :: InsertType -> InsertType -> Bool
$c== :: InsertType -> InsertType -> Bool
Eq, Int -> InsertType -> ShowS
[InsertType] -> ShowS
InsertType -> String
(Int -> InsertType -> ShowS)
-> (InsertType -> String)
-> ([InsertType] -> ShowS)
-> Show InsertType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InsertType] -> ShowS
$cshowList :: [InsertType] -> ShowS
show :: InsertType -> String
$cshow :: InsertType -> String
showsPrec :: Int -> InsertType -> ShowS
$cshowsPrec :: Int -> InsertType -> ShowS
Show)

data InsertMode
    = IEdit
    | ICreate
    deriving (InsertMode -> InsertMode -> Bool
(InsertMode -> InsertMode -> Bool)
-> (InsertMode -> InsertMode -> Bool) -> Eq InsertMode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InsertMode -> InsertMode -> Bool
$c/= :: InsertMode -> InsertMode -> Bool
== :: InsertMode -> InsertMode -> Bool
$c== :: InsertMode -> InsertMode -> Bool
Eq, Int -> InsertMode -> ShowS
[InsertMode] -> ShowS
InsertMode -> String
(Int -> InsertMode -> ShowS)
-> (InsertMode -> String)
-> ([InsertMode] -> ShowS)
-> Show InsertMode
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InsertMode] -> ShowS
$cshowList :: [InsertMode] -> ShowS
show :: InsertMode -> String
$cshow :: InsertMode -> String
showsPrec :: Int -> InsertMode -> ShowS
$cshowsPrec :: Int -> InsertMode -> ShowS
Show)

data Mode
    = Normal
    | Insert InsertType
             InsertMode
             Field
    | Modal ModalType
    | Search
    | Shutdown
    deriving (Mode -> Mode -> Bool
(Mode -> Mode -> Bool) -> (Mode -> Mode -> Bool) -> Eq Mode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Mode -> Mode -> Bool
$c/= :: Mode -> Mode -> Bool
== :: Mode -> Mode -> Bool
$c== :: Mode -> Mode -> Bool
Eq, Int -> Mode -> ShowS
[Mode] -> ShowS
Mode -> String
(Int -> Mode -> ShowS)
-> (Mode -> String) -> ([Mode] -> ShowS) -> Show Mode
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Mode] -> ShowS
$cshowList :: [Mode] -> ShowS
show :: Mode -> String
$cshow :: Mode -> String
showsPrec :: Int -> Mode -> ShowS
$cshowsPrec :: Int -> Mode -> ShowS
Show)