File: Types.hs

package info (click to toggle)
hpodder 1.1.5.0%2Bnmu2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 352 kB
  • ctags: 1
  • sloc: haskell: 1,799; makefile: 70; sh: 62
file content (76 lines) | stat: -rw-r--r-- 2,978 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
{- hpodder component
Copyright (C) 2006-2007 John Goerzen <jgoerzen@complete.org>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-}

{- |
   Module     : Types
   Copyright  : Copyright (C) 2006-2007 John Goerzen
   License    : GNU GPL, version 2 or above

   Maintainer : John Goerzen <jgoerzen@complete.org>
   Stability  : provisional
   Portability: portable

Written by John Goerzen, jgoerzen\@complete.org

-}
module Types where
import Data.ConfigFile
import Database.HDBC

data IConnection a => GlobalInfo a = GlobalInfo {gcp :: ConfigParser,
                                                 gdbh :: a}

data EpisodeStatus = Pending -- ^ Ready to download
                   | Downloaded -- ^ Already downloaded
                   | Error -- ^ Error downloading
                   | Skipped -- ^ Skipped by some process or other
                     deriving (Eq, Show, Read, Ord, Enum)

data PCEnabled = PCUserDisabled | PCEnabled | PCErrorDisabled
    deriving (Eq, Show, Read, Ord, Enum)

data Podcast = Podcast {castid :: Integer,
                        castname :: String,
                        feedurl :: String,
                        pcenabled :: PCEnabled,
                        lastupdate :: Maybe Integer, -- Last successful update
                        lastattempt :: Maybe Integer,      -- Last attempt
                        failedattempts :: Integer}   -- failed attempts since last success
             deriving (Eq, Show, Read)

instance Ord Podcast where
    compare pc1 pc2 = compare (castname pc1) (castname pc2)

data Episode = Episode {podcast :: Podcast,
                        epid :: Integer,
                        eptitle :: String,
                        epurl :: String,
                        epguid :: Maybe String,
                        eptype :: String,
                        epstatus :: EpisodeStatus,
                        eplength :: Integer,
                        epfirstattempt :: Maybe Integer, -- Last successful updat
                        eplastattempt :: Maybe Integer, -- Last attempt
                        epfailedattempts :: Integer}
             deriving (Eq, Show, Read)

data IConnection a => Command a = 
               Command {cmdname :: String,
                        cmddescrip :: String,
                        execcmd :: [String] -> GlobalInfo a -> IO ()}