[hbbtv] upgraded.
[vuplus_dvbapp] / lib / python / Plugins / Extensions / HbbTV / bookmark.py
index dcfe2f0..5048564 100644 (file)
@@ -1,11 +1,14 @@
+import vbcfg
+
 class BookmarkData:
-       def __init__(self, _id, _title, _url, _parent):
+       def __init__(self, _id, _title, _url, _parent, _type):
                self.mId        = _id
                self.mTitle     = _title
                self.mUrl       = _url
                self.mParent    = _parent
+               self.mType      = _type
        def dump(self, _intent='  '):
-               print "%s-> %d, %s, %s, %d" % (_intent, self.mId, self.mTitle, self.mUrl, self.mParent)
+               print "%s-> %d, %s, %s, %d, %d" % (_intent, self.mId, self.mTitle, self.mUrl, self.mParent, self.mType)
 
 class CategoryData:
        def __init__(self, _id, _name):
@@ -37,7 +40,6 @@ class SimpleConfigParser:
        def _read(self):
                if self.mDataValid:
                        return
-               print "populate!!"
                self.mConfig.read(self.mFileName)
 
                self.mCategoryCurrentIdx = self.getNumber('__SYS__', 'category_current_idx')
@@ -51,7 +53,6 @@ class SimpleConfigParser:
                self.mPopulateValid = False
 
        def _del(self, _section, _option=None):
-               #print _section, ' :', _option
                if _option is None:
                        if not self.exist(_section):
                                return
@@ -65,7 +66,7 @@ class SimpleConfigParser:
                try:
                        data = self.mConfig.get(_section, _option)
                except Exception, e:
-                       #print e
+                       vbcfg.ERR(e)
                        return _default
                else :  return data
 
@@ -108,40 +109,53 @@ class SimpleConfigParser:
 
 class BookmarkManager(SimpleConfigParser):
        _instance = None
-        def __new__(cls, *args, **kwargs):
-            if not cls._instance:
-                cls._instance = super(Singleton, cls).__new__(
-                                   cls, *args, **kwargs)
-            return cls._instance
+       def __new__(cls, *args, **kwargs):
+               if not cls._instance:
+                       cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
+               return cls._instance
 
        def __init__(self, _dbFileName):
                SimpleConfigParser.__init__(self)
-
                self.mBookmarkRoot = None
-               self.mDebugEnable = False
+               self.mDebugEnable = True
 
                import os
                if not os.path.exists(_dbFileName):
+                       f = file('/proc/stb/info/vumodel')
+                       model = f.read().strip()
+                       f.close()
+                       manualmode = (model == "solo2" or model == "duo2" or model == "solose")
+
                        os.system('echo "[__SYS__]" > %s'%(_dbFileName))
                        os.system('echo "category_current_idx = 1" >> %s'%(_dbFileName))
-                       os.system('echo "bookmark_current_idx = 1" >> %s'%(_dbFileName))
+                       if manualmode :
+                               os.system('echo "bookmark_current_idx = 2" >> %s'%(_dbFileName))
+                       else:   os.system('echo "bookmark_current_idx = 1" >> %s'%(_dbFileName))
                        os.system('echo "[c-1]" >> %s'%(_dbFileName))
                        os.system('echo "id = 1" >> %s'%(_dbFileName))
                        os.system('echo "name = My favorite" >> %s'%(_dbFileName))
                        os.system('echo "[b-1]" >> %s'%(_dbFileName))
-                       os.system('echo "url = http://www2.vuplus.com/" >> %s'%(_dbFileName))
+                       os.system('echo "url = http://www.vuplus.com/" >> %s'%(_dbFileName))
                        os.system('echo "id = 1" >> %s'%(_dbFileName))
                        os.system('echo "parent = 1" >> %s'%(_dbFileName))
                        os.system('echo "title = Vuplus Home" >> %s'%(_dbFileName))
-
+                       os.system('echo "type = 0" >> %s'%(_dbFileName))
+                       if manualmode :
+                               os.system('echo "[b-2]" >> %s'%(_dbFileName))
+                               os.system('echo "url = file:///usr/local/manual/main.html" >> %s'%(_dbFileName))
+                               os.system('echo "id = 2" >> %s'%(_dbFileName))
+                               os.system('echo "parent = 1" >> %s'%(_dbFileName))
+                               os.system('echo "title = User Manual" >> %s'%(_dbFileName))
+                               os.system('echo "type = 1" >> %s'%(_dbFileName))
                self.init(_dbFileName)
 
        def message(self, format, params=None):
                if not self.mDebugEnable:
                        return
                if params is None:
-                       print format
-               else:   print format % (params)
+                       vbcfg.DEBUG(format)
+               else:
+                       vbcfg.DEBUG(format % (params))
 
        def getBookmark(self, _title):
                self.populate()
@@ -151,18 +165,19 @@ class BookmarkManager(SimpleConfigParser):
                                        return 'b-%d' % (self.mBookmarkRoot[key].mBookmarks[key2].mId)
                return None
 
-       def addBookmark(self, _title, _url, _parent):
+       def addBookmark(self, _title, _url, _parent, _type):
                if self.getBookmark(_title) is not None:
                        return False
                i = self.mBookmarkCurrentIdx + 1
                s = "b-%d" % (i,)
-               self.message("add bookmark : %s, %s, %d", (_title, _url, _parent,))
+               self.message("add bookmark : %s, %s, %d, %d", (_title, _url, _parent, _type,))
 
                self.mConfig.add_section(s)
                self.setNumber(s, 'id', i)
                self.setString(s, 'title', _title)
                self.setString(s, 'url', _url)
                self.setNumber(s, 'parent', _parent)
+               self.setNumber(s, 'type', _type)
                self.setNumber('__SYS__', 'bookmark_current_idx', i)
                self._save()
 
@@ -177,10 +192,11 @@ class BookmarkManager(SimpleConfigParser):
        def updateBookmark(self, _bookmark):
                self.populate()
                s = "b-%d" % (_bookmark.mId)
-               self.message("update bookmark : %s, %s, %d", (_bookmark.mTitle, _bookmark.mUrl, _bookmark.mParent,))
+               self.message("update bookmark : %s, %s, %d, %d", (_bookmark.mTitle, _bookmark.mUrl, _bookmark.mParent, _bookmark.mType,))
                self.setString(s, 'title', _bookmark.mTitle)
                self.setString(s, 'url', _bookmark.mUrl)
                self.setNumber(s, 'parent', _bookmark.mParent)
+               self.setNumber(s, 'type', _bookmark.mType)
                self._save()
 
        def getCategory(self, _name):
@@ -246,8 +262,9 @@ class BookmarkManager(SimpleConfigParser):
                                t = self.getString(s, 'title')
                                u = self.getString(s, 'url')
                                p = self.getNumber(s, 'parent')
+                               e = self.getNumber(s, 'type')
                                try:
-                                       categoryList[p].appendBookmark(BookmarkData(i, t, u, p))
+                                       categoryList[p].appendBookmark(BookmarkData(i, t, u, p, e))
                                except Exception, e: self._del(s)
                        bx += 1
                for key in categoryList.iterkeys():
@@ -271,6 +288,6 @@ class BookmarkManager(SimpleConfigParser):
 
        @staticmethod
        def getInstance():
-               return BookmarkManager('/usr/lib/enigma2/python/Plugins/Extensions/HbbTV/bookmark.ini')
+               return BookmarkManager(vbcfg.PLUGINROOT + "/bookmark.ini")