Merge remote branch 'origin/bug_530_add_dm800se_support'
authorghost <andreas.monzner@multimedia-labs.de>
Wed, 6 Oct 2010 09:55:09 +0000 (11:55 +0200)
committerghost <andreas.monzner@multimedia-labs.de>
Wed, 6 Oct 2010 09:55:09 +0000 (11:55 +0200)
19 files changed:
data/defaults/Dream/Makefile.am
data/defaults/Dream/dm800se.info [new file with mode: 0644]
data/defaults/Dream/settings.800se [new file with mode: 0644]
data/skin.xml
data/skin_default.xml
lib/dvb/dvb.cpp
lib/dvb/dvb.h
lib/gdi/font.cpp
lib/gdi/glcddc.cpp
lib/gdi/gpixmap.cpp
lib/gdi/lcd.cpp
lib/gdi/lcd.h
lib/python/Plugins/Extensions/DVDPlayer/plugin.py
lib/python/Plugins/Extensions/MediaPlayer/plugin.py
lib/python/Plugins/SystemPlugins/NFIFlash/flasher.py [changed mode: 0644->0755]
lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py
lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py [changed mode: 0644->0755]
main/enigma.cpp
skin.py

index 31ba1c69b339e6379900ea670cc40017c1c948f6..cda55835ba8a4967045c6e15d5bf5500fabdf0c4 100644 (file)
@@ -4,10 +4,12 @@ installdir = $(pkgdatadir)/defaults/Dream
 
 dist_install_DATA = \
        bouquets.tv \
+       dm800se.info \
        dm500hd.info \
        dm7025.info \
        dm8000.info \
        dm800.info \
+       settings.800se \
        settings.500hd \
        settings.7025 \
        settings.800 \
diff --git a/data/defaults/Dream/dm800se.info b/data/defaults/Dream/dm800se.info
new file mode 100644 (file)
index 0000000..6974b12
--- /dev/null
@@ -0,0 +1,26 @@
+<default>
+       <prerequisites>
+               <!-- hardware can occur more than once -->
+               <hardware type="dm800se" />
+       </prerequisites>
+       
+       <info>
+               <author>Dream Multimedia GmbH</author>
+               <name>Dream Multimedia Default</name>
+       </info>
+
+               <!-- available types: "directories" -->
+       <files type="directories">
+               <!--file type="skin" directory="test_skin/" flag="default" name="Default Skin" /-->
+               <file type="config" name="settings.800se" />
+               <!--file type="services" name="lamedb.192">
+                       <prerequisites>
+                               <bcastsystem type="DVB-S" />
+                               <satellite type="192" />
+                       </prerequisites>
+               </file-->
+               <file type="favourites" directory="" name="bouquets.tv" />              
+               <file type="favourites" directory="hdbouquets/" name="userbouquet.favourites.tv" />
+               <!--file type="package" directory="packages/" name="small-test_1.0_mipsel.ipk" /-->
+       </files>
+</default>
diff --git a/data/defaults/Dream/settings.800se b/data/defaults/Dream/settings.800se
new file mode 100644 (file)
index 0000000..ae2963b
--- /dev/null
@@ -0,0 +1 @@
+config.misc.rcused=1
\ No newline at end of file
index 32adb2bea4fa1c500a8907c819900302d82b658d..868fbc4be0ee5bf6b84888769dcca6601de1e3b0 100755 (executable)
                <color name="WindowTitleForeground" color="#ffffff" />
                <color name="WindowTitleBackground" color="#000000" />
        </windowstyle>
+       <windowstyle type="skinned" id="2">
+               <color name="Background" color="#000000" />
+               <color name="LabelForeground" color="#ffffff" />
+               <color name="ListboxBackground" color="#000000" />
+               <color name="ListboxForeground" color="#ffffff" />
+               <color name="ListboxSelectedBackground" color="#000000" />
+               <color name="ListboxSelectedForeground" color="#ffffff" />
+               <color name="ListboxMarkedBackground" color="#000000" />
+               <color name="ListboxMarkedForeground" color="#ffffff" />
+               <color name="ListboxMarkedAndSelectedBackground" color="#000000" />
+               <color name="ListboxMarkedAndSelectedForeground" color="#ffffff" />
+               <color name="WindowTitleForeground" color="#ffffff" />
+               <color name="WindowTitleBackground" color="#000000" />
+       </windowstyle>
        <!-- Fonts -->
        <fonts>
                <!-- <font filename="md_khmurabi_10.ttf" name="Regular" scale="90" /> -->
index 497d33acf4573184106d58848ed2c01cc26641cc..8e0c1562550b141ee77909e7ed4a1c2d1953aa1d 100755 (executable)
@@ -164,9 +164,7 @@ self.instance.move(ePoint((720-wsizex)/2, (576-wsizey)/(count &gt; 7 and 2 or 3)
 
                </applet>
        </screen>
-       <screen name="ChoiceBox_summary" position="0,0" size="132,64">
-               <widget source="parent.summary_list" render="Label" position="6,0" size="126,64" font="Regular;11" />
-       </screen>       
+
        <!-- Common interface -->
        <screen name="MMIDialog" position="center,center" size="450,270">
                <widget name="title" position="10,10" size="430,25" font="Regular;23" />
@@ -511,10 +509,6 @@ newwidth = wsize[0]
 self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
                </applet>
        </screen>
-       <screen name="MessageBox_summary" position="0,0" size="132,64">
-               <widget source="parent.Text" render="Label" position="0,0" size="132,52" font="Regular;11" halign="center" valign="center" />
-               <widget source="parent.selectedChoice" render="Label" position="6,50" size="120,14" font="Regular;14" halign="center" valign="center" />
-       </screen>
        <!-- Minute input -->
        <screen name="MinuteInput" position="center,center" size="280,60" title="Seek">
                <widget name="minutes" position="80,15" size="160,25" halign="right" font="Regular;23" />
@@ -1054,11 +1048,55 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
                <ePixmap pixmap="skin_default/volume.png" position="0,0" size="214,21" />
                <widget name="Volume" pixmap="skin_default/progress_small.png" position="31,7" zPosition="1" size="168,7" transparent="1" />
        </screen>
+       <!-- JobView -->
+       <screen name="JobView" position="center,center" size="520,350" title="Job View">
+               <widget source="job_name" render="Label" position="20,12" size="480,60" font="Regular;28" />
+               <widget source="job_task" render="Label" position="20,90" size="480,50" font="Regular;23" />
+               <widget source="job_progress" render="Progress" position="20,162" size="480,36" borderWidth="2" backgroundColor="#254f7497" />
+               <widget source="job_progress" render="Label" position="120,166" size="280,32" font="Regular;28" foregroundColor="#000000" zPosition="2" halign="center" transparent="1"  >
+                       <convert type="ProgressToText" />
+               </widget>
+               <widget source="job_status" render="Label" position="20,212" size="480,26" font="Regular;23" />
+               <widget name="config" position="20,254" size="480,20" />
+               <widget source="cancelable" render="Pixmap" pixmap="skin_default/buttons/red.png" position="20,300" size="140,40" alphatest="on" >
+                       <convert type="ConditionalShowHide" />
+               </widget>
+               <widget source="cancelable" render="FixedLabel" text="Cancel" position="20,300" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" >
+                       <convert type="ConditionalShowHide" />
+               </widget>
+               <widget source="finished" render="Pixmap" pixmap="skin_default/buttons/green.png" position="190,300" size="140,40" alphatest="on" >
+                       <convert type="ConditionalShowHide" />
+               </widget>
+               <widget source="finished" render="FixedLabel" text="OK" font="Regular;20" halign="center" valign="center" position="190,300" size="140,40" transparent="1" backgroundColor="#1f771f" >
+                       <convert type="ConditionalShowHide" />
+               </widget>
+               <widget source="backgroundable" render="Pixmap" pixmap="skin_default/buttons/blue.png" position="360,300" size="140,40" alphatest="on" >
+                       <convert type="ConditionalShowHide" />
+               </widget>
+               <widget source="backgroundable" render="FixedLabel" text="Continue in background" font="Regular;20" halign="center" valign="center" position="360,300" size="140,40" transparent="1" backgroundColor="#18188b" >
+                       <convert type="ConditionalShowHide" />
+               </widget>
+       </screen>
+       <!-- VirtualKeyBoard -->
+       <screen name="VirtualKeyBoard" position="center,center" size="560,350" zPosition="99" title="Virtual KeyBoard">
+               <ePixmap pixmap="skin_default/vkey_text.png" position="9,35" zPosition="-4" size="542,52" alphatest="on" />
+               <widget name="header" position="10,10" size="500,20" font="Regular;20" transparent="1" noWrap="1" />
+               <widget name="text" position="12,35" size="536,46" font="Regular;46" transparent="1" noWrap="1" halign="right" />
+               <widget name="list" position="10,100" size="540,225" selectionDisabled="1" transparent="1" />
+       </screen>
+       <!-- FileBrowser -->
+       <screen name="FileBrowser" position="center,center" size="520,430" title="DVD File Browser" >
+               <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+               <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+               <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+               <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+               <widget name="filelist" position="5,50" size="510,370" scrollbarMode="showOnDemand" />
+       </screen>
 
        <!-- LCD/OLED Screens -->
 
        <!-- LCD screen (channelselection) -->
-       <screen name="ChannelSelection_summary" position="0,0" size="132,64">
+       <screen name="ChannelSelection_summary" position="0,0" size="132,64" id="1">
                <widget source="parent.ServiceEvent" render="Label" position="6,0" size="120,25" font="Regular;14" halign="center" valign="center" >
                        <convert type="ServiceName">Name</convert>
                </widget>
@@ -1071,9 +1109,21 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
                <widget source="global.CurrentTime" render="Label" position="100,34" zPosition="1" size="26,30" font="Regular;16" valign="top">
                        <convert type="ClockToText">Format:%S</convert>
                </widget>
+       </screen> 
+       <!-- Color OLED screen (ChannelSelection) -->
+       <screen name="ChannelSelection_summary" position="0,0" size="96,64" id="2">
+               <widget source="parent.ServiceEvent" render="Label" position="0,0" size="96,28" font="Regular;16" halign="center" valign="center" >
+                       <convert type="ServiceName">Name</convert>
+               </widget>
+               <widget source="session.Event_Now" render="Progress" position="0,30" size="96,8" borderWidth="1" backgroundColor="dark">
+                       <convert type="EventTime">Progress</convert>
+               </widget>
+               <widget source="global.CurrentTime" render="Label" position="0,38" size="96,26" font="Regular;32" halign="center" valign="center" foregroundColor="#FFFFFF" backgroundColor="#000000" >
+                       <convert type="ClockToText">Format:%H:%M</convert>
+               </widget>
        </screen>
        <!-- LCD screen (main) -->
-       <screen name="InfoBarSummary" position="0,0" size="132,64">
+       <screen name="InfoBarSummary" position="0,0" size="132,64" id="1">
                <widget source="session.CurrentService" render="Label" position="6,0" size="120,25" font="Regular;14" halign="center" valign="center" >
                        <convert type="ServiceName">Name</convert>
                </widget>
@@ -1091,15 +1141,24 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
                        <convert type="ConditionalShowHide">Blink</convert>
                </widget>
        </screen>
-       <!-- LCD screen (menus) -->
-       <screen name="MenuSummary" position="0,0" size="132,64">
-               <widget source="parent.title" render="Label" position="6,0" size="120,32" font="Regular;14" halign="center" valign="center"/>
-               <widget source="parent.menu" render="Label" position="6,32" size="120,32" font="Regular;16" halign="center" valign="center">
-                       <convert type="StringListSelection" />
+       <!-- Color OLED screen (main) -->
+       <screen name="InfoBarSummary" position="0,0" size="96,64" id="2">
+               <widget source="session.CurrentService" render="Label" position="0,0" size="96,28" font="Regular;16" halign="center" valign="center" >
+                       <convert type="ServiceName">Name</convert>
+               </widget>
+               <widget source="session.Event_Now" render="Progress" position="0,30" size="96,8" borderWidth="1" backgroundColor="dark">
+                       <convert type="EventTime">Progress</convert>
+               </widget>
+               <widget source="global.CurrentTime" render="Label" position="0,38" size="96,26" font="Regular;32" halign="center" valign="center" foregroundColor="#FFFFFF" backgroundColor="#000000" >
+                       <convert type="ClockToText">Format:%H:%M</convert>
+               </widget>
+               <widget source="session.RecordState" render="FixedLabel" text=" " position="0,38" zPosition="1" size="96,30">
+                       <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
+                       <convert type="ConditionalShowHide">Blink</convert>
                </widget>
        </screen>
        <!-- LCD screen (movieplayer) -->
-       <screen name="InfoBarMoviePlayerSummary" position="0,0" size="132,64">
+       <screen name="InfoBarMoviePlayerSummary" position="0,0" size="132,64" id="1">
                <widget source="session.CurrentService" render="Label" position="6,0" size="120,25" font="Regular;14" halign="center" valign="center" >
                        <convert type="ServiceName">Name</convert>
                </widget>
@@ -1114,18 +1173,88 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
                        <convert type="ConditionalShowHide">Blink</convert>
                </widget>
        </screen>
+       <!-- Color OLED screen (movieplayer) -->
+       <screen name="InfoBarMoviePlayerSummary" position="0,0" size="96,64" id="2">
+               <widget source="session.CurrentService" render="Label" position="0,0" size="96,28" font="Regular;16" halign="center" valign="center" >
+                       <convert type="ServiceName">Name</convert>
+               </widget>
+               <widget source="session.Event_Now" render="Progress" position="0,30" size="96,8" borderWidth="1" backgroundColor="dark">
+                       <convert type="EventTime">Progress</convert>
+               </widget>
+               <widget source="global.CurrentTime" render="Label" position="0,38" size="96,26" font="Regular;32" halign="center" valign="center" foregroundColor="#FFFFFF" backgroundColor="#000000" >
+                       <convert type="ClockToText">Format:%H:%M</convert>
+               </widget>
+               <widget source="session.RecordState" render="FixedLabel" text=" " position="0,38" zPosition="1" size="96,30">
+                       <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
+                       <convert type="ConditionalShowHide">Blink</convert>
+               </widget>
+       </screen>
+       <!-- LCD screen (ChoiceBox) -->
+       <screen name="ChoiceBox_summary" position="0,0" size="132,64" id="1">
+               <widget source="parent.summary_list" render="Label" position="6,0" size="126,64" font="Regular;11" />
+       </screen>
+       <!-- Color OLED screen (ChoiceBox) -->
+       <screen name="ChoiceBox_summary" position="0,0" size="96,64" id="2">
+               <widget source="parent.summary_list" render="Label" position="0,0" size="96,64" font="Regular;10" />
+       </screen>       
+       <!-- LCD screen (MessageBox) -->
+       <screen name="MessageBox_summary" position="0,0" size="132,64" id="1">
+               <widget source="parent.Text" render="Label" position="0,0" size="132,52" font="Regular;11" halign="center" valign="center" />
+               <widget source="parent.selectedChoice" render="Label" position="6,50" size="120,14" font="Regular;14" halign="center" valign="center" />
+       </screen>
+       <!-- Color OLED screen (MessageBox) -->
+       <screen name="MessageBox_summary" position="0,0" size="96,64" id="2">
+               <widget source="parent.Text" render="Label" position="0,0" size="96,52" font="Regular;10" halign="center" valign="center" />
+               <widget source="parent.selectedChoice" render="Label" position="0,50" size="96,14" font="Regular;12" halign="center" valign="center" />
+       </screen>
+       <!-- LCD screen (menus) -->
+       <screen name="MenuSummary" position="0,0" size="132,64" id="1">
+               <widget source="parent.title" render="Label" position="6,0" size="120,32" font="Regular;14" halign="center" valign="center"/>
+               <widget source="parent.menu" render="Label" position="6,32" size="120,32" font="Regular;16" halign="center" valign="center">
+                       <convert type="StringListSelection" />
+               </widget>
+       </screen> 
+       <!-- Color OLED screen (menus) -->
+       <screen name="MenuSummary" position="0,0" size="96,64" id="2">
+               <widget source="parent.title" render="Label" position="0,0" size="96,32" font="Regular;15" halign="center" valign="center"/>
+               <widget source="parent.menu" render="Label" position="0,32" size="96,32" font="Regular;16" halign="center" valign="top">
+                       <convert type="StringListSelection" />
+               </widget>
+       </screen>       
+       <!-- LCD screen (ServiceScan) -->
+       <screen name="ServiceScanSummary" position="0,0" size="132,64" id="1">
+               <widget name="Title" position="6,4" size="120,42" font="Regular;16" transparent="1" />
+               <widget name="Service" position="6,22" size="120,26" font="Regular;12" transparent="1" />
+               <widget name="scan_progress" position="6,50" zPosition="1" borderWidth="1" size="56,12" backgroundColor="dark" />
+       </screen>
+       <!-- Color OLED screen (ServiceScan) -->
+       <screen name="ServiceScanSummary" position="0,0" size="96,64" id="2">
+               <widget name="Title" position="0,0" size="96,30" font="Regular;14" transparent="1" />
+               <widget name="Service" position="0,30" size="96,20" font="Regular;10" transparent="1" />
+               <widget name="scan_progress" position="0,50" zPosition="1" borderWidth="1" size="96,12" backgroundColor="dark" />
+       </screen>
        <!-- LCD screen (setup) -->
-       <screen name="SetupSummary" position="0,0" size="132,64">
+       <screen name="SetupSummary" position="0,0" size="132,64" id="1">
                <widget source="SetupTitle" render="Label" position="6,0" size="120,16" font="Regular;12" />
                <widget source="SetupEntry" render="Label" position="6,16" size="120,32" font="Regular;12" />
                <widget source="SetupValue" render="Label" position="6,48" size="120,16" font="Regular;12" />
        </screen>
+       <!-- Color OLED screen (setup) -->
+       <screen name="SetupSummary" position="0,0" size="96,64" id="2">
+               <widget source="SetupTitle" render="Label" position="0,0" size="96,16" font="Regular;10" />
+               <widget source="SetupEntry" render="Label" position="0,16" size="96,32" font="Regular;10" />
+               <widget source="SetupValue" render="Label" position="0,48" size="96,16" font="Regular;10" />
+       </screen>
        <!-- LCD screen (misc) -->
-       <screen name="SimpleSummary" position="0,0" size="132,64">
+       <screen name="SimpleSummary" position="0,0" size="132,64" id="1">
                <widget source="parent.Title" render="Label" position="6,0" size="120,64" font="Regular;16" halign="center" valign="center" />
        </screen>
+       <!-- Color OLED screen (misc) -->
+       <screen name="SimpleSummary" position="0,0" size="96,64" id="2">
+               <widget source="parent.Title" render="Label" position="0,0" size="96,64" font="Regular;14" halign="center" valign="center" />
+       </screen>
        <!-- LCD screen (standby) -->
-       <screen name="StandbySummary" position="0,0" size="132,64">
+       <screen name="StandbySummary" position="0,0" size="132,64" id="1">
                <widget source="global.CurrentTime" render="Label" position="6,0" size="120,64" font="Regular;40" halign="center" valign="center">
                        <convert type="ClockToText">Format:%H:%M</convert>
                </widget>
@@ -1134,37 +1263,18 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
                        <convert type="ConditionalShowHide">Blink</convert>
                </widget>
        </screen>
-       <!-- JobView -->
-       <screen name="JobView" position="center,center" size="520,350" title="Job View">
-               <widget source="job_name" render="Label" position="20,12" size="480,60" font="Regular;28" />
-               <widget source="job_task" render="Label" position="20,90" size="480,50" font="Regular;23" />
-               <widget source="job_progress" render="Progress" position="20,162" size="480,36" borderWidth="2" backgroundColor="#254f7497" />
-               <widget source="job_progress" render="Label" position="120,166" size="280,32" font="Regular;28" foregroundColor="#000000" zPosition="2" halign="center" transparent="1"  >
-                       <convert type="ProgressToText" />
-               </widget>
-               <widget source="job_status" render="Label" position="20,212" size="480,26" font="Regular;23" />
-               <widget name="config" position="20,254" size="480,20" />
-               <widget source="cancelable" render="Pixmap" pixmap="skin_default/buttons/red.png" position="20,300" size="140,40" alphatest="on" >
-                       <convert type="ConditionalShowHide" />
-               </widget>
-               <widget source="cancelable" render="FixedLabel" text="Cancel" position="20,300" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" >
-                       <convert type="ConditionalShowHide" />
-               </widget>
-               <widget source="finished" render="Pixmap" pixmap="skin_default/buttons/green.png" position="190,300" size="140,40" alphatest="on" >
-                       <convert type="ConditionalShowHide" />
-               </widget>
-               <widget source="finished" render="FixedLabel" text="OK" font="Regular;20" halign="center" valign="center" position="190,300" size="140,40" transparent="1" backgroundColor="#1f771f" >
-                       <convert type="ConditionalShowHide" />
-               </widget>
-               <widget source="backgroundable" render="Pixmap" pixmap="skin_default/buttons/blue.png" position="360,300" size="140,40" alphatest="on" >
-                       <convert type="ConditionalShowHide" />
+       <!-- Color OLED screen (standby) -->
+       <screen name="StandbySummary" position="0,0" size="96,64" id="2">
+               <widget source="global.CurrentTime" render="Label" position="0,0" size="96,64" font="Regular;38" halign="center" valign="center">
+                       <convert type="ClockToText">Format:%H:%M</convert>
                </widget>
-               <widget source="backgroundable" render="FixedLabel" text="Continue in background" font="Regular;20" halign="center" valign="center" position="360,300" size="140,40" transparent="1" backgroundColor="#18188b" >
-                       <convert type="ConditionalShowHide" />
+               <widget source="session.RecordState" render="FixedLabel" position="0,0" zPosition="1" size="96,64" text=" ">
+                       <convert type="ConfigEntryTest">config.usage.blinking_display_clock_during_recording,True,CheckSourceBoolean</convert>
+                       <convert type="ConditionalShowHide">Blink</convert>
                </widget>
        </screen>
-       <!-- JobView Summary -->
-       <screen name="JobView_summary" position="0,0" size="132,64">
+       <!-- LCD screen (JobView) -->
+       <screen name="JobView_summary" position="0,0" size="132,64" id="1">
                <widget source="parent.summary_job_name" render="Label" position="6,4" size="120,42" font="Regular;16" />
                <widget source="parent.summary_job_task" render="Label" position="6,22" size="120,26" font="Regular;12" />
                <widget source="parent.summary_job_progress" render="Progress" position="6,50" size="60,12" borderWidth="1" zPosition="1" />
@@ -1172,19 +1282,28 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
                        <convert type="ProgressToText" />
                </widget>
        </screen>
-       <!-- VirtualKeyBoard -->
-       <screen name="VirtualKeyBoard" position="center,center" size="560,350" zPosition="99" title="Virtual KeyBoard">
-               <ePixmap pixmap="skin_default/vkey_text.png" position="9,35" zPosition="-4" size="542,52" alphatest="on" />
-               <widget name="header" position="10,10" size="500,20" font="Regular;20" transparent="1" noWrap="1" />
-               <widget name="text" position="12,35" size="536,46" font="Regular;46" transparent="1" noWrap="1" halign="right" />
-               <widget name="list" position="10,100" size="540,225" selectionDisabled="1" transparent="1" />
+       <!-- Color OLED screen (JobView) -->
+       <screen name="JobView_summary" position="0,0" size="96,64" id="2">
+               <widget source="parent.summary_job_name" render="Label" position="0,4" size="96,42" font="Regular;14" />
+               <widget source="parent.summary_job_task" render="Label" position="0,22" size="96,26" font="Regular;10" />
+               <widget source="parent.summary_job_progress" render="Progress" position="0,50" size="60,12" borderWidth="1" zPosition="1" />
+               <widget source="parent.summary_job_progress" render="Label" position="60,50" size="36,12" font="Regular;10" zPosition="2" halign="center" transparent="1"  >
+                       <convert type="ProgressToText" />
+               </widget>
        </screen>
-       <!-- FileBrowser -->
-       <screen name="FileBrowser" position="center,center" size="520,430" title="DVD File Browser" >
-               <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
-               <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
-               <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
-               <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
-               <widget name="filelist" position="5,50" size="510,370" scrollbarMode="showOnDemand" />
+       <!-- LCD screen (Wizard) -->
+       <screen name="WizardSummary" position="0,0" size="132,64" id="1">
+               <widget source="text" render="Label" position="6,0" size="120,16" font="Regular;16" transparent="1" />
+               <widget source="parent.list" render="Label" position="6,18" size="120,46" font="Regular;12">
+                       <convert type="StringListSelection" />
+               </widget>
        </screen>
+       <!-- Color OLED screen (Wizard) -->
+       <screen name="WizardSummary" position="0,0" size="96,64" id="2">
+               <widget source="text" render="Label" position="0,0" size="96,16" font="Regular;14" transparent="1" />
+               <widget source="parent.list" render="Label" position="0,18" size="96,46" font="Regular;12">
+                       <convert type="StringListSelection" />
+               </widget>
+       </screen>
+
 </skin>
index 836851c50fb2a582d9183278a233b666d5c05ca8..40d441861d97d5afcffd4f064464961c192fb617 100644 (file)
@@ -96,6 +96,8 @@ eDVBResourceManager::eDVBResourceManager()
                m_boxtype = DM800;
        else if (!strncmp(tmp, "dm500hd\n", rd))
                m_boxtype = DM500HD;
+       else if (!strncmp(tmp, "dm800se\n", rd))
+               m_boxtype = DM800SE;
        else {
                eDebug("boxtype detection via /proc/stb/info not possible... use fallback via demux count!\n");
                if (m_demux.size() == 3)
@@ -455,7 +457,7 @@ RESULT eDVBResourceManager::allocateDemux(eDVBRegisteredFrontend *fe, ePtr<eDVBA
 
        ePtr<eDVBRegisteredDemux> unused;
 
-       if (m_boxtype == DM800 || m_boxtype == DM500HD) // dm800 / 500hd
+       if (m_boxtype == DM800 || m_boxtype == DM500HD || m_boxtype == DM800SE) // dm800 / 500hd
        {
                cap |= capHoldDecodeReference; // this is checked in eDVBChannel::getDemux
                for (; i != m_demux.end(); ++i, ++n)
index 405bd55762ceef7a7d9d81cbf861e1d5a554af48..fb925807e5a8ce46da3c370d93620218eb8dcc2d 100644 (file)
@@ -135,7 +135,7 @@ class eDVBResourceManager: public iObject, public Object
        DECLARE_REF(eDVBResourceManager);
        int avail, busy;
 
-       enum { DM7025, DM800, DM500HD, DM8000 };
+       enum { DM7025, DM800, DM500HD, DM800SE, DM8000 };
 
        int m_boxtype;
 
index 967c1df63b398373aae05e29c0511e469e96db73..a5db43a9e3af99765f12ae4e91d933c5d38c1899 100644 (file)
@@ -6,6 +6,11 @@
 #include <pthread.h>
 #include <sys/types.h>
 #include <unistd.h>
+#include <byteswap.h>
+
+#ifndef BYTE_ORDER
+#error "no BYTE_ORDER defined!"
+#endif
 
 // use this for init Freetype...
 #include <ft2build.h>
@@ -766,8 +771,9 @@ void eTextPara::blit(gDC &dc, const ePoint &offset, const gRGB &background, cons
        gColor *lookup8, lookup8_invert[16];
        gColor *lookup8_normal=0;
 
+       __u16 lookup16_normal[16], lookup16_invert[16], *lookup16;
        __u32 lookup32_normal[16], lookup32_invert[16], *lookup32;
-       
+
        if (surface->bpp == 8)
        {
                if (surface->clut.data)
@@ -781,10 +787,33 @@ void eTextPara::blit(gDC &dc, const ePoint &offset, const gRGB &background, cons
                        opcode=0;
                } else
                        opcode=1;
+       } else if (surface->bpp == 16)
+       {
+               opcode=2;
+               for (int i=0; i<16; ++i)
+               {
+#define BLEND(y, x, a) (y + (((x-y) * a)>>8))
+                       unsigned char da = background.a, dr = background.r, dg = background.g, db = background.b;
+                       int sa = i * 16;
+                       if (sa < 256)
+                       {
+                               dr = BLEND(background.r, foreground.r, sa) & 0xFF;
+                               dg = BLEND(background.g, foreground.g, sa) & 0xFF;
+                               db = BLEND(background.b, foreground.b, sa) & 0xFF;
+                       }
+#undef BLEND
+#if BYTE_ORDER == LITTLE_ENDIAN
+                       lookup16_normal[i] = bswap_16(((db >> 3) << 11) | ((dg >> 2) << 5) | (dr >> 3));
+#else
+                       lookup16_normal[i] = ((db >> 3) << 11) | ((dg >> 2) << 5) | (dr >> 3);
+#endif
+                       da ^= 0xFF;
+               }
+               for (int i=0; i<16; ++i)
+                       lookup16_invert[i]=lookup16_normal[i^0xF];
        } else if (surface->bpp == 32)
        {
                opcode=3;
-
                for (int i=0; i<16; ++i)
                {
 #define BLEND(y, x, a) (y + (((x-y) * a)>>8))
@@ -809,7 +838,7 @@ void eTextPara::blit(gDC &dc, const ePoint &offset, const gRGB &background, cons
                eWarning("can't render to %dbpp", surface->bpp);
                return;
        }
-       
+
        gRegion area(eRect(0, 0, surface->x, surface->y));
        gRegion clip = dc.getClip() & area;
 
@@ -835,10 +864,12 @@ void eTextPara::blit(gDC &dc, const ePoint &offset, const gRGB &background, cons
                        if (!(i->flags & GS_INVERT))
                        {
                                lookup8 = lookup8_normal;
+                               lookup16 = lookup16_normal;
                                lookup32 = lookup32_normal;
                        } else
                        {
                                lookup8 = lookup8_invert;
+                               lookup16 = lookup16_invert;
                                lookup32 = lookup32_invert;
                        }
 
@@ -873,46 +904,76 @@ void eTextPara::blit(gDC &dc, const ePoint &offset, const gRGB &background, cons
                                d+=diff*buffer_stride;
                        }
                        if (sx>0)
-                               for (int ay=0; ay<sy; ay++)
-                               {
-                                       if (!opcode)            // 4bit lookup to 8bit
+                       {
+                               switch(opcode) {
+                               case 0: // 4bit lookup to 8bit
+                                       for (int ay=0; ay<sy; ay++)
                                        {
                                                register __u8 *td=d;
                                                register int ax;
-                                               
                                                for (ax=0; ax<sx; ax++)
-                                               {       
+                                               {
                                                        register int b=(*s++)>>4;
                                                        if(b)
                                                                *td++=lookup8[b];
                                                        else
                                                                td++;
                                                }
-                                       } else if (opcode == 1) // 8bit direct
+                                               s+=glyph_bitmap->pitch-sx;
+                                               d+=buffer_stride;
+                                       }
+                                       break;
+                               case 1: // 8bit direct
+                                       for (int ay=0; ay<sy; ay++)
                                        {
                                                register __u8 *td=d;
                                                register int ax;
                                                for (ax=0; ax<sx; ax++)
-                                               {       
+                                               {
                                                        register int b=*s++;
                                                        *td++^=b;
                                                }
-                                       } else
+                                               s+=glyph_bitmap->pitch-sx;
+                                               d+=buffer_stride;
+                                       }
+                                       break;
+                               case 2: // 16bit
+                                       for (int ay=0; ay<sy; ay++)
+                                       {
+                                               register __u16 *td=(__u16*)d;
+                                               register int ax;
+                                               for (ax=0; ax<sx; ax++)
+                                               {
+                                                       register int b=(*s++)>>4;
+                                                       if(b)
+                                                               *td++=lookup16[b];
+                                                       else
+                                                               td++;
+                                               }
+                                               s+=glyph_bitmap->pitch-sx;
+                                               d+=buffer_stride;
+                                       }
+                                       break;
+                               case 3: // 32bit
+                                       for (int ay=0; ay<sy; ay++)
                                        {
                                                register __u32 *td=(__u32*)d;
                                                register int ax;
                                                for (ax=0; ax<sx; ax++)
-                                               {       
+                                               {
                                                        register int b=(*s++)>>4;
                                                        if(b)
                                                                *td++=lookup32[b];
                                                        else
                                                                td++;
                                                }
+                                               s+=glyph_bitmap->pitch-sx;
+                                               d+=buffer_stride;
                                        }
-                                       s+=glyph_bitmap->pitch-sx;
-                                       d+=buffer_stride;
+                               default:
+                                       break;
                                }
+                       }
                }
        }
 }
index 8612c70bb452b8b69baab55651bd4e27b280eab0..a593cfa3e7938cb6e4cde89accbbb407e7fb23cb 100644 (file)
@@ -14,13 +14,13 @@ gLCDDC::gLCDDC()
 
        surface.x=lcd->size().width();
        surface.y=lcd->size().height();
-       surface.bpp=8;
-       surface.bypp=1;
        surface.stride=lcd->stride();
+       surface.bypp=surface.stride / surface.x;
+       surface.bpp=surface.bypp*8;
        surface.data=lcd->buffer();
-
-       surface.clut.colors=256;
+       surface.clut.colors=0;
        surface.clut.data=0;
+
        m_pixmap = new gPixmap(&surface);
 }
 
index 3e64310865ff2683340ff0584607ef9caa8a0ddd..0e8d39ecbc8cdb53011cb29ff1022d097eeaeece 100644 (file)
@@ -3,6 +3,11 @@
 #include <lib/gdi/gpixmap.h>
 #include <lib/gdi/region.h>
 #include <lib/gdi/accel.h>
+#include <byteswap.h>
+
+#ifndef BYTE_ORDER
+#error "no BYTE_ORDER defined!"
+#endif
 
 gLookup::gLookup()
        :size(0), lookup(0)
@@ -154,6 +159,26 @@ void gPixmap::fill(const gRegion &region, const gColor &color)
                {
                        for (int y=area.top(); y<area.bottom(); y++)
                                memset(((__u8*)surface->data)+y*surface->stride+area.left(), color.color, area.width());
+               } else if (surface->bpp == 16)
+               {
+                       __u32 icol;
+
+                       if (surface->clut.data && color < surface->clut.colors)
+                               icol=(surface->clut.data[color].a<<24)|(surface->clut.data[color].r<<16)|(surface->clut.data[color].g<<8)|(surface->clut.data[color].b);
+                       else
+                               icol=0x10101*color;
+#if BYTE_ORDER == LITTLE_ENDIAN
+                       __u16 col = bswap_16(((icol & 0xFF) >> 3) << 11 | ((icol & 0xFF00) >> 10) << 5 | (icol & 0xFF0000) >> 19);
+#else
+                       __u16 col = ((icol & 0xFF) >> 3) << 11 | ((icol & 0xFF00) >> 10) << 5 | (icol & 0xFF0000) >> 19;
+#endif
+                       for (int y=area.top(); y<area.bottom(); y++)
+                       {
+                               __u16 *dst=(__u16*)(((__u8*)surface->data)+y*surface->stride+area.left()*surface->bypp);
+                               int x=area.width();
+                               while (x--)
+                                       *dst++=col;
+                       }
                } else if (surface->bpp == 32)
                {
                        __u32 col;
@@ -208,18 +233,33 @@ void gPixmap::fill(const gRegion &region, const gRGB &color)
                                while (x--)
                                        *dst++=col;
                        }
+               } else if (surface->bpp == 16)
+               {
+                       __u32 icol = color.argb();
+#if BYTE_ORDER == LITTLE_ENDIAN
+                       __u16 col = bswap_16(((icol & 0xFF) >> 3) << 11 | ((icol & 0xFF00) >> 10) << 5 | (icol & 0xFF0000) >> 19);
+#else
+                       __u16 col = ((icol & 0xFF) >> 3) << 11 | ((icol & 0xFF00) >> 10) << 5 | (icol & 0xFF0000) >> 19;
+#endif
+                       for (int y=area.top(); y<area.bottom(); y++)
+                       {
+                               __u16 *dst=(__u16*)(((__u8*)surface->data)+y*surface->stride+area.left()*surface->bypp);
+                               int x=area.width();
+                               while (x--)
+                                       *dst++=col;
+                       }
                }       else
                        eWarning("couldn't rgbfill %d bpp", surface->bpp);
        }
 }
 
-static void blit_8i_to_32(__u32 *dst, __u8 *src, __u32 *pal, int width)
+static inline void blit_8i_to_32(__u32 *dst, __u8 *src, __u32 *pal, int width)
 {
        while (width--)
                *dst++=pal[*src++];
 }
 
-static void blit_8i_to_32_at(__u32 *dst, __u8 *src, __u32 *pal, int width)
+static inline void blit_8i_to_32_at(__u32 *dst, __u8 *src, __u32 *pal, int width)
 {
        while (width--)
        {
@@ -232,6 +272,25 @@ static void blit_8i_to_32_at(__u32 *dst, __u8 *src, __u32 *pal, int width)
        }
 }
 
+static inline void blit_8i_to_16(__u16 *dst, __u8 *src, __u32 *pal, int width)
+{
+       while (width--)
+               *dst++=pal[*src++] & 0xFFFF;
+}
+
+static inline void blit_8i_to_16_at(__u16 *dst, __u8 *src, __u32 *pal, int width)
+{
+       while (width--)
+       {
+               if (!(pal[*src]&0x80000000))
+               {
+                       src++;
+                       dst++;
+               } else
+                       *dst++=pal[*src++] & 0xFFFF;
+       }
+}
+
                /* WARNING, this function is not endian safe! */
 static void blit_8i_to_32_ab(__u32 *dst, __u8 *src, __u32 *pal, int width)
 {
@@ -441,6 +500,95 @@ void gPixmap::blit(const gPixmap &src, const eRect &_pos, const gRegion &clip, i
                                srcptr+=src.surface->stride;
                                dstptr+=surface->stride;
                        }
+               } else if ((surface->bpp == 16) && (src.surface->bpp==8))
+               {
+                       __u8 *srcptr=(__u8*)src.surface->data;
+                       __u8 *dstptr=(__u8*)surface->data; // !!
+                       __u32 pal[256];
+
+                       for (int i=0; i<256; ++i)
+                       {
+                               __u32 icol;
+                               if (src.surface->clut.data && (i<src.surface->clut.colors))
+                                       icol=(src.surface->clut.data[i].a<<24)|(src.surface->clut.data[i].r<<16)|(src.surface->clut.data[i].g<<8)|(src.surface->clut.data[i].b);
+                               else
+                                       icol=0x010101*i;
+#if BYTE_ORDER == LITTLE_ENDIAN
+                               pal[i] = bswap_16(((icol & 0xFF) >> 3) << 11 | ((icol & 0xFF00) >> 10) << 5 | (icol & 0xFF0000) >> 19);
+#else
+                               pal[i] = ((icol & 0xFF) >> 3) << 11 | ((icol & 0xFF00) >> 10) << 5 | (icol & 0xFF0000) >> 19;
+#endif
+                               pal[i]^=0xFF000000;
+                       }
+
+                       srcptr+=srcarea.left()*src.surface->bypp+srcarea.top()*src.surface->stride;
+                       dstptr+=area.left()*surface->bypp+area.top()*surface->stride;
+
+                       if (flag & blitAlphaBlend)
+                               eWarning("ignore unsupported 8bpp -> 16bpp alphablend!");
+
+                       for (int y=0; y<area.height(); y++)
+                       {
+                               int width=area.width();
+                               unsigned char *psrc=(unsigned char*)srcptr;
+                               __u16 *dst=(__u16*)dstptr;
+                               if (flag & blitAlphaTest)
+                                       blit_8i_to_16_at(dst, psrc, pal, width);
+                               else
+                                       blit_8i_to_16(dst, psrc, pal, width);
+                               srcptr+=src.surface->stride;
+                               dstptr+=surface->stride;
+                       }
+               } else if ((surface->bpp == 16) && (src.surface->bpp==32))
+               {
+                       __u8 *srcptr=(__u8*)src.surface->data;
+                       __u8 *dstptr=(__u8*)surface->data;
+
+                       srcptr+=srcarea.left()+srcarea.top()*src.surface->stride;
+                       dstptr+=area.left()+area.top()*surface->stride;
+
+                       if (flag & blitAlphaBlend)
+                               eWarning("ignore unsupported 32bpp -> 16bpp alphablend!");
+
+                       for (int y=0; y<area.height(); y++)
+                       {
+                               int width=area.width();
+                               __u32 *srcp=(__u32*)srcptr;
+                               __u16 *dstp=(__u16*)dstptr;
+
+                               if (flag & blitAlphaTest)
+                               {
+                                       while (width--)
+                                       {
+                                               if (!((*srcp)&0xFF000000))
+                                               {
+                                                       srcp++;
+                                                       dstp++;
+                                               } else
+                                               {
+                                                       __u32 icol = *srcp++;
+#if BYTE_ORDER == LITTLE_ENDIAN
+                                                       *dstp++ = bswap_16(((icol & 0xFF) >> 3) << 11 | ((icol & 0xFF00) >> 10) << 5 | (icol & 0xFF0000) >> 19);
+#else
+                                                       *dstp++ = ((icol & 0xFF) >> 3) << 11 | ((icol & 0xFF00) >> 10) << 5 | (icol & 0xFF0000) >> 19;
+#endif
+                                               }
+                                       }
+                               } else
+                               {
+                                       while (width--)
+                                       {
+                                               __u32 icol = *srcp++;
+#if BYTE_ORDER == LITTLE_ENDIAN
+                                               *dstp++ = bswap_16(((icol & 0xFF) >> 3) << 11 | ((icol & 0xFF00) >> 10) << 5 | (icol & 0xFF0000) >> 19);
+#else
+                                               *dstp++ = ((icol & 0xFF) >> 3) << 11 | ((icol & 0xFF00) >> 10) << 5 | (icol & 0xFF0000) >> 19;
+#endif
+                                       }
+                               }
+                               srcptr+=src.surface->stride;
+                               dstptr+=surface->stride;
+                       }
                } else
                        eWarning("cannot blit %dbpp from %dbpp", surface->bpp, src.surface->bpp);
        }
@@ -488,27 +636,34 @@ static inline int sgn(int a)
 void gPixmap::line(const gRegion &clip, ePoint start, ePoint dst, gColor color)
 {
        __u8 *srf8 = 0;
-       __u32 *srf32 = 0; 
+       __u16 *srf16 = 0;
+       __u32 *srf32 = 0;
        int stride = surface->stride;
-       
+
        if (clip.rects.empty())
                return;
-               
+
+       __u16 col16;
        __u32 col = 0;
        if (surface->bpp == 8)
-       {
                srf8 = (__u8*)surface->data;
-       } else if (surface->bpp == 32)
+       else
        {
                srf32 = (__u32*)surface->data;
-               
                if (surface->clut.data && color < surface->clut.colors)
                        col=(surface->clut.data[color].a<<24)|(surface->clut.data[color].r<<16)|(surface->clut.data[color].g<<8)|(surface->clut.data[color].b);
                else
                        col=0x10101*color;
-               col^=0xFF000000;                        
+               col^=0xFF000000;
        }
-       
+
+       if (surface->bpp == 16)
+#if BYTE_ORDER == LITTLE_ENDIAN
+               col16=bswap_16(((col & 0xFF) >> 3) << 11 | ((col & 0xFF00) >> 10) << 5 | (col & 0xFF0000) >> 19);
+#else
+               col16=((col & 0xFF) >> 3) << 11 | ((col & 0xFF00) >> 10) << 5 | (col & 0xFF0000) >> 19;
+#endif
+
        int xa = start.x(), ya = start.y(), xb = dst.x(), yb = dst.y();
        int dx, dy, x, y, s1, s2, e, temp, swap, i;
        dy=abs(yb-ya);
@@ -526,7 +681,7 @@ void gPixmap::line(const gRegion &clip, ePoint start, ePoint dst, gColor color)
        } else
                swap=0;
        e = 2*dy-dx;
-       
+
        int lasthit = 0;
        for(i=1; i<=dx; i++)
        {
@@ -563,20 +718,25 @@ void gPixmap::line(const gRegion &clip, ePoint start, ePoint dst, gColor color)
                        } while (!clip.rects[a].contains(x, y));
                        lasthit = a;
                }
-               
+
                if (srf8)
                        srf8[y * stride + x] = color;
-               if (srf32)
+               else if (srf16)
+                       srf16[y * stride/2 + x] = col16;
+               else
                        srf32[y * stride/4 + x] = col;
 fail:
                while (e>=0)
                {
-                       if (swap==1) x+=s1;
-                       else y+=s2;
+                       if (swap==1)
+                               x+=s1;
+                       else
+                               y+=s2;
                        e-=2*dx;
                }
-    if (swap==1)
-       y+=s2;
+
+               if (swap==1)
+                       y+=s2;
                else
                        x+=s1;
                e+=2*dy;
index 0908d890994bc896091bf7844898ff1ce1c27ed0..a7dc22db19dc3fddebfc3c67e1ad71bae2871d5b 100644 (file)
 
 eDBoxLCD *eDBoxLCD::instance;
 
-eLCD::eLCD(eSize size): res(size)
+eLCD::eLCD()
 {
        lcdfd = -1;
        locked=0;
-       _buffer=new unsigned char[res.height()*res.width()];
-       memset(_buffer, 0, res.height()*res.width());
-       _stride=res.width();
+}
+
+void eLCD::setSize(int xres, int yres, int bpp)
+{
+       res = eSize(xres, yres);
+       _buffer=new unsigned char[xres * yres * bpp/8];
+       memset(_buffer, 0, res.height()*res.width()*bpp/8);
+       _stride=res.width()*bpp/8;
+       eDebug("lcd buffer %p %d bytes, stride %d", _buffer, xres*yres*bpp/8, _stride);
 }
 
 eLCD::~eLCD()
@@ -42,8 +48,9 @@ void eLCD::unlock()
        locked=0;
 }
 
-eDBoxLCD::eDBoxLCD(): eLCD(eSize(132, 64))
+eDBoxLCD::eDBoxLCD()
 {
+       int xres=132, yres=64, bpp=8;
        is_oled = 0;
 #ifndef NO_LCD
        lcdfd = open("/dev/dbox/oled0", O_RDWR);
@@ -75,13 +82,37 @@ eDBoxLCD::eDBoxLCD(): eLCD(eSize(132, 64))
                int i=LCD_MODE_BIN;
                ioctl(lcdfd, LCD_IOCTL_ASC_MODE, &i);
                inverted=0;
+               FILE *f = fopen("/proc/stb/lcd/xres", "r");
+               if (f)
+               {
+                       int tmp;
+                       if (fscanf(f, "%x", &tmp) == 1)
+                               xres = tmp;
+                       fclose(f);
+                       f = fopen("/proc/stb/lcd/yres", "r");
+                       if (f)
+                       {
+                               if (fscanf(f, "%x", &tmp) == 1)
+                                       yres = tmp;
+                               fclose(f);
+                               f = fopen("/proc/stb/lcd/bpp", "r");
+                               if (f)
+                               {
+                                       if (fscanf(f, "%x", &tmp) == 1)
+                                               bpp = tmp;
+                                       fclose(f);
+                               }
+                       }
+                       is_oled = 3;
+               }
        }
+       setSize(xres, yres, bpp);
 }
 
 void eDBoxLCD::setInverted(unsigned char inv)
 {
        inverted=inv;
-       update();       
+       update();
 }
 
 int eDBoxLCD::setLCDContrast(int contrast)
@@ -145,42 +176,46 @@ eDBoxLCD *eDBoxLCD::getInstance()
 
 void eDBoxLCD::update()
 {
-       if (!is_oled || is_oled == 2)
+       if (lcdfd >= 0)
        {
-               unsigned char raw[132*8];
-               int x, y, yy;
-               for (y=0; y<8; y++)
+               if (!is_oled || is_oled == 2)
                {
-                       for (x=0; x<132; x++)
+                       unsigned char raw[132*8];
+                       int x, y, yy;
+                       for (y=0; y<8; y++)
                        {
-                               int pix=0;
-                               for (yy=0; yy<8; yy++)
+                               for (x=0; x<132; x++)
                                {
-                                       pix|=(_buffer[(y*8+yy)*132+x]>=108)<<yy;
+                                       int pix=0;
+                                       for (yy=0; yy<8; yy++)
+                                       {
+                                               pix|=(_buffer[(y*8+yy)*132+x]>=108)<<yy;
+                                       }
+                                       raw[y*132+x]=(pix^inverted);
                                }
-                               raw[y*132+x]=(pix^inverted);
                        }
-               }
-               if (lcdfd >= 0)
                        write(lcdfd, raw, 132*8);
-       } else
-       {
-               unsigned char raw[64*64];
-               int x, y;
-               memset(raw, 0, 64*64);
-               for (y=0; y<64; y++)
+               }
+               else if (is_oled == 3)
+                       write(lcdfd, _buffer, _stride * res.height());
+               else
                {
-                       int pix=0;
-                       for (x=0; x<128 / 2; x++)
+                       unsigned char raw[64*64];
+                       int x, y;
+                       memset(raw, 0, 64*64);
+                       for (y=0; y<64; y++)
                        {
-                               pix = (_buffer[y*132 + x * 2 + 2] & 0xF0) |(_buffer[y*132 + x * 2 + 1 + 2] >> 4);
-                               if (inverted)
-                                       pix = 0xFF - pix;
-                               raw[y*64+x] = pix;
+                               int pix=0;
+                               for (x=0; x<128 / 2; x++)
+                               {
+                                       pix = (_buffer[y*132 + x * 2 + 2] & 0xF0) |(_buffer[y*132 + x * 2 + 1 + 2] >> 4);
+                                       if (inverted)
+                                               pix = 0xFF - pix;
+                                       raw[y*64+x] = pix;
+                               }
                        }
-               }
-               if (lcdfd >= 0)
                        write(lcdfd, raw, 64*64);
+               }
        }
 }
 
index 99f921b525e16434bf6cb4dcf8c952b6a508f8d4..e7b4c2c47149be77d2d29de680c1ffc7379ba832 100644 (file)
 class eLCD
 {
 #ifdef SWIG
-       eLCD(eSize size);
+       eLCD();
        ~eLCD();
 #else
 protected:
+       void setSize(int xres, int yres, int bpp);
        eSize res;
        unsigned char *_buffer;
        int lcdfd;
@@ -29,12 +30,11 @@ public:
        int islocked() { return locked; }
        bool detected() { return lcdfd >= 0; }
 #ifndef SWIG
-       eLCD(eSize size);
+       eLCD();
        virtual ~eLCD();
        __u8 *buffer() { return (__u8*)_buffer; }
        int stride() { return _stride; }
        eSize size() { return res; }
-       
        virtual void update()=0;
 #endif
 };
index e092e82fba696d14004d9b32b3d5f6bd8700d581..64b4ae50d136d837bd84d3a1aead9c470621c310 100755 (executable)
@@ -88,8 +88,8 @@ class FileBrowser(Screen):
                self.close(None)
 
 class DVDSummary(Screen):
-       skin = """
-       <screen position="0,0" size="132,64">
+       skin = (
+       """<screen name="DVDSummary" position="0,0" size="132,64" id="1">
                <widget source="session.CurrentService" render="Label" position="5,4" size="120,28" font="Regular;12" transparent="1" >
                        <convert type="ServiceName">Name</convert>
                </widget>
@@ -101,7 +101,20 @@ class DVDSummary(Screen):
                <widget source="session.CurrentService" render="Progress" position="6,46" size="60,18" borderWidth="1" >
                        <convert type="ServicePosition">Position</convert>
                </widget>
-       </screen>"""
+       </screen>""",
+       """<screen name="DVDSummary" position="0,0" size="96,64" id="2">
+               <widget source="session.CurrentService" render="Label" position="0,0" size="96,25" font="Regular;12" transparent="1" >
+                       <convert type="ServiceName">Name</convert>
+               </widget>
+               <widget name="DVDPlayer" position="0,26" size="96,12" font="Regular;10" transparent="1" />
+               <widget name="Chapter" position="0,40" size="66,12" font="Regular;10" transparent="1" halign="left" />
+               <widget source="session.CurrentService" render="Label" position="66,40" size="30,12" font="Regular;10" transparent="1" halign="right" >
+                       <convert type="ServicePosition">Position</convert>
+               </widget>
+               <widget source="session.CurrentService" render="Progress" position="0,52" size="96,12" borderWidth="1" >
+                       <convert type="ServicePosition">Position</convert>
+               </widget>
+       </screen>""")
 
        def __init__(self, session, parent):
                Screen.__init__(self, session, parent)
index 036bbbb92ae3d65b0640976edc8c39dda5761894..28cf72387a9e5b96b2011d34f768916afde6da22 100755 (executable)
@@ -925,12 +925,17 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                                        self.clear_playlist()
 
 class MediaPlayerLCDScreen(Screen):
-       skin = """
-       <screen position="0,0" size="132,64" title="LCD Text">
+       skin = (
+       """<screen name="MediaPlayerLCDScreen" position="0,0" size="132,64" id="1">
                <widget name="text1" position="4,0" size="132,35" font="Regular;16"/>
                <widget name="text3" position="4,36" size="132,14" font="Regular;10"/>
                <widget name="text4" position="4,49" size="132,14" font="Regular;10"/>
-       </screen>"""
+       </screen>""",
+       """<screen name="MediaPlayerLCDScreen" position="0,0" size="96,64" id="2">
+               <widget name="text1" position="0,0" size="96,35" font="Regular;14"/>
+               <widget name="text3" position="0,36" size="96,14" font="Regular;10"/>
+               <widget name="text4" position="0,49" size="96,14" font="Regular;10"/>
+       </screen>""")
 
        def __init__(self, session, parent):
                Screen.__init__(self, session)
old mode 100644 (file)
new mode 100755 (executable)
index 8986560..7a0da85
@@ -39,13 +39,19 @@ class writeNAND(Task):
                        self.output_line = data
 
 class NFISummary(Screen):
-       skin = """
-       <screen position="0,0" size="132,64">
+       skin = (
+       """<screen name="NFISummary" position="0,0" size="132,64" id="1">
                <widget source="title" render="Label" position="2,0" size="120,14" valign="center" font="Regular;12" />
                <widget source="content" render="Label" position="2,14" size="120,34" font="Regular;12" transparent="1" zPosition="1"  />
-               <widget source="job_progresslabel" render="Label" position="66,50" size="60,14" font="Regular;12" transparent="1" halign="right" zPosition="0" />
                <widget source="job_progressbar" render="Progress" position="2,50" size="66,14" borderWidth="1" />
-       </screen>"""
+               <widget source="job_progresslabel" render="Label" position="66,50" size="60,14" font="Regular;12" transparent="1" halign="right" zPosition="0" />
+       </screen>""",
+       """<screen name="NFISummary" position="0,0" size="96,64" id="2">
+               <widget source="title" render="Label" position="0,0" size="96,14" valign="center" font="Regular;10" />
+               <widget source="content" render="Label" position="0,14" size="96,34" font="Regular;10" transparent="1" zPosition="1"  />
+               <widget source="job_progressbar" render="Progress" position="0,50" size="50,14" borderWidth="1" />
+               <widget source="job_progresslabel" render="Label" position="50,50" size="46,14" font="Regular;10" transparent="1" halign="right" zPosition="0" />
+       </screen>""")
 
        def __init__(self, session, parent):
                Screen.__init__(self, session, parent)
index e3b902f0935ee68ffa7133a880f0a0d4fc1910c1..59c50476e6551d43cf76c59fd733b101a96bf49d 100644 (file)
@@ -239,9 +239,9 @@ class VideoHardware:
                portlist = self.getPortList()
                for port in portlist:
                        descr = port
-                       if descr == 'DVI' and hw_type == 'dm500hd':
+                       if descr == 'DVI' and hw_type in ('dm500hd', 'dm800se'):
                                descr = 'HDMI'
-                       elif descr == 'DVI-PC' and hw_type == 'dm500hd':
+                       elif descr == 'DVI-PC' and hw_type in ('dm500hd', 'dm800se'):
                                descr = 'HDMI-PC'
                        lst.append((port, descr))
 
old mode 100644 (file)
new mode 100755 (executable)
index 15f4d51..9b9044e
@@ -12,14 +12,22 @@ from Tools.HardwareInfo import HardwareInfo
 config.misc.showtestcard = ConfigBoolean(default = False)
 
 class VideoWizardSummary(WizardSummary):
-       skin = """
-       <screen position="0,0" size="132,64">
+       skin = (
+       """<screen name="VideoWizardSummary" position="0,0" size="132,64" id="1">
                <widget name="text" position="6,4" size="120,40" font="Regular;12" transparent="1" />
                <widget source="parent.list" render="Label" position="6,40" size="120,21" font="Regular;14">
                        <convert type="StringListSelection" />
                </widget>
                <!--widget name="pic" pixmap="%s" position="6,22" zPosition="10" size="64,64" transparent="1" alphatest="on"/-->
-       </screen>""" #% (resolveFilename(SCOPE_PLUGINS, "SystemPlugins/Videomode/lcd_Scart.png"))
+       </screen>""",
+       """<screen name="VideoWizardSummary" position="0,0" size="96,64" id="2">
+               <widget name="text" position="0,4" size="96,40" font="Regular;12" transparent="1" />
+               <widget source="parent.list" render="Label" position="0,40" size="96,21" font="Regular;14">
+                       <convert type="StringListSelection" />
+               </widget>
+               <!--widget name="pic" pixmap="%s" position="0,22" zPosition="10" size="64,64" transparent="1" alphatest="on"/-->
+       </screen>""")
+       #% (resolveFilename(SCOPE_PLUGINS, "SystemPlugins/Videomode/lcd_Scart.png"))
        
        def __init__(self, session, parent):
                WizardSummary.__init__(self, session, parent)
@@ -82,7 +90,7 @@ class VideoWizard(WizardLanguage, Rc):
                for port in self.hw.getPortList():
                        if self.hw.isPortUsed(port):
                                descr = port
-                               if descr == 'DVI' and hw_type == 'dm500hd':
+                               if descr == 'DVI' and hw_type in ('dm500hd', 'dm800se'):
                                        descr = 'HDMI'
                                if port != "DVI-PC":
                                        list.append((descr,port))
@@ -100,7 +108,7 @@ class VideoWizard(WizardLanguage, Rc):
                self.inputSelect(self.selection)
                if self["portpic"].instance is not None:
                        picname = self.selection
-                       if picname == "DVI" and HardwareInfo().get_device_name() == "dm500hd":
+                       if picname == "DVI" and HardwareInfo().get_device_name() in ("dm500hd", "dm800se"):
                                picname = "HDMI"
                        self["portpic"].instance.setPixmapFromFile(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/Videomode/" + picname + ".png"))
                
index 3f420b4bb6ee2e996e5a863dc42d457fc8073ae5..b8554d582c1b72f6788002509a36ae3c6a4f698d 100644 (file)
@@ -172,11 +172,11 @@ int main(int argc, char **argv)
                eTextPara::forceReplacementGlyph(i);
 
        eWidgetDesktop dsk(eSize(720, 576));
-       eWidgetDesktop dsk_lcd(eSize(132, 64));
-       
+       eWidgetDesktop dsk_lcd(my_lcd_dc->size());
+
        dsk.setStyleID(0);
-       dsk_lcd.setStyleID(1);
-       
+       dsk_lcd.setStyleID(my_lcd_dc->size().width() == 96 ? 2 : 1);
+
 /*     if (double_buffer)
        {
                eDebug(" - double buffering found, enable buffered graphics mode.");
diff --git a/skin.py b/skin.py
index 064fd2191ec6438dda34026270649955db04d949..b490f7392d507463c127435ec2852ea2ae068459 100755 (executable)
--- a/skin.py
+++ b/skin.py
@@ -241,6 +241,8 @@ def applySingleAttribute(guiObject, desktop, attrib, value, scale = ((1,1),(1,1)
                        guiObject.setShadowOffset(parsePosition(value, scale))
                elif attrib == 'noWrap':
                        guiObject.setNoWrap(1)
+               elif attrib == 'id':
+                       pass
                else:
                        raise SkinError("unsupported attribute " + attrib + "=" + value)
        except int:
@@ -395,12 +397,16 @@ def loadSkinData(desktop):
        for (path, dom_skin) in skins:
                loadSingleSkinData(desktop, dom_skin, path)
 
-def lookupScreen(name):
+def lookupScreen(name, style_id):
        for (path, skin) in dom_skins:
                # first, find the corresponding screen element
                for x in skin.findall("screen"):
                        if x.attrib.get('name', '') == name:
-                               return x, path
+                               screen_style_id = x.attrib.get('id', '-1')
+                               if screen_style_id == '-1' and name.find('ummary') > 0:
+                                       screen_style_id = '1'
+                               if (style_id != 2 and int(screen_style_id) == -1) or int(screen_style_id) == style_id:
+                                       return x, path
        return None, None
 
 class additionalWidget:
@@ -412,9 +418,11 @@ def readSkin(screen, skin, names, desktop):
 
        name = "<embedded-in-'%s'>" % screen.__class__.__name__
 
+       style_id = desktop.getStyleID();
+
        # try all skins, first existing one have priority
        for n in names:
-               myscreen, path = lookupScreen(n)
+               myscreen, path = lookupScreen(n, style_id)
                if myscreen is not None:
                        # use this name for debug output
                        name = n
@@ -427,7 +435,15 @@ def readSkin(screen, skin, names, desktop):
        # try uncompiled embedded skin
        if myscreen is None and getattr(screen, "skin", None):
                print "Looking for embedded skin"
-               myscreen = screen.parsedSkin = xml.etree.cElementTree.fromstring(screen.skin)
+               skin_tuple = screen.skin
+               if not isinstance(skin_tuple, tuple):
+                       skin_tuple = (skin_tuple,)
+               for sskin in skin_tuple:
+                       parsedSkin = xml.etree.cElementTree.fromstring(sskin)
+                       screen_style_id = parsedSkin.attrib.get('id', '-1')
+                       if (style_id != 2 and int(screen_style_id) == -1) or int(screen_style_id) == style_id:
+                               myscreen = screen.parsedSkin = parsedSkin
+                               break
 
        #assert myscreen is not None, "no skin for screen '" + repr(names) + "' found!"
        if myscreen is None: