diff options
| author | ghost <andreas.monzner@multimedia-labs.de> | 2010-10-06 11:55:09 +0200 |
|---|---|---|
| committer | ghost <andreas.monzner@multimedia-labs.de> | 2010-10-06 11:55:09 +0200 |
| commit | 37152843c915fd0a9352256d804ced4ff54c23c4 (patch) | |
| tree | fbc7a5b7e428997e9feed5eac23b9960273545dd | |
| parent | 03dba41f691f1ae6a315d0a13c5af66fdf93fbfd (diff) | |
| parent | 27305d845d1bb4ca86a7e3e03b4c08cf3f3433fc (diff) | |
| download | enigma2-37152843c915fd0a9352256d804ced4ff54c23c4.tar.gz enigma2-37152843c915fd0a9352256d804ced4ff54c23c4.zip | |
Merge remote branch 'origin/bug_530_add_dm800se_support'
| -rw-r--r-- | data/defaults/Dream/Makefile.am | 2 | ||||
| -rw-r--r-- | data/defaults/Dream/dm800se.info | 26 | ||||
| -rw-r--r-- | data/defaults/Dream/settings.800se | 1 | ||||
| -rwxr-xr-x | data/skin.xml | 14 | ||||
| -rwxr-xr-x | data/skin_default.xml | 237 | ||||
| -rw-r--r-- | lib/dvb/dvb.cpp | 4 | ||||
| -rw-r--r-- | lib/dvb/dvb.h | 2 | ||||
| -rw-r--r-- | lib/gdi/font.cpp | 89 | ||||
| -rw-r--r-- | lib/gdi/glcddc.cpp | 8 | ||||
| -rw-r--r-- | lib/gdi/gpixmap.cpp | 194 | ||||
| -rw-r--r-- | lib/gdi/lcd.cpp | 97 | ||||
| -rw-r--r-- | lib/gdi/lcd.h | 6 | ||||
| -rwxr-xr-x | lib/python/Plugins/Extensions/DVDPlayer/plugin.py | 19 | ||||
| -rwxr-xr-x | lib/python/Plugins/Extensions/MediaPlayer/plugin.py | 11 | ||||
| -rwxr-xr-x[-rw-r--r--] | lib/python/Plugins/SystemPlugins/NFIFlash/flasher.py | 14 | ||||
| -rw-r--r-- | lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py | 4 | ||||
| -rwxr-xr-x[-rw-r--r--] | lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py | 18 | ||||
| -rw-r--r-- | main/enigma.cpp | 8 | ||||
| -rwxr-xr-x | skin.py | 24 |
19 files changed, 623 insertions, 155 deletions
diff --git a/data/defaults/Dream/Makefile.am b/data/defaults/Dream/Makefile.am index 31ba1c69..cda55835 100644 --- a/data/defaults/Dream/Makefile.am +++ b/data/defaults/Dream/Makefile.am @@ -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 index 00000000..6974b120 --- /dev/null +++ b/data/defaults/Dream/dm800se.info @@ -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 index 00000000..ae2963bb --- /dev/null +++ b/data/defaults/Dream/settings.800se @@ -0,0 +1 @@ +config.misc.rcused=1
\ No newline at end of file diff --git a/data/skin.xml b/data/skin.xml index 32adb2be..868fbc4b 100755 --- a/data/skin.xml +++ b/data/skin.xml @@ -61,6 +61,20 @@ <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" /> --> diff --git a/data/skin_default.xml b/data/skin_default.xml index 497d33ac..8e0c1562 100755 --- a/data/skin_default.xml +++ b/data/skin_default.xml @@ -164,9 +164,7 @@ self.instance.move(ePoint((720-wsizex)/2, (576-wsizey)/(count > 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> diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index 836851c5..40d44186 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -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) diff --git a/lib/dvb/dvb.h b/lib/dvb/dvb.h index 405bd557..fb925807 100644 --- a/lib/dvb/dvb.h +++ b/lib/dvb/dvb.h @@ -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; diff --git a/lib/gdi/font.cpp b/lib/gdi/font.cpp index 967c1df6..a5db43a9 100644 --- a/lib/gdi/font.cpp +++ b/lib/gdi/font.cpp @@ -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; } + } } } } diff --git a/lib/gdi/glcddc.cpp b/lib/gdi/glcddc.cpp index 8612c70b..a593cfa3 100644 --- a/lib/gdi/glcddc.cpp +++ b/lib/gdi/glcddc.cpp @@ -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); } diff --git a/lib/gdi/gpixmap.cpp b/lib/gdi/gpixmap.cpp index 3e643108..0e8d39ec 100644 --- a/lib/gdi/gpixmap.cpp +++ b/lib/gdi/gpixmap.cpp @@ -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 ®ion, 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 ®ion, 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; diff --git a/lib/gdi/lcd.cpp b/lib/gdi/lcd.cpp index 0908d890..a7dc22db 100644 --- a/lib/gdi/lcd.cpp +++ b/lib/gdi/lcd.cpp @@ -14,13 +14,19 @@ 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); + } } } diff --git a/lib/gdi/lcd.h b/lib/gdi/lcd.h index 99f921b5..e7b4c2c4 100644 --- a/lib/gdi/lcd.h +++ b/lib/gdi/lcd.h @@ -13,10 +13,11 @@ 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 }; diff --git a/lib/python/Plugins/Extensions/DVDPlayer/plugin.py b/lib/python/Plugins/Extensions/DVDPlayer/plugin.py index e092e82f..64b4ae50 100755 --- a/lib/python/Plugins/Extensions/DVDPlayer/plugin.py +++ b/lib/python/Plugins/Extensions/DVDPlayer/plugin.py @@ -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) diff --git a/lib/python/Plugins/Extensions/MediaPlayer/plugin.py b/lib/python/Plugins/Extensions/MediaPlayer/plugin.py index 036bbbb9..28cf7238 100755 --- a/lib/python/Plugins/Extensions/MediaPlayer/plugin.py +++ b/lib/python/Plugins/Extensions/MediaPlayer/plugin.py @@ -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) diff --git a/lib/python/Plugins/SystemPlugins/NFIFlash/flasher.py b/lib/python/Plugins/SystemPlugins/NFIFlash/flasher.py index 8986560b..7a0da851 100644..100755 --- a/lib/python/Plugins/SystemPlugins/NFIFlash/flasher.py +++ b/lib/python/Plugins/SystemPlugins/NFIFlash/flasher.py @@ -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) diff --git a/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py b/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py index e3b902f0..59c50476 100644 --- a/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py +++ b/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py @@ -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)) diff --git a/lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py b/lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py index 15f4d516..9b9044ee 100644..100755 --- a/lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py +++ b/lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py @@ -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")) diff --git a/main/enigma.cpp b/main/enigma.cpp index 3f420b4b..b8554d58 100644 --- a/main/enigma.cpp +++ b/main/enigma.cpp @@ -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."); @@ -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: |
