initial commit
[fmms] / src / fmms_config.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 """ Sets up the config for fMMS
4
5 @author: Nick Leppänen Larsson <frals@frals.se>
6 @license: GNU GPL
7 """
8 import os
9
10 try:
11         import gnome.gconf as gconf
12 except:
13         import gconf
14
15
16 class fMMS_config:
17
18
19         def __init__(self):
20                 self._fmmsdir = "/apps/fmms/"
21                 self.client = gconf.client_get_default()
22                 self.client.add_dir(self._fmmsdir, gconf.CLIENT_PRELOAD_NONE)
23                 if self.get_apn() == None:
24                         self.set_apn("bogus")
25                 if self.get_pushdir() == None:
26                         self.set_pushdir("/home/user/.fmms/push/")
27                 if self.get_mmsdir() == None:
28                         self.set_mmsdir("/home/user/.fmms/mms/")
29                 if self.get_outdir() == None:
30                         self.set_outdir("/home/user/.fmms/sent/")
31                 if self.get_imgdir() == None:
32                         self.set_imgdir("/home/user/.fmms/temp/")
33                 if self.get_mmsc() == None:
34                         self.set_mmsc("http://")
35                 if self.get_phonenumber() == None:
36                         self.set_phonenumber("000")
37                 if self.get_img_resize_width() == None:
38                         self.set_img_resize_width(0)
39                 if self.get_version() == None:
40                         self.set_version("Unknown")
41                 if self.get_db_path() == None:
42                         self.set_db_path("/home/user/.fmms/mms.db")
43                 # Create dirs, for good measures
44                 if not os.path.isdir(self.get_pushdir()):
45                         os.makedirs(self.get_pushdir())
46                 
47                 if not os.path.isdir(self.get_mmsdir()):
48                         os.makedirs(self.get_mmsdir())
49
50                 if not os.path.isdir(self.get_outdir()):
51                         os.makedirs(self.get_outdir())
52                         
53                 if not os.path.isdir(self.get_imgdir()):
54                         os.makedirs(self.get_imgdir())
55                 
56         def read_config(self):
57                 pass
58         
59         def set_db_path(self, path):
60                 self.client.set_string(self._fmmsdir + "db", path)
61         
62         def get_db_path(self):
63                 return self.client.get_string(self._fmmsdir + "db")
64         
65         def get_version(self):
66                 return self.client.get_string(self._fmmsdir + "version")
67         
68         def set_version(self, val):
69                 self.client.set_string(self._fmmsdir + "version", val)
70                 
71         def set_firstlaunch(self, val):
72                 self.client.set_int(self._fmmsdir + "firstlaunch", val)
73                 
74         def get_firstlaunch(self):
75                 return self.client.get_int(self._fmmsdir + "firstlaunch")
76         
77         def set_img_resize_width(self, width):
78                 try:
79                         width = int(width)
80                 except ValueError:
81                         width = 0
82                 self.client.set_int(self._fmmsdir + "img_resize_width", width)
83
84         def get_img_resize_width(self):
85                 return self.client.get_int(self._fmmsdir + "img_resize_width")  
86         
87         def set_phonenumber(self, number):
88                 self.client.set_string(self._fmmsdir + "phonenumber", number)
89         
90         def get_phonenumber(self):
91                 return self.client.get_string(self._fmmsdir + "phonenumber")
92         
93         def set_pushdir(self, path):
94                 self.client.set_string(self._fmmsdir + "pushdir", path)
95                 
96         def get_pushdir(self):
97                 return self.client.get_string(self._fmmsdir + "pushdir")                
98                 
99         def set_mmsdir(self, path):
100                 self.client.set_string(self._fmmsdir + "mmsdir", path)
101
102         def get_mmsdir(self):
103                 return self.client.get_string(self._fmmsdir + "mmsdir")
104         
105         def set_outdir(self, path):
106                 self.client.set_string(self._fmmsdir + "outdir", path)
107         
108         def get_outdir(self):
109                 return self.client.get_string(self._fmmsdir + "outdir")
110                 
111         def set_imgdir(self, path):
112                 self.client.set_string(self._fmmsdir + "imgdir", path)
113
114         def get_imgdir(self):
115                 return self.client.get_string(self._fmmsdir + "imgdir")
116                 
117         """ note this takes the *id* from gconf and not the *display name* """
118         def set_apn(self, apn):
119                 #apn = apn.replace(" ", "@32@")
120                 #self.client.set_string(self._fmmsdir + "apn_nicename", apn)
121                 self.client.set_string(self._fmmsdir + "apn", apn)
122                 
123         def get_apn_nicename(self):
124                 #return self.client.get_string(self._fmmsdir + "apn_nicename")
125                 apn = self.client.get_string(self._fmmsdir + "apn")
126                 return self.client.get_string('/system/osso/connectivity/IAP/' + apn + '/name')
127         
128         def get_apn(self):
129                 return self.client.get_string(self._fmmsdir + "apn")
130                 
131         def set_mmsc(self, mmsc):
132                 self.client.set_string(self._fmmsdir + "mmsc", mmsc)
133         
134         def get_mmsc(self):
135                 return self.client.get_string(self._fmmsdir + "mmsc")
136                 
137         def get_proxy_from_apn(self):
138                 apn = self.get_apn()
139                 proxy = self.client.get_string('/system/osso/connectivity/IAP/' + apn + '/proxy_http')
140                 proxyport = self.client.get_int('/system/osso/connectivity/IAP/' + apn + '/proxy_http_port')
141                 return proxy, proxyport
142         
143         def get_gprs_apns(self):
144                 # get all IAP's
145                 dirs = self.client.all_dirs('/system/osso/connectivity/IAP')
146                 apnlist = []
147                 for subdir in dirs:
148                         # get all sub entries.. this might be costy?
149                         all_entries = self.client.all_entries(subdir)
150                         # this is a big loop as well, possible to make it easier?
151                         # make this faster
152                         for entry in all_entries:
153                                 (path, sep, shortname) = entry.key.rpartition('/')
154                                 # this SHOULD always be a int
155                                 if shortname == 'type' and entry.value.type == gconf.VALUE_STRING and entry.value.get_string() == "GPRS":       
156                                         # split it so we can get the id
157                                         #(spath, sep, apnid) = path.rpartition('/')
158                                         apname = self.client.get_string(path + '/name')
159                                         apnlist.append(apname)
160                 
161                 return apnlist
162         
163         """ get the gconf alias for the name, be it the real name or
164         an arbitrary string """
165         def get_apnid_from_name(self, apnname):
166                 # get all IAP's
167                 dirs = self.client.all_dirs('/system/osso/connectivity/IAP')
168                 
169                 for subdir in dirs:
170                         # get all sub entries.. this might be costy?
171                         all_entries = self.client.all_entries(subdir)
172                         # this is a big loop as well, possible to make it easier?
173                         for entry in all_entries:
174                                 (path, sep, shortname) = entry.key.rpartition('/')
175                                 
176                                 # this SHOULD always be a string
177                                 if shortname == 'name':                         
178                                         if entry.value.type == gconf.VALUE_STRING:
179                                                 _value = entry.value.get_string()
180                                         if _value == apnname:
181                                                 # split it so we can get the id
182                                                 (spath, sep, apnid) = path.rpartition('/')              
183                                                 return apnid            
184                 
185                 return None
186                 
187                 
188 if __name__ == '__main__':
189         config = fMMS_config()
190         #config.get_apnid_from_name("Tele2 MMS")
191         #config.set_apn("bogus")
192         #config.set_pushdir("/home/user/.fmms/push/")
193         #config.set_mmsdir("/home/user/.fmms/mms/")
194         #config.set_mmsc("http://bogus")
195         #print config.get_apn()
196         #print config.get_apn_nicename()