diff --git a/configure.ac b/configure.ac index 94e499527..0310fd47f 100644 --- a/configure.ac +++ b/configure.ac @@ -297,65 +297,82 @@ AC_SUBST(BLURAY_LIBS) AC_OUTPUT([ Makefile +data/Makefile +data/fonts/Makefile +data/icons/Makefile +data/icons/buttons/Makefile +data/icons/filetypes/Makefile +data/icons/headers/Makefile +data/icons/hints/Makefile +data/icons/locale/Makefile +data/icons/movieplayer/Makefile +data/icons/radar/Makefile +data/icons/slider/Makefile +data/icons/status/Makefile +data/icons/status/ca/Makefile +data/icons/status/channel/Makefile +data/icons/status/markers/Makefile +data/icons/status/various/Makefile +data/icons/various/Makefile +data/inetradio/Makefile +data/initial/Makefile +data/iso-codes/Makefile +data/lcd/Makefile +data/lcd/clock/Makefile +data/lcd/icons/Makefile +data/license/Makefile +data/locale/Makefile +data/neutrino-scripts/Makefile +data/pictures/Makefile +data/pictures/backgrounds/Makefile +data/pictures/screensaver/Makefile +data/scripts/Makefile +data/themes/Makefile +data/y-web/Makefile +data/y-web/images/Makefile +data/y-web/languages/Makefile +data/y-web/scripts/Makefile +data/y-web/styles/Makefile lib/Makefile -lib/libconfigfile/Makefile lib/connection/Makefile +lib/jsoncpp/Makefile +lib/libconfigfile/Makefile +lib/libcoolstream/Makefile +lib/libdvbsub/Makefile lib/libeventserver/Makefile +lib/libiw/Makefile lib/libmd5sum/Makefile lib/libnet/Makefile -lib/xmltree/Makefile -lib/jsoncpp/Makefile +lib/libtuxtxt/Makefile +lib/libupnpclient/Makefile +lib/luaclient/Makefile lib/sectionsdclient/Makefile lib/timerdclient/Makefile -lib/libcoolstream/Makefile -lib/libtuxtxt/Makefile -lib/libdvbsub/Makefile -lib/libupnpclient/Makefile -lib/libiw/Makefile -lib/luaclient/Makefile -src/lcddisplay/Makefile -src/nhttpd/Makefile -src/nhttpd/web/Makefile -src/nhttpd/web/images/Makefile -src/nhttpd/web/scripts/Makefile -src/nhttpd/web/languages/Makefile -src/nhttpd/web/styles/Makefile -src/nhttpd/tuxboxapi/Makefile -src/nhttpd/yhttpd_core/Makefile -src/nhttpd/yhttpd_mods/Makefile -src/nhttpd/nhttpd.conf +lib/xmltree/Makefile src/Makefile src/daemonc/Makefile -src/driver/pictureviewer/Makefile -src/driver/audiodec/Makefile src/driver/Makefile +src/driver/audiodec/Makefile +src/driver/pictureviewer/Makefile +src/eitd/Makefile src/gui/Makefile src/gui/bedit/Makefile src/gui/components/Makefile src/gui/lua/Makefile src/gui/moviebrowser/Makefile src/gui/widget/Makefile +src/lcddisplay/Makefile +src/nhttpd/Makefile +src/nhttpd/nhttpd.conf +src/nhttpd/tuxboxapi/Makefile +src/nhttpd/yhttpd_core/Makefile +src/nhttpd/yhttpd_mods/Makefile src/system/Makefile src/system/mtdutils/Makefile src/system/mtdutils/lib/Makefile -data/Makefile -data/fonts/Makefile -data/icons/Makefile -data/inetradio/Makefile -data/initial/Makefile -data/iso-codes/Makefile -data/lcd/Makefile -data/lcd/icons/Makefile -data/lcd/clock/Makefile -data/license/Makefile -data/locale/Makefile -data/neutrino-scripts/Makefile -data/scripts/Makefile -data/themes/Makefile -src/eitd/Makefile src/timerd/Makefile src/zapit/Makefile +src/zapit/data/Makefile src/zapit/lib/Makefile src/zapit/src/Makefile -src/zapit/data/Makefile ]) diff --git a/data/Makefile.am b/data/Makefile.am index ef9881b5e..1ff743d21 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,4 +1,16 @@ -SUBDIRS = fonts icons inetradio initial iso-codes license locale scripts themes neutrino-scripts +SUBDIRS = \ + fonts \ + icons \ + inetradio \ + initial \ + iso-codes \ + license \ + locale \ + neutrino-scripts \ + pictures \ + scripts \ + themes \ + y-web if BOXTYPE_TRIPLE SUBDIRS += lcd diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am index d1bbad31a..bff4d209b 100644 --- a/data/icons/Makefile.am +++ b/data/icons/Makefile.am @@ -1,279 +1,11 @@ -installdir = $(ICONSDIR) - -locale = \ - locale/deutsch.png \ - locale/english.png - -locale_unmaintained = \ - locale/unmaintained/bayrisch.png \ - locale/unmaintained/bosanski.png \ - locale/unmaintained/ch-baslerdeutsch.png \ - locale/unmaintained/ch-berndeutsch.png \ - locale/unmaintained/czech.png \ - locale/unmaintained/francais.png \ - locale/unmaintained/italiano.png \ - locale/unmaintained/nederlands.png \ - locale/unmaintained/polski.png \ - locale/unmaintained/portugues.png \ - locale/unmaintained/russkij.png \ - locale/unmaintained/slovak.png \ - locale/unmaintained/suomi.png \ - locale/unmaintained/svenska.png - -install_DATA = $(locale) -install_DATA += $(locale_unmaintained) - -install_DATA += \ - 0.png \ - 1.png \ - 16_9.png \ - 16_9_gray.png \ - 2.png \ - 3.png \ - 4.png \ - 5.png \ - 6.png \ - 7.png \ - 8.png \ - 9.png \ - ats.png \ - ats_gray.png \ - audio.png \ - audioplay.png \ - biss_green.png \ - biss_white.png \ - biss_yellow.png \ - blau.png \ - bookmarkmanager.png \ - border_lr.png \ - border_ul.png \ - btn_backward.png \ - btn_forward.png \ - btn_pause.png \ - btn_play.png \ - btn_record_active.png \ - btn_record_inactive.png \ - btn_stop.png \ - ca.png \ - ca2.png \ - ca2_gray.png \ - checkmark.png \ - colors.png \ - conax_green.png \ - conax_white.png \ - conax_yellow.png \ - cw_green.png \ - cw_white.png \ - cw_yellow.png \ - d_green.png \ - d_white.png \ - d_yellow.png \ - dd.png \ - dd_avail.png \ - dd_gray.png \ - down.png \ - dummy.png \ - dummy_small.png \ - error.png \ - epg.png \ - features.png \ - file.png \ - folder.png \ - games.png \ - gelb.png \ - gruen.png \ - help.png \ - help_small.png \ - hidden.png \ - hint_a_pic.png \ - hint_adzap.png \ - hint_aplay.png \ - hint_audio.png \ - hint_back.png \ - hint_bedit.png \ - hint_ci.png \ - hint_dboxinfo.png \ - hint_delete.png \ - hint_extended.png \ - hint_fileplay.png \ - hint_games.png \ - hint_hdd.png \ - hint_imageinfo.png \ - hint_inetradio.png \ - hint_info.png \ - hint_keys.png \ - hint_language.png \ - hint_manage.png \ - hint_mb.png \ - hint_media.png \ - hint_movie.png \ - hint_network.png \ - hint_next.png \ - hint_osd.png \ - hint_personalize.png \ - hint_picview.png \ - hint_plugin.png \ - hint_protection.png \ - hint_radiomode.png \ - hint_reboot.png \ - hint_recording.png \ - hint_reload.png \ - hint_restart.png \ - hint_save.png \ - hint_scan.png \ - hint_scripts.png \ - hint_service.png \ - hint_settings.png \ - hint_shutdown.png \ - hint_sleeptimer.png \ - hint_streaminfo.png \ - hint_swupdate.png \ - hint_timers.png \ - hint_tvmode.png \ - hint_tvradio_switch.png \ - hint_vfd.png \ - hint_video.png \ - hint_ytplay.png \ - home.png \ - icon_green.png \ - icon_movieplayer.png \ - icon_red.png \ - icon_yellow.png \ - icon_ytplay.png \ - important.png \ - info.png \ - info_small.png \ - information.png \ - ird_green.png \ - ird_white.png \ - ird_yellow.png \ - keybinding.png \ - language.png \ - lcd.png \ - left.png \ - local.png \ - lock.png \ - lock_passive.png \ - mainmenue.png \ - menu.png \ - menu_small.png \ - mounted.png \ - movie.png \ - mp_b-skip.png \ - mp_f-skip.png \ - mp_pause.png \ - mp_play.png \ - mp_play_repeat_all.png \ - mp_play_repeat_track.png \ - mp3.jpg \ - mp3.png \ - mp3-0.jpg \ - mp3-1.jpg \ - mp3-2.jpg \ - mp3-3.jpg \ - mp3-4.jpg \ - mp3-5.jpg \ - mp3-6.jpg \ - mp3-7.jpg \ - multimedia.png \ - mute.png \ - mute_small.png \ - mute_zap_gray.png \ - mute_zap_green.png \ - nagra_green.png \ - nagra_white.png \ - nagra_yellow.png \ - nds_green.png \ - nds_white.png \ - nds_yellow.png \ - network.png \ - not_mounted.png \ - notyet.png \ - numericpad.png \ - ok.png \ - personalize.png \ - pip.png \ - power.png \ - powervu_green.png \ - powervu_white.png \ - powervu_yellow.png \ - radar.pal \ - radar_red.pal \ - radar0.raw \ - radar1.raw \ - radar2.raw \ - radar3.raw \ - radar4.raw \ - radar5.raw \ - radar6.raw \ - radar7.raw \ - radar8.raw \ - radar9.raw \ - radiomode.jpg \ - radiotextget.png \ - radiotextoff.png \ - radiotextwait.png \ - rclock.png \ - rec.png \ - rec_event_marker.png \ - rec_gray.png \ - recording.png \ - res_000.png \ - res_1080.png \ - res_1280.png \ - res_1440.png \ - res_1920.png \ - res_288.png \ - res_352.png \ - res_382.png \ - res_480.png \ - res_528.png \ - res_544.png \ - res_576.png \ - res_704.png \ - res_720.png \ - res_hd.png \ - res_sd.png \ - right.png \ - rot.png \ - scan.jpg \ - seca_green.png \ - seca_white.png \ - seca_yellow.png \ - settings.png \ - shell.png \ - shutdown.jpg \ - softupdate.png \ - star-off.png \ - star-on.png \ - start.jpg \ - streaming.png \ - subt.png \ - subt_gray.png \ - timer.png \ - tmdb.png \ - tuner_1.png \ - tuner_2.png \ - tuner_3.png \ - tuner_4.png \ - up.png \ - upnp.png \ - via_green.png \ - via_white.png \ - via_yellow.png \ - video.png \ - volume.png \ - volumebody.png \ - volumeslider2.png \ - volumeslider2alpha.png \ - volumeslider2blue.png \ - volumeslider2green.png \ - volumeslider2red.png \ - vtxt.png \ - vtxt_gray.png \ - warning.png \ - x_green.png \ - x_white.png \ - x_yellow.png \ - zap.png - +SUBDIRS = \ + buttons \ + filetypes \ + headers \ + hints \ + locale \ + movieplayer \ + radar \ + slider \ + status \ + various diff --git a/data/icons/audioplay.png b/data/icons/audioplay.png deleted file mode 100644 index cf19b7ea9..000000000 Binary files a/data/icons/audioplay.png and /dev/null differ diff --git a/data/icons/0.png b/data/icons/buttons/0.png similarity index 100% rename from data/icons/0.png rename to data/icons/buttons/0.png diff --git a/data/icons/1.png b/data/icons/buttons/1.png similarity index 100% rename from data/icons/1.png rename to data/icons/buttons/1.png diff --git a/data/icons/2.png b/data/icons/buttons/2.png similarity index 100% rename from data/icons/2.png rename to data/icons/buttons/2.png diff --git a/data/icons/3.png b/data/icons/buttons/3.png similarity index 100% rename from data/icons/3.png rename to data/icons/buttons/3.png diff --git a/data/icons/4.png b/data/icons/buttons/4.png similarity index 100% rename from data/icons/4.png rename to data/icons/buttons/4.png diff --git a/data/icons/5.png b/data/icons/buttons/5.png similarity index 100% rename from data/icons/5.png rename to data/icons/buttons/5.png diff --git a/data/icons/6.png b/data/icons/buttons/6.png similarity index 100% rename from data/icons/6.png rename to data/icons/buttons/6.png diff --git a/data/icons/7.png b/data/icons/buttons/7.png similarity index 100% rename from data/icons/7.png rename to data/icons/buttons/7.png diff --git a/data/icons/8.png b/data/icons/buttons/8.png similarity index 100% rename from data/icons/8.png rename to data/icons/buttons/8.png diff --git a/data/icons/9.png b/data/icons/buttons/9.png similarity index 100% rename from data/icons/9.png rename to data/icons/buttons/9.png diff --git a/data/icons/buttons/Makefile.am b/data/icons/buttons/Makefile.am new file mode 100644 index 000000000..c708942ea --- /dev/null +++ b/data/icons/buttons/Makefile.am @@ -0,0 +1,42 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + 0.png \ + 1.png \ + 2.png \ + 3.png \ + 4.png \ + 5.png \ + 6.png \ + 7.png \ + 8.png \ + 9.png \ + blau.png \ + btn_backward.png \ + btn_forward.png \ + btn_pause.png \ + btn_play.png \ + btn_record_active.png \ + btn_record_inactive.png \ + btn_stop.png \ + down.png \ + dummy.png \ + dummy_small.png \ + gelb.png \ + gruen.png \ + help.png \ + help_small.png \ + home.png \ + info.png \ + info_small.png \ + left.png \ + menu.png \ + menu_small.png \ + mute_small.png \ + mute_zap_gray.png \ + mute_zap_green.png \ + ok.png \ + power.png \ + right.png \ + rot.png \ + up.png diff --git a/data/icons/blau.png b/data/icons/buttons/blau.png similarity index 100% rename from data/icons/blau.png rename to data/icons/buttons/blau.png diff --git a/data/icons/btn_backward.png b/data/icons/buttons/btn_backward.png similarity index 100% rename from data/icons/btn_backward.png rename to data/icons/buttons/btn_backward.png diff --git a/data/icons/btn_forward.png b/data/icons/buttons/btn_forward.png similarity index 100% rename from data/icons/btn_forward.png rename to data/icons/buttons/btn_forward.png diff --git a/data/icons/btn_pause.png b/data/icons/buttons/btn_pause.png similarity index 100% rename from data/icons/btn_pause.png rename to data/icons/buttons/btn_pause.png diff --git a/data/icons/btn_play.png b/data/icons/buttons/btn_play.png similarity index 100% rename from data/icons/btn_play.png rename to data/icons/buttons/btn_play.png diff --git a/data/icons/btn_record_active.png b/data/icons/buttons/btn_record_active.png similarity index 100% rename from data/icons/btn_record_active.png rename to data/icons/buttons/btn_record_active.png diff --git a/data/icons/btn_record_inactive.png b/data/icons/buttons/btn_record_inactive.png similarity index 100% rename from data/icons/btn_record_inactive.png rename to data/icons/buttons/btn_record_inactive.png diff --git a/data/icons/btn_stop.png b/data/icons/buttons/btn_stop.png similarity index 100% rename from data/icons/btn_stop.png rename to data/icons/buttons/btn_stop.png diff --git a/data/icons/down.png b/data/icons/buttons/down.png similarity index 100% rename from data/icons/down.png rename to data/icons/buttons/down.png diff --git a/data/icons/dummy.png b/data/icons/buttons/dummy.png similarity index 100% rename from data/icons/dummy.png rename to data/icons/buttons/dummy.png diff --git a/data/icons/dummy_small.png b/data/icons/buttons/dummy_small.png similarity index 100% rename from data/icons/dummy_small.png rename to data/icons/buttons/dummy_small.png diff --git a/data/icons/gelb.png b/data/icons/buttons/gelb.png similarity index 100% rename from data/icons/gelb.png rename to data/icons/buttons/gelb.png diff --git a/data/icons/gruen.png b/data/icons/buttons/gruen.png similarity index 100% rename from data/icons/gruen.png rename to data/icons/buttons/gruen.png diff --git a/data/icons/help.png b/data/icons/buttons/help.png similarity index 100% rename from data/icons/help.png rename to data/icons/buttons/help.png diff --git a/data/icons/help_small.png b/data/icons/buttons/help_small.png similarity index 100% rename from data/icons/help_small.png rename to data/icons/buttons/help_small.png diff --git a/data/icons/home.png b/data/icons/buttons/home.png similarity index 100% rename from data/icons/home.png rename to data/icons/buttons/home.png diff --git a/data/icons/info.png b/data/icons/buttons/info.png similarity index 100% rename from data/icons/info.png rename to data/icons/buttons/info.png diff --git a/data/icons/info_small.png b/data/icons/buttons/info_small.png similarity index 100% rename from data/icons/info_small.png rename to data/icons/buttons/info_small.png diff --git a/data/icons/left.png b/data/icons/buttons/left.png similarity index 100% rename from data/icons/left.png rename to data/icons/buttons/left.png diff --git a/data/icons/menu.png b/data/icons/buttons/menu.png similarity index 100% rename from data/icons/menu.png rename to data/icons/buttons/menu.png diff --git a/data/icons/menu_small.png b/data/icons/buttons/menu_small.png similarity index 100% rename from data/icons/menu_small.png rename to data/icons/buttons/menu_small.png diff --git a/data/icons/mute_small.png b/data/icons/buttons/mute_small.png similarity index 100% rename from data/icons/mute_small.png rename to data/icons/buttons/mute_small.png diff --git a/data/icons/mute_zap_gray.png b/data/icons/buttons/mute_zap_gray.png similarity index 100% rename from data/icons/mute_zap_gray.png rename to data/icons/buttons/mute_zap_gray.png diff --git a/data/icons/mute_zap_green.png b/data/icons/buttons/mute_zap_green.png similarity index 100% rename from data/icons/mute_zap_green.png rename to data/icons/buttons/mute_zap_green.png diff --git a/data/icons/ok.png b/data/icons/buttons/ok.png similarity index 100% rename from data/icons/ok.png rename to data/icons/buttons/ok.png diff --git a/data/icons/0-green.png b/data/icons/buttons/orphaned/0-green.png similarity index 100% rename from data/icons/0-green.png rename to data/icons/buttons/orphaned/0-green.png diff --git a/data/icons/0-red.png b/data/icons/buttons/orphaned/0-red.png similarity index 100% rename from data/icons/0-red.png rename to data/icons/buttons/orphaned/0-red.png diff --git a/data/icons/1-green.png b/data/icons/buttons/orphaned/1-green.png similarity index 100% rename from data/icons/1-green.png rename to data/icons/buttons/orphaned/1-green.png diff --git a/data/icons/1-red.png b/data/icons/buttons/orphaned/1-red.png similarity index 100% rename from data/icons/1-red.png rename to data/icons/buttons/orphaned/1-red.png diff --git a/data/icons/2-green.png b/data/icons/buttons/orphaned/2-green.png similarity index 100% rename from data/icons/2-green.png rename to data/icons/buttons/orphaned/2-green.png diff --git a/data/icons/2-red.png b/data/icons/buttons/orphaned/2-red.png similarity index 100% rename from data/icons/2-red.png rename to data/icons/buttons/orphaned/2-red.png diff --git a/data/icons/3-green.png b/data/icons/buttons/orphaned/3-green.png similarity index 100% rename from data/icons/3-green.png rename to data/icons/buttons/orphaned/3-green.png diff --git a/data/icons/3-red.png b/data/icons/buttons/orphaned/3-red.png similarity index 100% rename from data/icons/3-red.png rename to data/icons/buttons/orphaned/3-red.png diff --git a/data/icons/4-green.png b/data/icons/buttons/orphaned/4-green.png similarity index 100% rename from data/icons/4-green.png rename to data/icons/buttons/orphaned/4-green.png diff --git a/data/icons/4-red.png b/data/icons/buttons/orphaned/4-red.png similarity index 100% rename from data/icons/4-red.png rename to data/icons/buttons/orphaned/4-red.png diff --git a/data/icons/5-green.png b/data/icons/buttons/orphaned/5-green.png similarity index 100% rename from data/icons/5-green.png rename to data/icons/buttons/orphaned/5-green.png diff --git a/data/icons/5-red.png b/data/icons/buttons/orphaned/5-red.png similarity index 100% rename from data/icons/5-red.png rename to data/icons/buttons/orphaned/5-red.png diff --git a/data/icons/6-green.png b/data/icons/buttons/orphaned/6-green.png similarity index 100% rename from data/icons/6-green.png rename to data/icons/buttons/orphaned/6-green.png diff --git a/data/icons/6-red.png b/data/icons/buttons/orphaned/6-red.png similarity index 100% rename from data/icons/6-red.png rename to data/icons/buttons/orphaned/6-red.png diff --git a/data/icons/7-green.png b/data/icons/buttons/orphaned/7-green.png similarity index 100% rename from data/icons/7-green.png rename to data/icons/buttons/orphaned/7-green.png diff --git a/data/icons/7-red.png b/data/icons/buttons/orphaned/7-red.png similarity index 100% rename from data/icons/7-red.png rename to data/icons/buttons/orphaned/7-red.png diff --git a/data/icons/8-green.png b/data/icons/buttons/orphaned/8-green.png similarity index 100% rename from data/icons/8-green.png rename to data/icons/buttons/orphaned/8-green.png diff --git a/data/icons/8-red.png b/data/icons/buttons/orphaned/8-red.png similarity index 100% rename from data/icons/8-red.png rename to data/icons/buttons/orphaned/8-red.png diff --git a/data/icons/9-green.png b/data/icons/buttons/orphaned/9-green.png similarity index 100% rename from data/icons/9-green.png rename to data/icons/buttons/orphaned/9-green.png diff --git a/data/icons/9-red.png b/data/icons/buttons/orphaned/9-red.png similarity index 100% rename from data/icons/9-red.png rename to data/icons/buttons/orphaned/9-red.png diff --git a/data/icons/longpress.png b/data/icons/buttons/orphaned/longpress.png similarity index 100% rename from data/icons/longpress.png rename to data/icons/buttons/orphaned/longpress.png diff --git a/data/icons/power.png b/data/icons/buttons/power.png similarity index 100% rename from data/icons/power.png rename to data/icons/buttons/power.png diff --git a/data/icons/right.png b/data/icons/buttons/right.png similarity index 100% rename from data/icons/right.png rename to data/icons/buttons/right.png diff --git a/data/icons/rot.png b/data/icons/buttons/rot.png similarity index 100% rename from data/icons/rot.png rename to data/icons/buttons/rot.png diff --git a/data/icons/up.png b/data/icons/buttons/up.png similarity index 100% rename from data/icons/up.png rename to data/icons/buttons/up.png diff --git a/data/icons/filetypes/Makefile.am b/data/icons/filetypes/Makefile.am new file mode 100644 index 000000000..ec9f09d5a --- /dev/null +++ b/data/icons/filetypes/Makefile.am @@ -0,0 +1,6 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + file.png \ + folder.png \ + movie.png diff --git a/data/icons/file.png b/data/icons/filetypes/file.png similarity index 100% rename from data/icons/file.png rename to data/icons/filetypes/file.png diff --git a/data/icons/folder.png b/data/icons/filetypes/folder.png similarity index 100% rename from data/icons/folder.png rename to data/icons/filetypes/folder.png diff --git a/data/icons/movie.png b/data/icons/filetypes/movie.png similarity index 100% rename from data/icons/movie.png rename to data/icons/filetypes/movie.png diff --git a/data/icons/headers/Makefile.am b/data/icons/headers/Makefile.am new file mode 100644 index 000000000..29328dcbf --- /dev/null +++ b/data/icons/headers/Makefile.am @@ -0,0 +1,31 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + audio.png \ + bookmarkmanager.png \ + colors.png \ + error.png \ + features.png \ + games.png \ + icon_green.png \ + icon_movieplayer.png \ + icon_red.png \ + icon_yellow.png \ + icon_ytplay.png \ + information.png \ + keybinding.png \ + language.png \ + lcd.png \ + mainmenue.png \ + mp3.png \ + multimedia.png \ + network.png \ + personalize.png \ + recording.png \ + settings.png \ + shell.png \ + softupdate.png \ + streaming.png \ + timer.png \ + upnp.png \ + video.png diff --git a/data/icons/audio.png b/data/icons/headers/audio.png similarity index 100% rename from data/icons/audio.png rename to data/icons/headers/audio.png diff --git a/data/icons/bookmarkmanager.png b/data/icons/headers/bookmarkmanager.png similarity index 100% rename from data/icons/bookmarkmanager.png rename to data/icons/headers/bookmarkmanager.png diff --git a/data/icons/colors.png b/data/icons/headers/colors.png similarity index 100% rename from data/icons/colors.png rename to data/icons/headers/colors.png diff --git a/data/icons/error.png b/data/icons/headers/error.png similarity index 100% rename from data/icons/error.png rename to data/icons/headers/error.png diff --git a/data/icons/features.png b/data/icons/headers/features.png similarity index 100% rename from data/icons/features.png rename to data/icons/headers/features.png diff --git a/data/icons/games.png b/data/icons/headers/games.png similarity index 100% rename from data/icons/games.png rename to data/icons/headers/games.png diff --git a/data/icons/icon_blue.png b/data/icons/headers/icon_blue.png similarity index 100% rename from data/icons/icon_blue.png rename to data/icons/headers/icon_blue.png diff --git a/data/icons/icon_green.png b/data/icons/headers/icon_green.png similarity index 100% rename from data/icons/icon_green.png rename to data/icons/headers/icon_green.png diff --git a/data/icons/icon_movieplayer.png b/data/icons/headers/icon_movieplayer.png similarity index 100% rename from data/icons/icon_movieplayer.png rename to data/icons/headers/icon_movieplayer.png diff --git a/data/icons/icon_red.png b/data/icons/headers/icon_red.png similarity index 100% rename from data/icons/icon_red.png rename to data/icons/headers/icon_red.png diff --git a/data/icons/icon_yellow.png b/data/icons/headers/icon_yellow.png similarity index 100% rename from data/icons/icon_yellow.png rename to data/icons/headers/icon_yellow.png diff --git a/data/icons/icon_ytplay.png b/data/icons/headers/icon_ytplay.png similarity index 100% rename from data/icons/icon_ytplay.png rename to data/icons/headers/icon_ytplay.png diff --git a/data/icons/information.png b/data/icons/headers/information.png similarity index 100% rename from data/icons/information.png rename to data/icons/headers/information.png diff --git a/data/icons/keybinding.png b/data/icons/headers/keybinding.png similarity index 100% rename from data/icons/keybinding.png rename to data/icons/headers/keybinding.png diff --git a/data/icons/language.png b/data/icons/headers/language.png similarity index 100% rename from data/icons/language.png rename to data/icons/headers/language.png diff --git a/data/icons/lcd.png b/data/icons/headers/lcd.png similarity index 100% rename from data/icons/lcd.png rename to data/icons/headers/lcd.png diff --git a/data/icons/mainmenue.png b/data/icons/headers/mainmenue.png similarity index 100% rename from data/icons/mainmenue.png rename to data/icons/headers/mainmenue.png diff --git a/data/icons/mp3.png b/data/icons/headers/mp3.png similarity index 100% rename from data/icons/mp3.png rename to data/icons/headers/mp3.png diff --git a/data/icons/multimedia.png b/data/icons/headers/multimedia.png similarity index 100% rename from data/icons/multimedia.png rename to data/icons/headers/multimedia.png diff --git a/data/icons/network.png b/data/icons/headers/network.png similarity index 100% rename from data/icons/network.png rename to data/icons/headers/network.png diff --git a/data/icons/personalize.png b/data/icons/headers/personalize.png similarity index 100% rename from data/icons/personalize.png rename to data/icons/headers/personalize.png diff --git a/data/icons/recording.png b/data/icons/headers/recording.png similarity index 100% rename from data/icons/recording.png rename to data/icons/headers/recording.png diff --git a/data/icons/settings.png b/data/icons/headers/settings.png similarity index 100% rename from data/icons/settings.png rename to data/icons/headers/settings.png diff --git a/data/icons/shell.png b/data/icons/headers/shell.png similarity index 100% rename from data/icons/shell.png rename to data/icons/headers/shell.png diff --git a/data/icons/softupdate.png b/data/icons/headers/softupdate.png similarity index 100% rename from data/icons/softupdate.png rename to data/icons/headers/softupdate.png diff --git a/data/icons/streaming.png b/data/icons/headers/streaming.png similarity index 100% rename from data/icons/streaming.png rename to data/icons/headers/streaming.png diff --git a/data/icons/timer.png b/data/icons/headers/timer.png similarity index 100% rename from data/icons/timer.png rename to data/icons/headers/timer.png diff --git a/data/icons/upnp.png b/data/icons/headers/upnp.png similarity index 100% rename from data/icons/upnp.png rename to data/icons/headers/upnp.png diff --git a/data/icons/video.png b/data/icons/headers/video.png similarity index 100% rename from data/icons/video.png rename to data/icons/headers/video.png diff --git a/data/icons/hints/Makefile.am b/data/icons/hints/Makefile.am new file mode 100644 index 000000000..6447b47aa --- /dev/null +++ b/data/icons/hints/Makefile.am @@ -0,0 +1,52 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + hint_a_pic.png \ + hint_adzap.png \ + hint_aplay.png \ + hint_audio.png \ + hint_back.png \ + hint_bedit.png \ + hint_ci.png \ + hint_dboxinfo.png \ + hint_delete.png \ + hint_extended.png \ + hint_fileplay.png \ + hint_games.png \ + hint_hdd.png \ + hint_imageinfo.png \ + hint_inetradio.png \ + hint_info.png \ + hint_keys.png \ + hint_language.png \ + hint_manage.png \ + hint_mb.png \ + hint_media.png \ + hint_movie.png \ + hint_network.png \ + hint_next.png \ + hint_osd.png \ + hint_personalize.png \ + hint_picview.png \ + hint_plugin.png \ + hint_protection.png \ + hint_radiomode.png \ + hint_reboot.png \ + hint_recording.png \ + hint_reload.png \ + hint_restart.png \ + hint_save.png \ + hint_scan.png \ + hint_scripts.png \ + hint_service.png \ + hint_settings.png \ + hint_shutdown.png \ + hint_sleeptimer.png \ + hint_streaminfo.png \ + hint_swupdate.png \ + hint_timers.png \ + hint_tvmode.png \ + hint_tvradio_switch.png \ + hint_vfd.png \ + hint_video.png \ + hint_ytplay.png diff --git a/data/icons/hint_a_pic.png b/data/icons/hints/hint_a_pic.png similarity index 100% rename from data/icons/hint_a_pic.png rename to data/icons/hints/hint_a_pic.png diff --git a/data/icons/hint_adzap.png b/data/icons/hints/hint_adzap.png similarity index 100% rename from data/icons/hint_adzap.png rename to data/icons/hints/hint_adzap.png diff --git a/data/icons/hint_aplay.png b/data/icons/hints/hint_aplay.png similarity index 100% rename from data/icons/hint_aplay.png rename to data/icons/hints/hint_aplay.png diff --git a/data/icons/hint_audio.png b/data/icons/hints/hint_audio.png similarity index 100% rename from data/icons/hint_audio.png rename to data/icons/hints/hint_audio.png diff --git a/data/icons/hint_back.png b/data/icons/hints/hint_back.png similarity index 100% rename from data/icons/hint_back.png rename to data/icons/hints/hint_back.png diff --git a/data/icons/hint_bedit.png b/data/icons/hints/hint_bedit.png similarity index 100% rename from data/icons/hint_bedit.png rename to data/icons/hints/hint_bedit.png diff --git a/data/icons/hint_ci.png b/data/icons/hints/hint_ci.png similarity index 100% rename from data/icons/hint_ci.png rename to data/icons/hints/hint_ci.png diff --git a/data/icons/hint_dboxinfo.png b/data/icons/hints/hint_dboxinfo.png similarity index 100% rename from data/icons/hint_dboxinfo.png rename to data/icons/hints/hint_dboxinfo.png diff --git a/data/icons/hint_delete.png b/data/icons/hints/hint_delete.png similarity index 100% rename from data/icons/hint_delete.png rename to data/icons/hints/hint_delete.png diff --git a/data/icons/hint_extended.png b/data/icons/hints/hint_extended.png similarity index 100% rename from data/icons/hint_extended.png rename to data/icons/hints/hint_extended.png diff --git a/data/icons/hint_fileplay.png b/data/icons/hints/hint_fileplay.png similarity index 100% rename from data/icons/hint_fileplay.png rename to data/icons/hints/hint_fileplay.png diff --git a/data/icons/hint_games.png b/data/icons/hints/hint_games.png similarity index 100% rename from data/icons/hint_games.png rename to data/icons/hints/hint_games.png diff --git a/data/icons/hint_hdd.png b/data/icons/hints/hint_hdd.png similarity index 100% rename from data/icons/hint_hdd.png rename to data/icons/hints/hint_hdd.png diff --git a/data/icons/hint_imageinfo.png b/data/icons/hints/hint_imageinfo.png similarity index 100% rename from data/icons/hint_imageinfo.png rename to data/icons/hints/hint_imageinfo.png diff --git a/data/icons/hint_inetradio.png b/data/icons/hints/hint_inetradio.png similarity index 100% rename from data/icons/hint_inetradio.png rename to data/icons/hints/hint_inetradio.png diff --git a/data/icons/hint_info.png b/data/icons/hints/hint_info.png similarity index 100% rename from data/icons/hint_info.png rename to data/icons/hints/hint_info.png diff --git a/data/icons/hint_keys.png b/data/icons/hints/hint_keys.png similarity index 100% rename from data/icons/hint_keys.png rename to data/icons/hints/hint_keys.png diff --git a/data/icons/hint_language.png b/data/icons/hints/hint_language.png similarity index 100% rename from data/icons/hint_language.png rename to data/icons/hints/hint_language.png diff --git a/data/icons/hint_manage.png b/data/icons/hints/hint_manage.png similarity index 100% rename from data/icons/hint_manage.png rename to data/icons/hints/hint_manage.png diff --git a/data/icons/hint_mb.png b/data/icons/hints/hint_mb.png similarity index 100% rename from data/icons/hint_mb.png rename to data/icons/hints/hint_mb.png diff --git a/data/icons/hint_media.png b/data/icons/hints/hint_media.png similarity index 100% rename from data/icons/hint_media.png rename to data/icons/hints/hint_media.png diff --git a/data/icons/hint_movie.png b/data/icons/hints/hint_movie.png similarity index 100% rename from data/icons/hint_movie.png rename to data/icons/hints/hint_movie.png diff --git a/data/icons/hint_network.png b/data/icons/hints/hint_network.png similarity index 100% rename from data/icons/hint_network.png rename to data/icons/hints/hint_network.png diff --git a/data/icons/hint_next.png b/data/icons/hints/hint_next.png similarity index 100% rename from data/icons/hint_next.png rename to data/icons/hints/hint_next.png diff --git a/data/icons/hint_nkplay.png b/data/icons/hints/hint_nkplay.png similarity index 100% rename from data/icons/hint_nkplay.png rename to data/icons/hints/hint_nkplay.png diff --git a/data/icons/hint_osd.png b/data/icons/hints/hint_osd.png similarity index 100% rename from data/icons/hint_osd.png rename to data/icons/hints/hint_osd.png diff --git a/data/icons/hint_personalize.png b/data/icons/hints/hint_personalize.png similarity index 100% rename from data/icons/hint_personalize.png rename to data/icons/hints/hint_personalize.png diff --git a/data/icons/hint_picview.png b/data/icons/hints/hint_picview.png similarity index 100% rename from data/icons/hint_picview.png rename to data/icons/hints/hint_picview.png diff --git a/data/icons/hint_plugin.png b/data/icons/hints/hint_plugin.png similarity index 100% rename from data/icons/hint_plugin.png rename to data/icons/hints/hint_plugin.png diff --git a/data/icons/hint_protection.png b/data/icons/hints/hint_protection.png similarity index 100% rename from data/icons/hint_protection.png rename to data/icons/hints/hint_protection.png diff --git a/data/icons/hint_radiomode.png b/data/icons/hints/hint_radiomode.png similarity index 100% rename from data/icons/hint_radiomode.png rename to data/icons/hints/hint_radiomode.png diff --git a/data/icons/hint_rass.png b/data/icons/hints/hint_rass.png similarity index 100% rename from data/icons/hint_rass.png rename to data/icons/hints/hint_rass.png diff --git a/data/icons/hint_reboot.png b/data/icons/hints/hint_reboot.png similarity index 100% rename from data/icons/hint_reboot.png rename to data/icons/hints/hint_reboot.png diff --git a/data/icons/hint_recording.png b/data/icons/hints/hint_recording.png similarity index 100% rename from data/icons/hint_recording.png rename to data/icons/hints/hint_recording.png diff --git a/data/icons/hint_reload.png b/data/icons/hints/hint_reload.png similarity index 100% rename from data/icons/hint_reload.png rename to data/icons/hints/hint_reload.png diff --git a/data/icons/hint_restart.png b/data/icons/hints/hint_restart.png similarity index 100% rename from data/icons/hint_restart.png rename to data/icons/hints/hint_restart.png diff --git a/data/icons/hint_save.png b/data/icons/hints/hint_save.png similarity index 100% rename from data/icons/hint_save.png rename to data/icons/hints/hint_save.png diff --git a/data/icons/hint_scan.png b/data/icons/hints/hint_scan.png similarity index 100% rename from data/icons/hint_scan.png rename to data/icons/hints/hint_scan.png diff --git a/data/icons/hint_scripts.png b/data/icons/hints/hint_scripts.png similarity index 100% rename from data/icons/hint_scripts.png rename to data/icons/hints/hint_scripts.png diff --git a/data/icons/hint_service.png b/data/icons/hints/hint_service.png similarity index 100% rename from data/icons/hint_service.png rename to data/icons/hints/hint_service.png diff --git a/data/icons/hint_settings.png b/data/icons/hints/hint_settings.png similarity index 100% rename from data/icons/hint_settings.png rename to data/icons/hints/hint_settings.png diff --git a/data/icons/hint_shutdown.png b/data/icons/hints/hint_shutdown.png similarity index 100% rename from data/icons/hint_shutdown.png rename to data/icons/hints/hint_shutdown.png diff --git a/data/icons/hint_sleeptimer.png b/data/icons/hints/hint_sleeptimer.png similarity index 100% rename from data/icons/hint_sleeptimer.png rename to data/icons/hints/hint_sleeptimer.png diff --git a/data/icons/hint_spark.png b/data/icons/hints/hint_spark.png similarity index 100% rename from data/icons/hint_spark.png rename to data/icons/hints/hint_spark.png diff --git a/data/icons/hint_streaminfo.png b/data/icons/hints/hint_streaminfo.png similarity index 100% rename from data/icons/hint_streaminfo.png rename to data/icons/hints/hint_streaminfo.png diff --git a/data/icons/hint_swupdate.png b/data/icons/hints/hint_swupdate.png similarity index 100% rename from data/icons/hint_swupdate.png rename to data/icons/hints/hint_swupdate.png diff --git a/data/icons/hint_timers.png b/data/icons/hints/hint_timers.png similarity index 100% rename from data/icons/hint_timers.png rename to data/icons/hints/hint_timers.png diff --git a/data/icons/hint_tvmode.png b/data/icons/hints/hint_tvmode.png similarity index 100% rename from data/icons/hint_tvmode.png rename to data/icons/hints/hint_tvmode.png diff --git a/data/icons/hint_tvradio_switch.png b/data/icons/hints/hint_tvradio_switch.png similarity index 100% rename from data/icons/hint_tvradio_switch.png rename to data/icons/hints/hint_tvradio_switch.png diff --git a/data/icons/hint_vfd.png b/data/icons/hints/hint_vfd.png similarity index 100% rename from data/icons/hint_vfd.png rename to data/icons/hints/hint_vfd.png diff --git a/data/icons/hint_video.png b/data/icons/hints/hint_video.png similarity index 100% rename from data/icons/hint_video.png rename to data/icons/hints/hint_video.png diff --git a/data/icons/hint_ytplay.png b/data/icons/hints/hint_ytplay.png similarity index 100% rename from data/icons/hint_ytplay.png rename to data/icons/hints/hint_ytplay.png diff --git a/data/icons/icon_nkplay.png b/data/icons/icon_nkplay.png deleted file mode 100644 index ce3b052f2..000000000 Binary files a/data/icons/icon_nkplay.png and /dev/null differ diff --git a/data/icons/local.png b/data/icons/local.png deleted file mode 100644 index 19027c10e..000000000 Binary files a/data/icons/local.png and /dev/null differ diff --git a/data/icons/locale/Makefile.am b/data/icons/locale/Makefile.am new file mode 100644 index 000000000..386924c4c --- /dev/null +++ b/data/icons/locale/Makefile.am @@ -0,0 +1,23 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + deutsch.png \ + english.png \ + nederlands.png \ + slovak.png + +unmaintained = \ + unmaintained/bayrisch.png \ + unmaintained/bosanski.png \ + unmaintained/ch-baslerdeutsch.png \ + unmaintained/ch-berndeutsch.png \ + unmaintained/czech.png \ + unmaintained/francais.png \ + unmaintained/italiano.png \ + unmaintained/polski.png \ + unmaintained/portugues.png \ + unmaintained/russkij.png \ + unmaintained/suomi.png \ + unmaintained/svenska.png + +install_DATA += $(unmaintained) diff --git a/data/icons/locale/unmaintained/nederlands.png b/data/icons/locale/nederlands.png similarity index 100% rename from data/icons/locale/unmaintained/nederlands.png rename to data/icons/locale/nederlands.png diff --git a/data/icons/locale/unmaintained/slovak.png b/data/icons/locale/slovak.png similarity index 100% rename from data/icons/locale/unmaintained/slovak.png rename to data/icons/locale/slovak.png diff --git a/data/icons/movieplayer/Makefile.am b/data/icons/movieplayer/Makefile.am new file mode 100644 index 000000000..8594e7d67 --- /dev/null +++ b/data/icons/movieplayer/Makefile.am @@ -0,0 +1,9 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + mp_b-skip.png \ + mp_f-skip.png \ + mp_pause.png \ + mp_play.png \ + mp_play_repeat_all.png \ + mp_play_repeat_track.png diff --git a/data/icons/mp_b-skip.png b/data/icons/movieplayer/mp_b-skip.png similarity index 100% rename from data/icons/mp_b-skip.png rename to data/icons/movieplayer/mp_b-skip.png diff --git a/data/icons/mp_f-skip.png b/data/icons/movieplayer/mp_f-skip.png similarity index 100% rename from data/icons/mp_f-skip.png rename to data/icons/movieplayer/mp_f-skip.png diff --git a/data/icons/mp_pause.png b/data/icons/movieplayer/mp_pause.png similarity index 100% rename from data/icons/mp_pause.png rename to data/icons/movieplayer/mp_pause.png diff --git a/data/icons/mp_play.png b/data/icons/movieplayer/mp_play.png similarity index 100% rename from data/icons/mp_play.png rename to data/icons/movieplayer/mp_play.png diff --git a/data/icons/mp_play_repeat_all.png b/data/icons/movieplayer/mp_play_repeat_all.png similarity index 100% rename from data/icons/mp_play_repeat_all.png rename to data/icons/movieplayer/mp_play_repeat_all.png diff --git a/data/icons/mp_play_repeat_track.png b/data/icons/movieplayer/mp_play_repeat_track.png similarity index 100% rename from data/icons/mp_play_repeat_track.png rename to data/icons/movieplayer/mp_play_repeat_track.png diff --git a/data/icons/notyet.png b/data/icons/notyet.png deleted file mode 100644 index c22f319c3..000000000 Binary files a/data/icons/notyet.png and /dev/null differ diff --git a/data/icons/radar/Makefile.am b/data/icons/radar/Makefile.am new file mode 100644 index 000000000..96ed45e36 --- /dev/null +++ b/data/icons/radar/Makefile.am @@ -0,0 +1,15 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + radar.pal \ + radar_red.pal \ + radar0.raw \ + radar1.raw \ + radar2.raw \ + radar3.raw \ + radar4.raw \ + radar5.raw \ + radar6.raw \ + radar7.raw \ + radar8.raw \ + radar9.raw diff --git a/data/icons/radar.pal b/data/icons/radar/radar.pal similarity index 100% rename from data/icons/radar.pal rename to data/icons/radar/radar.pal diff --git a/data/icons/radar0.raw b/data/icons/radar/radar0.raw similarity index 100% rename from data/icons/radar0.raw rename to data/icons/radar/radar0.raw diff --git a/data/icons/radar1.raw b/data/icons/radar/radar1.raw similarity index 100% rename from data/icons/radar1.raw rename to data/icons/radar/radar1.raw diff --git a/data/icons/radar2.raw b/data/icons/radar/radar2.raw similarity index 100% rename from data/icons/radar2.raw rename to data/icons/radar/radar2.raw diff --git a/data/icons/radar3.raw b/data/icons/radar/radar3.raw similarity index 100% rename from data/icons/radar3.raw rename to data/icons/radar/radar3.raw diff --git a/data/icons/radar4.raw b/data/icons/radar/radar4.raw similarity index 100% rename from data/icons/radar4.raw rename to data/icons/radar/radar4.raw diff --git a/data/icons/radar5.raw b/data/icons/radar/radar5.raw similarity index 100% rename from data/icons/radar5.raw rename to data/icons/radar/radar5.raw diff --git a/data/icons/radar6.raw b/data/icons/radar/radar6.raw similarity index 100% rename from data/icons/radar6.raw rename to data/icons/radar/radar6.raw diff --git a/data/icons/radar7.raw b/data/icons/radar/radar7.raw similarity index 100% rename from data/icons/radar7.raw rename to data/icons/radar/radar7.raw diff --git a/data/icons/radar8.raw b/data/icons/radar/radar8.raw similarity index 100% rename from data/icons/radar8.raw rename to data/icons/radar/radar8.raw diff --git a/data/icons/radar9.raw b/data/icons/radar/radar9.raw similarity index 100% rename from data/icons/radar9.raw rename to data/icons/radar/radar9.raw diff --git a/data/icons/radar_red.pal b/data/icons/radar/radar_red.pal similarity index 100% rename from data/icons/radar_red.pal rename to data/icons/radar/radar_red.pal diff --git a/data/icons/slider/Makefile.am b/data/icons/slider/Makefile.am new file mode 100644 index 000000000..ad3b0a21f --- /dev/null +++ b/data/icons/slider/Makefile.am @@ -0,0 +1,9 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + volumebody.png \ + volumeslider2.png \ + volumeslider2alpha.png \ + volumeslider2blue.png \ + volumeslider2green.png \ + volumeslider2red.png diff --git a/data/icons/volumebody.png b/data/icons/slider/volumebody.png similarity index 100% rename from data/icons/volumebody.png rename to data/icons/slider/volumebody.png diff --git a/data/icons/volumeslider2.png b/data/icons/slider/volumeslider2.png similarity index 100% rename from data/icons/volumeslider2.png rename to data/icons/slider/volumeslider2.png diff --git a/data/icons/volumeslider2alpha.png b/data/icons/slider/volumeslider2alpha.png similarity index 100% rename from data/icons/volumeslider2alpha.png rename to data/icons/slider/volumeslider2alpha.png diff --git a/data/icons/volumeslider2blue.png b/data/icons/slider/volumeslider2blue.png similarity index 100% rename from data/icons/volumeslider2blue.png rename to data/icons/slider/volumeslider2blue.png diff --git a/data/icons/volumeslider2green.png b/data/icons/slider/volumeslider2green.png similarity index 100% rename from data/icons/volumeslider2green.png rename to data/icons/slider/volumeslider2green.png diff --git a/data/icons/volumeslider2red.png b/data/icons/slider/volumeslider2red.png similarity index 100% rename from data/icons/volumeslider2red.png rename to data/icons/slider/volumeslider2red.png diff --git a/data/icons/status/Makefile.am b/data/icons/status/Makefile.am new file mode 100644 index 000000000..c38d951ac --- /dev/null +++ b/data/icons/status/Makefile.am @@ -0,0 +1,5 @@ +SUBDIRS = \ + ca \ + channel \ + markers \ + various diff --git a/data/icons/status/ca/Makefile.am b/data/icons/status/ca/Makefile.am new file mode 100644 index 000000000..2da5da09e --- /dev/null +++ b/data/icons/status/ca/Makefile.am @@ -0,0 +1,36 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + biss_green.png \ + biss_white.png \ + biss_yellow.png \ + conax_green.png \ + conax_white.png \ + conax_yellow.png \ + cw_green.png \ + cw_white.png \ + cw_yellow.png \ + d_green.png \ + d_white.png \ + d_yellow.png \ + ird_green.png \ + ird_white.png \ + ird_yellow.png \ + nagra_green.png \ + nagra_white.png \ + nagra_yellow.png \ + nds_green.png \ + nds_white.png \ + nds_yellow.png \ + powervu_green.png \ + powervu_white.png \ + powervu_yellow.png \ + seca_green.png \ + seca_white.png \ + seca_yellow.png \ + via_green.png \ + via_white.png \ + via_yellow.png \ + x_green.png \ + x_white.png \ + x_yellow.png diff --git a/data/icons/biss_green.png b/data/icons/status/ca/biss_green.png similarity index 100% rename from data/icons/biss_green.png rename to data/icons/status/ca/biss_green.png diff --git a/data/icons/biss_white.png b/data/icons/status/ca/biss_white.png similarity index 100% rename from data/icons/biss_white.png rename to data/icons/status/ca/biss_white.png diff --git a/data/icons/biss_yellow.png b/data/icons/status/ca/biss_yellow.png similarity index 100% rename from data/icons/biss_yellow.png rename to data/icons/status/ca/biss_yellow.png diff --git a/data/icons/conax_green.png b/data/icons/status/ca/conax_green.png similarity index 100% rename from data/icons/conax_green.png rename to data/icons/status/ca/conax_green.png diff --git a/data/icons/conax_white.png b/data/icons/status/ca/conax_white.png similarity index 100% rename from data/icons/conax_white.png rename to data/icons/status/ca/conax_white.png diff --git a/data/icons/conax_yellow.png b/data/icons/status/ca/conax_yellow.png similarity index 100% rename from data/icons/conax_yellow.png rename to data/icons/status/ca/conax_yellow.png diff --git a/data/icons/cw_green.png b/data/icons/status/ca/cw_green.png similarity index 100% rename from data/icons/cw_green.png rename to data/icons/status/ca/cw_green.png diff --git a/data/icons/cw_white.png b/data/icons/status/ca/cw_white.png similarity index 100% rename from data/icons/cw_white.png rename to data/icons/status/ca/cw_white.png diff --git a/data/icons/cw_yellow.png b/data/icons/status/ca/cw_yellow.png similarity index 100% rename from data/icons/cw_yellow.png rename to data/icons/status/ca/cw_yellow.png diff --git a/data/icons/d_green.png b/data/icons/status/ca/d_green.png similarity index 100% rename from data/icons/d_green.png rename to data/icons/status/ca/d_green.png diff --git a/data/icons/d_white.png b/data/icons/status/ca/d_white.png similarity index 100% rename from data/icons/d_white.png rename to data/icons/status/ca/d_white.png diff --git a/data/icons/d_yellow.png b/data/icons/status/ca/d_yellow.png similarity index 100% rename from data/icons/d_yellow.png rename to data/icons/status/ca/d_yellow.png diff --git a/data/icons/ird_green.png b/data/icons/status/ca/ird_green.png similarity index 100% rename from data/icons/ird_green.png rename to data/icons/status/ca/ird_green.png diff --git a/data/icons/ird_white.png b/data/icons/status/ca/ird_white.png similarity index 100% rename from data/icons/ird_white.png rename to data/icons/status/ca/ird_white.png diff --git a/data/icons/ird_yellow.png b/data/icons/status/ca/ird_yellow.png similarity index 100% rename from data/icons/ird_yellow.png rename to data/icons/status/ca/ird_yellow.png diff --git a/data/icons/nagra_green.png b/data/icons/status/ca/nagra_green.png similarity index 100% rename from data/icons/nagra_green.png rename to data/icons/status/ca/nagra_green.png diff --git a/data/icons/nagra_white.png b/data/icons/status/ca/nagra_white.png similarity index 100% rename from data/icons/nagra_white.png rename to data/icons/status/ca/nagra_white.png diff --git a/data/icons/nagra_yellow.png b/data/icons/status/ca/nagra_yellow.png similarity index 100% rename from data/icons/nagra_yellow.png rename to data/icons/status/ca/nagra_yellow.png diff --git a/data/icons/nds_green.png b/data/icons/status/ca/nds_green.png similarity index 100% rename from data/icons/nds_green.png rename to data/icons/status/ca/nds_green.png diff --git a/data/icons/nds_white.png b/data/icons/status/ca/nds_white.png similarity index 100% rename from data/icons/nds_white.png rename to data/icons/status/ca/nds_white.png diff --git a/data/icons/nds_yellow.png b/data/icons/status/ca/nds_yellow.png similarity index 100% rename from data/icons/nds_yellow.png rename to data/icons/status/ca/nds_yellow.png diff --git a/data/icons/powervu_green.png b/data/icons/status/ca/powervu_green.png similarity index 100% rename from data/icons/powervu_green.png rename to data/icons/status/ca/powervu_green.png diff --git a/data/icons/powervu_white.png b/data/icons/status/ca/powervu_white.png similarity index 100% rename from data/icons/powervu_white.png rename to data/icons/status/ca/powervu_white.png diff --git a/data/icons/powervu_yellow.png b/data/icons/status/ca/powervu_yellow.png similarity index 100% rename from data/icons/powervu_yellow.png rename to data/icons/status/ca/powervu_yellow.png diff --git a/data/icons/seca_green.png b/data/icons/status/ca/seca_green.png similarity index 100% rename from data/icons/seca_green.png rename to data/icons/status/ca/seca_green.png diff --git a/data/icons/seca_white.png b/data/icons/status/ca/seca_white.png similarity index 100% rename from data/icons/seca_white.png rename to data/icons/status/ca/seca_white.png diff --git a/data/icons/seca_yellow.png b/data/icons/status/ca/seca_yellow.png similarity index 100% rename from data/icons/seca_yellow.png rename to data/icons/status/ca/seca_yellow.png diff --git a/data/icons/via_green.png b/data/icons/status/ca/via_green.png similarity index 100% rename from data/icons/via_green.png rename to data/icons/status/ca/via_green.png diff --git a/data/icons/via_white.png b/data/icons/status/ca/via_white.png similarity index 100% rename from data/icons/via_white.png rename to data/icons/status/ca/via_white.png diff --git a/data/icons/via_yellow.png b/data/icons/status/ca/via_yellow.png similarity index 100% rename from data/icons/via_yellow.png rename to data/icons/status/ca/via_yellow.png diff --git a/data/icons/x_green.png b/data/icons/status/ca/x_green.png similarity index 100% rename from data/icons/x_green.png rename to data/icons/status/ca/x_green.png diff --git a/data/icons/x_white.png b/data/icons/status/ca/x_white.png similarity index 100% rename from data/icons/x_white.png rename to data/icons/status/ca/x_white.png diff --git a/data/icons/x_yellow.png b/data/icons/status/ca/x_yellow.png similarity index 100% rename from data/icons/x_yellow.png rename to data/icons/status/ca/x_yellow.png diff --git a/data/icons/16_9.png b/data/icons/status/channel/16_9.png similarity index 100% rename from data/icons/16_9.png rename to data/icons/status/channel/16_9.png diff --git a/data/icons/16_9_gray.png b/data/icons/status/channel/16_9_gray.png similarity index 100% rename from data/icons/16_9_gray.png rename to data/icons/status/channel/16_9_gray.png diff --git a/data/icons/status/channel/Makefile.am b/data/icons/status/channel/Makefile.am new file mode 100644 index 000000000..13e953abc --- /dev/null +++ b/data/icons/status/channel/Makefile.am @@ -0,0 +1,37 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + 16_9.png \ + 16_9_gray.png \ + ca2.png \ + ca2_gray.png \ + dd.png \ + dd_avail.png \ + dd_gray.png \ + radiotextget.png \ + radiotextoff.png \ + radiotextwait.png \ + res_000.png \ + res_1080.png \ + res_1280.png \ + res_1440.png \ + res_1920.png \ + res_288.png \ + res_352.png \ + res_382.png \ + res_480.png \ + res_528.png \ + res_544.png \ + res_576.png \ + res_704.png \ + res_720.png \ + res_hd.png \ + res_sd.png \ + subt.png \ + subt_gray.png \ + tuner_1.png \ + tuner_2.png \ + tuner_3.png \ + tuner_4.png \ + vtxt.png \ + vtxt_gray.png diff --git a/data/icons/ca2.png b/data/icons/status/channel/ca2.png similarity index 100% rename from data/icons/ca2.png rename to data/icons/status/channel/ca2.png diff --git a/data/icons/ca2_gray.png b/data/icons/status/channel/ca2_gray.png similarity index 100% rename from data/icons/ca2_gray.png rename to data/icons/status/channel/ca2_gray.png diff --git a/data/icons/dd.png b/data/icons/status/channel/dd.png similarity index 100% rename from data/icons/dd.png rename to data/icons/status/channel/dd.png diff --git a/data/icons/dd_avail.png b/data/icons/status/channel/dd_avail.png similarity index 100% rename from data/icons/dd_avail.png rename to data/icons/status/channel/dd_avail.png diff --git a/data/icons/dd_gray.png b/data/icons/status/channel/dd_gray.png similarity index 100% rename from data/icons/dd_gray.png rename to data/icons/status/channel/dd_gray.png diff --git a/data/icons/radiotextget.png b/data/icons/status/channel/radiotextget.png similarity index 100% rename from data/icons/radiotextget.png rename to data/icons/status/channel/radiotextget.png diff --git a/data/icons/radiotextoff.png b/data/icons/status/channel/radiotextoff.png similarity index 100% rename from data/icons/radiotextoff.png rename to data/icons/status/channel/radiotextoff.png diff --git a/data/icons/radiotextwait.png b/data/icons/status/channel/radiotextwait.png similarity index 100% rename from data/icons/radiotextwait.png rename to data/icons/status/channel/radiotextwait.png diff --git a/data/icons/res_000.png b/data/icons/status/channel/res_000.png similarity index 100% rename from data/icons/res_000.png rename to data/icons/status/channel/res_000.png diff --git a/data/icons/res_1080.png b/data/icons/status/channel/res_1080.png similarity index 100% rename from data/icons/res_1080.png rename to data/icons/status/channel/res_1080.png diff --git a/data/icons/res_1280.png b/data/icons/status/channel/res_1280.png similarity index 100% rename from data/icons/res_1280.png rename to data/icons/status/channel/res_1280.png diff --git a/data/icons/res_1440.png b/data/icons/status/channel/res_1440.png similarity index 100% rename from data/icons/res_1440.png rename to data/icons/status/channel/res_1440.png diff --git a/data/icons/res_1920.png b/data/icons/status/channel/res_1920.png similarity index 100% rename from data/icons/res_1920.png rename to data/icons/status/channel/res_1920.png diff --git a/data/icons/res_288.png b/data/icons/status/channel/res_288.png similarity index 100% rename from data/icons/res_288.png rename to data/icons/status/channel/res_288.png diff --git a/data/icons/res_352.png b/data/icons/status/channel/res_352.png similarity index 100% rename from data/icons/res_352.png rename to data/icons/status/channel/res_352.png diff --git a/data/icons/res_382.png b/data/icons/status/channel/res_382.png similarity index 100% rename from data/icons/res_382.png rename to data/icons/status/channel/res_382.png diff --git a/data/icons/res_480.png b/data/icons/status/channel/res_480.png similarity index 100% rename from data/icons/res_480.png rename to data/icons/status/channel/res_480.png diff --git a/data/icons/res_528.png b/data/icons/status/channel/res_528.png similarity index 100% rename from data/icons/res_528.png rename to data/icons/status/channel/res_528.png diff --git a/data/icons/res_544.png b/data/icons/status/channel/res_544.png similarity index 100% rename from data/icons/res_544.png rename to data/icons/status/channel/res_544.png diff --git a/data/icons/res_576.png b/data/icons/status/channel/res_576.png similarity index 100% rename from data/icons/res_576.png rename to data/icons/status/channel/res_576.png diff --git a/data/icons/res_704.png b/data/icons/status/channel/res_704.png similarity index 100% rename from data/icons/res_704.png rename to data/icons/status/channel/res_704.png diff --git a/data/icons/res_720.png b/data/icons/status/channel/res_720.png similarity index 100% rename from data/icons/res_720.png rename to data/icons/status/channel/res_720.png diff --git a/data/icons/res_hd.png b/data/icons/status/channel/res_hd.png similarity index 100% rename from data/icons/res_hd.png rename to data/icons/status/channel/res_hd.png diff --git a/data/icons/res_sd.png b/data/icons/status/channel/res_sd.png similarity index 100% rename from data/icons/res_sd.png rename to data/icons/status/channel/res_sd.png diff --git a/data/icons/subt.png b/data/icons/status/channel/subt.png similarity index 100% rename from data/icons/subt.png rename to data/icons/status/channel/subt.png diff --git a/data/icons/subt_gray.png b/data/icons/status/channel/subt_gray.png similarity index 100% rename from data/icons/subt_gray.png rename to data/icons/status/channel/subt_gray.png diff --git a/data/icons/tuner_1.png b/data/icons/status/channel/tuner_1.png similarity index 100% rename from data/icons/tuner_1.png rename to data/icons/status/channel/tuner_1.png diff --git a/data/icons/tuner_2.png b/data/icons/status/channel/tuner_2.png similarity index 100% rename from data/icons/tuner_2.png rename to data/icons/status/channel/tuner_2.png diff --git a/data/icons/tuner_3.png b/data/icons/status/channel/tuner_3.png similarity index 100% rename from data/icons/tuner_3.png rename to data/icons/status/channel/tuner_3.png diff --git a/data/icons/tuner_4.png b/data/icons/status/channel/tuner_4.png similarity index 100% rename from data/icons/tuner_4.png rename to data/icons/status/channel/tuner_4.png diff --git a/data/icons/vtxt.png b/data/icons/status/channel/vtxt.png similarity index 100% rename from data/icons/vtxt.png rename to data/icons/status/channel/vtxt.png diff --git a/data/icons/vtxt_gray.png b/data/icons/status/channel/vtxt_gray.png similarity index 100% rename from data/icons/vtxt_gray.png rename to data/icons/status/channel/vtxt_gray.png diff --git a/data/icons/status/markers/Makefile.am b/data/icons/status/markers/Makefile.am new file mode 100644 index 000000000..0a6cb8725 --- /dev/null +++ b/data/icons/status/markers/Makefile.am @@ -0,0 +1,6 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + checkmark.png \ + important.png \ + warning.png diff --git a/data/icons/checkmark.png b/data/icons/status/markers/checkmark.png old mode 100755 new mode 100644 similarity index 100% rename from data/icons/checkmark.png rename to data/icons/status/markers/checkmark.png diff --git a/data/icons/important.png b/data/icons/status/markers/important.png similarity index 100% rename from data/icons/important.png rename to data/icons/status/markers/important.png diff --git a/data/icons/warning.png b/data/icons/status/markers/warning.png similarity index 100% rename from data/icons/warning.png rename to data/icons/status/markers/warning.png diff --git a/data/icons/status/various/Makefile.am b/data/icons/status/various/Makefile.am new file mode 100644 index 000000000..900ba7931 --- /dev/null +++ b/data/icons/status/various/Makefile.am @@ -0,0 +1,19 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + ats.png \ + ats_gray.png \ + ca.png \ + epg.png \ + hidden.png \ + lock.png \ + lock_passive.png \ + mounted.png \ + mute.png \ + not_mounted.png \ + pip.png \ + rclock.png \ + rec.png \ + rec_event_marker.png \ + rec_gray.png \ + zap.png diff --git a/data/icons/ats.png b/data/icons/status/various/ats.png similarity index 100% rename from data/icons/ats.png rename to data/icons/status/various/ats.png diff --git a/data/icons/ats_gray.png b/data/icons/status/various/ats_gray.png similarity index 100% rename from data/icons/ats_gray.png rename to data/icons/status/various/ats_gray.png diff --git a/data/icons/ca.png b/data/icons/status/various/ca.png similarity index 100% rename from data/icons/ca.png rename to data/icons/status/various/ca.png diff --git a/data/icons/epg.png b/data/icons/status/various/epg.png similarity index 100% rename from data/icons/epg.png rename to data/icons/status/various/epg.png diff --git a/data/icons/hidden.png b/data/icons/status/various/hidden.png similarity index 100% rename from data/icons/hidden.png rename to data/icons/status/various/hidden.png diff --git a/data/icons/lock.png b/data/icons/status/various/lock.png similarity index 100% rename from data/icons/lock.png rename to data/icons/status/various/lock.png diff --git a/data/icons/lock_passive.png b/data/icons/status/various/lock_passive.png similarity index 100% rename from data/icons/lock_passive.png rename to data/icons/status/various/lock_passive.png diff --git a/data/icons/mounted.png b/data/icons/status/various/mounted.png similarity index 100% rename from data/icons/mounted.png rename to data/icons/status/various/mounted.png diff --git a/data/icons/mute.png b/data/icons/status/various/mute.png similarity index 100% rename from data/icons/mute.png rename to data/icons/status/various/mute.png diff --git a/data/icons/not_mounted.png b/data/icons/status/various/not_mounted.png similarity index 100% rename from data/icons/not_mounted.png rename to data/icons/status/various/not_mounted.png diff --git a/data/icons/pip.png b/data/icons/status/various/pip.png similarity index 100% rename from data/icons/pip.png rename to data/icons/status/various/pip.png diff --git a/data/icons/rclock.png b/data/icons/status/various/rclock.png similarity index 100% rename from data/icons/rclock.png rename to data/icons/status/various/rclock.png diff --git a/data/icons/rec.png b/data/icons/status/various/rec.png similarity index 100% rename from data/icons/rec.png rename to data/icons/status/various/rec.png diff --git a/data/icons/rec_event_marker.png b/data/icons/status/various/rec_event_marker.png similarity index 100% rename from data/icons/rec_event_marker.png rename to data/icons/status/various/rec_event_marker.png diff --git a/data/icons/rec_gray.png b/data/icons/status/various/rec_gray.png similarity index 100% rename from data/icons/rec_gray.png rename to data/icons/status/various/rec_gray.png diff --git a/data/icons/zap.png b/data/icons/status/various/zap.png old mode 100755 new mode 100644 similarity index 100% rename from data/icons/zap.png rename to data/icons/status/various/zap.png diff --git a/data/icons/various/Makefile.am b/data/icons/various/Makefile.am new file mode 100644 index 000000000..a8accfeff --- /dev/null +++ b/data/icons/various/Makefile.am @@ -0,0 +1,10 @@ +installdir = $(ICONSDIR) + +install_DATA = \ + border_lr.png \ + border_ul.png \ + numericpad.png \ + star-off.png \ + star-on.png \ + tmdb.png \ + volume.png diff --git a/data/icons/border_lr.png b/data/icons/various/border_lr.png similarity index 100% rename from data/icons/border_lr.png rename to data/icons/various/border_lr.png diff --git a/data/icons/border_ul.png b/data/icons/various/border_ul.png similarity index 100% rename from data/icons/border_ul.png rename to data/icons/various/border_ul.png diff --git a/data/icons/numericpad.png b/data/icons/various/numericpad.png similarity index 100% rename from data/icons/numericpad.png rename to data/icons/various/numericpad.png diff --git a/data/icons/rass.png b/data/icons/various/rass.png similarity index 100% rename from data/icons/rass.png rename to data/icons/various/rass.png diff --git a/data/icons/star-off.png b/data/icons/various/star-off.png similarity index 100% rename from data/icons/star-off.png rename to data/icons/various/star-off.png diff --git a/data/icons/star-on.png b/data/icons/various/star-on.png similarity index 100% rename from data/icons/star-on.png rename to data/icons/various/star-on.png diff --git a/data/icons/tmdb.png b/data/icons/various/tmdb.png similarity index 100% rename from data/icons/tmdb.png rename to data/icons/various/tmdb.png diff --git a/data/icons/volume.png b/data/icons/various/volume.png similarity index 100% rename from data/icons/volume.png rename to data/icons/various/volume.png diff --git a/data/locale/deutsch.locale b/data/locale/deutsch.locale index f6feeaa51..4b94d2462 100644 --- a/data/locale/deutsch.locale +++ b/data/locale/deutsch.locale @@ -712,6 +712,7 @@ fontmenu.scaling_x_hint2 Horizontal (in %) min 50 / max 200 fontmenu.scaling_y Vertikal (in %) fontmenu.scaling_y_hint2 Vertikal (in %) min 50 / max 200 fontmenu.sizes Schriftgrößen +fontsize.button_text Schaltflächen-Text fontsize.channel_num_zap Direktauswahl fontsize.channellist Kanalliste fontsize.channellist_descr Beschreibung @@ -1041,6 +1042,7 @@ menu.hint_epg_max_events Maxiale Anzahl der Events im Zwischenspeicher menu.hint_epg_old_events Veraltete EPG-Daten werden nach dieser Zeit (in Stunden) verworfen menu.hint_epg_read Liest nach einem Neustart die EPG-Daten von einem externen Datenträger wieder ein menu.hint_epg_read_frequently Liest die EPG-Daten in regelmäßigen Abständen von einem externen Datenträger +menu.hint_epg_read_now Liest die EPG-Daten von einem externen Datenträger ein menu.hint_epg_save Speichert die EPG-Daten beim Herunterfahren auf einem externen Datenträger menu.hint_epg_save_frequently Speichert die EPG-Daten in regelmäßigen Abständen auf einem externen Datenträger menu.hint_epg_save_mode Speichert die EPG-Daten nur für Sender, die in die Favoriten aufgenommen sind @@ -1517,6 +1519,7 @@ miscsettings.epg_old_events_hint1 Wie lange abgelaufene EPG-Daten aufheben? miscsettings.epg_old_events_hint2 Angabe in Stunden miscsettings.epg_read Gespeicherte EPG-Daten einlesen miscsettings.epg_read_frequently EPG regelmäßig einlesen +miscsettings.epg_read_now Gespeichterte EPG-Daten jetzt einlesen miscsettings.epg_save EPG zwischenspeichern miscsettings.epg_save_frequently EPG regelmäßig speichern miscsettings.epg_save_mode Nur Favoriten @@ -1685,7 +1688,7 @@ moviebrowser.head_recordlist Zuletzt aufgenommen: moviebrowser.help_button_blue Filminfos neu laden moviebrowser.help_button_green Filterfenster einblenden moviebrowser.help_button_left Ansicht ändern -moviebrowser.help_button_menu Hauptmenü öffnen +moviebrowser.help_button_menu Filminfos und Einstellungen moviebrowser.help_button_mute Filme löschen moviebrowser.help_button_okay Filme abspielen moviebrowser.help_button_play Filme markieren @@ -1828,22 +1831,25 @@ movieplayer.bookmarkname_hint2 movieplayer.chapters Kapitel movieplayer.fileplayback Abspielen (Multiformat) movieplayer.head Movieplayer +movieplayer.help_additional Weitere benutzerdefinierte Tastenbelegungen sind unter "Hauptmenü" > "Einstellungen" > "Tasten" > "Bearbeiten" > "Movieplayer" zu finden.\n\nWährend der Wiedergabe von Filmen sind im Hauptmenü einige Menüpunkte deaktiviert. +movieplayer.help_button_1 1 Minute zurück +movieplayer.help_button_2 Zum Filmanfang springen +movieplayer.help_button_3 1 Minute vor +movieplayer.help_button_4 3 Minuten zurück +movieplayer.help_button_5 Zur Filmmitte springen +movieplayer.help_button_6 3 Minuten vor +movieplayer.help_button_7 10 Minuten zurück +movieplayer.help_button_8 Zum Filmende springen +movieplayer.help_button_9 10 Minuten vor +movieplayer.help_button_backward Schneller Rücklauf +movieplayer.help_button_forward Schneller Vorlauf +movieplayer.help_button_menu Hauptmenü öffnen +movieplayer.help_button_pause Pause / Weiter +movieplayer.help_button_stop Stopp movieplayer.plugin Movieplayer-Plugin movieplayer.starting Wiedergabe starten ... movieplayer.titles Titel movieplayer.toomanybookmarks Sie haben bereits zu viele Lesezeichen angelegt.\nEs muß erst ein anderes gelöscht werden. -movieplayer.tshelp1 Stopp -movieplayer.tshelp10 ca. 10 Minuten zurück -movieplayer.tshelp11 ca. 10 Minuten vor -movieplayer.tshelp12 Hilfe: http://www.giggo.de/dbox2/movieplayer.html\n -movieplayer.tshelp2 Auswahl der Tonspur -movieplayer.tshelp3 Pause/Weiter -movieplayer.tshelp4 Bookmark setzen -movieplayer.tshelp5 Zeit einblenden -movieplayer.tshelp6 ca. 1 Minute zurück -movieplayer.tshelp7 ca. 1 Minute vor -movieplayer.tshelp8 ca. 5 Minuten zurück -movieplayer.tshelp9 ca. 5 Minuten vor movieplayer.tsplayback TS Abspielen movieplayer.ytplayback YouTube-Feed Wiedergabe mpkey.audio Tonspuren @@ -2368,8 +2374,8 @@ timerlist.repeat.wednesday Mi timerlist.repeat.weekdays An Wochentagen timerlist.repeat.weekly wöchentlich timerlist.repeatcount Wiederholungen -timerlist.repeatcount.help1 Anzahl der Timerausführungen -timerlist.repeatcount.help2 0 für unbegrenzte Anzahl +timerlist.repeatcount.hint_1 Anzahl der Timerausführungen +timerlist.repeatcount.hint_2 0 für unbegrenzte Anzahl timerlist.save Timer speichern timerlist.standby Aktion timerlist.standby.off Aufwachen aus Standby @@ -2448,6 +2454,7 @@ usermenu.title_blue Erweiterungen usermenu.title_green Tonwahl usermenu.title_red EPG usermenu.title_yellow Bildoptionen +usermenus.head Benutzermenüs video_mode_ok Video-Einstellungen OK? videomenu.43mode 4:3 Anzeigeverhalten videomenu.analog_auto AUTO diff --git a/data/locale/english.locale b/data/locale/english.locale index 85d353503..ad89c1170 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -712,6 +712,7 @@ fontmenu.scaling_x_hint2 Horizontal (in %) min 50 / max 200 fontmenu.scaling_y Vertical (in %) fontmenu.scaling_y_hint2 Vertical (in %) min 50 / max 200 fontmenu.sizes Font sizes +fontsize.button_text Button text fontsize.channel_num_zap direct selection fontsize.channellist Channellist fontsize.channellist_descr Description @@ -1041,6 +1042,7 @@ menu.hint_epg_max_events Maximum events to cache. After reaching limit\nEPG cach menu.hint_epg_old_events Hours after event end time to consider\nevent old and remove it from cache menu.hint_epg_read Read saved EPG data after boot from an external device menu.hint_epg_read_frequently Read cached EPG data in frequently intervals from an external device +menu.hint_epg_read_now Read saved EPG data from an external device menu.hint_epg_save Save cached EPG data to an external device menu.hint_epg_save_frequently Save cached EPG data in frequently intervals to an external device menu.hint_epg_save_mode Cache EPG only for channels present in favorite bouquets @@ -1517,6 +1519,7 @@ miscsettings.epg_old_events_hint1 How long will EPG-Data be stored after they ti miscsettings.epg_old_events_hint2 Set in hours miscsettings.epg_read Restore EPG on boot miscsettings.epg_read_frequently Restore EPG frequently +miscsettings.epg_read_now Restore EPG now miscsettings.epg_save Save EPG on shutdown miscsettings.epg_save_frequently Save EPG frequently miscsettings.epg_save_mode Favorites only @@ -1685,7 +1688,7 @@ moviebrowser.head_recordlist Last recorded: moviebrowser.help_button_blue Reload movie informations moviebrowser.help_button_green Show filter selection moviebrowser.help_button_left Change view -moviebrowser.help_button_menu Open main menu +moviebrowser.help_button_menu Movie infos and settings moviebrowser.help_button_mute Delete movies moviebrowser.help_button_okay Play movies moviebrowser.help_button_play Mark movies @@ -1828,22 +1831,25 @@ movieplayer.bookmarkname_hint2 movieplayer.chapters Chapters movieplayer.fileplayback File play movieplayer.head Movieplayer +movieplayer.help_additional To find more user definable key bindings, see "Mainmenu" > "Settings" > "Keys" > "Edit" > "Movieplayer".\n\nWhile movie playback some menuitems in mainmenu are deactivated. +movieplayer.help_button_1 1 minute backward +movieplayer.help_button_2 Jump to movie's start +movieplayer.help_button_3 1 minute forward +movieplayer.help_button_4 3 minutes backward +movieplayer.help_button_5 Jump to movie's middle +movieplayer.help_button_6 3 minutes forward +movieplayer.help_button_7 10 minutes backward +movieplayer.help_button_8 Jump to movie's end +movieplayer.help_button_9 10 minutes forward +movieplayer.help_button_backward Fast rewind +movieplayer.help_button_forward Fast forward +movieplayer.help_button_menu Open main menu +movieplayer.help_button_pause Pause / Continue +movieplayer.help_button_stop Stop movieplayer.plugin Movieplayer plugin movieplayer.starting Starting playback ... movieplayer.titles Titles movieplayer.toomanybookmarks There are too many bookmarks.\nYou need to delete one of them first. -movieplayer.tshelp1 Stop -movieplayer.tshelp10 approx. 10 minutes back -movieplayer.tshelp11 skip approx. 10 minutes -movieplayer.tshelp12 Help: http://www.giggo.de/dbox2/movieplayer.html\n -movieplayer.tshelp2 Select audio track -movieplayer.tshelp3 Pause/Continue -movieplayer.tshelp4 Create bookmark -movieplayer.tshelp5 Show progress -movieplayer.tshelp6 approx. 1 minute back -movieplayer.tshelp7 skip approx. 1 minute -movieplayer.tshelp8 approx. 5 minutes back -movieplayer.tshelp9 skip approx. 5 minutes movieplayer.tsplayback Play TS movieplayer.ytplayback YouTube videoplayer mpkey.audio Audiotracks @@ -2368,8 +2374,8 @@ timerlist.repeat.wednesday We timerlist.repeat.weekdays on weekdays timerlist.repeat.weekly weekly timerlist.repeatcount repeats -timerlist.repeatcount.help1 amount of timer repeats -timerlist.repeatcount.help2 0 for unlimited repeats +timerlist.repeatcount.hint_1 Amount of timer repeats +timerlist.repeatcount.hint_2 0 for unlimited repeats timerlist.save Save timer timerlist.standby Action timerlist.standby.off Leave standby @@ -2448,6 +2454,7 @@ usermenu.title_blue Features usermenu.title_green Audio usermenu.title_red Event-List usermenu.title_yellow Video +usermenus.head User menus video_mode_ok Is this video mode working ok ? videomenu.43mode 4:3 Content mode videomenu.analog_auto AUTO diff --git a/data/locale/nederlands.locale b/data/locale/nederlands.locale index 6450a1866..b4c78e9e0 100644 --- a/data/locale/nederlands.locale +++ b/data/locale/nederlands.locale @@ -665,6 +665,7 @@ fontmenu.scaling_x_hint2 Horizontaal (in %) min 50 / max 200 fontmenu.scaling_y Verticaal (in %) fontmenu.scaling_y_hint2 Verticaal (in %) min 50 / max 200 fontmenu.sizes Lettertype grootte +fontsize.button_text Button text fontsize.channel_num_zap directe selectie fontsize.channellist Kanalenlijst fontsize.channellist_descr Omschrijving @@ -2201,9 +2202,9 @@ timing.infobar_movieplayer Infobalk (film modus) timing.infobar_radio Infobalk (radio modus) timing.menu Menu timing.numericzap Numeriek Zap -timing.volumebar Volume balk timing.popup_messages Popup messages timing.static_messages Interactive messages +timing.volumebar Volume balk tmdb.read_data Zoeken TMDB data... unicable.lnb Invoer Unicable unicable.qrg Unicable Frequentie diff --git a/data/locale/slovak.locale b/data/locale/slovak.locale index 194fb3a84..c292260db 100644 --- a/data/locale/slovak.locale +++ b/data/locale/slovak.locale @@ -461,7 +461,7 @@ extra.key_timeshift Časový posun extra.key_unlock Odblokovanie extra.ladirection Umiestnenie zem.šírky extra.latitude Zem.šírka [N/S] -extra.loadconfig Obnoviť nastavenia z... +extra.loadconfig Obnoviť nastavenia z ... extra.loadkeys Obnoviť nastavenia kláves z ... extra.lodirection Umiestnenie zem.dľžky extra.longitude Zem.dľžka [E/W] @@ -473,7 +473,7 @@ extra.rotor_swap Vymeniť východ/západ motoru extra.rounded_corners Vzhľad rohov extra.rounded_corners_off hranatý extra.rounded_corners_on zaoblený -extra.saveconfig Uložiť nastavenia do... +extra.saveconfig Uložiť nastavenia do ... extra.savekeys Uložiť nastavenia kláves do ... extra.scrambled_message Správa o kódovaní extra.show_mute_icon Ikona umlčania pri hlasitosti 0 @@ -703,7 +703,7 @@ fontmenu.eventlist Programový sprievodca fontmenu.head Nastavenie písma fontmenu.infobar Informačná lišta fontmenu.menu Menu -fontmenu.messages Messages +fontmenu.messages Správy fontmenu.moviebrowser Prehliadač filmov fontmenu.other Iné fontmenu.scaling Faktor zoomu globálneho fontu @@ -712,6 +712,7 @@ fontmenu.scaling_x_hint2 Vodorovne (v %) min 50 / max 200 fontmenu.scaling_y Zvislo (v %) fontmenu.scaling_y_hint2 Zvislo (v %) min 50 / max 200 fontmenu.sizes Veľkosti písma +fontsize.button_text Text tlačidla fontsize.channel_num_zap Priamy výber fontsize.channellist Zoznam kanálov fontsize.channellist_descr Popis @@ -737,7 +738,7 @@ fontsize.menu_foot Päta (vo všetkých grafických elementoch) fontsize.menu_hint Popis menu fontsize.menu_info Informačné menu fontsize.menu_title Titulok menu -fontsize.message_text Messagwe Text +fontsize.message_text Text správy fontsize.moviebrowser_head Hlavičky fontsize.moviebrowser_info Informačné okno fontsize.moviebrowser_list Zoznam položiek @@ -786,7 +787,7 @@ hdd_statfs_recording len pri nahrávaní hdd_umount Odpojenie hdd_umount_warn Chyba odpájania disku! hdd_umounted Zariadenie odstránené -help_box_title Help +help_box_title Pomoc imageinfo.api API: imageinfo.creator Vytvoril: imageinfo.date Dátum: @@ -1039,7 +1040,9 @@ menu.hint_epg_extendedcache Maximálny čas ukladania\npopisov doplňujúcich ud menu.hint_epg_fonts Zmena veľkosti písma okna EPG podrobností menu.hint_epg_max_events Maximálny počet uložených udalostí. Po dosiahnutí hranice\nEPG cache odstráni nasledujúce udalosti menu.hint_epg_old_events Hodiny po skončení udalosti, kedy sa označí\nako staré a odstráni sa z uložených -menu.hint_epg_read Načíta uložené EPG údaje po zavedení z externého zariadenia +menu.hint_epg_read Po reštarte načíta uložené EPG údaje z externého zariadenia +menu.hint_epg_read_frequently Načíta uložené EPG údaje v častejších intervaloch z externého zariadenia +menu.hint_epg_read_now Načítať uložené EPG údaje z externého zariadenia menu.hint_epg_save Uloženie EPG na disk alebo usb\pre načítanie po spustení menu.hint_epg_save_frequently Ukladanie EPG v pravidelných intervaloch na externé zariadenie menu.hint_epg_save_mode Ukladať EPG iba pre kanály uložené v obľúbených buketoch @@ -1185,7 +1188,7 @@ menu.hint_menu_fonts Zmena veľkosti písma menu menu.hint_menu_hints Zobrazí túto nápovedu. Taktiež môžno kedykoľvek zmeniť použitím tlačidla ´HELP´. menu.hint_menu_pos Výber umiestnenia menu menu.hint_menus Konfigurácia volieb ponuky -menu.hint_message_fonts Change message text font sizes +menu.hint_message_fonts Zmena veľkosti písma správy menu.hint_misc_cec HDMI-CEC voľby menu.hint_misc_channellist HD/Nové/Odstránené zoznamy kanálov, cyklické prepnutie menu.hint_misc_energy Použitie pohotovostného režimu, oneskorené vypnutie\nčasovače neaktivity @@ -1406,14 +1409,14 @@ menu.hint_selected_text Zmena farby textu označenej položky menu.hint_service Nastavenie tuneru, vyhľadanie služieb,\núprava buketov, aktualizácia software menu.hint_service_scan Automatické / manuálne vyhľadávanie staníc, FastScan, Test signálu menu.hint_settings Konfigurácia system, sieť, zvuk, obraz, OSD a iné -menu.hint_shoutcast_dev_id Vložte vaše SHOUTcast údaje. Neuvedením údajov sa vypne podpora SHOUTcast. -menu.hint_shoutcast_enabled Povoliť alebo zakázať podporu SHOUTcast +menu.hint_shoutcast_dev_id Vložte vaše SHOUTcast ID. Prázdne pole vypne podporu pre SHOUTcast. +menu.hint_shoutcast_enabled Povolí alebo zakáže podporu pre SHOUTcast. menu.hint_show_mute_icon Zobrazenie ikony umlčania, ak nastavenie hlasitosťi bude 0 -menu.hint_shutdown Vypnutie prijímača - bez potvrdzovania -menu.hint_shutdown_count Čas prepnutia prijímača z pohotovostného režimu do stavu vypnutia -menu.hint_shutdown_menu Prepne prijímač do pohotovostného režimu alebo ho vypne, nastaví časovač vypnutia -menu.hint_shutdown_rcdelay Aktivuje vypnutie prijímača, ak je tlačidlo zapnutia\nstlačené viac ako 1 sekundu -menu.hint_shutdown_real Aktivuje pohotovostný režim\nAk je zakázané, tlačidlo zapnutia vypne prístroj +menu.hint_shutdown Vypne prijímač do hlbokého spánku.\nBez potvrdzovania +menu.hint_shutdown_count Čas prepnutia prijímača z pohotovostného režimu do hlbokého spánku +menu.hint_shutdown_menu Uvedie prijímač do pohotovostného režimu alebo hlbokého spánku, nastavte časovač spánku +menu.hint_shutdown_rcdelay Povolí hlboký spánok v prípade stlačenia\ntlačidla napájania dlhšie ako 1 sekunda +menu.hint_shutdown_real Povolí pohotovostný režim\nAk je zakázané, tlačidlo napájania uvedie prijímač do hlbokého spánku menu.hint_sleeptimer Nastavenie časovača pre prechod prijímača do pohotovostného režimu menu.hint_sleeptimer_min Prednastavené nastavenia pre časovač vypnutia menu.hint_sms_channel Ak povolené, číselné klávesy v zozname kanálov budú použité pre vyhľadávanie kanálu v štýle SMS @@ -1433,7 +1436,8 @@ menu.hint_subchannel_pos Pozícia menu výberu sub-kanálov menu.hint_sw_update Aktualizácia software menu.hint_theme Výber prednastavených farebných vzhľadov\nUloženie alebo nahranie vzhľadu zo súborov menu.hint_timeouts Konfigurácia času zmiznutia GUI okien\nv sekundách -menu.hint_timeouts_static_messages Timeout for specific messages with user interaction +menu.hint_timeouts_static_messages Čas pre špecifické správy so zásahom užívateľa +menu.hint_timer_followscreenings Pre nastavenie časovača zobraziť výber s nasledujúcim vysielaním menu.hint_timers Pridanie/Odstránenie/Upravenie plánovaného\nnahrávania, pripomienky atď. menu.hint_timezone Výber časového pásma menu.hint_tmdb_api_key Vložte váš TMDb API kľúč. Neuvedením údajov sa vypne podpora TMDb @@ -1514,6 +1518,8 @@ miscsettings.epg_old_events Odstrániť neaktuálne EPG (hod.) miscsettings.epg_old_events_hint1 Ako dlho zapisovať EPG údaje po skončení? miscsettings.epg_old_events_hint2 Nastavenie v hodinách. miscsettings.epg_read Obnoviť EPG po reštarte +miscsettings.epg_read_frequently Časté obnovovanie EPG +miscsettings.epg_read_now Obnoviť EPG miscsettings.epg_save Uložiť EPG pred vypnutím miscsettings.epg_save_frequently Periodické ukladanie EPG miscsettings.epg_save_mode Iba obľúbené @@ -1668,6 +1674,7 @@ moviebrowser.edit_book_type_info1 Zadanie novej dĺžky skoku moviebrowser.edit_book_type_info2 <0 vzad , >0 vpred, 0: nikde moviebrowser.edit_serie Zadanie názvu série moviebrowser.error_no_movies Nenájdené filmy +moviebrowser.filter_off Filter vyp moviebrowser.foot_filter Filter: moviebrowser.foot_focus Prepnúť okno moviebrowser.foot_options Voľby @@ -1752,7 +1759,7 @@ moviebrowser.menu_truncate Skrátiť film moviebrowser.option_browser Možnosti prehliadača moviebrowser.reload_at_start Načítanie informácie o filme pri štarte moviebrowser.remount_at_start Pripojiť pri štarte -moviebrowser.scan_for_movies Hľadať filmy ... +moviebrowser.scan_for_movies Prehľadávanie nahrávok ... moviebrowser.serie_auto_create Automaticky doplniť seriály moviebrowser.serie_head Seriály moviebrowser.serie_name Zmena názvu @@ -1824,24 +1831,27 @@ movieplayer.bookmarkname_hint2 movieplayer.chapters Kapitoly movieplayer.fileplayback Prehliadač súborov movieplayer.head Prehrávač filmov +movieplayer.help_additional Ak chcete nájsť viac definovateľných kláves, vojdite do\n"Hlavné menuu" > "Nastavenia" > "Nastavenie kláves" > "Upraviť..." > "Prehrávač filmov".\n\nPočas prehrávania filmu sú niektoré položky hlavného menu deaktivované. +movieplayer.help_button_1 1 minúta späť +movieplayer.help_button_2 Skok na začiatok filmu +movieplayer.help_button_3 1 minúta vpred +movieplayer.help_button_4 3 minúty späť +movieplayer.help_button_5 Skok na stred filmu +movieplayer.help_button_6 3 minúty vpred +movieplayer.help_button_7 10 minút späť +movieplayer.help_button_8 Skok na koniec filmu +movieplayer.help_button_9 10 minút vpred +movieplayer.help_button_backward Zrýchlene späť +movieplayer.help_button_forward Zrýchlene vpred +movieplayer.help_button_menu Otvoriť hlavné menu +movieplayer.help_button_pause Pozastaviť / Pokračovať +movieplayer.help_button_stop Zastaviť movieplayer.plugin Doplnky Prhrávača filmov movieplayer.starting Spúšťa sa prehrávanie... movieplayer.titles Tituly movieplayer.toomanybookmarks Veľa záložiek.\nJe potrebné vymazať jednu najprv. -movieplayer.tshelp1 Zastavenie -movieplayer.tshelp10 asi 10 min dozadu -movieplayer.tshelp11 asi 10 min dopredu -movieplayer.tshelp12 Nápoveda: http://www.giggo.de/dbox2/movieplayer.html\n -movieplayer.tshelp2 Výbrer zvukovej stopy -movieplayer.tshelp3 Prerušenie/Pokračovanie -movieplayer.tshelp4 Vytvoriť záložku -movieplayer.tshelp5 Zobraziť čas -movieplayer.tshelp6 asi 1 min dozadu -movieplayer.tshelp7 asi 1 min dopredu -movieplayer.tshelp8 asi 5 min dozadu -movieplayer.tshelp9 asi 5 min dopredu movieplayer.tsplayback Prehrať TS -movieplayer.ytplayback YouTube prehrávač +movieplayer.ytplayback YouTube video prehrávač mpkey.audio Zvuková stopa mpkey.bookmark Uložiť záložku mpkey.forward Dopredu @@ -2364,8 +2374,8 @@ timerlist.repeat.wednesday St timerlist.repeat.weekdays v dňoch týždňa timerlist.repeat.weekly týždenne timerlist.repeatcount Opakovanie -timerlist.repeatcount.help1 Počet opakovaní -timerlist.repeatcount.help2 ´0´ - stále opakuj +timerlist.repeatcount.hint_1 Počet opakovaní časovača +timerlist.repeatcount.hint_2 0 pre neobmedzené opakovania timerlist.save Uložiť plán timerlist.standby Akcia timerlist.standby.off Opustiť pohotovostný režim @@ -2385,6 +2395,7 @@ timerlist.type.zapto Prepnutie timerlist.weekdays V dňoch týždňa timerlist.weekdays.hint_1 Po Ut St Št Pi So Ne timerlist.weekdays.hint_2 'X'=plánované '-' neplánované +timersettings.followscreenings Ukázať výber vysielania timersettings.record_safety_time_after Korekcia času ukončenia nahrávania timersettings.record_safety_time_after.hint_1 Čas v min. (00=vypnuté), ktorý bude pripočítaný timersettings.record_safety_time_after.hint_2 po ukončení daného plánu @@ -2402,9 +2413,9 @@ timing.infobar_movieplayer Stavový riadok (filmový mód) timing.infobar_radio Stavový riadok (rádio mód) timing.menu Ponuka timing.numericzap Prepínanie číslami +timing.popup_messages Vyskakovacie správy +timing.static_messages Interaktívne správy timing.volumebar Ukazateľ hlasitosti -timing.popup_messages Popup messages -timing.static_messages Interactive messages tmdb.api_key TMDb API kľúč tmdb.enabled TMDb podpora tmdb.read_data Vyhľadávanie údajov TMDB... @@ -2443,6 +2454,7 @@ usermenu.title_blue Možnosti usermenu.title_green Zvuk usermenu.title_red Udalosti usermenu.title_yellow Obraz +usermenus.head Užívateľské menu video_mode_ok Pracuje tento video režim správne? videomenu.43mode Zobrazenie formátu 4:3 videomenu.analog_auto AUTO diff --git a/data/pictures/Makefile.am b/data/pictures/Makefile.am new file mode 100644 index 000000000..a264ce47b --- /dev/null +++ b/data/pictures/Makefile.am @@ -0,0 +1,3 @@ +SUBDIRS = \ + backgrounds \ + screensaver diff --git a/data/icons/mp3.jpg b/data/pictures/backgrounds/1280x720/mp3.jpg similarity index 100% rename from data/icons/mp3.jpg rename to data/pictures/backgrounds/1280x720/mp3.jpg diff --git a/data/icons/radiomode.jpg b/data/pictures/backgrounds/1280x720/radiomode.jpg similarity index 100% rename from data/icons/radiomode.jpg rename to data/pictures/backgrounds/1280x720/radiomode.jpg diff --git a/data/icons/scan.jpg b/data/pictures/backgrounds/1280x720/scan.jpg similarity index 100% rename from data/icons/scan.jpg rename to data/pictures/backgrounds/1280x720/scan.jpg diff --git a/data/icons/shutdown.jpg b/data/pictures/backgrounds/1280x720/shutdown.jpg similarity index 100% rename from data/icons/shutdown.jpg rename to data/pictures/backgrounds/1280x720/shutdown.jpg diff --git a/data/icons/start.jpg b/data/pictures/backgrounds/1280x720/start.jpg similarity index 100% rename from data/icons/start.jpg rename to data/pictures/backgrounds/1280x720/start.jpg diff --git a/data/pictures/backgrounds/Makefile.am b/data/pictures/backgrounds/Makefile.am new file mode 100644 index 000000000..bff2e1b4f --- /dev/null +++ b/data/pictures/backgrounds/Makefile.am @@ -0,0 +1,10 @@ +installdir = $(ICONSDIR) + +resolution = 1280x720 + +install_DATA = \ + $(resolution)/mp3.jpg \ + $(resolution)/radiomode.jpg \ + $(resolution)/scan.jpg \ + $(resolution)/shutdown.jpg \ + $(resolution)/start.jpg diff --git a/data/icons/mp3-0.jpg b/data/pictures/screensaver/1280x720/mp3-0.jpg similarity index 100% rename from data/icons/mp3-0.jpg rename to data/pictures/screensaver/1280x720/mp3-0.jpg diff --git a/data/icons/mp3-1.jpg b/data/pictures/screensaver/1280x720/mp3-1.jpg similarity index 100% rename from data/icons/mp3-1.jpg rename to data/pictures/screensaver/1280x720/mp3-1.jpg diff --git a/data/icons/mp3-2.jpg b/data/pictures/screensaver/1280x720/mp3-2.jpg similarity index 100% rename from data/icons/mp3-2.jpg rename to data/pictures/screensaver/1280x720/mp3-2.jpg diff --git a/data/icons/mp3-3.jpg b/data/pictures/screensaver/1280x720/mp3-3.jpg similarity index 100% rename from data/icons/mp3-3.jpg rename to data/pictures/screensaver/1280x720/mp3-3.jpg diff --git a/data/icons/mp3-4.jpg b/data/pictures/screensaver/1280x720/mp3-4.jpg similarity index 100% rename from data/icons/mp3-4.jpg rename to data/pictures/screensaver/1280x720/mp3-4.jpg diff --git a/data/icons/mp3-5.jpg b/data/pictures/screensaver/1280x720/mp3-5.jpg similarity index 100% rename from data/icons/mp3-5.jpg rename to data/pictures/screensaver/1280x720/mp3-5.jpg diff --git a/data/icons/mp3-6.jpg b/data/pictures/screensaver/1280x720/mp3-6.jpg similarity index 100% rename from data/icons/mp3-6.jpg rename to data/pictures/screensaver/1280x720/mp3-6.jpg diff --git a/data/icons/mp3-7.jpg b/data/pictures/screensaver/1280x720/mp3-7.jpg similarity index 100% rename from data/icons/mp3-7.jpg rename to data/pictures/screensaver/1280x720/mp3-7.jpg diff --git a/data/pictures/screensaver/Makefile.am b/data/pictures/screensaver/Makefile.am new file mode 100644 index 000000000..153b2cba5 --- /dev/null +++ b/data/pictures/screensaver/Makefile.am @@ -0,0 +1,13 @@ +installdir = $(ICONSDIR) + +resolution = 1280x720 + +install_DATA = \ + $(resolution)/mp3-0.jpg \ + $(resolution)/mp3-1.jpg \ + $(resolution)/mp3-2.jpg \ + $(resolution)/mp3-3.jpg \ + $(resolution)/mp3-4.jpg \ + $(resolution)/mp3-5.jpg \ + $(resolution)/mp3-6.jpg \ + $(resolution)/mp3-7.jpg diff --git a/src/nhttpd/web/Makefile.am b/data/y-web/Makefile.am similarity index 100% rename from src/nhttpd/web/Makefile.am rename to data/y-web/Makefile.am diff --git a/src/nhttpd/web/Y_About.yhtm b/data/y-web/Y_About.yhtm similarity index 100% rename from src/nhttpd/web/Y_About.yhtm rename to data/y-web/Y_About.yhtm diff --git a/src/nhttpd/web/Y_Baselib.js b/data/y-web/Y_Baselib.js similarity index 100% rename from src/nhttpd/web/Y_Baselib.js rename to data/y-web/Y_Baselib.js diff --git a/src/nhttpd/web/Y_Blocks.txt b/data/y-web/Y_Blocks.txt similarity index 100% rename from src/nhttpd/web/Y_Blocks.txt rename to data/y-web/Y_Blocks.txt diff --git a/src/nhttpd/web/Y_Boxcontrol_Bouquet_Editor_Edit.yhtm b/data/y-web/Y_Boxcontrol_Bouquet_Editor_Edit.yhtm similarity index 100% rename from src/nhttpd/web/Y_Boxcontrol_Bouquet_Editor_Edit.yhtm rename to data/y-web/Y_Boxcontrol_Bouquet_Editor_Edit.yhtm diff --git a/src/nhttpd/web/Y_Boxcontrol_Bouquet_Editor_Main.yhtm b/data/y-web/Y_Boxcontrol_Bouquet_Editor_Main.yhtm similarity index 100% rename from src/nhttpd/web/Y_Boxcontrol_Bouquet_Editor_Main.yhtm rename to data/y-web/Y_Boxcontrol_Bouquet_Editor_Main.yhtm diff --git a/src/nhttpd/web/Y_Boxcontrol_Bouquetlist.yhtm b/data/y-web/Y_Boxcontrol_Bouquetlist.yhtm similarity index 100% rename from src/nhttpd/web/Y_Boxcontrol_Bouquetlist.yhtm rename to data/y-web/Y_Boxcontrol_Bouquetlist.yhtm diff --git a/src/nhttpd/web/Y_Boxcontrol_Bouquets.yhtm b/data/y-web/Y_Boxcontrol_Bouquets.yhtm similarity index 100% rename from src/nhttpd/web/Y_Boxcontrol_Bouquets.yhtm rename to data/y-web/Y_Boxcontrol_Bouquets.yhtm diff --git a/src/nhttpd/web/Y_Boxcontrol_Channellist.yhtm b/data/y-web/Y_Boxcontrol_Channellist.yhtm similarity index 100% rename from src/nhttpd/web/Y_Boxcontrol_Channellist.yhtm rename to data/y-web/Y_Boxcontrol_Channellist.yhtm diff --git a/src/nhttpd/web/Y_Boxcontrol_Menue.yhtm b/data/y-web/Y_Boxcontrol_Menue.yhtm similarity index 100% rename from src/nhttpd/web/Y_Boxcontrol_Menue.yhtm rename to data/y-web/Y_Boxcontrol_Menue.yhtm diff --git a/src/nhttpd/web/Y_Boxcontrol_Messages.yhtm b/data/y-web/Y_Boxcontrol_Messages.yhtm similarity index 100% rename from src/nhttpd/web/Y_Boxcontrol_Messages.yhtm rename to data/y-web/Y_Boxcontrol_Messages.yhtm diff --git a/src/nhttpd/web/Y_Dist.css b/data/y-web/Y_Dist.css similarity index 100% rename from src/nhttpd/web/Y_Dist.css rename to data/y-web/Y_Dist.css diff --git a/src/nhttpd/web/Y_Dyn_Pages.yhtm b/data/y-web/Y_Dyn_Pages.yhtm similarity index 100% rename from src/nhttpd/web/Y_Dyn_Pages.yhtm rename to data/y-web/Y_Dyn_Pages.yhtm diff --git a/src/nhttpd/web/Y_EPG.js b/data/y-web/Y_EPG.js similarity index 100% rename from src/nhttpd/web/Y_EPG.js rename to data/y-web/Y_EPG.js diff --git a/src/nhttpd/web/Y_EPG_Plus.yhtm b/data/y-web/Y_EPG_Plus.yhtm similarity index 100% rename from src/nhttpd/web/Y_EPG_Plus.yhtm rename to data/y-web/Y_EPG_Plus.yhtm diff --git a/src/nhttpd/web/Y_Ext_Menue.yhtm b/data/y-web/Y_Ext_Menue.yhtm similarity index 100% rename from src/nhttpd/web/Y_Ext_Menue.yhtm rename to data/y-web/Y_Ext_Menue.yhtm diff --git a/src/nhttpd/web/Y_Ext_Settings.yhtm b/data/y-web/Y_Ext_Settings.yhtm similarity index 100% rename from src/nhttpd/web/Y_Ext_Settings.yhtm rename to data/y-web/Y_Ext_Settings.yhtm diff --git a/src/nhttpd/web/Y_Ext_Uninstall.yhtm b/data/y-web/Y_Ext_Uninstall.yhtm similarity index 100% rename from src/nhttpd/web/Y_Ext_Uninstall.yhtm rename to data/y-web/Y_Ext_Uninstall.yhtm diff --git a/src/nhttpd/web/Y_Ext_Update.js b/data/y-web/Y_Ext_Update.js similarity index 100% rename from src/nhttpd/web/Y_Ext_Update.js rename to data/y-web/Y_Ext_Update.js diff --git a/src/nhttpd/web/Y_Ext_Update.yhtm b/data/y-web/Y_Ext_Update.yhtm similarity index 100% rename from src/nhttpd/web/Y_Ext_Update.yhtm rename to data/y-web/Y_Ext_Update.yhtm diff --git a/src/nhttpd/web/Y_Ext_Update_refresh.yhtm b/data/y-web/Y_Ext_Update_refresh.yhtm similarity index 100% rename from src/nhttpd/web/Y_Ext_Update_refresh.yhtm rename to data/y-web/Y_Ext_Update_refresh.yhtm diff --git a/src/nhttpd/web/Y_Filemgr.yhtm b/data/y-web/Y_Filemgr.yhtm similarity index 100% rename from src/nhttpd/web/Y_Filemgr.yhtm rename to data/y-web/Y_Filemgr.yhtm diff --git a/src/nhttpd/web/Y_Filemgr_Edit.yhtm b/data/y-web/Y_Filemgr_Edit.yhtm similarity index 100% rename from src/nhttpd/web/Y_Filemgr_Edit.yhtm rename to data/y-web/Y_Filemgr_Edit.yhtm diff --git a/src/nhttpd/web/Y_Filemgr_blocks.txt b/data/y-web/Y_Filemgr_blocks.txt similarity index 100% rename from src/nhttpd/web/Y_Filemgr_blocks.txt rename to data/y-web/Y_Filemgr_blocks.txt diff --git a/src/nhttpd/web/Y_Flash.js b/data/y-web/Y_Flash.js similarity index 100% rename from src/nhttpd/web/Y_Flash.js rename to data/y-web/Y_Flash.js diff --git a/src/nhttpd/web/Y_Info_Help.yhtm b/data/y-web/Y_Info_Help.yhtm similarity index 83% rename from src/nhttpd/web/Y_Info_Help.yhtm rename to data/y-web/Y_Info_Help.yhtm index 39f457636..d9cecd04d 100644 --- a/src/nhttpd/web/Y_Info_Help.yhtm +++ b/data/y-web/Y_Info_Help.yhtm @@ -10,7 +10,7 @@
  • Tuxbox-Wiki Help
  • Tuxbox Forum
  • CST User Forum
  • -
  • CST Developer Forum
  • +
  • CST Developer Forum
  • diff --git a/src/nhttpd/web/Y_Info_Menue.yhtm b/data/y-web/Y_Info_Menue.yhtm similarity index 100% rename from src/nhttpd/web/Y_Info_Menue.yhtm rename to data/y-web/Y_Info_Menue.yhtm diff --git a/src/nhttpd/web/Y_Info_Updates.yhtm b/data/y-web/Y_Info_Updates.yhtm similarity index 100% rename from src/nhttpd/web/Y_Info_Updates.yhtm rename to data/y-web/Y_Info_Updates.yhtm diff --git a/src/nhttpd/web/Y_Live.js b/data/y-web/Y_Live.js similarity index 100% rename from src/nhttpd/web/Y_Live.js rename to data/y-web/Y_Live.js diff --git a/src/nhttpd/web/Y_Live.yhtm b/data/y-web/Y_Live.yhtm similarity index 100% rename from src/nhttpd/web/Y_Live.yhtm rename to data/y-web/Y_Live.yhtm diff --git a/src/nhttpd/web/Y_LiveViewFull.yhtm b/data/y-web/Y_LiveViewFull.yhtm similarity index 100% rename from src/nhttpd/web/Y_LiveViewFull.yhtm rename to data/y-web/Y_LiveViewFull.yhtm diff --git a/src/nhttpd/web/Y_Live_DoubleView.yhtm b/data/y-web/Y_Live_DoubleView.yhtm similarity index 100% rename from src/nhttpd/web/Y_Live_DoubleView.yhtm rename to data/y-web/Y_Live_DoubleView.yhtm diff --git a/src/nhttpd/web/Y_Live_EPG.yhtm b/data/y-web/Y_Live_EPG.yhtm similarity index 100% rename from src/nhttpd/web/Y_Live_EPG.yhtm rename to data/y-web/Y_Live_EPG.yhtm diff --git a/src/nhttpd/web/Y_Live_EPG_Info.yhtm b/data/y-web/Y_Live_EPG_Info.yhtm similarity index 100% rename from src/nhttpd/web/Y_Live_EPG_Info.yhtm rename to data/y-web/Y_Live_EPG_Info.yhtm diff --git a/src/nhttpd/web/Y_Live_Menue.yhtm b/data/y-web/Y_Live_Menue.yhtm similarity index 100% rename from src/nhttpd/web/Y_Live_Menue.yhtm rename to data/y-web/Y_Live_Menue.yhtm diff --git a/src/nhttpd/web/Y_Live_Msg.yhtm b/data/y-web/Y_Live_Msg.yhtm similarity index 100% rename from src/nhttpd/web/Y_Live_Msg.yhtm rename to data/y-web/Y_Live_Msg.yhtm diff --git a/src/nhttpd/web/Y_Live_Record.yhtm b/data/y-web/Y_Live_Record.yhtm similarity index 100% rename from src/nhttpd/web/Y_Live_Record.yhtm rename to data/y-web/Y_Live_Record.yhtm diff --git a/src/nhttpd/web/Y_Live_Transcode.yhtm b/data/y-web/Y_Live_Transcode.yhtm similarity index 100% rename from src/nhttpd/web/Y_Live_Transcode.yhtm rename to data/y-web/Y_Live_Transcode.yhtm diff --git a/src/nhttpd/web/Y_Main.css b/data/y-web/Y_Main.css similarity index 100% rename from src/nhttpd/web/Y_Main.css rename to data/y-web/Y_Main.css diff --git a/src/nhttpd/web/Y_Menue.yhtm b/data/y-web/Y_Menue.yhtm similarity index 100% rename from src/nhttpd/web/Y_Menue.yhtm rename to data/y-web/Y_Menue.yhtm diff --git a/src/nhttpd/web/Y_Refresh.yhtm b/data/y-web/Y_Refresh.yhtm similarity index 100% rename from src/nhttpd/web/Y_Refresh.yhtm rename to data/y-web/Y_Refresh.yhtm diff --git a/src/nhttpd/web/Y_Settings_Backup.yhtm b/data/y-web/Y_Settings_Backup.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_Backup.yhtm rename to data/y-web/Y_Settings_Backup.yhtm diff --git a/src/nhttpd/web/Y_Settings_Live.yhtm b/data/y-web/Y_Settings_Live.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_Live.yhtm rename to data/y-web/Y_Settings_Live.yhtm diff --git a/src/nhttpd/web/Y_Settings_Menue.yhtm b/data/y-web/Y_Settings_Menue.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_Menue.yhtm rename to data/y-web/Y_Settings_Menue.yhtm diff --git a/src/nhttpd/web/Y_Settings_Timer.yhtm b/data/y-web/Y_Settings_Timer.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_Timer.yhtm rename to data/y-web/Y_Settings_Timer.yhtm diff --git a/src/nhttpd/web/Y_Settings_VNC.yhtm b/data/y-web/Y_Settings_VNC.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_VNC.yhtm rename to data/y-web/Y_Settings_VNC.yhtm diff --git a/src/nhttpd/web/Y_Settings_automount.yhtm b/data/y-web/Y_Settings_automount.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_automount.yhtm rename to data/y-web/Y_Settings_automount.yhtm diff --git a/src/nhttpd/web/Y_Settings_automount_liste.yhtm b/data/y-web/Y_Settings_automount_liste.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_automount_liste.yhtm rename to data/y-web/Y_Settings_automount_liste.yhtm diff --git a/src/nhttpd/web/Y_Settings_buttons.yhtm b/data/y-web/Y_Settings_buttons.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_buttons.yhtm rename to data/y-web/Y_Settings_buttons.yhtm diff --git a/src/nhttpd/web/Y_Settings_lcd.yhtm b/data/y-web/Y_Settings_lcd.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_lcd.yhtm rename to data/y-web/Y_Settings_lcd.yhtm diff --git a/src/nhttpd/web/Y_Settings_mount.yhtm b/data/y-web/Y_Settings_mount.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_mount.yhtm rename to data/y-web/Y_Settings_mount.yhtm diff --git a/src/nhttpd/web/Y_Settings_mount_liste.yhtm b/data/y-web/Y_Settings_mount_liste.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_mount_liste.yhtm rename to data/y-web/Y_Settings_mount_liste.yhtm diff --git a/src/nhttpd/web/Y_Settings_neutrino_forms.yhtm b/data/y-web/Y_Settings_neutrino_forms.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_neutrino_forms.yhtm rename to data/y-web/Y_Settings_neutrino_forms.yhtm diff --git a/src/nhttpd/web/Y_Settings_nhttpd.yhtm b/data/y-web/Y_Settings_nhttpd.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_nhttpd.yhtm rename to data/y-web/Y_Settings_nhttpd.yhtm diff --git a/src/nhttpd/web/Y_Settings_personalize.yhtm b/data/y-web/Y_Settings_personalize.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_personalize.yhtm rename to data/y-web/Y_Settings_personalize.yhtm diff --git a/src/nhttpd/web/Y_Settings_umount_liste.yhtm b/data/y-web/Y_Settings_umount_liste.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_umount_liste.yhtm rename to data/y-web/Y_Settings_umount_liste.yhtm diff --git a/src/nhttpd/web/Y_Settings_video_audio.yhtm b/data/y-web/Y_Settings_video_audio.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_video_audio.yhtm rename to data/y-web/Y_Settings_video_audio.yhtm diff --git a/src/nhttpd/web/Y_Settings_wol.yhtm b/data/y-web/Y_Settings_wol.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_wol.yhtm rename to data/y-web/Y_Settings_wol.yhtm diff --git a/src/nhttpd/web/Y_Settings_yWeb.yhtm b/data/y-web/Y_Settings_yWeb.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_yWeb.yhtm rename to data/y-web/Y_Settings_yWeb.yhtm diff --git a/src/nhttpd/web/Y_Settings_zapit.yhtm b/data/y-web/Y_Settings_zapit.yhtm similarity index 100% rename from src/nhttpd/web/Y_Settings_zapit.yhtm rename to data/y-web/Y_Settings_zapit.yhtm diff --git a/src/nhttpd/web/Y_StreamInfo.yhtm b/data/y-web/Y_StreamInfo.yhtm similarity index 100% rename from src/nhttpd/web/Y_StreamInfo.yhtm rename to data/y-web/Y_StreamInfo.yhtm diff --git a/src/nhttpd/web/Y_Timer_Edit.yhtm b/data/y-web/Y_Timer_Edit.yhtm similarity index 100% rename from src/nhttpd/web/Y_Timer_Edit.yhtm rename to data/y-web/Y_Timer_Edit.yhtm diff --git a/src/nhttpd/web/Y_Timer_List.yhtm b/data/y-web/Y_Timer_List.yhtm similarity index 100% rename from src/nhttpd/web/Y_Timer_List.yhtm rename to data/y-web/Y_Timer_List.yhtm diff --git a/src/nhttpd/web/Y_Tools_Bootlogo.yhtm b/data/y-web/Y_Tools_Bootlogo.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Bootlogo.yhtm rename to data/y-web/Y_Tools_Bootlogo.yhtm diff --git a/src/nhttpd/web/Y_Tools_Boxcontrol.yhtm b/data/y-web/Y_Tools_Boxcontrol.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Boxcontrol.yhtm rename to data/y-web/Y_Tools_Boxcontrol.yhtm diff --git a/src/nhttpd/web/Y_Tools_Check_Install.yhtm b/data/y-web/Y_Tools_Check_Install.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Check_Install.yhtm rename to data/y-web/Y_Tools_Check_Install.yhtm diff --git a/src/nhttpd/web/Y_Tools_Cmd.yhtm b/data/y-web/Y_Tools_Cmd.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Cmd.yhtm rename to data/y-web/Y_Tools_Cmd.yhtm diff --git a/src/nhttpd/web/Y_Tools_Flash_Menue.yhtm b/data/y-web/Y_Tools_Flash_Menue.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Flash_Menue.yhtm rename to data/y-web/Y_Tools_Flash_Menue.yhtm diff --git a/src/nhttpd/web/Y_Tools_Flash_Upload.yhtm b/data/y-web/Y_Tools_Flash_Upload.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Flash_Upload.yhtm rename to data/y-web/Y_Tools_Flash_Upload.yhtm diff --git a/src/nhttpd/web/Y_Tools_Info_Menue.yhtm b/data/y-web/Y_Tools_Info_Menue.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Info_Menue.yhtm rename to data/y-web/Y_Tools_Info_Menue.yhtm diff --git a/src/nhttpd/web/Y_Tools_Installer.yhtm b/data/y-web/Y_Tools_Installer.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Installer.yhtm rename to data/y-web/Y_Tools_Installer.yhtm diff --git a/src/nhttpd/web/Y_Tools_Menue.yhtm b/data/y-web/Y_Tools_Menue.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Menue.yhtm rename to data/y-web/Y_Tools_Menue.yhtm diff --git a/src/nhttpd/web/Y_Tools_Rcsim.yhtm b/data/y-web/Y_Tools_Rcsim.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Rcsim.yhtm rename to data/y-web/Y_Tools_Rcsim.yhtm diff --git a/src/nhttpd/web/Y_Tools_Screenshot.yhtm b/data/y-web/Y_Tools_Screenshot.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Screenshot.yhtm rename to data/y-web/Y_Tools_Screenshot.yhtm diff --git a/src/nhttpd/web/Y_Tools_Timer_Sync.js b/data/y-web/Y_Tools_Timer_Sync.js similarity index 100% rename from src/nhttpd/web/Y_Tools_Timer_Sync.js rename to data/y-web/Y_Tools_Timer_Sync.js diff --git a/src/nhttpd/web/Y_Tools_Timer_Sync.yhtm b/data/y-web/Y_Tools_Timer_Sync.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_Timer_Sync.yhtm rename to data/y-web/Y_Tools_Timer_Sync.yhtm diff --git a/src/nhttpd/web/Y_Tools_lcshot.yhtm b/data/y-web/Y_Tools_lcshot.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_lcshot.yhtm rename to data/y-web/Y_Tools_lcshot.yhtm diff --git a/src/nhttpd/web/Y_Tools_tvshot.yhtm b/data/y-web/Y_Tools_tvshot.yhtm similarity index 100% rename from src/nhttpd/web/Y_Tools_tvshot.yhtm rename to data/y-web/Y_Tools_tvshot.yhtm diff --git a/src/nhttpd/web/Y_User.css b/data/y-web/Y_User.css similarity index 100% rename from src/nhttpd/web/Y_User.css rename to data/y-web/Y_User.css diff --git a/src/nhttpd/web/Y_VLC.js b/data/y-web/Y_VLC.js similarity index 100% rename from src/nhttpd/web/Y_VLC.js rename to data/y-web/Y_VLC.js diff --git a/src/nhttpd/web/Y_Version.txt b/data/y-web/Y_Version.txt similarity index 100% rename from src/nhttpd/web/Y_Version.txt rename to data/y-web/Y_Version.txt diff --git a/src/nhttpd/web/Y_Wait.yhtm b/data/y-web/Y_Wait.yhtm similarity index 100% rename from src/nhttpd/web/Y_Wait.yhtm rename to data/y-web/Y_Wait.yhtm diff --git a/src/nhttpd/web/Y_blank.htm b/data/y-web/Y_blank.htm similarity index 100% rename from src/nhttpd/web/Y_blank.htm rename to data/y-web/Y_blank.htm diff --git a/src/nhttpd/web/Y_neutrino_Blocks.txt b/data/y-web/Y_neutrino_Blocks.txt similarity index 100% rename from src/nhttpd/web/Y_neutrino_Blocks.txt rename to data/y-web/Y_neutrino_Blocks.txt diff --git a/src/nhttpd/web/Y_yweb.js b/data/y-web/Y_yweb.js similarity index 100% rename from src/nhttpd/web/Y_yweb.js rename to data/y-web/Y_yweb.js diff --git a/src/nhttpd/web/accordion.js b/data/y-web/accordion.js similarity index 100% rename from src/nhttpd/web/accordion.js rename to data/y-web/accordion.js diff --git a/src/nhttpd/web/channels.js b/data/y-web/channels.js similarity index 100% rename from src/nhttpd/web/channels.js rename to data/y-web/channels.js diff --git a/src/nhttpd/web/channels.txt b/data/y-web/channels.txt similarity index 100% rename from src/nhttpd/web/channels.txt rename to data/y-web/channels.txt diff --git a/src/nhttpd/web/effects.js b/data/y-web/effects.js similarity index 100% rename from src/nhttpd/web/effects.js rename to data/y-web/effects.js diff --git a/data/y-web/extentions.txt b/data/y-web/extentions.txt new file mode 100644 index 000000000..9df0559ef --- /dev/null +++ b/data/y-web/extentions.txt @@ -0,0 +1 @@ +type:u,site:Tuxbox-Neutrino,desc:yWeb extentions,url:https://raw.githubusercontent.com/tuxbox-neutrino/gui-yweb/master/Y_Extentions.txt diff --git a/src/nhttpd/web/extentions/boxinfo/boxinfo_uninstall.inc b/data/y-web/extentions/boxinfo/boxinfo_uninstall.inc similarity index 100% rename from src/nhttpd/web/extentions/boxinfo/boxinfo_uninstall.inc rename to data/y-web/extentions/boxinfo/boxinfo_uninstall.inc diff --git a/src/nhttpd/web/extentions/boxinfo/files/httpd/Y_Ext_BoxInfo.yhtm b/data/y-web/extentions/boxinfo/files/httpd/Y_Ext_BoxInfo.yhtm similarity index 100% rename from src/nhttpd/web/extentions/boxinfo/files/httpd/Y_Ext_BoxInfo.yhtm rename to data/y-web/extentions/boxinfo/files/httpd/Y_Ext_BoxInfo.yhtm diff --git a/src/nhttpd/web/extentions/boxinfo/files/httpd/scripts/Y_Ext_BoxInfo.sh b/data/y-web/extentions/boxinfo/files/httpd/scripts/Y_Ext_BoxInfo.sh similarity index 100% rename from src/nhttpd/web/extentions/boxinfo/files/httpd/scripts/Y_Ext_BoxInfo.sh rename to data/y-web/extentions/boxinfo/files/httpd/scripts/Y_Ext_BoxInfo.sh diff --git a/src/nhttpd/web/extentions/boxinfo/install.inc b/data/y-web/extentions/boxinfo/install.inc similarity index 100% rename from src/nhttpd/web/extentions/boxinfo/install.inc rename to data/y-web/extentions/boxinfo/install.inc diff --git a/src/nhttpd/web/extentions/boxinfo/install.sh b/data/y-web/extentions/boxinfo/install.sh similarity index 100% rename from src/nhttpd/web/extentions/boxinfo/install.sh rename to data/y-web/extentions/boxinfo/install.sh diff --git a/src/nhttpd/web/extentions/boxinfo/uninstall.sh b/data/y-web/extentions/boxinfo/uninstall.sh similarity index 100% rename from src/nhttpd/web/extentions/boxinfo/uninstall.sh rename to data/y-web/extentions/boxinfo/uninstall.sh diff --git a/src/nhttpd/web/extentions/hddtools/files/httpd/Y_Ext_hddtools.yhtm b/data/y-web/extentions/hddtools/files/httpd/Y_Ext_hddtools.yhtm similarity index 100% rename from src/nhttpd/web/extentions/hddtools/files/httpd/Y_Ext_hddtools.yhtm rename to data/y-web/extentions/hddtools/files/httpd/Y_Ext_hddtools.yhtm diff --git a/src/nhttpd/web/extentions/hddtools/files/httpd/scripts/Y_Ext_hddtools.sh b/data/y-web/extentions/hddtools/files/httpd/scripts/Y_Ext_hddtools.sh similarity index 100% rename from src/nhttpd/web/extentions/hddtools/files/httpd/scripts/Y_Ext_hddtools.sh rename to data/y-web/extentions/hddtools/files/httpd/scripts/Y_Ext_hddtools.sh diff --git a/src/nhttpd/web/extentions/hddtools/hddtools_uninstall.inc b/data/y-web/extentions/hddtools/hddtools_uninstall.inc similarity index 100% rename from src/nhttpd/web/extentions/hddtools/hddtools_uninstall.inc rename to data/y-web/extentions/hddtools/hddtools_uninstall.inc diff --git a/src/nhttpd/web/extentions/hddtools/install.inc b/data/y-web/extentions/hddtools/install.inc similarity index 100% rename from src/nhttpd/web/extentions/hddtools/install.inc rename to data/y-web/extentions/hddtools/install.inc diff --git a/src/nhttpd/web/extentions/hddtools/install.sh b/data/y-web/extentions/hddtools/install.sh similarity index 100% rename from src/nhttpd/web/extentions/hddtools/install.sh rename to data/y-web/extentions/hddtools/install.sh diff --git a/src/nhttpd/web/extentions/hddtools/uninstall.sh b/data/y-web/extentions/hddtools/uninstall.sh similarity index 100% rename from src/nhttpd/web/extentions/hddtools/uninstall.sh rename to data/y-web/extentions/hddtools/uninstall.sh diff --git a/src/nhttpd/web/favicon.ico b/data/y-web/favicon.ico similarity index 100% rename from src/nhttpd/web/favicon.ico rename to data/y-web/favicon.ico diff --git a/src/nhttpd/web/images/Makefile.am b/data/y-web/images/Makefile.am similarity index 100% rename from src/nhttpd/web/images/Makefile.am rename to data/y-web/images/Makefile.am diff --git a/src/nhttpd/web/images/accept.png b/data/y-web/images/accept.png similarity index 100% rename from src/nhttpd/web/images/accept.png rename to data/y-web/images/accept.png diff --git a/src/nhttpd/web/images/alert.gif b/data/y-web/images/alert.gif similarity index 100% rename from src/nhttpd/web/images/alert.gif rename to data/y-web/images/alert.gif diff --git a/src/nhttpd/web/images/arrowdown.png b/data/y-web/images/arrowdown.png similarity index 100% rename from src/nhttpd/web/images/arrowdown.png rename to data/y-web/images/arrowdown.png diff --git a/src/nhttpd/web/images/arrowleft.png b/data/y-web/images/arrowleft.png similarity index 100% rename from src/nhttpd/web/images/arrowleft.png rename to data/y-web/images/arrowleft.png diff --git a/src/nhttpd/web/images/arrowright.png b/data/y-web/images/arrowright.png similarity index 100% rename from src/nhttpd/web/images/arrowright.png rename to data/y-web/images/arrowright.png diff --git a/src/nhttpd/web/images/arrowup.png b/data/y-web/images/arrowup.png similarity index 100% rename from src/nhttpd/web/images/arrowup.png rename to data/y-web/images/arrowup.png diff --git a/src/nhttpd/web/images/audiobar.png b/data/y-web/images/audiobar.png similarity index 100% rename from src/nhttpd/web/images/audiobar.png rename to data/y-web/images/audiobar.png diff --git a/src/nhttpd/web/images/blank.gif b/data/y-web/images/blank.gif similarity index 100% rename from src/nhttpd/web/images/blank.gif rename to data/y-web/images/blank.gif diff --git a/src/nhttpd/web/images/check_green.png b/data/y-web/images/check_green.png similarity index 100% rename from src/nhttpd/web/images/check_green.png rename to data/y-web/images/check_green.png diff --git a/src/nhttpd/web/images/chmod.png b/data/y-web/images/chmod.png similarity index 100% rename from src/nhttpd/web/images/chmod.png rename to data/y-web/images/chmod.png diff --git a/src/nhttpd/web/images/comment.png b/data/y-web/images/comment.png similarity index 100% rename from src/nhttpd/web/images/comment.png rename to data/y-web/images/comment.png diff --git a/src/nhttpd/web/images/copy.gif b/data/y-web/images/copy.gif similarity index 100% rename from src/nhttpd/web/images/copy.gif rename to data/y-web/images/copy.gif diff --git a/src/nhttpd/web/images/cross.png b/data/y-web/images/cross.png similarity index 100% rename from src/nhttpd/web/images/cross.png rename to data/y-web/images/cross.png diff --git a/src/nhttpd/web/images/cut.png b/data/y-web/images/cut.png similarity index 100% rename from src/nhttpd/web/images/cut.png rename to data/y-web/images/cut.png diff --git a/src/nhttpd/web/images/dir_up.png b/data/y-web/images/dir_up.png similarity index 100% rename from src/nhttpd/web/images/dir_up.png rename to data/y-web/images/dir_up.png diff --git a/src/nhttpd/web/images/download.png b/data/y-web/images/download.png similarity index 100% rename from src/nhttpd/web/images/download.png rename to data/y-web/images/download.png diff --git a/src/nhttpd/web/images/elist.png b/data/y-web/images/elist.png similarity index 100% rename from src/nhttpd/web/images/elist.png rename to data/y-web/images/elist.png diff --git a/src/nhttpd/web/images/epg.png b/data/y-web/images/epg.png similarity index 100% rename from src/nhttpd/web/images/epg.png rename to data/y-web/images/epg.png diff --git a/src/nhttpd/web/images/exlink.gif b/data/y-web/images/exlink.gif similarity index 100% rename from src/nhttpd/web/images/exlink.gif rename to data/y-web/images/exlink.gif diff --git a/src/nhttpd/web/images/ext_add.png b/data/y-web/images/ext_add.png similarity index 100% rename from src/nhttpd/web/images/ext_add.png rename to data/y-web/images/ext_add.png diff --git a/src/nhttpd/web/images/ext_delete.png b/data/y-web/images/ext_delete.png similarity index 100% rename from src/nhttpd/web/images/ext_delete.png rename to data/y-web/images/ext_delete.png diff --git a/src/nhttpd/web/images/ext_edit.png b/data/y-web/images/ext_edit.png similarity index 100% rename from src/nhttpd/web/images/ext_edit.png rename to data/y-web/images/ext_edit.png diff --git a/src/nhttpd/web/images/ext_error.png b/data/y-web/images/ext_error.png similarity index 100% rename from src/nhttpd/web/images/ext_error.png rename to data/y-web/images/ext_error.png diff --git a/src/nhttpd/web/images/ext_ex.png b/data/y-web/images/ext_ex.png similarity index 100% rename from src/nhttpd/web/images/ext_ex.png rename to data/y-web/images/ext_ex.png diff --git a/src/nhttpd/web/images/ext_menu.png b/data/y-web/images/ext_menu.png similarity index 100% rename from src/nhttpd/web/images/ext_menu.png rename to data/y-web/images/ext_menu.png diff --git a/src/nhttpd/web/images/ext_mgr.png b/data/y-web/images/ext_mgr.png similarity index 100% rename from src/nhttpd/web/images/ext_mgr.png rename to data/y-web/images/ext_mgr.png diff --git a/src/nhttpd/web/images/ext_normal.png b/data/y-web/images/ext_normal.png similarity index 100% rename from src/nhttpd/web/images/ext_normal.png rename to data/y-web/images/ext_normal.png diff --git a/src/nhttpd/web/images/ext_plugin.png b/data/y-web/images/ext_plugin.png similarity index 100% rename from src/nhttpd/web/images/ext_plugin.png rename to data/y-web/images/ext_plugin.png diff --git a/src/nhttpd/web/images/ext_script.png b/data/y-web/images/ext_script.png similarity index 100% rename from src/nhttpd/web/images/ext_script.png rename to data/y-web/images/ext_script.png diff --git a/src/nhttpd/web/images/fb.png b/data/y-web/images/fb.png similarity index 100% rename from src/nhttpd/web/images/fb.png rename to data/y-web/images/fb.png diff --git a/src/nhttpd/web/images/film.png b/data/y-web/images/film.png similarity index 100% rename from src/nhttpd/web/images/film.png rename to data/y-web/images/film.png diff --git a/src/nhttpd/web/images/flash.png b/data/y-web/images/flash.png similarity index 100% rename from src/nhttpd/web/images/flash.png rename to data/y-web/images/flash.png diff --git a/src/nhttpd/web/images/folder_add.png b/data/y-web/images/folder_add.png similarity index 100% rename from src/nhttpd/web/images/folder_add.png rename to data/y-web/images/folder_add.png diff --git a/src/nhttpd/web/images/ftype_file.gif b/data/y-web/images/ftype_file.gif similarity index 100% rename from src/nhttpd/web/images/ftype_file.gif rename to data/y-web/images/ftype_file.gif diff --git a/src/nhttpd/web/images/ftype_file.png b/data/y-web/images/ftype_file.png similarity index 100% rename from src/nhttpd/web/images/ftype_file.png rename to data/y-web/images/ftype_file.png diff --git a/src/nhttpd/web/images/ftype_folder.gif b/data/y-web/images/ftype_folder.gif similarity index 100% rename from src/nhttpd/web/images/ftype_folder.gif rename to data/y-web/images/ftype_folder.gif diff --git a/src/nhttpd/web/images/ftype_folder.png b/data/y-web/images/ftype_folder.png similarity index 100% rename from src/nhttpd/web/images/ftype_folder.png rename to data/y-web/images/ftype_folder.png diff --git a/src/nhttpd/web/images/ftype_link.gif b/data/y-web/images/ftype_link.gif similarity index 100% rename from src/nhttpd/web/images/ftype_link.gif rename to data/y-web/images/ftype_link.gif diff --git a/src/nhttpd/web/images/ftype_link.png b/data/y-web/images/ftype_link.png similarity index 100% rename from src/nhttpd/web/images/ftype_link.png rename to data/y-web/images/ftype_link.png diff --git a/src/nhttpd/web/images/fullscreen.png b/data/y-web/images/fullscreen.png similarity index 100% rename from src/nhttpd/web/images/fullscreen.png rename to data/y-web/images/fullscreen.png diff --git a/src/nhttpd/web/images/help.gif b/data/y-web/images/help.gif similarity index 100% rename from src/nhttpd/web/images/help.gif rename to data/y-web/images/help.gif diff --git a/src/nhttpd/web/images/hidden.png b/data/y-web/images/hidden.png similarity index 100% rename from src/nhttpd/web/images/hidden.png rename to data/y-web/images/hidden.png diff --git a/src/nhttpd/web/images/home.png b/data/y-web/images/home.png similarity index 100% rename from src/nhttpd/web/images/home.png rename to data/y-web/images/home.png diff --git a/src/nhttpd/web/images/info.png b/data/y-web/images/info.png similarity index 100% rename from src/nhttpd/web/images/info.png rename to data/y-web/images/info.png diff --git a/src/nhttpd/web/images/inlink.gif b/data/y-web/images/inlink.gif similarity index 100% rename from src/nhttpd/web/images/inlink.gif rename to data/y-web/images/inlink.gif diff --git a/src/nhttpd/web/images/key.png b/data/y-web/images/key.png similarity index 100% rename from src/nhttpd/web/images/key.png rename to data/y-web/images/key.png diff --git a/src/nhttpd/web/images/live.png b/data/y-web/images/live.png similarity index 100% rename from src/nhttpd/web/images/live.png rename to data/y-web/images/live.png diff --git a/src/nhttpd/web/images/live_popup.png b/data/y-web/images/live_popup.png similarity index 100% rename from src/nhttpd/web/images/live_popup.png rename to data/y-web/images/live_popup.png diff --git a/src/nhttpd/web/images/livelock.png b/data/y-web/images/livelock.png similarity index 100% rename from src/nhttpd/web/images/livelock.png rename to data/y-web/images/livelock.png diff --git a/src/nhttpd/web/images/liveunlock.png b/data/y-web/images/liveunlock.png similarity index 100% rename from src/nhttpd/web/images/liveunlock.png rename to data/y-web/images/liveunlock.png diff --git a/src/nhttpd/web/images/lock.png b/data/y-web/images/lock.png similarity index 100% rename from src/nhttpd/web/images/lock.png rename to data/y-web/images/lock.png diff --git a/src/nhttpd/web/images/modify.png b/data/y-web/images/modify.png similarity index 100% rename from src/nhttpd/web/images/modify.png rename to data/y-web/images/modify.png diff --git a/src/nhttpd/web/images/new.png b/data/y-web/images/new.png similarity index 100% rename from src/nhttpd/web/images/new.png rename to data/y-web/images/new.png diff --git a/src/nhttpd/web/images/ok.gif b/data/y-web/images/ok.gif similarity index 100% rename from src/nhttpd/web/images/ok.gif rename to data/y-web/images/ok.gif diff --git a/src/nhttpd/web/images/package.png b/data/y-web/images/package.png similarity index 100% rename from src/nhttpd/web/images/package.png rename to data/y-web/images/package.png diff --git a/src/nhttpd/web/images/page_edit.png b/data/y-web/images/page_edit.png similarity index 100% rename from src/nhttpd/web/images/page_edit.png rename to data/y-web/images/page_edit.png diff --git a/src/nhttpd/web/images/paste.gif b/data/y-web/images/paste.gif similarity index 100% rename from src/nhttpd/web/images/paste.gif rename to data/y-web/images/paste.gif diff --git a/src/nhttpd/web/images/pause.png b/data/y-web/images/pause.png similarity index 100% rename from src/nhttpd/web/images/pause.png rename to data/y-web/images/pause.png diff --git a/src/nhttpd/web/images/picture.png b/data/y-web/images/picture.png similarity index 100% rename from src/nhttpd/web/images/picture.png rename to data/y-web/images/picture.png diff --git a/src/nhttpd/web/images/play.png b/data/y-web/images/play.png similarity index 100% rename from src/nhttpd/web/images/play.png rename to data/y-web/images/play.png diff --git a/src/nhttpd/web/images/popup.png b/data/y-web/images/popup.png similarity index 100% rename from src/nhttpd/web/images/popup.png rename to data/y-web/images/popup.png diff --git a/src/nhttpd/web/images/properties.png b/data/y-web/images/properties.png similarity index 100% rename from src/nhttpd/web/images/properties.png rename to data/y-web/images/properties.png diff --git a/src/nhttpd/web/images/radio.png b/data/y-web/images/radio.png similarity index 100% rename from src/nhttpd/web/images/radio.png rename to data/y-web/images/radio.png diff --git a/src/nhttpd/web/images/rc_cst_v1.jpg b/data/y-web/images/rc_cst_v1.jpg similarity index 100% rename from src/nhttpd/web/images/rc_cst_v1.jpg rename to data/y-web/images/rc_cst_v1.jpg diff --git a/src/nhttpd/web/images/rc_cst_v2.png b/data/y-web/images/rc_cst_v2.png similarity index 100% rename from src/nhttpd/web/images/rc_cst_v2.png rename to data/y-web/images/rc_cst_v2.png diff --git a/src/nhttpd/web/images/rc_cst_v3.png b/data/y-web/images/rc_cst_v3.png similarity index 100% rename from src/nhttpd/web/images/rc_cst_v3.png rename to data/y-web/images/rc_cst_v3.png diff --git a/src/nhttpd/web/images/rc_cst_v4.png b/data/y-web/images/rc_cst_v4.png similarity index 100% rename from src/nhttpd/web/images/rc_cst_v4.png rename to data/y-web/images/rc_cst_v4.png diff --git a/src/nhttpd/web/images/rc_cst_v5.png b/data/y-web/images/rc_cst_v5.png similarity index 100% rename from src/nhttpd/web/images/rc_cst_v5.png rename to data/y-web/images/rc_cst_v5.png diff --git a/src/nhttpd/web/images/rc_cst_v6.png b/data/y-web/images/rc_cst_v6.png similarity index 100% rename from src/nhttpd/web/images/rc_cst_v6.png rename to data/y-web/images/rc_cst_v6.png diff --git a/src/nhttpd/web/images/rc_dbox_nokia_old.png b/data/y-web/images/rc_dbox_nokia_old.png similarity index 100% rename from src/nhttpd/web/images/rc_dbox_nokia_old.png rename to data/y-web/images/rc_dbox_nokia_old.png diff --git a/src/nhttpd/web/images/rc_dbox_philips.png b/data/y-web/images/rc_dbox_philips.png similarity index 100% rename from src/nhttpd/web/images/rc_dbox_philips.png rename to data/y-web/images/rc_dbox_philips.png diff --git a/src/nhttpd/web/images/record.gif b/data/y-web/images/record.gif similarity index 100% rename from src/nhttpd/web/images/record.gif rename to data/y-web/images/record.gif diff --git a/src/nhttpd/web/images/record.png b/data/y-web/images/record.png similarity index 100% rename from src/nhttpd/web/images/record.png rename to data/y-web/images/record.png diff --git a/src/nhttpd/web/images/reload.png b/data/y-web/images/reload.png similarity index 100% rename from src/nhttpd/web/images/reload.png rename to data/y-web/images/reload.png diff --git a/src/nhttpd/web/images/remove.png b/data/y-web/images/remove.png similarity index 100% rename from src/nhttpd/web/images/remove.png rename to data/y-web/images/remove.png diff --git a/src/nhttpd/web/images/rename.gif b/data/y-web/images/rename.gif similarity index 100% rename from src/nhttpd/web/images/rename.gif rename to data/y-web/images/rename.gif diff --git a/src/nhttpd/web/images/save.png b/data/y-web/images/save.png similarity index 100% rename from src/nhttpd/web/images/save.png rename to data/y-web/images/save.png diff --git a/src/nhttpd/web/images/saveall.png b/data/y-web/images/saveall.png similarity index 100% rename from src/nhttpd/web/images/saveall.png rename to data/y-web/images/saveall.png diff --git a/src/nhttpd/web/images/smallwait.gif b/data/y-web/images/smallwait.gif similarity index 100% rename from src/nhttpd/web/images/smallwait.gif rename to data/y-web/images/smallwait.gif diff --git a/src/nhttpd/web/images/snapshot.png b/data/y-web/images/snapshot.png similarity index 100% rename from src/nhttpd/web/images/snapshot.png rename to data/y-web/images/snapshot.png diff --git a/src/nhttpd/web/images/stop.png b/data/y-web/images/stop.png similarity index 100% rename from src/nhttpd/web/images/stop.png rename to data/y-web/images/stop.png diff --git a/src/nhttpd/web/images/stream.png b/data/y-web/images/stream.png similarity index 100% rename from src/nhttpd/web/images/stream.png rename to data/y-web/images/stream.png diff --git a/src/nhttpd/web/images/streaminfo.png b/data/y-web/images/streaminfo.png similarity index 100% rename from src/nhttpd/web/images/streaminfo.png rename to data/y-web/images/streaminfo.png diff --git a/src/nhttpd/web/images/text.png b/data/y-web/images/text.png similarity index 100% rename from src/nhttpd/web/images/text.png rename to data/y-web/images/text.png diff --git a/src/nhttpd/web/images/time_add.png b/data/y-web/images/time_add.png similarity index 100% rename from src/nhttpd/web/images/time_add.png rename to data/y-web/images/time_add.png diff --git a/src/nhttpd/web/images/time_down.png b/data/y-web/images/time_down.png similarity index 100% rename from src/nhttpd/web/images/time_down.png rename to data/y-web/images/time_down.png diff --git a/src/nhttpd/web/images/time_up.png b/data/y-web/images/time_up.png similarity index 100% rename from src/nhttpd/web/images/time_up.png rename to data/y-web/images/time_up.png diff --git a/src/nhttpd/web/images/timer.gif b/data/y-web/images/timer.gif similarity index 100% rename from src/nhttpd/web/images/timer.gif rename to data/y-web/images/timer.gif diff --git a/src/nhttpd/web/images/transcode.png b/data/y-web/images/transcode.png similarity index 100% rename from src/nhttpd/web/images/transcode.png rename to data/y-web/images/transcode.png diff --git a/src/nhttpd/web/images/tux-yweb.png b/data/y-web/images/tux-yweb.png similarity index 100% rename from src/nhttpd/web/images/tux-yweb.png rename to data/y-web/images/tux-yweb.png diff --git a/src/nhttpd/web/images/udp_switch_off.png b/data/y-web/images/udp_switch_off.png similarity index 100% rename from src/nhttpd/web/images/udp_switch_off.png rename to data/y-web/images/udp_switch_off.png diff --git a/src/nhttpd/web/images/udp_switch_on.png b/data/y-web/images/udp_switch_on.png similarity index 100% rename from src/nhttpd/web/images/udp_switch_on.png rename to data/y-web/images/udp_switch_on.png diff --git a/src/nhttpd/web/images/unlock.png b/data/y-web/images/unlock.png similarity index 100% rename from src/nhttpd/web/images/unlock.png rename to data/y-web/images/unlock.png diff --git a/src/nhttpd/web/images/upload.png b/data/y-web/images/upload.png similarity index 100% rename from src/nhttpd/web/images/upload.png rename to data/y-web/images/upload.png diff --git a/src/nhttpd/web/images/visible.png b/data/y-web/images/visible.png similarity index 100% rename from src/nhttpd/web/images/visible.png rename to data/y-web/images/visible.png diff --git a/src/nhttpd/web/images/vlc.png b/data/y-web/images/vlc.png similarity index 100% rename from src/nhttpd/web/images/vlc.png rename to data/y-web/images/vlc.png diff --git a/src/nhttpd/web/images/volumedown.png b/data/y-web/images/volumedown.png similarity index 100% rename from src/nhttpd/web/images/volumedown.png rename to data/y-web/images/volumedown.png diff --git a/src/nhttpd/web/images/volumemute.png b/data/y-web/images/volumemute.png similarity index 100% rename from src/nhttpd/web/images/volumemute.png rename to data/y-web/images/volumemute.png diff --git a/src/nhttpd/web/images/volumeunmute.png b/data/y-web/images/volumeunmute.png similarity index 100% rename from src/nhttpd/web/images/volumeunmute.png rename to data/y-web/images/volumeunmute.png diff --git a/src/nhttpd/web/images/volumeup.png b/data/y-web/images/volumeup.png similarity index 100% rename from src/nhttpd/web/images/volumeup.png rename to data/y-web/images/volumeup.png diff --git a/src/nhttpd/web/images/wait.gif b/data/y-web/images/wait.gif similarity index 100% rename from src/nhttpd/web/images/wait.gif rename to data/y-web/images/wait.gif diff --git a/src/nhttpd/web/images/webtv.png b/data/y-web/images/webtv.png similarity index 100% rename from src/nhttpd/web/images/webtv.png rename to data/y-web/images/webtv.png diff --git a/src/nhttpd/web/images/wget.png b/data/y-web/images/wget.png similarity index 100% rename from src/nhttpd/web/images/wget.png rename to data/y-web/images/wget.png diff --git a/src/nhttpd/web/images/work.gif b/data/y-web/images/work.gif similarity index 100% rename from src/nhttpd/web/images/work.gif rename to data/y-web/images/work.gif diff --git a/src/nhttpd/web/images/x_red.png b/data/y-web/images/x_red.png similarity index 100% rename from src/nhttpd/web/images/x_red.png rename to data/y-web/images/x_red.png diff --git a/src/nhttpd/web/images/zap.png b/data/y-web/images/zap.png similarity index 100% rename from src/nhttpd/web/images/zap.png rename to data/y-web/images/zap.png diff --git a/src/nhttpd/web/index.html b/data/y-web/index.html similarity index 100% rename from src/nhttpd/web/index.html rename to data/y-web/index.html diff --git a/src/nhttpd/web/languages/Czech b/data/y-web/languages/Czech similarity index 100% rename from src/nhttpd/web/languages/Czech rename to data/y-web/languages/Czech diff --git a/src/nhttpd/web/languages/Deutsch b/data/y-web/languages/Deutsch similarity index 100% rename from src/nhttpd/web/languages/Deutsch rename to data/y-web/languages/Deutsch diff --git a/src/nhttpd/web/languages/English b/data/y-web/languages/English similarity index 100% rename from src/nhttpd/web/languages/English rename to data/y-web/languages/English diff --git a/src/nhttpd/web/languages/Makefile.am b/data/y-web/languages/Makefile.am similarity index 100% rename from src/nhttpd/web/languages/Makefile.am rename to data/y-web/languages/Makefile.am diff --git a/src/nhttpd/web/languages/Polski b/data/y-web/languages/Polski similarity index 100% rename from src/nhttpd/web/languages/Polski rename to data/y-web/languages/Polski diff --git a/src/nhttpd/web/languages/Portuguese b/data/y-web/languages/Portuguese similarity index 100% rename from src/nhttpd/web/languages/Portuguese rename to data/y-web/languages/Portuguese diff --git a/src/nhttpd/web/languages/Slovak b/data/y-web/languages/Slovak similarity index 100% rename from src/nhttpd/web/languages/Slovak rename to data/y-web/languages/Slovak diff --git a/src/nhttpd/web/prototype.js b/data/y-web/prototype.js similarity index 100% rename from src/nhttpd/web/prototype.js rename to data/y-web/prototype.js diff --git a/src/nhttpd/web/robots.txt b/data/y-web/robots.txt similarity index 100% rename from src/nhttpd/web/robots.txt rename to data/y-web/robots.txt diff --git a/src/nhttpd/web/scripts/Makefile.am b/data/y-web/scripts/Makefile.am similarity index 100% rename from src/nhttpd/web/scripts/Makefile.am rename to data/y-web/scripts/Makefile.am diff --git a/src/nhttpd/web/scripts/Y_Live.sh b/data/y-web/scripts/Y_Live.sh similarity index 100% rename from src/nhttpd/web/scripts/Y_Live.sh rename to data/y-web/scripts/Y_Live.sh diff --git a/src/nhttpd/web/scripts/Y_NAS.sh b/data/y-web/scripts/Y_NAS.sh similarity index 100% rename from src/nhttpd/web/scripts/Y_NAS.sh rename to data/y-web/scripts/Y_NAS.sh diff --git a/src/nhttpd/web/scripts/Y_Tools.sh b/data/y-web/scripts/Y_Tools.sh similarity index 100% rename from src/nhttpd/web/scripts/Y_Tools.sh rename to data/y-web/scripts/Y_Tools.sh diff --git a/src/nhttpd/web/scripts/_Y_Globals.sh b/data/y-web/scripts/_Y_Globals.sh similarity index 100% rename from src/nhttpd/web/scripts/_Y_Globals.sh rename to data/y-web/scripts/_Y_Globals.sh diff --git a/src/nhttpd/web/scripts/_Y_Library.sh b/data/y-web/scripts/_Y_Library.sh similarity index 100% rename from src/nhttpd/web/scripts/_Y_Library.sh rename to data/y-web/scripts/_Y_Library.sh diff --git a/src/nhttpd/web/scripts/api.sh b/data/y-web/scripts/api.sh similarity index 100% rename from src/nhttpd/web/scripts/api.sh rename to data/y-web/scripts/api.sh diff --git a/src/nhttpd/web/styles/Makefile.am b/data/y-web/styles/Makefile.am similarity index 100% rename from src/nhttpd/web/styles/Makefile.am rename to data/y-web/styles/Makefile.am diff --git a/src/nhttpd/web/styles/Y_Dist-GreyBlue.css b/data/y-web/styles/Y_Dist-GreyBlue.css similarity index 100% rename from src/nhttpd/web/styles/Y_Dist-GreyBlue.css rename to data/y-web/styles/Y_Dist-GreyBlue.css diff --git a/src/nhttpd/web/styles/Y_Dist-Tuxbox.css b/data/y-web/styles/Y_Dist-Tuxbox.css similarity index 100% rename from src/nhttpd/web/styles/Y_Dist-Tuxbox.css rename to data/y-web/styles/Y_Dist-Tuxbox.css diff --git a/src/nhttpd/web/ywidget.css b/data/y-web/ywidget.css similarity index 100% rename from src/nhttpd/web/ywidget.css rename to data/y-web/ywidget.css diff --git a/src/nhttpd/web/ywidget.js b/data/y-web/ywidget.js similarity index 100% rename from src/nhttpd/web/ywidget.js rename to data/y-web/ywidget.js diff --git a/doc/ir.html b/doc/ir.html deleted file mode 100644 index bf986f3e2..000000000 --- a/doc/ir.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - Neutrino Timer Doku - - - -
    -

    Neutrino LIRC Untersttzung

    -
    -Konfiguration des lirc siehe - -http://www.dbox2.info/doku/lirc/lirc_doku.html

    -Syntax der Lirc-Kommando Dateien:
    -Es knnen in einer Kommando-Datei beliebig viele Befehle der Form
    -

    <device> <command> (<duration>)
    -vorkommen.

    -<device> = Name der Fernbedienung in der lirc.conf Datei
    -<command> = Name der Taste einer Fernbedienung in lirc.conf
    -<duration> = Dauer, die das Signal gesendet werden soll, in ms (optional). -Wenn nicht angegeben wird das Signal genau ein mal gesendet. -Werte zwischen 50ms und 500ms sind ein guter Anfang
    -

    -Folgende Neutrino-Aktionen knnen zustzlich zum VCR Support mit IR-Signalen -versehen werden:
    -(ist die entsprechende Kommando-Datei vorhanden, werden die Kommandos gesendet, -existiert die Datei nicht, passiert nichts.) -

    -Sleeptimer:
    -Wenn der Sleeptimer die Box in den Standby bzw. Deep-Standby schickt, -werden die Lirc-Kommandos in der Datei sleep.lirc ausgefhrt. -Dies dient zur Abschaltung des TVs / Verstrkers/...
    -Bsp. /var/tuxbox/config/lirc/sleep.lirc: -

    -tv power 500
    -amplifier power 500
    -
    -Standby on/off:
    -Wir die Box in den standby geschickt (egal, ob per Fernbedienung, timer, -web,...) so wird die Kommando-Datei sbon.lirc ausgefhrt. Wacht sie -aus dem Standby auf wird die Kommando-Datei sboff.lirc ausgefhrt.
    -Achtung , bei Deep-Standby funktioniert nur sbon.lirc !
    -Bsp. /var/tuxbox/config/lirc/sbon.lirc: -
    -tv power 500
    -amplifier power 500
    -
    -Bsp. /var/tuxbox/config/lirc/sboff.lirc: -
    -tv 1 250
    -tv av 250
    -amplifier power 500
    -
    -Volume +/-:
    -Bei erhhen der Lautstrke wird die Kommando-Datei volplus.lirc bei -erniedrigen der Lautstrke volminus ausgefhrt. Dies ist fr Leute -interessant, die Audio nicht ber den Fernseher, sondern digital ber einen -Verstrker abspielen. Hier kann jetzt auch ber die DBox-Fernbedienung die -Lautstrke verndert werden.
    -Dabei ist zu beachten, dass die Dauer, die die Kommados gesendet werden, -relativ kurz sein sollte, da sonst der Neutrino-Programmablauf sehr -unflssig wirkt. Ich arbeite hier mit Werten zwischen 50 und 100 ms.
    -Bsp. /var/tuxbox/config/lirc/volplus.lirc: -
    -amplifier vol_inc 60
    -
    -Bsp. /var/tuxbox/config/lirc/volminus.lirc: -
    -amplifier vol_dec 60
    -
    - - - diff --git a/src/nhttpd/doc/design/Kollaborationsdiagramm1.gif b/doc/nhttpd/design/Kollaborationsdiagramm1.gif similarity index 100% rename from src/nhttpd/doc/design/Kollaborationsdiagramm1.gif rename to doc/nhttpd/design/Kollaborationsdiagramm1.gif diff --git a/src/nhttpd/doc/design/Sequenzdiagramm1.gif b/doc/nhttpd/design/Sequenzdiagramm1.gif similarity index 100% rename from src/nhttpd/doc/design/Sequenzdiagramm1.gif rename to doc/nhttpd/design/Sequenzdiagramm1.gif diff --git a/src/nhttpd/doc/design/Webserver.gif b/doc/nhttpd/design/Webserver.gif similarity index 100% rename from src/nhttpd/doc/design/Webserver.gif rename to doc/nhttpd/design/Webserver.gif diff --git a/src/nhttpd/doc/design/big_picturer.gif b/doc/nhttpd/design/big_picturer.gif similarity index 100% rename from src/nhttpd/doc/design/big_picturer.gif rename to doc/nhttpd/design/big_picturer.gif diff --git a/src/nhttpd/doc/design/mods.gif b/doc/nhttpd/design/mods.gif similarity index 100% rename from src/nhttpd/doc/design/mods.gif rename to doc/nhttpd/design/mods.gif diff --git a/src/nhttpd/doc/design/nhttpd.gif b/doc/nhttpd/design/nhttpd.gif similarity index 100% rename from src/nhttpd/doc/design/nhttpd.gif rename to doc/nhttpd/design/nhttpd.gif diff --git a/src/nhttpd/doc/design/nhttpdNeutrinoAPI.gif b/doc/nhttpd/design/nhttpdNeutrinoAPI.gif similarity index 100% rename from src/nhttpd/doc/design/nhttpdNeutrinoAPI.gif rename to doc/nhttpd/design/nhttpdNeutrinoAPI.gif diff --git a/src/nhttpd/doc/index.html b/doc/nhttpd/index.html similarity index 100% rename from src/nhttpd/doc/index.html rename to doc/nhttpd/index.html diff --git a/src/nhttpd/doc/nhttpd_controlapi.html b/doc/nhttpd/nhttpd_controlapi.html similarity index 100% rename from src/nhttpd/doc/nhttpd_controlapi.html rename to doc/nhttpd/nhttpd_controlapi.html diff --git a/src/nhttpd/doc/nhttpd_implementation.html b/doc/nhttpd/nhttpd_implementation.html similarity index 100% rename from src/nhttpd/doc/nhttpd_implementation.html rename to doc/nhttpd/nhttpd_implementation.html diff --git a/src/nhttpd/doc/yhttpd.css b/doc/nhttpd/yhttpd.css similarity index 100% rename from src/nhttpd/doc/yhttpd.css rename to doc/nhttpd/yhttpd.css diff --git a/src/nhttpd/doc/yhttpd_conf.txt b/doc/nhttpd/yhttpd_conf.txt similarity index 100% rename from src/nhttpd/doc/yhttpd_conf.txt rename to doc/nhttpd/yhttpd_conf.txt diff --git a/src/nhttpd/doc/yhttpd_documentation.html b/doc/nhttpd/yhttpd_documentation.html similarity index 100% rename from src/nhttpd/doc/yhttpd_documentation.html rename to doc/nhttpd/yhttpd_documentation.html diff --git a/lib/libtuxtxt/tuxtxt_common.h b/lib/libtuxtxt/tuxtxt_common.h index 7173aa641..a7f1eede8 100644 --- a/lib/libtuxtxt/tuxtxt_common.h +++ b/lib/libtuxtxt/tuxtxt_common.h @@ -312,7 +312,7 @@ void tuxtxt_decode_adip() /* additional information table */ #endif } /* next adip page i */ - while (!tuxtxt_cache.adippg[tuxtxt_cache.maxadippg] && (tuxtxt_cache.maxadippg >= 0)) /* and shrink table */ + while ((tuxtxt_cache.maxadippg >= 0) && !tuxtxt_cache.adippg[tuxtxt_cache.maxadippg]) /* and shrink table */ tuxtxt_cache.maxadippg--; } /****************************************************************************** diff --git a/src/driver/fontrenderer.cpp b/src/driver/fontrenderer.cpp index c43c2fab1..78286ed52 100644 --- a/src/driver/fontrenderer.cpp +++ b/src/driver/fontrenderer.cpp @@ -287,10 +287,14 @@ return 0; ascender=tM; descender=tg-hg; //this is a negative value! int halflinegap= -(descender>>1); // |descender/2| - we use descender as linegap, half at top, half at bottom - upper = halflinegap+ascender+3; // we add 3 at top - lower = -descender+halflinegap+1; // we add 1 at bottom + + //hack: Use additional percentage height offset, font types could have different heights, static values seems not really senseful. + upper = halflinegap+ascender+hg/7; // we add 1/7 of glyph height at top + lower = -descender+halflinegap-hg/10; // we add 1/10 of glyph height at bottom + height=upper+lower; // this is total height == distance of lines - DigitHeight = ascender+2; + + DigitHeight = ascender+2; //Is this static value really ok? DigitOffset = -descender+halflinegap; // hack end diff --git a/src/driver/pictureviewer/crw.cpp b/src/driver/pictureviewer/crw.cpp index 83a0c0532..be7c0783c 100644 --- a/src/driver/pictureviewer/crw.cpp +++ b/src/driver/pictureviewer/crw.cpp @@ -9,6 +9,9 @@ #include #include +#if __cplusplus >= 201103 +#include +#endif #include #include "pictureviewer.h" @@ -193,12 +196,21 @@ int fh_crw_load(const char *filename,unsigned char **buffer,int* xp,int* /*yp*/) ciptr->out_color_space=JCS_RGB; if(x==(int)ciptr->image_width) ciptr->scale_denom=1; +#if __cplusplus < 201103 else if(abs(x*2 - ciptr->image_width) < 2) ciptr->scale_denom=2; else if(abs(x*4 - ciptr->image_width) < 4) ciptr->scale_denom=4; else if(abs(x*8 - ciptr->image_width) < 8) ciptr->scale_denom=8; +#else + else if(std::abs(x*2 - ciptr->image_width) < 2) + ciptr->scale_denom=2; + else if(std::abs(x*4 - ciptr->image_width) < 4) + ciptr->scale_denom=4; + else if(std::abs(x*8 - ciptr->image_width) < 8) + ciptr->scale_denom=8; +#endif else ciptr->scale_denom=1; diff --git a/src/driver/pictureviewer/jpeg.cpp b/src/driver/pictureviewer/jpeg.cpp index 3d3898f86..95413f180 100644 --- a/src/driver/pictureviewer/jpeg.cpp +++ b/src/driver/pictureviewer/jpeg.cpp @@ -4,7 +4,7 @@ #include #include "pv_config.h" #ifdef FBV_SUPPORT_JPEG - + #include #include #include @@ -17,7 +17,10 @@ #include #include #include - + +#if __cplusplus >= 201103 +#include +#endif #include #include @@ -94,12 +97,21 @@ int fh_jpeg_load(const char *filename,unsigned char **buffer,int* x,int* y) ciptr->dct_method=JDCT_FASTEST; if(*x==(int)ciptr->image_width) ciptr->scale_denom=1; +#if __cplusplus < 201103 else if(abs(*x*2 - ciptr->image_width) < 2) ciptr->scale_denom=2; else if(abs(*x*4 - ciptr->image_width) < 4) ciptr->scale_denom=4; else if(abs(*x*8 - ciptr->image_width) < 8) ciptr->scale_denom=8; +#else + else if(std::abs(*x*2 - ciptr->image_width) < 2) + ciptr->scale_denom=2; + else if(std::abs(*x*4 - ciptr->image_width) < 4) + ciptr->scale_denom=4; + else if(std::abs(*x*8 - ciptr->image_width) < 8) + ciptr->scale_denom=8; +#endif else ciptr->scale_denom=1; diff --git a/src/driver/pictureviewer/png.cpp b/src/driver/pictureviewer/png.cpp index 55f30613d..a87ad6fa3 100644 --- a/src/driver/pictureviewer/png.cpp +++ b/src/driver/pictureviewer/png.cpp @@ -35,6 +35,7 @@ int int_png_load(const char *name, unsigned char **buffer, int* xp, int* yp, int int bit_depth, color_type, interlace_type, number_passes, pass, int_bpp; png_byte * fbptr; FILE * fh; + bool updateInfo_alreadyRead; if(!(fh=fopen(name,"rb"))) return(FH_ERROR_FILE); @@ -59,18 +60,50 @@ int int_png_load(const char *name, unsigned char **buffer, int* xp, int* yp, int png_init_io(png_ptr,fh); png_read_info(png_ptr, info_ptr); png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); - if (alpha) + updateInfo_alreadyRead = false; + if (alpha) // 24bit or gray scale PNGs with alpha-channel { *bpp = png_get_channels(png_ptr, info_ptr); - if ((*bpp != 4) || !(color_type & PNG_COLOR_MASK_ALPHA)) - { + if ((*bpp == 2) && (color_type == PNG_COLOR_TYPE_GRAY_ALPHA)) { + if (bit_depth < 8) { + /* Extract multiple pixels with bit depths of 1, 2, and 4 + from a single byte into separate bytes + (useful for paletted and grayscale images). */ + png_set_packing(png_ptr); + /* Expand grayscale images to the full 8 bits + from 1, 2, or 4 bits/pixel */ +#if PNG_LIBPNG_VER_MAJOR == 1 && PNG_LIBPNG_VER_MINOR <= 2 && PNG_LIBPNG_VER_RELEASE < 9 + png_set_gray_1_2_4_to_8(png_ptr); +#else + png_set_expand_gray_1_2_4_to_8(png_ptr); +#endif + } + /* Expand the grayscale to 24-bit RGB if necessary. */ + png_set_gray_to_rgb(png_ptr); + /* Update the users info structure */ + png_read_update_info(png_ptr, info_ptr); + updateInfo_alreadyRead = true; + *bpp = png_get_channels(png_ptr, info_ptr); + if (*bpp != 4) { + /* No 4 channels found + load PNG without alpha channel */ + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); + fclose(fh); + return fh_png_load(name, buffer, xp, yp); + } + } + else if ((*bpp != 4) || !(color_type & PNG_COLOR_MASK_ALPHA)) { + /* No 4 channels & not an alpha channel found + load PNG without alpha channel */ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fh); return fh_png_load(name, buffer, xp, yp); } - // 24bit PNGs with alpha-channel int_bpp = 4; -// png_set_swap_alpha(png_ptr); + + /* Expand paletted or RGB images with transparency + to full alpha channels so the data will + be available as RGBA quartets. */ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png_ptr); }else // All other PNGs @@ -101,7 +134,9 @@ int int_png_load(const char *name, unsigned char **buffer, int* xp, int* yp, int if (bit_depth == 16) png_set_strip_16(png_ptr); number_passes = png_set_interlace_handling(png_ptr); - png_read_update_info(png_ptr,info_ptr); + /* Update the users info structure */ + if (!updateInfo_alreadyRead) + png_read_update_info(png_ptr,info_ptr); unsigned long rowbytes = png_get_rowbytes(png_ptr, info_ptr); if (width * int_bpp != rowbytes) { diff --git a/src/driver/rcinput.cpp b/src/driver/rcinput.cpp index e5ed9aa76..a262e5550 100644 --- a/src/driver/rcinput.cpp +++ b/src/driver/rcinput.cpp @@ -288,21 +288,36 @@ CRCInput::~CRCInput() * stopInput - stop reading rcin for plugins * **************************************************************************/ -void CRCInput::stopInput() +void CRCInput::stopInput(const bool ext) { + if (isLocked()) + return; + input_stopped = true; close(); + if (ext) + postMsg(NeutrinoMessages::LOCK_RC_EXTERN, 0); +} + +bool CRCInput::isLocked(void) +{ + return input_stopped; } /************************************************************************** * restartInput - restart reading rcin after calling plugins * **************************************************************************/ -void CRCInput::restartInput() +void CRCInput::restartInput(const bool ext) { + if (!isLocked()) + return; + close(); open(); input_stopped = false; + if (ext) + postMsg(NeutrinoMessages::UNLOCK_RC_EXTERN, 0); } #if 0 //never used diff --git a/src/driver/rcinput.h b/src/driver/rcinput.h index 7b020bb82..52cac1aa0 100644 --- a/src/driver/rcinput.h +++ b/src/driver/rcinput.h @@ -282,8 +282,9 @@ class CRCInput { return fd_rc[0]; } - void stopInput(); - void restartInput(); + void stopInput(const bool ext = false); + void restartInput(const bool ext = false); + bool isLocked(void); uint64_t repeat_block; uint64_t repeat_block_generic; diff --git a/src/driver/record.cpp b/src/driver/record.cpp index cafcf81df..fee238184 100644 --- a/src/driver/record.cpp +++ b/src/driver/record.cpp @@ -1417,7 +1417,7 @@ int CRecordManager::exec(CMenuTarget* parent, const std::string & actionKey ) inst->GetRecordString(title, duration); title += duration; tostart = (ShowMsg(LOCALE_RECORDING_IS_RUNNING, title.c_str(), - CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbNo, NULL, 450, 30) == CMsgBox::mbrYes); + CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbNo, NULL, 450, DEFAULT_TIMEOUT) == CMsgBox::mbrYes); } if (tostart) { CRecordManager::getInstance()->Record(live_channel_id); diff --git a/src/driver/vfd.cpp b/src/driver/vfd.cpp index f65391939..6f51f6346 100644 --- a/src/driver/vfd.cpp +++ b/src/driver/vfd.cpp @@ -255,8 +255,8 @@ void CVFD::setBacklight(bool on_off) void CVFD::setled(bool on_off) { - if(g_settings.led_rec_mode == 0) - return; + if(g_settings.led_rec_mode == 0) + return; int led1 = -1, led2 = -1; if(on_off){//on diff --git a/src/eitd/edvbstring.cpp b/src/eitd/edvbstring.cpp index 0e29d0456..cb495b1cc 100644 --- a/src/eitd/edvbstring.cpp +++ b/src/eitd/edvbstring.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "SIutils.hpp" #include "debug.h" @@ -2105,6 +2106,7 @@ std::string convertDVBUTF8(const char *data, int len, int table, int tsidonid) //dprintf("recode:::: tsidonid %X table %d two-char %d len %d\n", tsidonid, table, twochar, len); unsigned char res[2048]; + memset(res,0,sizeof(res)); while (i < len) { unsigned long code=0; @@ -2267,6 +2269,7 @@ const std::string convertLatin1UTF8(const std::string &string) unsigned int t=0, i=0, len=string.size(); unsigned char res[2048]; + memset(res,0,sizeof(res)); while (i < len) { diff --git a/src/eitd/sectionsd.cpp b/src/eitd/sectionsd.cpp index c9c1b145e..962b950df 100644 --- a/src/eitd/sectionsd.cpp +++ b/src/eitd/sectionsd.cpp @@ -1226,7 +1226,7 @@ static void commandReadSIfromXML(int connfd, char *data, const unsigned dataLeng writeLockMessaging(); data[dataLength] = '\0'; - epg_dir = (std::string)data + "/"; + static std::string epg_dir_tmp = (std::string)data + "/"; unlockMessaging(); @@ -1234,7 +1234,7 @@ static void commandReadSIfromXML(int connfd, char *data, const unsigned dataLeng pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - if (pthread_create (&thrInsert, &attr, insertEventsfromFile, (void *)epg_dir.c_str() )) + if (pthread_create (&thrInsert, &attr, insertEventsfromFile, (void *)epg_dir_tmp.c_str() )) { perror("sectionsd: pthread_create()"); } diff --git a/src/gui/bedit/bouqueteditor_bouquets.cpp b/src/gui/bedit/bouqueteditor_bouquets.cpp index 9c7017a46..5e2e348c8 100644 --- a/src/gui/bedit/bouqueteditor_bouquets.cpp +++ b/src/gui/bedit/bouqueteditor_bouquets.cpp @@ -157,7 +157,7 @@ const struct button_label CBEBouquetWidgetButtons[6] = void CBEBouquetWidget::paintFoot() { size_t numbuttons = sizeof(CBEBouquetWidgetButtons)/sizeof(CBEBouquetWidgetButtons[0]); - footer.paintButtons(x, y+height, width, ButtonHeight, numbuttons, CBEBouquetWidgetButtons, width/numbuttons-20); + footer.paintButtons(x, y+height, width, ButtonHeight, numbuttons, CBEBouquetWidgetButtons, width/numbuttons-2*OFFSET_INNER_MID, 0, g_Font[SNeutrinoSettings::FONT_TYPE_MENU_FOOT]); } void CBEBouquetWidget::hide() diff --git a/src/gui/bedit/bouqueteditor_channels.cpp b/src/gui/bedit/bouqueteditor_channels.cpp index 2acaabbac..9abeb7a1a 100644 --- a/src/gui/bedit/bouqueteditor_channels.cpp +++ b/src/gui/bedit/bouqueteditor_channels.cpp @@ -194,7 +194,7 @@ const struct button_label CBEChannelWidgetButtons[6] = void CBEChannelWidget::paintFoot() { size_t numbuttons = sizeof(CBEChannelWidgetButtons)/sizeof(CBEChannelWidgetButtons[0]); - footer.paintButtons(x, y + (height-footerHeight), width, footerHeight, numbuttons, CBEChannelWidgetButtons, width/numbuttons-20); + footer.paintButtons(x, y + (height-footerHeight), width, footerHeight, numbuttons, CBEChannelWidgetButtons, width/numbuttons-2*OFFSET_INNER_MID, 0, g_Font[SNeutrinoSettings::FONT_TYPE_MENU_FOOT]); } std::string CBEChannelWidget::getInfoText(int index) diff --git a/src/gui/bouquetlist.cpp b/src/gui/bouquetlist.cpp index 98c595f1a..9dae0f60a 100644 --- a/src/gui/bouquetlist.cpp +++ b/src/gui/bouquetlist.cpp @@ -634,7 +634,7 @@ void CBouquetList::paintItem(int pos) i_radius = RADIUS_LARGE; if (i_radius) - frameBuffer->paintBoxRel(x, ypos, width- 15, fheight, bgcolor); + frameBuffer->paintBoxRel(x, ypos, width- 15, fheight, COL_MENUCONTENT_PLUS_0); frameBuffer->paintBoxRel(x, ypos, width- 15, fheight, bgcolor, i_radius); if (npos < (int) Bouquets.size()) @@ -691,7 +691,8 @@ void CBouquetList::paintItem(int pos) void CBouquetList::paintHead() { - CComponentsHeader header(x, y, width, theight, name); + std::string icon(""); + CComponentsHeader header(x, y, width, theight, name, icon, CComponentsHeader::CC_BTN_LEFT | CComponentsHeader::CC_BTN_RIGHT | CComponentsHeader::CC_BTN_MENU); header.paint(CC_SAVE_SCREEN_NO); } diff --git a/src/gui/channellist.cpp b/src/gui/channellist.cpp index 1e0abbd90..3a4639bba 100644 --- a/src/gui/channellist.cpp +++ b/src/gui/channellist.cpp @@ -529,26 +529,6 @@ void CChannelList::calcSize() else pig_height = 0; infozone_height = height - theight - pig_height - footerHeight; - - ChannelList_Rec = 0; - int icon_w, h; - int recmode_icon_max = 0; - frameBuffer->getIconSize(NEUTRINO_ICON_REC, &icon_w, &h); - recmode_icon_max = std::max(recmode_icon_max, icon_w); - frameBuffer->getIconSize(NEUTRINO_ICON_AUTO_SHIFT, &icon_w, &h); - recmode_icon_max = std::max(recmode_icon_max, icon_w); - frameBuffer->getIconSize(NEUTRINO_ICON_PIP, &icon_w, &h); - recmode_icon_max = std::max(recmode_icon_max, icon_w); - - for (uint32_t i = 0; i < (*chanlist).size(); i++) { - if (CRecordManager::getInstance()->GetRecordMode((*chanlist)[i]->getChannelID()) || - (*chanlist)[i]->getChannelID() == CZapit::getInstance()->GetPipChannelID()) { - ChannelList_Rec = recmode_icon_max; - break; - } - } - if (ChannelList_Rec > 0) - ChannelList_Rec += 8; } bool CChannelList::updateSelection(int newpos) @@ -1544,24 +1524,23 @@ void CChannelList::paintDetails(int index) int ypos = y + height + OFFSET_INTER; int ypos_a = ypos + OFFSET_INNER_SMALL; - CChannelEvent *p_event = NULL; - - //colored_events init - bool colored_event_C = (g_settings.theme.colored_events_channellist == 1); - bool colored_event_N = (g_settings.theme.colored_events_channellist == 2); - frameBuffer->paintBoxRel(x, ypos, full_width, info_height, COL_MENUCONTENTDARK_PLUS_0, RADIUS_LARGE); frameBuffer->paintBoxFrame(x, ypos, full_width, info_height, 2, COL_FRAME_PLUS_0, RADIUS_LARGE); if ((*chanlist).empty()) return; + //colored_events init + bool colored_event_C = (g_settings.theme.colored_events_channellist == 1); + bool colored_event_N = (g_settings.theme.colored_events_channellist == 2); + + CChannelEvent *p_event = NULL; if (displayNext) p_event = &(*chanlist)[index]->nextEvent; else p_event = &(*chanlist)[index]->currentEvent; - if (/* !IS_WEBTV((*chanlist)[index]->getChannelID()) && */ !p_event->description.empty()) { + if (/* !IS_WEBTV((*chanlist)[index]->getChannelID()) && */ p_event && !p_event->description.empty()) { char cNoch[50] = {0}; // UTF-8 char cSeit[50] = {0}; // UTF-8 @@ -1628,7 +1607,7 @@ void CChannelList::paintDetails(int index) else if (IS_WEBTV((*chanlist)[index]->getChannelID())) { g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x+ 10, ypos_a + fheight, full_width - 30, (*chanlist)[index]->getDesc(), colored_event_C ? COL_COLORED_EVENTS_TEXT : COL_MENUCONTENTDARK_TEXT, 0, true); } - if (IS_WEBTV((*chanlist)[index]->getChannelID())) { + if (g_settings.channellist_foot == 0 && IS_WEBTV((*chanlist)[index]->getChannelID())) { g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x+ 10, ypos_a + 2*fheight + fdescrheight, full_width - 30, (*chanlist)[index]->getUrl(), COL_MENUCONTENTDARK_TEXT, 0, true); } else if(g_settings.channellist_foot == 0) { transponder t; @@ -1645,7 +1624,7 @@ void CChannelList::paintDetails(int index) else if( !displayNext && g_settings.channellist_foot == 1) { // next Event CSectionsdClient::CurrentNextInfo CurrentNext; - CEitManager::getInstance()->getCurrentNextServiceKey((*chanlist)[index]->getChannelID(), CurrentNext); + CEitManager::getInstance()->getCurrentNextServiceKey((*chanlist)[index]->getEpgID(), CurrentNext); if (!CurrentNext.next_name.empty()) { char buf[128] = {0}; char cFrom[50] = {0}; // UTF-8 @@ -1920,13 +1899,13 @@ void CChannelList::paintItem(int pos, const bool firstpaint) char nameAndDescription[255]; char tmp[10]; CZapitChannel* chan = (*chanlist)[curr]; - int prg_offset=0; - int title_offset=0; + int prg_offset = 0; + int title_offset = 0; int rec_mode; - if(g_settings.channellist_progressbar_design != CProgressBar::PB_OFF) + if(g_settings.theme.progressbar_design_channellist != CProgressBar::PB_OFF) { prg_offset = g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER]->getRenderWidth("00:00"); - title_offset=6; + title_offset = OFFSET_INNER_SMALL; } snprintf(tmp, sizeof(tmp), "%d", this->historyMode ? pos : chan->number); @@ -1941,52 +1920,98 @@ void CChannelList::paintItem(int pos, const bool firstpaint) rec_mode = CRecordManager::getInstance()->GetRecordMode((*chanlist)[curr]->getChannelID()); //set recording icon - std::string rec_icon; + const char *record_icon = NULL; if (rec_mode & CRecordManager::RECMODE_REC) - rec_icon = NEUTRINO_ICON_REC; + record_icon = NEUTRINO_ICON_REC; else if (rec_mode & CRecordManager::RECMODE_TSHIFT) - rec_icon = NEUTRINO_ICON_AUTO_SHIFT; + record_icon = NEUTRINO_ICON_AUTO_SHIFT; + + //set pip icon + const char *pip_icon = NULL; #ifdef ENABLE_PIP - else if ((*chanlist)[curr]->getChannelID() == CZapit::getInstance()->GetPipChannelID()) - rec_icon = NEUTRINO_ICON_PIP; + if ((*chanlist)[curr]->getChannelID() == CZapit::getInstance()->GetPipChannelID()) + pip_icon = NEUTRINO_ICON_PIP; #endif - //calculating icons - bool isWebTV = !chan->getUrl().empty(); - const char *icon = isWebTV ? NEUTRINO_ICON_STREAMING : NEUTRINO_ICON_SCRAMBLED; - int icon_x = (x+width-15-2) - RADIUS_LARGE/2; - int r_icon_w; int s_icon_h=0; int s_icon_w=0; - frameBuffer->getIconSize(icon, &s_icon_w, &s_icon_h); - r_icon_w = ChannelList_Rec; - int r_icon_x = icon_x; - //paint icon - if(chan->scrambled || isWebTV) - if (frameBuffer->paintIcon(icon, icon_x - s_icon_w, ypos, fheight))//ypos + (fheight - 16)/2); - r_icon_x = r_icon_x - s_icon_w; + //set webtv icon + const char *webtv_icon = NULL; + if (!chan->getUrl().empty()) + webtv_icon = NEUTRINO_ICON_STREAMING; - //paint recording icon - if (!rec_icon.empty()) - frameBuffer->paintIcon(rec_icon, r_icon_x - r_icon_w, ypos, fheight);//ypos + (fheight - 16)/2); + //set scramble icon + const char *scramble_icon = NULL; + if (chan->scrambled) + scramble_icon = NEUTRINO_ICON_SCRAMBLED; + + //calculate and paint right status icons + int icon_w = 0; + int icon_h = 0; + int offset_right = OFFSET_INNER_MID; + int icon_x_right = x + width - 15 - offset_right; + + if (scramble_icon) + { + frameBuffer->getIconSize(scramble_icon, &icon_w, &icon_h); + if (frameBuffer->paintIcon(scramble_icon, icon_x_right - icon_w, ypos, fheight)) + { + offset_right += icon_w + OFFSET_INNER_MID; + icon_x_right -= icon_w + OFFSET_INNER_MID; + } + } + + if (webtv_icon) + { + frameBuffer->getIconSize(webtv_icon, &icon_w, &icon_h); + if (frameBuffer->paintIcon(webtv_icon, icon_x_right - icon_w, ypos, fheight)) + { + offset_right += icon_w + OFFSET_INNER_MID; + icon_x_right -= icon_w + OFFSET_INNER_MID; + } + } + + if (pip_icon) + { + frameBuffer->getIconSize(pip_icon, &icon_w, &icon_h); + if (frameBuffer->paintIcon(pip_icon, icon_x_right - icon_w, ypos, fheight)) + { + offset_right += icon_w + OFFSET_INNER_MID; + icon_x_right -= icon_w + OFFSET_INNER_MID; + } + } + + if (record_icon) + { + frameBuffer->getIconSize(record_icon, &icon_w, &icon_h); + if (frameBuffer->paintIcon(record_icon, icon_x_right - icon_w, ypos, fheight)) + { + offset_right += icon_w + OFFSET_INNER_MID; + } + } //paint buttons if (paintbuttons) paintButtonBar(is_available); - int icon_space = r_icon_w+s_icon_w; - //channel numbers - int icon_w = 0, icon_h = 0; - if (curr == selected && move_state == beMoving) { + if (curr == selected && move_state == beMoving) + { frameBuffer->getIconSize(NEUTRINO_ICON_BUTTON_YELLOW, &icon_w, &icon_h); - frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_YELLOW, x + 5 + numwidth - icon_w, ypos, fheight); - } else if (edit_state && chan->bLocked) { + frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_YELLOW, x + OFFSET_INNER_SMALL + numwidth - icon_w, ypos, fheight); + } + else if (edit_state && chan->bLocked) + { frameBuffer->getIconSize(NEUTRINO_ICON_LOCK, &icon_w, &icon_h); - frameBuffer->paintIcon(NEUTRINO_ICON_LOCK, x + 5 + numwidth - icon_w, ypos, fheight); - } else if (g_settings.channellist_show_numbers) { - int numpos = x+5+numwidth- g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER]->getRenderWidth(tmp); - g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER]->RenderString(numpos,ypos+fheight, numwidth+5, tmp, color, fheight); - } else if (!edit_state) + frameBuffer->paintIcon(NEUTRINO_ICON_LOCK, x + OFFSET_INNER_SMALL + numwidth - icon_w, ypos, fheight); + } + else if (g_settings.channellist_show_numbers) + { + int numpos = x + OFFSET_INNER_SMALL + numwidth - g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER]->getRenderWidth(tmp); + g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER]->RenderString(numpos, ypos + fheight, numwidth + 5, tmp, color, fheight); + } + else if (!edit_state) + { numwidth = -5; + } int l=0; if (this->historyMode) @@ -1996,13 +2021,13 @@ void CChannelList::paintItem(int pos, const bool firstpaint) int pb_space = prg_offset - title_offset; int pb_height = g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER]->getDigitHeight(); - CProgressBar pb(x+5+numwidth + title_offset, ypos + (fheight-pb_height)/2, pb_space + 2, pb_height, COL_MENUCONTENT_PLUS_0); + CProgressBar pb(x + OFFSET_INNER_SMALL + numwidth + title_offset, ypos + (fheight-pb_height)/2, pb_space + 2, pb_height, COL_MENUCONTENT_PLUS_0); pb.setType(CProgressBar::PB_TIMESCALE); - pb.setDesign(g_settings.channellist_progressbar_design); + pb.setDesign(g_settings.theme.progressbar_design_channellist); pb.setCornerType(0); pb.setStatusColors(COL_MENUCONTENT_PLUS_3, COL_MENUCONTENT_PLUS_1); int pb_frame = 0; - if (g_settings.channellist_progressbar_design == CProgressBar::PB_MONO && !g_settings.progressbar_gradient) + if (g_settings.theme.progressbar_design_channellist == CProgressBar::PB_MONO && !g_settings.theme.progressbar_gradient) { // add small frame to mono progressbars w/o gradient for a better visibility pb_frame = 1; @@ -2011,27 +2036,26 @@ void CChannelList::paintItem(int pos, const bool firstpaint) pb.doPaintBg(false); int pb_max = pb_space - 4; - if (!(p_event->description.empty())) { + if (!(p_event->description.empty())) + { snprintf(nameAndDescription+l, sizeof(nameAndDescription)-l,g_settings.channellist_epgtext_align_right ? " ":" - "); unsigned int ch_name_len = g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->getRenderWidth(nameAndDescription); unsigned int ch_desc_len = g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->getRenderWidth(p_event->description); - int max_desc_len = width - numwidth - prg_offset - ch_name_len - 15 - 20; // 15 = scrollbar, 20 = spaces - if (chan->scrambled || g_settings.channellist_epgtext_align_right) - max_desc_len -= icon_space+g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->getWidth(); /* do we need space for the lock/rec icon? */ + int max_desc_len = width - numwidth - prg_offset - ch_name_len - 15 - 2*OFFSET_INNER_MID - offset_right; // 15 = scrollbar if (max_desc_len < 0) max_desc_len = 0; if ((int) ch_desc_len > max_desc_len) ch_desc_len = max_desc_len; - if(g_settings.channellist_progressbar_design != CProgressBar::PB_OFF) { + if(g_settings.theme.progressbar_design_channellist != CProgressBar::PB_OFF) { if(displayNext) { struct tm *pStartZeit = localtime(&p_event->startTime); snprintf(tmp, sizeof(tmp), "%02d:%02d", pStartZeit->tm_hour, pStartZeit->tm_min); - g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER]->RenderString(x+ 5+ numwidth+ 6, ypos + fheight, width- numwidth- 20- 15 -prg_offset, tmp, ecolor, fheight); + g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_NUMBER]->RenderString(x + OFFSET_INNER_SMALL + numwidth + 6, ypos + fheight, width - numwidth - 15 - prg_offset - 2*OFFSET_INNER_MID, tmp, ecolor, fheight); } else { @@ -2048,18 +2072,20 @@ void CChannelList::paintItem(int pos, const bool firstpaint) } } - g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x+ 5+ numwidth+ 10+prg_offset, ypos+ fheight, width- numwidth- 40- 15-prg_offset, nameAndDescription, color); + g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST]->RenderString(x + OFFSET_INNER_SMALL + numwidth + OFFSET_INNER_MID + prg_offset, ypos + fheight, width - numwidth - 4*OFFSET_INNER_MID - 15 - prg_offset, nameAndDescription, color); if (g_settings.channellist_epgtext_align_right) { // align right - g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x + width - 20 - ch_desc_len - icon_space - 4, ypos + fheight, ch_desc_len, p_event->description, ecolor); + g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x + width - 15 - offset_right - ch_desc_len, ypos + fheight, ch_desc_len, p_event->description, ecolor); } else { // align left - g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x+ 5+ numwidth+ 10+ ch_name_len+ 5+prg_offset, ypos+ fheight, ch_desc_len, p_event->description, ecolor); + g_Font[SNeutrinoSettings::FONT_TYPE_CHANNELLIST_DESCR]->RenderString(x + OFFSET_INNER_SMALL + numwidth + OFFSET_INNER_MID + ch_name_len + OFFSET_INNER_SMALL + prg_offset, ypos + fheight, ch_desc_len, p_event->description, ecolor); } } - else { - if(g_settings.channellist_progressbar_design != CProgressBar::PB_OFF) { + else + { + if (g_settings.theme.progressbar_design_channellist != CProgressBar::PB_OFF) + { pb.setValues(0, pb_max); pb.paint(); } diff --git a/src/gui/channellist.h b/src/gui/channellist.h index 49d057105..2a4058bff 100644 --- a/src/gui/channellist.h +++ b/src/gui/channellist.h @@ -133,9 +133,6 @@ private: bool displayList; bool pig_on_win; - int ChannelList_Rec; - - bool headerNew; void paintDetails(int index); diff --git a/src/gui/components/cc_draw.cpp b/src/gui/components/cc_draw.cpp index 1e7cd3363..54acff507 100644 --- a/src/gui/components/cc_draw.cpp +++ b/src/gui/components/cc_draw.cpp @@ -668,13 +668,18 @@ void CCDraw::kill(const fb_pixel_t& bg_color, const int& corner_radius, const in int r = v_fbdata[i].r; if (corner_radius > -1) r = corner_radius; - frameBuffer->paintBoxRel(v_fbdata[i].x, - v_fbdata[i].y, - v_fbdata[i].dx, - v_fbdata[i].dy, - bg_color, - r, - corner_type); + + if (v_fbdata[i].dx > 0 && v_fbdata[i].dy > 0){ + frameBuffer->paintBoxRel(v_fbdata[i].x, + v_fbdata[i].y, + v_fbdata[i].dx, + v_fbdata[i].dy, + bg_color, + r, + corner_type); + }else + dprintf(DEBUG_DEBUG, "\033[33m[CCDraw][%s - %d], WARNING! render with bad dimensions [dx = %d dy = %d]\033[0m\n", __func__, __LINE__, v_fbdata[i].dx, v_fbdata[i].dy ); + if (v_fbdata[i].frame_thickness) frameBuffer->paintBoxFrame(v_fbdata[i].x, v_fbdata[i].y, @@ -733,18 +738,21 @@ void CCDraw::paintTrigger() hide(); } +bool CCDraw::paintBlink(CComponentsTimer* Timer) +{ + if (Timer){ + Timer->OnTimer.connect(cc_draw_trigger_slot); + return Timer->isRun(); + } + return false; +} + bool CCDraw::paintBlink(const int& interval, bool is_nano) { - if (cc_draw_timer == NULL){ + if (cc_draw_timer == NULL) cc_draw_timer = new CComponentsTimer(interval, is_nano); - if (cc_draw_timer->OnTimer.empty()){ - cc_draw_timer->OnTimer.connect(cc_draw_trigger_slot); - } - } - if (cc_draw_timer) - return cc_draw_timer->isRun(); - return false; + return paintBlink(cc_draw_timer); } bool CCDraw::cancelBlink(bool keep_on_screen) diff --git a/src/gui/components/cc_draw.h b/src/gui/components/cc_draw.h index 463dc62e1..dd99986fa 100644 --- a/src/gui/components/cc_draw.h +++ b/src/gui/components/cc_draw.h @@ -312,6 +312,17 @@ class CCDraw : public COSDFader, public CComponentsSignals ///paint item, same like paint(CC_SAVE_SCREEN_YES) but without any argument virtual void paint1(){paint(CC_SAVE_SCREEN_YES);} + /**paint item with blink effect + * This should work with all cc item types. + * + * @return bool returns true if effect is successful started + * + * @param[in] CComponentsTimer* pointer to timer object, Note: This object must be created and distroy outside + * of this methode. + * @see overloaded version of paintBlink() + */ + virtual bool paintBlink(CComponentsTimer* Timer); + /**paint item with blink effect * This should work with all cc item types. * diff --git a/src/gui/components/cc_frm.cpp b/src/gui/components/cc_frm.cpp index 7fdb702da..102daa505 100644 --- a/src/gui/components/cc_frm.cpp +++ b/src/gui/components/cc_frm.cpp @@ -375,9 +375,9 @@ void CComponentsForm::paintCCItems() //init and handle scrollbar getPageCount(); - int y_sb = this_y+1; + int y_sb = this_y; int x_sb = this_x + width - w_sb; - int h_sb = height-2; + int h_sb = height; if (sb == NULL){ sb = new CComponentsScrollBar(x_sb, y_sb, w_sb, h_sb); }else{ @@ -636,9 +636,9 @@ void CComponentsForm::ScrollPage(int direction, bool do_paint) int target_page_id = (int)page_count - 1; int target_page = (int)cur_page; - if (direction == SCROLL_P_DOWN) + if (direction == SCROLL_P_UP) target_page = target_page+1 > target_page_id ? 0 : target_page+1; - else if (direction == SCROLL_P_UP) + else if (direction == SCROLL_P_DOWN) target_page = target_page-1 < 0 ? target_page_id : target_page-1; if (do_paint) diff --git a/src/gui/components/cc_frm_button.cpp b/src/gui/components/cc_frm_button.cpp index 0331a5a75..3ec7ce20b 100644 --- a/src/gui/components/cc_frm_button.cpp +++ b/src/gui/components/cc_frm_button.cpp @@ -33,7 +33,6 @@ #include #include "cc_frm_button.h" - using namespace std; CComponentsButton::CComponentsButton( const int& x_pos, const int& y_pos, const int& w, const int& h, @@ -44,7 +43,7 @@ CComponentsButton::CComponentsButton( const int& x_pos, const int& y_pos, const int shadow_mode, fb_pixel_t color_frame, fb_pixel_t color_body, fb_pixel_t color_shadow) { - cc_btn_capt_locale = NONEXISTANT_LOCALE; + cc_btn_text_locale = NONEXISTANT_LOCALE; initVarButton(x_pos, y_pos, w, h, caption, icon_name, parent, selected, enabled, shadow_mode, color_frame, color_body, color_shadow); } @@ -56,8 +55,8 @@ CComponentsButton::CComponentsButton( const int& x_pos, const int& y_pos, const int shadow_mode, fb_pixel_t color_frame, fb_pixel_t color_body, fb_pixel_t color_shadow) { - cc_btn_capt_locale = caption_locale; - initVarButton(x_pos, y_pos, w, h, g_Locale->getText(cc_btn_capt_locale), icon_name, parent, selected, enabled, shadow_mode, color_frame, color_body, color_shadow); + cc_btn_text_locale = caption_locale; + initVarButton(x_pos, y_pos, w, h, g_Locale->getText(cc_btn_text_locale), icon_name, parent, selected, enabled, shadow_mode, color_frame, color_body, color_shadow); } CComponentsButton::CComponentsButton( const int& x_pos, const int& y_pos, const int& w, const int& h, @@ -81,8 +80,8 @@ CComponentsButton::CComponentsButton( const int& x_pos, const int& y_pos, const fb_pixel_t color_frame, fb_pixel_t color_body, fb_pixel_t color_shadow) { string _icon_name = icon_name == NULL ? "" : string(icon_name); - cc_btn_capt_locale = caption_locale; - initVarButton(x_pos, y_pos, w, h, g_Locale->getText(cc_btn_capt_locale), _icon_name, parent, selected, enabled, shadow_mode, color_frame, color_body, color_shadow); + cc_btn_text_locale = caption_locale; + initVarButton(x_pos, y_pos, w, h, g_Locale->getText(cc_btn_text_locale), _icon_name, parent, selected, enabled, shadow_mode, color_frame, color_body, color_shadow); } void CComponentsButton::initVarButton( const int& x_pos, const int& y_pos, const int& w, const int& h, @@ -116,14 +115,14 @@ void CComponentsButton::initVarButton( const int& x_pos, const int& y_pos, const append_y_offset = 0; corner_rad = RADIUS_SMALL; - cc_btn_capt_col = cc_body_gradient_enable ? COL_BUTTON_TEXT_ENABLED : COL_MENUFOOT_TEXT; - cc_btn_capt_disable_col = cc_body_gradient_enable ? COL_BUTTON_TEXT_DISABLED : COL_MENUCONTENTINACTIVE_TEXT; + cc_btn_text_col = cc_body_gradient_enable ? COL_BUTTON_TEXT_ENABLED : COL_MENUFOOT_TEXT; + cc_btn_text_disable_col = cc_body_gradient_enable ? COL_BUTTON_TEXT_DISABLED : COL_MENUCONTENTINACTIVE_TEXT; cc_btn_icon_obj = NULL; - cc_btn_capt_obj = NULL; + cc_btn_text_obj = NULL; cc_btn_dy_font = CNeutrinoFonts::getInstance(); cc_btn_font = NULL; cc_btn_icon = icon_name; - cc_btn_capt = caption; + cc_btn_text = caption; cc_directKey = CRCInput::RC_nokey; cc_directKeyAlt = cc_directKey; cc_btn_result = -1; @@ -172,30 +171,35 @@ void CComponentsButton::initIcon() void CComponentsButton::initCaption() { //init label as caption object and add to container - if (!cc_btn_capt.empty()){ - if (cc_btn_capt_obj == NULL){ - cc_btn_capt_obj = new CComponentsLabel(); - cc_btn_capt_obj->doPaintBg(false); - cc_btn_capt_obj->doPaintTextBoxBg(false); - cc_btn_capt_obj->enableTboxSaveScreen(cc_txt_save_screen); - addCCItem(cc_btn_capt_obj); + if (!cc_btn_text.empty()){ + if (cc_btn_text_obj == NULL){ + cc_btn_text_obj = new CComponentsLabel(); + cc_btn_text_obj->doPaintBg(false); + cc_btn_text_obj->doPaintTextBoxBg(false); + cc_btn_text_obj->enableTboxSaveScreen(cc_txt_save_screen); + addCCItem(cc_btn_text_obj); } }else{ - if (cc_btn_capt_obj){ - delete cc_btn_capt_obj; - cc_btn_capt_obj = NULL; + if (cc_btn_text_obj){ + delete cc_btn_text_obj; + cc_btn_text_obj = NULL; } } //set basic properties int w_frame = fr_thickness; - if (cc_btn_capt_obj){ + int reduce = 2*w_frame; + if (cc_btn_text_obj){ //position and size int x_cap = w_frame; x_cap += cc_btn_icon_obj ? cc_btn_icon_obj->getWidth() : 0; - int w_cap = width - w_frame - append_x_offset - x_cap - w_frame; - int h_cap = (height*85/100) - 2*w_frame; + /* use system defined font as default if not defined */ + if (cc_btn_font == NULL) + cc_btn_font = g_Font[SNeutrinoSettings::FONT_TYPE_BUTTON_TEXT]; + + int w_cap = min(width - append_x_offset - x_cap - reduce, cc_btn_font->getRenderWidth(cc_btn_text)); + int h_cap = min(height - reduce, cc_btn_font->getHeight()); /*NOTE: paint of centered text in y direction without y_offset looks unlovely displaced in y direction especially besides small icons and inside small areas, @@ -204,42 +208,41 @@ void CComponentsButton::initCaption() */ int y_cap = height/2 - h_cap/2; - cc_btn_capt_obj->setDimensionsAll(x_cap, y_cap, w_cap, h_cap); + cc_btn_text_obj->setDimensionsAll(x_cap, y_cap, w_cap, h_cap); //text and font - Font* def_font = *cc_btn_dy_font->getDynFont(w_cap, h_cap, cc_btn_capt); - if (cc_btn_font == NULL){ - /* use dynamic font as default font if no font defined */ - cc_btn_font = def_font; - }else{ - /* if button dimension too small, use dynamic font as default font size, this ignores possible defined font - * Otherwise definied font will be used. - */ - if (cc_btn_font->getHeight() > h_cap){ - cc_btn_font = def_font; - } - } + /* If button dimension too small, use dynamic font, this ignores possible defined font + * Otherwise definied font will be used. Button dimensions are calculated from parent container (e.g. footer...). + * These dimensions must be enough to display complete content like possible icon and without truncated text. + */ + Font *tmp_font = cc_btn_font; + if ((tmp_font->getHeight()-reduce) > (height-reduce) && (tmp_font->getRenderWidth(cc_btn_text)-reduce) > width-reduce) + tmp_font = *cc_btn_dy_font->getDynFont(w_cap, h_cap, cc_btn_text); + if ((cc_btn_font->getHeight()-reduce) > (height-reduce)) + tmp_font = *cc_btn_dy_font->getDynFont(w_cap, h_cap, cc_btn_text); - cc_btn_capt_obj->setText(cc_btn_capt, CTextBox::NO_AUTO_LINEBREAK, cc_btn_font); - cc_btn_capt_obj->forceTextPaint(); //here required; - cc_btn_capt_obj->getCTextBoxObject()->setTextBorderWidth(0,0); + cc_btn_font = tmp_font; + + cc_btn_text_obj->setText(cc_btn_text, CTextBox::NO_AUTO_LINEBREAK, cc_btn_font); + cc_btn_text_obj->forceTextPaint(); //here required; + cc_btn_text_obj->getCTextBoxObject()->setTextBorderWidth(0,0); //set color - cc_btn_capt_obj->setTextColor(this->cc_item_enabled ? cc_btn_capt_col : cc_btn_capt_disable_col); + cc_btn_text_obj->setTextColor(this->cc_item_enabled ? cc_btn_text_col : cc_btn_text_disable_col); //corner of text item - cc_btn_capt_obj->setCorner(corner_rad-w_frame, corner_type); + cc_btn_text_obj->setCorner(corner_rad-w_frame, corner_type); } //handle common position of icon and text inside container required for alignment int w_required = w_frame + append_x_offset; w_required += cc_btn_icon_obj ? cc_btn_icon_obj->getWidth() + append_x_offset : 0; - w_required += cc_btn_font ? cc_btn_font->getRenderWidth(cc_btn_capt) : 0; + w_required += cc_btn_font ? cc_btn_font->getRenderWidth(cc_btn_text) : 0; w_required += append_x_offset + w_frame; //dynamic width if (w_required > width){ - dprintf(DEBUG_INFO, "[CComponentsButton] [%s - %d] width of button (%s) will be changed: defined width=%d, required width=%d\n", __func__, __LINE__, cc_btn_capt.c_str(), width, w_required); + dprintf(DEBUG_INFO, "[CComponentsButton] [%s - %d] width of button (%s) will be changed: defined width=%d, required width=%d\n", __func__, __LINE__, cc_btn_text.c_str(), width, w_required); width = max(w_required, width); } @@ -256,22 +259,22 @@ void CComponentsButton::initCaption() int y_icon = height/2 - cc_btn_icon_obj->getHeight()/2; cc_btn_icon_obj->setYPos(y_icon); } - if (cc_btn_capt_obj){ - cc_btn_capt_obj->setXPos(x_icon + w_icon + append_x_offset); - cc_btn_capt_obj->setWidth(width - cc_btn_capt_obj->getXPos()); + if (cc_btn_text_obj){ + cc_btn_text_obj->setXPos(x_icon + w_icon + append_x_offset); + cc_btn_text_obj->setWidth(width - cc_btn_text_obj->getXPos()); } } void CComponentsButton::setCaption(const std::string& text) { - cc_btn_capt = text; + cc_btn_text = text; initCCBtnItems(); } void CComponentsButton::setCaption(const neutrino_locale_t locale_text) { - cc_btn_capt_locale = locale_text; - setCaption(g_Locale->getText(cc_btn_capt_locale)); + cc_btn_text_locale = locale_text; + setCaption(g_Locale->getText(cc_btn_text_locale)); } void CComponentsButton::initCCBtnItems() diff --git a/src/gui/components/cc_frm_button.h b/src/gui/components/cc_frm_button.h index 80653e2be..a0540636b 100644 --- a/src/gui/components/cc_frm_button.h +++ b/src/gui/components/cc_frm_button.h @@ -50,7 +50,7 @@ class CComponentsButton : public CComponentsFrmChain, public CCTextScreen ///object: picture object CComponentsPictureScalable *cc_btn_icon_obj; ///object: label object - CComponentsLabel *cc_btn_capt_obj; + CComponentsLabel *cc_btn_text_obj; ///initialize all required attributes and objects void initVarButton( const int& x_pos, const int& y_pos, const int& w, const int& h, @@ -63,9 +63,9 @@ class CComponentsButton : public CComponentsFrmChain, public CCTextScreen fb_pixel_t color_frame, fb_pixel_t color_body, fb_pixel_t color_shadow); ///property: button text as string, see also setCaption() and getCaptionString() - std::string cc_btn_capt; + std::string cc_btn_text; ///property: button text as locale, see also setCaption() and getCaptionLocale() - neutrino_locale_t cc_btn_capt_locale; + neutrino_locale_t cc_btn_text_locale; ///property: icon name, only icons supported, to find in gui/widget/icons.h std::string cc_btn_icon; @@ -80,9 +80,9 @@ class CComponentsButton : public CComponentsFrmChain, public CCTextScreen int cc_btn_alias; ///property: text color - fb_pixel_t cc_btn_capt_col; + fb_pixel_t cc_btn_text_col; ///property: text color for disabled button - fb_pixel_t cc_btn_capt_disable_col; + fb_pixel_t cc_btn_text_disable_col; ///object: text font Font* cc_btn_font; ///object: dynamic font object handler @@ -135,7 +135,7 @@ class CComponentsButton : public CComponentsFrmChain, public CCTextScreen fb_pixel_t color_frame = COL_SHADOW_PLUS_0, fb_pixel_t color_body = COL_BUTTON_BODY, fb_pixel_t color_shadow = COL_SHADOW_PLUS_0); ///set text color - inline virtual void setButtonTextColor(fb_pixel_t caption_color){cc_btn_capt_col = caption_color;}; + inline virtual void setButtonTextColor(fb_pixel_t caption_color){cc_btn_text_col = caption_color;}; /**Member to modify background behavior of embeded caption object. * @param[in] mode @@ -164,9 +164,9 @@ class CComponentsButton : public CComponentsFrmChain, public CCTextScreen virtual void setCaption(const neutrino_locale_t locale_text); ///get caption, type as std::string - inline virtual std::string getCaptionString(){return cc_btn_capt;}; + inline virtual std::string getCaptionString(){return cc_btn_text;}; ///get loacalized caption id, type = neutrino_locale_t - inline virtual neutrino_locale_t getCaptionLocale(){return cc_btn_capt_locale;}; + inline virtual neutrino_locale_t getCaptionLocale(){return cc_btn_text_locale;}; ///property: set font for label caption, parameter as font object, value NULL causes usaage of dynamic font virtual void setButtonFont(Font* font){cc_btn_font = font; initCCBtnItems();}; diff --git a/src/gui/components/cc_frm_clock.cpp b/src/gui/components/cc_frm_clock.cpp index 5adcd7b45..d1a9cbc7a 100644 --- a/src/gui/components/cc_frm_clock.cpp +++ b/src/gui/components/cc_frm_clock.cpp @@ -75,11 +75,8 @@ CComponentsFrmClock::CComponentsFrmClock( const int& x_pos, //init default font cl_font = font; cl_font_style = font_style; - if (cl_font == NULL){ - int dx = 0; - int dy = 30; - setClockFont(*CNeutrinoFonts::getInstance()->getDynFont(dx, dy, cl_format_str, cl_font_style)); - } + if (cl_font == NULL) + initClockFont(0, g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->getHeight()); //init general clock dimensions height = cl_font->getHeight(); @@ -114,6 +111,11 @@ CComponentsFrmClock::~CComponentsFrmClock() delete cl_timer; } +void CComponentsFrmClock::initClockFont(int dx, int dy) +{ + setClockFont(*CNeutrinoFonts::getInstance()->getDynFont(dx, dy, cl_format_str, cl_font_style)); +} + void CComponentsFrmClock::initTimeString() { @@ -260,12 +262,12 @@ void CComponentsFrmClock::initCCLockItems() lbl->doPaintTextBoxBg(paint_bg); bool save_txt_screen = cc_txt_save_screen || (!paint_bg || cc_body_gradient_enable); lbl->enableTboxSaveScreen(save_txt_screen); - +#if 0 //use matching height for digits for better vertical centerring into form CTextBox* ctb = lbl->getCTextBoxObject(); if (ctb) ctb->setFontUseDigitHeight(); -#if 0 + //ensure paint of text and label bg on changed text or painted form background bool force_txt_and_bg = (lbl->textChanged() || this->paint_bg); lbl->forceTextPaint(force_txt_and_bg); @@ -380,14 +382,12 @@ void CComponentsFrmClock::paint(bool do_save_bg) void CComponentsFrmClock::setClockFont(Font *font, const int& style) { - if (cl_font != font) - cl_font = font; - - if (style != -1) - cl_font_style = style; - -// setHeight(cl_font->getHeight()); -// setWidth(cl_font->getRenderWidth(cl_format_str)); + if (cl_font != font || (cl_font != font)){ + if (cl_font != font) + cl_font = font; + if (style != -1) + cl_font_style = style; + } initCCLockItems(); } diff --git a/src/gui/components/cc_frm_clock.h b/src/gui/components/cc_frm_clock.h index c46dc0bad..ddc5abbbb 100644 --- a/src/gui/components/cc_frm_clock.h +++ b/src/gui/components/cc_frm_clock.h @@ -88,9 +88,8 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen bool stopClock(); ///switch between primary and secondary format void toggleFormat(); - - ///return pointer of font object - Font* getClockFont(); + ///init internal font + void initClockFont(int dx, int dy); public: @@ -121,6 +120,9 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen */ void setClockFont(Font * font, const int& style = -1); + ///return pointer of font object + Font* getClockFont(); + ///set text color virtual void setTextColor(fb_pixel_t color_text){ cl_col_text = color_text;} @@ -132,6 +134,8 @@ class CComponentsFrmClock : public CComponentsForm, public CCTextScreen ///use string expession: "%H:%M" = 12:22, "%H:%M:%S" = 12:22:12 ///set current time format string, 1st parameter set the default format, 2nd parameter sets an alternatively format for use as blink effect virtual void setClockFormat(const char* prformat_str, const char* secformat_str = NULL); + ///get current time format string, + std::string getClockFormat(){return cl_format;} ///start and paint ticking clock virtual bool Start(); diff --git a/src/gui/components/cc_frm_footer.cpp b/src/gui/components/cc_frm_footer.cpp index 5b39177f0..20c11dce3 100644 --- a/src/gui/components/cc_frm_footer.cpp +++ b/src/gui/components/cc_frm_footer.cpp @@ -68,6 +68,12 @@ void CComponentsFooter::initVarFooter( const int& x_pos, const int& y_pos, const //init footer width width = w == 0 ? frameBuffer->getScreenWidth(true) : w; + //init default fonts + initDefaultFonts(); + + //init default button text font + ccf_btn_font = g_Font[SNeutrinoSettings::FONT_TYPE_BUTTON_TEXT]; + //init footer height initCaptionFont(); height = max(h, cch_font->getHeight()); @@ -88,7 +94,6 @@ void CComponentsFooter::initVarFooter( const int& x_pos, const int& y_pos, const corner_type = CORNER_BOTTOM; ccf_enable_button_bg = false /*g_settings.theme.Button_gradient*/; //TODO: not implemented at the moment - ccf_btn_font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_FOOT]; chain = NULL; addContextButton(buttons); @@ -132,11 +137,14 @@ void CComponentsFooter::setButtonLabels(const struct button_label_s * const cont * With this container we can work inside footer as primary container (in this context '=this') and the parent for the button label container (chain object). * Button label container (chain object) itself is concurrent to the parent object for button objects. */ + int dist = height/2-cch_offset; + int h_chain = ccf_btn_font->getHeight() > height+dist ? height-dist : ccf_btn_font->getHeight()+dist; int x_chain = width/2 - w_chain/2; + int y_chain = height/2 - h_chain/2; if (cch_icon_obj) x_chain = cch_offset+cch_icon_obj->getWidth()+cch_offset; if (chain == NULL){ - chain = new CComponentsFrmChain(x_chain, 0, w_chain, height, 0, CC_DIR_X, this, CC_SHADOW_OFF, COL_MENUCONTENT_PLUS_6, col_body); + chain = new CComponentsFrmChain(x_chain, y_chain, w_chain, h_chain, 0, CC_DIR_X, this, CC_SHADOW_OFF, COL_MENUCONTENT_PLUS_6, col_body); chain->setAppendOffset(0, 0); chain->setCorner(this->corner_rad, this->corner_type); chain->doPaintBg(false); @@ -167,7 +175,7 @@ void CComponentsFooter::setButtonLabels(const struct button_label_s * const cont * with default width to chain object. */ vector v_btns; - int h_btn = /*(ccf_enable_button_bg ? */(height*85/100)-2*fr_thickness-OFFSET_INNER_SMALL/* : height)*/-ccf_button_shadow_width; + int h_btn = /*(ccf_enable_button_bg ? */chain->getHeight()-2*fr_thickness/*-OFFSET_INNER_SMALL*//* : height)*/-ccf_button_shadow_width; for (size_t i= 0; i< label_count; i++){ string txt = content[i].text; string icon_name = string(content[i].button); @@ -421,8 +429,15 @@ void CComponentsFooter::enableButtonShadow(int mode, const int& shadow_width, bo if (chain){ for(size_t i=0; isize(); i++){ chain->getCCItem(i)->enableShadow(ccf_enable_button_shadow, ccf_button_shadow_width, ccf_button_shadow_force_paint); - int y_btn = ccf_enable_button_shadow == CC_SHADOW_OFF ? CC_CENTERED : chain->getHeight()/2 - chain->getCCItem(i)->getHeight()/2 - ccf_button_shadow_width; + //int y_btn = ccf_enable_button_shadow == CC_SHADOW_OFF ? CC_CENTERED : chain->getHeight()/2 - chain->getCCItem(i)->getHeight()/2 - ccf_button_shadow_width; + int y_btn = chain->getHeight()/2 - chain->getCCItem(i)->getHeight()/2; chain->getCCItem(i)->setYPos(y_btn); } } } + +void CComponentsFooter::initDefaultFonts() +{ + l_font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]; + s_font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_FOOT]; +} diff --git a/src/gui/components/cc_frm_footer.h b/src/gui/components/cc_frm_footer.h index 4c5239d56..59a90e8f5 100644 --- a/src/gui/components/cc_frm_footer.h +++ b/src/gui/components/cc_frm_footer.h @@ -84,6 +84,9 @@ class CComponentsFooter : public CComponentsHeader ///property: set font for label caption, see also setButtonFont() Font* ccf_btn_font; + ///init default fonts for size modes + virtual void initDefaultFonts(); + ///container for button objects CComponentsFrmChain *chain; @@ -201,7 +204,7 @@ class CComponentsFooter : public CComponentsHeader const struct button_label * const content, const int& label_width = 0, const int& context_buttons = 0, - Font* font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_FOOT], + Font* font = g_Font[SNeutrinoSettings::FONT_TYPE_BUTTON_TEXT], bool do_save_bg = CC_SAVE_SCREEN_NO ); diff --git a/src/gui/components/cc_frm_header.cpp b/src/gui/components/cc_frm_header.cpp index 4b60711eb..032763d16 100644 --- a/src/gui/components/cc_frm_header.cpp +++ b/src/gui/components/cc_frm_header.cpp @@ -93,12 +93,12 @@ void CComponentsHeader::initVarHeader( const int& x_pos, const int& y_pos, const //init header width width = width_old = w == 0 ? frameBuffer->getScreenWidth(true) : w; + height = height_old = h; - //init header default height - height = height_old = max(h, g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight()); - - cch_size_mode = CC_HEADER_SIZE_LARGE; - initCaptionFont(); //sets cch_font and calculate height if required; + cch_font = NULL; + initDefaultFonts(); + cch_size_mode = CC_HEADER_SIZE_LARGE; + CNeutrinoApp::getInstance()->OnAfterSetupFonts.connect(sigc::mem_fun(this, &CComponentsHeader::resetFont)); shadow = shadow_mode; col_frame = col_frame_old = color_frame; @@ -160,27 +160,36 @@ void CComponentsHeader::setCaption(neutrino_locale_t caption_locale, const int& void CComponentsHeader::setCaptionFont(Font* font) { - initCaptionFont(font); //cch_font = font + cch_font = font; } -void CComponentsHeader::initCaptionFont(Font* font) +void CComponentsHeader::resetFont() { - Font *l_font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]; - Font *s_font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]; + if (cch_font){ + dprintf(DEBUG_DEBUG, "\033[33m[CComponentsHeader][%s - %d] reset header font \033[0m\n", __func__, __LINE__); + cch_font = NULL; + } + initDefaultFonts(); +} - if (font == NULL){ +void CComponentsHeader::initDefaultFonts() +{ + l_font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]; + s_font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]; +} + +void CComponentsHeader::initCaptionFont() +{ + if (cch_font == NULL){ cch_font = (cch_size_mode == CC_HEADER_SIZE_LARGE? l_font : s_font); - //select matching height if (cch_size_mode == CC_HEADER_SIZE_LARGE) height = std::max(height, l_font->getHeight()); else height = std::min(height, s_font->getHeight()); } - else{ - cch_font = font; + else height = std::max(height, cch_font->getHeight()); - } } void CComponentsHeader::setIcon(const char* icon_name) @@ -227,11 +236,10 @@ void CComponentsHeader::initIcon() cch_icon_obj->doPaintBg(false); //set corner mode of icon item - int cc_icon_corner_type = corner_type; + int cc_icon_corner_type = CORNER_LEFT; if (corner_type == CORNER_TOP_LEFT || corner_type == CORNER_TOP) cc_icon_corner_type = CORNER_TOP_LEFT; - else - cc_icon_corner_type = CORNER_LEFT; + cch_icon_obj->setCorner(corner_rad-fr_thickness, cc_icon_corner_type); //global set width of icon object @@ -275,14 +283,14 @@ void CComponentsHeader::addContextButton(const int& buttons) addContextButton(NEUTRINO_ICON_BUTTON_OKAY); if (buttons & CC_BTN_MUTE) addContextButton(NEUTRINO_ICON_BUTTON_MUTE); - if (buttons & CC_BTN_TOP) - addContextButton(NEUTRINO_ICON_BUTTON_TOP); + if (buttons & CC_BTN_UP) + addContextButton(NEUTRINO_ICON_BUTTON_UP); if (buttons & CC_BTN_DOWN) addContextButton(NEUTRINO_ICON_BUTTON_DOWN); - if (buttons & CC_BTN_RIGHT) - addContextButton(NEUTRINO_ICON_BUTTON_RIGHT); if (buttons & CC_BTN_LEFT) addContextButton(NEUTRINO_ICON_BUTTON_LEFT); + if (buttons & CC_BTN_RIGHT) + addContextButton(NEUTRINO_ICON_BUTTON_RIGHT); if (buttons & CC_BTN_FORWARD) addContextButton(NEUTRINO_ICON_BUTTON_FORWARD); if (buttons & CC_BTN_BACKWARD) @@ -331,11 +339,10 @@ void CComponentsHeader::initButtons() cch_btn_obj->addIcon(v_cch_btn); //set corner mode of button item - int cc_btn_corner_type = corner_type; + int cc_btn_corner_type = CORNER_RIGHT; if (corner_type == CORNER_TOP_RIGHT || corner_type == CORNER_TOP) cc_btn_corner_type = CORNER_TOP_RIGHT; - else - cc_btn_corner_type = CORNER_RIGHT; + cch_btn_obj->setCorner(corner_rad-fr_thickness, cc_btn_corner_type); //global adapt height @@ -408,11 +415,10 @@ void CComponentsHeader::initClock() cch_cl_obj->setClockFormat(cch_cl_format, cch_cl_sec_format); //set corner mode of button item - int cc_btn_corner_type = corner_type; + int cc_btn_corner_type = CORNER_RIGHT; if (corner_type == CORNER_TOP_RIGHT || corner_type == CORNER_TOP) cc_btn_corner_type = CORNER_TOP_RIGHT; - else - cc_btn_corner_type = CORNER_RIGHT; + cch_cl_obj->setCorner(corner_rad-fr_thickness, cc_btn_corner_type); //global adapt height @@ -513,12 +519,12 @@ void CComponentsHeader::initCaption() void CComponentsHeader::initCCItems() { - //set basic properties - Init(x, y, width, height, col_frame, col_body, col_shadow); - //set size initCaptionFont(); + //set basic properties + Init(x, y, width, height, col_frame, col_body, col_shadow); + //init icon initIcon(); diff --git a/src/gui/components/cc_frm_header.h b/src/gui/components/cc_frm_header.h index 74201268e..df444ee7a 100644 --- a/src/gui/components/cc_frm_header.h +++ b/src/gui/components/cc_frm_header.h @@ -67,7 +67,9 @@ class CComponentsHeader : public CComponentsForm, public CCTextScreen ///property: caption text color, see also setCaptionColor() fb_pixel_t cch_col_text; ///property: caption font, see also setCaptionFont() - Font* cch_font; + Font* cch_font, *l_font, *s_font; + ///reset font + void resetFont(); ///property: internal y-position for all items int cch_items_y; @@ -99,7 +101,9 @@ class CComponentsHeader : public CComponentsForm, public CCTextScreen bool cch_cl_enable_run; ///init font object and recalculates height if required - void initCaptionFont(Font* font = NULL); + void initCaptionFont(); + ///init default fonts for size modes + virtual void initDefaultFonts(); ///sub: init icon object void initIcon(); ///sub: init caption object @@ -136,13 +140,44 @@ class CComponentsHeader : public CComponentsForm, public CCTextScreen virtual void setCaption(neutrino_locale_t caption_locale, const int& align_mode = CTextBox::NO_AUTO_LINEBREAK, const fb_pixel_t& text_color = COL_MENUHEAD_TEXT); ///set alignment of caption within header, possible paramters are CTextBox::CENTER, CTextBox::NO_AUTO_LINEBREAK - virtual void setCaptionAlignment(const int& align_mode){cch_caption_align = align_mode;}; - ///set text font object for caption + virtual void setCaptionAlignment(const int& align_mode){cch_caption_align = align_mode;} + + /**Set text font for title. + * Internal default font is g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE] and + * default height of header object is calculated from this font type. + * Height can be changed with modes by setSizeMode(), setHeight() or constructor. + * @return void + * + * @param[in] font exepts font object, type Font* + * @see getCaptionFont(), setSizeMode(), + * setCaptionColor(), + * setCaptionAlignment(), + * setCaption() + */ virtual void setCaptionFont(Font* font); ///returns font object of title caption - virtual Font* getCaptionFont(){return cch_font;}; + virtual Font* getCaptionFont(){return cch_font;} ///set text color for caption - virtual void setCaptionColor(fb_pixel_t text_color){cch_col_text = text_color;}; + virtual void setCaptionColor(fb_pixel_t text_color){cch_col_text = text_color;} + + enum + { + CC_HEADER_SIZE_LARGE = 0, + CC_HEADER_SIZE_SMALL = 1 + }; + /**Set size mode of header. + * These modes are using fonts SNeutrinoSettings::FONT_TYPE_MENU_TITLE for large mode (default) + * and SNeutrinoSettings::FONT_TYPE_MENU for small mode to set required height. + * If other size wanted then use set setCaptionFont() and setHeight() + * @return void + * + * @param[in] size_mode exepts type int (enums) + * possible modes are: + * CC_HEADER_SIZE_LARGE + * CC_HEADER_SIZE_SMALL + * @see setCaption(), setHeight() + */ + virtual void setSizeMode(const int& size_mode){cch_size_mode = size_mode; initCCItems();} ///set offset between items virtual void setOffset(const int offset){cch_offset = offset;}; @@ -182,10 +217,10 @@ class CComponentsHeader : public CComponentsForm, public CCTextScreen CC_BTN_MUTE_ZAP_INACTIVE = 0x200, CC_BTN_OKAY = 0x400, CC_BTN_MUTE = 0x800, - CC_BTN_TOP = 0x1000, + CC_BTN_UP = 0x1000, CC_BTN_DOWN = 0x2000, - CC_BTN_RIGHT = 0x4000, - CC_BTN_LEFT = 0x8000, + CC_BTN_LEFT = 0x4000, + CC_BTN_RIGHT = 0x8000, CC_BTN_FORWARD = 0x10000, CC_BTN_BACKWARD = 0x20000, CC_BTN_PAUSE = 0x40000, @@ -198,14 +233,6 @@ class CComponentsHeader : public CComponentsForm, public CCTextScreen ///set offset between icons within context button object virtual void setButtonsSpace(const int buttons_space){cch_buttons_space = buttons_space;} - enum - { - CC_HEADER_SIZE_LARGE = 0, - CC_HEADER_SIZE_SMALL = 1 - }; - ///set size of header, possible values are CC_HEADER_SIZE_LARGE, CC_HEADER_SIZE_SMALL - virtual void setSizeMode(const int& size_mode){cch_size_mode = size_mode; initCCItems();} - ///init all items within header object virtual void initCCItems(); ///returns the text object diff --git a/src/gui/components/cc_frm_scrollbar.cpp b/src/gui/components/cc_frm_scrollbar.cpp index 7157e9625..529d0102a 100644 --- a/src/gui/components/cc_frm_scrollbar.cpp +++ b/src/gui/components/cc_frm_scrollbar.cpp @@ -25,7 +25,6 @@ #include #endif -#include #include #include "cc_frm_scrollbar.h" #include "system/debug.h" @@ -76,13 +75,16 @@ void CComponentsScrollBar::initVarSbForm(const int& count) cc_item_type = CC_ITEMTYPE_FRM_SCROLLBAR; fr_thickness = 0; - append_x_offset = 0; - append_y_offset = 2; + append_x_offset = OFFSET_INNER_MIN; + append_y_offset = OFFSET_INNER_MIN; - sb_up_obj = sb_down_obj = NULL; + sb_up_obj = NULL; + sb_down_obj = NULL; sb_segments_obj = NULL; - sb_up_icon = frameBuffer->getIconPath(NEUTRINO_ICON_BUTTON_TOP) ; + setCorner(RADIUS_MIN, CORNER_ALL); + + sb_up_icon = frameBuffer->getIconPath(NEUTRINO_ICON_BUTTON_UP) ; sb_down_icon = frameBuffer->getIconPath(NEUTRINO_ICON_BUTTON_DOWN); sb_segments_count = count; @@ -110,40 +112,38 @@ void CComponentsScrollBar::initTopNaviIcon() { //initialize icon object if (sb_up_obj == NULL){ - sb_up_obj = new CComponentsPicture(CC_CENTERED, fr_thickness, sb_up_icon, this); + sb_up_obj = new CComponentsPicture(CC_CENTERED, fr_thickness, width-2*fr_thickness, width-2*fr_thickness, sb_up_icon, this); sb_up_obj->SetTransparent(CFrameBuffer::TM_BLACK); sb_up_obj->doPaintBg(false); } - sb_up_obj->setWidth(width-2*fr_thickness); } void CComponentsScrollBar::initBottomNaviIcon() { //initialize icon object if (sb_down_obj == NULL){ - sb_down_obj = new CComponentsPicture(CC_CENTERED, CC_APPEND, sb_down_icon, this); + sb_down_obj = new CComponentsPicture(CC_CENTERED, height - width-2*fr_thickness, width-2*fr_thickness, 0, sb_down_icon, this); sb_down_obj->SetTransparent(CFrameBuffer::TM_BLACK); sb_down_obj->doPaintBg(false); } - sb_down_obj->setWidth(width-2*fr_thickness); } void CComponentsScrollBar::initSegments() { //init dimensions for segments - int w_seg = width - 4*fr_thickness; -//never read int h_seg = height - (sb_segments_count-1)*append_y_offset; + int w_seg = width - 2*fr_thickness - 2*append_x_offset; + if (w_seg < 0) + w_seg = 0; //calculate height of segment container - int h_seg_obj = height - 2*sb_up_obj->getHeight() - 3*append_y_offset; - if(h_seg_obj < 0) + int h_seg_obj = height - 2*fr_thickness - 2*sb_up_obj->getHeight() - 2*append_y_offset; + if (h_seg_obj < 0) h_seg_obj = 0; //init segment container if (sb_segments_obj == NULL){ sb_segments_obj = new CComponentsFrmChain(CC_CENTERED, CC_APPEND, w_seg, h_seg_obj, NULL, CC_DIR_Y, this, false); - sb_segments_obj->setFrameThickness(0/*,0*/); - sb_segments_obj->setAppendOffset(0, 3); + sb_segments_obj->setFrameThickness(0); }else sb_segments_obj->setDimensionsAll(CC_CENTERED, CC_APPEND, w_seg, h_seg_obj); @@ -154,9 +154,9 @@ void CComponentsScrollBar::initSegments() sb_segments_obj->clear(); //set y position of 1st segment and set height of segments - int y_seg = 1+ append_y_offset; + int y_seg = append_y_offset; int h_seg = sb_segments_obj->getHeight()/sb_segments_count - append_y_offset; - if(h_seg < 0) + if (h_seg < 0) h_seg = 0; //create and add segments to segment container @@ -189,3 +189,20 @@ void CComponentsScrollBar::initSegments() sb_segments_obj->front()->setCorner(RADIUS_MIN, CORNER_TOP); sb_segments_obj->back()->setCorner(RADIUS_MIN, CORNER_BOTTOM); } + + +void paintScrollBar( const int &x_pos, + const int &y_pos, + const int &w, + const int &h, + const int& count, + const int& current_num, + int shadow_mode, + fb_pixel_t color_frame, + fb_pixel_t color_body, + fb_pixel_t color_shadow) +{ + CComponentsScrollBar scrollbar(x_pos, y_pos, w, h, count, NULL, shadow_mode, color_frame, color_body, color_shadow); + scrollbar.setMarkID(current_num); + scrollbar.paint0(); +} diff --git a/src/gui/components/cc_frm_scrollbar.h b/src/gui/components/cc_frm_scrollbar.h index 731e83df5..778349ac1 100644 --- a/src/gui/components/cc_frm_scrollbar.h +++ b/src/gui/components/cc_frm_scrollbar.h @@ -24,6 +24,8 @@ #ifndef __CC_FORM_SCROLLBAR_H__ #define __CC_FORM_SCROLLBAR_H__ +#include + #include "cc_frm_chain.h" #include "cc_item_picture.h" @@ -60,24 +62,95 @@ class CComponentsScrollBar : public CComponentsFrmChain void initVarSbForm( const int& count); public: - CComponentsScrollBar( const int &x_pos, const int &y_pos, const int &w = 15, const int &h = 40, - const int& count = 1, + /**Class constructor to generate individual scrollbar objects + * + * @param[in] x_pos exepts type int, x position on screen + * @param[in] x_pos exepts type int, y position on screen modes are: + * @param[in] w exepts type int, width of scrollbar object + * @param[in] h exepts type int, height of scrollbar object + * @param[in] count optional, exepts type int, count of pages, default 1 + * + * usual paraemters: + * @param[in] parent optional, exepts type pointer to a parent CComponentsForm object, default NULL + * @param[in] shadow_mode optional, exepts type int defined by shadow mode enums, default CC_SHADOW_OFF + * @param[in] color_frame optional, exepts type fb_pixel_t, default COL_SCROLLBAR_ACTIVE_PLUS_0 + * @param[in] color_body optional, exepts type fb_pixel_t, default COL_SCROLLBAR_PASSIVE_PLUS_0 + * @param[in] color_shadow optional, exepts type fb_pixel_t, default COL_SHADOW_PLUS_0 + */ + CComponentsScrollBar( const int &x_pos, + const int &y_pos, + const int &w = SCROLLBAR_WIDTH, + const int &h = 0, + const int& count = 1, CComponentsForm *parent = NULL, - int shadow_mode = CC_SHADOW_OFF, - fb_pixel_t color_frame = COL_SCROLLBAR_ACTIVE_PLUS_0, - fb_pixel_t color_body = COL_SCROLLBAR_PASSIVE_PLUS_0, + int shadow_mode = CC_SHADOW_OFF, + fb_pixel_t color_frame = COL_SCROLLBAR_ACTIVE_PLUS_0, + fb_pixel_t color_body = COL_SCROLLBAR_PASSIVE_PLUS_0, fb_pixel_t color_shadow = COL_SHADOW_PLUS_0); // ~CComponentsScrollBar(); //inherited from CComponentsForm - ///set marked segment, 1st = 0, 2nd = 1 ... - void setMarkID(const int& mark_id){sb_mark_id = mark_id; initSegments();}; - ///get current assigned marked id + /**Set current page number + * @return void + * + * @param[in] mark_id exepts type int, this sets the current selected page number. + * + * @see getMarkID() + */ + void setMarkID(const int& mark_id){sb_mark_id = mark_id; initSegments();} + + /**Gets current page number + * @return int + * + * @see setMarkID() + */ int getMarkID(){return sb_mark_id;}; - ///Sets count of scrollbar segments and is similar e.g. page count. Each segment is assigned to an id. Starting with id 0...n see also setMarkID(), getMarkID(). + /**Sets count of possible scrollbar segments (e.g. page count) and + * current selected page at once . + * Each segment is assigned to a page number. Starting with id 0...n + * @return void + * + * @param[in] segment_count exepts type int, sets the current count of pages. + * @param[in] mark_id optional, exepts type int, sets the current selected page number, default = 0 + * @see also setMarkID() + * getMarkID() + */ void setSegmentCount(const int& segment_count, const int& mark_id = 0); - ///Get count of current scrollbar segments + + /**Get count of current scrollbar segments (page count) + * @return int + * + * @see setSegmentCount() + */ int getSegmentCount(){return sb_segments_count;} }; + /**Small and easy to apply scrollbar paint methode without expilcit object declaration + * @return void + * + * @param[in] x_pos exepts type int, x position on screen + * @param[in] x_pos exepts type int, y position on screen modes are: + * @param[in] w exepts type int, width of scrollbar object + * @param[in] h exepts type int, height of scrollbar object + * @param[in] count exepts type int, count of pages, default 1 + * @param[in] current_num exepts type int, current selected page, default 0 + * + * usual paraemters: + * @param[in] parent optional, exepts type pointer to a parent CComponentsForm object, default NULL + * @param[in] shadow_mode optional, exepts type int defined by shadow mode enums, default CC_SHADOW_OFF + * @param[in] color_frame optional, exepts type fb_pixel_t, default COL_SCROLLBAR_ACTIVE_PLUS_0 + * @param[in] color_body optional, exepts type fb_pixel_t, default COL_SCROLLBAR_PASSIVE_PLUS_0 + * @param[in] color_shadow optional, exepts type fb_pixel_t, default COL_SHADOW_PLUS_0 + */ +void paintScrollBar( const int &x_pos, + const int &y_pos, + const int &w, + const int &h, + const int& count, + const int& current_num, + int shadow_mode = CC_SHADOW_OFF, + fb_pixel_t color_frame = COL_SCROLLBAR_ACTIVE_PLUS_0, + fb_pixel_t color_body = COL_SCROLLBAR_PASSIVE_PLUS_0, + fb_pixel_t color_shadow = COL_SHADOW_PLUS_0); + #endif diff --git a/src/gui/components/cc_frm_window.cpp b/src/gui/components/cc_frm_window.cpp index 451d74be3..7137f76ab 100644 --- a/src/gui/components/cc_frm_window.cpp +++ b/src/gui/components/cc_frm_window.cpp @@ -145,7 +145,7 @@ void CComponentsWindow::initVarWindow( const int& x_pos, const int& y_pos, const ccw_right_sidebar= NULL; ccw_body = NULL; ccw_footer = NULL; - ccw_button_font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_FOOT]; + ccw_button_font = g_Font[SNeutrinoSettings::FONT_TYPE_BUTTON_TEXT]; ccw_buttons = 0; //no header buttons ccw_show_footer = true; diff --git a/src/gui/components/cc_item_progressbar.cpp b/src/gui/components/cc_item_progressbar.cpp index 60ae59e6f..2a162998d 100644 --- a/src/gui/components/cc_item_progressbar.cpp +++ b/src/gui/components/cc_item_progressbar.cpp @@ -72,8 +72,8 @@ CProgressBar::CProgressBar( const int x_pos, pb_active_col = active_col; pb_passive_col = passive_col; - pb_design = &g_settings.progressbar_design; - pb_gradient = &g_settings.progressbar_gradient; + pb_design = &g_settings.theme.progressbar_design; + pb_gradient = &g_settings.theme.progressbar_gradient; pb_type = PB_REDLEFT; pb_last_width = -1; @@ -441,7 +441,7 @@ void CProgressBar::paintProgress(bool do_save_bg) return; } if (pb_type == PB_TIMESCALE) - setRgb(g_settings.progressbar_timescale_red, g_settings.progressbar_timescale_green, g_settings.progressbar_timescale_yellow); + setRgb(g_settings.theme.progressbar_timescale_red, g_settings.theme.progressbar_timescale_green, g_settings.theme.progressbar_timescale_yellow); if (!pb_red && !pb_yellow && !pb_green) pb_green = 1; @@ -463,7 +463,7 @@ void CProgressBar::paintProgress(bool do_save_bg) paintInit(do_save_bg); //progress - bool pb_invert = (pb_type == PB_REDRIGHT) || ((pb_type == PB_TIMESCALE) && g_settings.progressbar_timescale_invert); + bool pb_invert = (pb_type == PB_REDRIGHT) || ((pb_type == PB_TIMESCALE) && g_settings.theme.progressbar_timescale_invert); if (cc_allow_paint){ if (!is_painted || (pb_active_width != pb_last_width)) { diff --git a/src/gui/components/cc_item_progressbar.h b/src/gui/components/cc_item_progressbar.h index c346d600e..610402687 100644 --- a/src/gui/components/cc_item_progressbar.h +++ b/src/gui/components/cc_item_progressbar.h @@ -152,10 +152,10 @@ class CProgressBar : public CComponentsItem void setType(pb_type_t type); - //set design (overides g_settings.progressbar_design) + //set design (overides g_settings.theme.progressbar_design) void setDesign(int &design) { pb_design = &design; } - //set gradient (overides g_settings.progressbar_gradient) + //set gradient (overides g_settings.theme.progressbar_gradient) void setGradient(int &gradient) { pb_gradient = &gradient; } }; diff --git a/src/gui/components/cc_item_text.cpp b/src/gui/components/cc_item_text.cpp index bf52a4f33..f56733584 100644 --- a/src/gui/components/cc_item_text.cpp +++ b/src/gui/components/cc_item_text.cpp @@ -92,10 +92,7 @@ void CComponentsText::initVarText( const int x_pos, const int y_pos, const int w width = width_old = w; height = height_old = h; - /* we need a minimal borderwith of 1px because the edge-smoothing - (or fontrenderer?) otherwise will paint single pixels outside the - defined area. e.g. 'j' is leaving such residues */ - ct_text_Hborder = 1; + ct_text_Hborder = 0; ct_text_Vborder = 0; shadow = shadow_mode; diff --git a/src/gui/components/cc_timer.cpp b/src/gui/components/cc_timer.cpp index 9c8b1aa7b..11ae9b35e 100644 --- a/src/gui/components/cc_timer.cpp +++ b/src/gui/components/cc_timer.cpp @@ -98,7 +98,8 @@ void CComponentsTimer::initThread() if (res != 0){ dprintf(DEBUG_NORMAL,"\033[33m[CComponentsTimer] [%s - %d] ERROR! pthread_create\033[0m\n", __func__, __LINE__); return; - } + }else + dprintf(DEBUG_DEBUG,"\033[33m[CComponentsTimer] [%s - %d] started thread ID:%ld \033[0m\n", __func__, __LINE__, pthread_self()); if (res == 0) CNeutrinoApp::getInstance()->OnBeforeRestart.connect(sl_stop_timer); @@ -107,22 +108,22 @@ void CComponentsTimer::initThread() void CComponentsTimer::stopThread() { - if(tm_thread) { + //ensure disconnecting possible slots + while (!sl_stop_timer.empty()) + sl_stop_timer.disconnect(); + + while(tm_thread) { int thres = pthread_cancel(tm_thread); if (thres != 0) - dprintf(DEBUG_NORMAL,"\033[33m[CComponentsTimer] [%s - %d] ERROR! pthread_cancel\033[0m\n", __func__, __LINE__); + dprintf(DEBUG_NORMAL,"\033[33m[CComponentsTimer] [%s - %d] ERROR! pthread_cancel, error [%d] %s\033[0m\n", __func__, __LINE__, thres, strerror(thres)); - thres = pthread_join(tm_thread, NULL); + void* res; + thres = pthread_join(tm_thread, &res); - if (thres != 0) - dprintf(DEBUG_NORMAL, "\033[33m[CComponentsTimer] [%s - %d] ERROR! pthread_join\033[0m\n", __func__, __LINE__); - - if (thres == 0){ + if (res != PTHREAD_CANCELED) + dprintf(DEBUG_NORMAL, "\033[33m[CComponentsTimer] [%s - %d] ERROR! pthread_join, thread ID:%ld, error [%d] %s\033[0m\n", __func__, __LINE__, pthread_self(), thres, strerror(thres)); + else tm_thread = 0; - //ensure disconnect of unused slot - while (!sl_stop_timer.empty()) - sl_stop_timer.disconnect(); - } } } diff --git a/src/gui/eventlist.cpp b/src/gui/eventlist.cpp index b690d68ff..741ec77fd 100644 --- a/src/gui/eventlist.cpp +++ b/src/gui/eventlist.cpp @@ -286,9 +286,9 @@ int CEventList::exec(const t_channel_id channel_id, const std::string& channelna fheight2 = std::max( h1, h2 ); } unit_short_minute = g_Locale->getText(LOCALE_UNIT_SHORT_MINUTE); - fheight = fheight1 + fheight2 + 2; + fheight = fheight1 + fheight2 + OFFSET_INNER_MIN; fwidth1 = g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_DATETIME]->getRenderWidth("DDD, :, ") + 4 * g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_DATETIME]->getMaxDigitWidth(); - fwidth2 = g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->getRenderWidth("[ ] ") + 3 * g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->getMaxDigitWidth() + g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->getRenderWidth(unit_short_minute); + //fwidth2 = g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->getRenderWidth("[ ] ") + 3 * g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->getMaxDigitWidth() + g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->getRenderWidth(unit_short_minute); listmaxshow = (height-theight-iheight-0)/fheight; height = theight+iheight+0+listmaxshow*fheight; // recalc height @@ -710,7 +710,7 @@ CTimerd::CTimerEventTypes CEventList::isScheduled(t_channel_id channel_id, CChan void CEventList::paintItem(unsigned int pos, t_channel_id channel_idI) { - int ypos = y+ theight+0 + pos*fheight; + int ypos = y+ theight + pos*fheight; unsigned int currpos = liststart + pos; bool i_selected = currpos == selected; @@ -755,18 +755,19 @@ void CEventList::paintItem(unsigned int pos, t_channel_id channel_idI) // 1st line int fwidth1a=g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_DATETIME]->getRenderWidth(datetime1_str); + fwidth2 = g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->getRenderWidth(duration_str); - g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_DATETIME]->RenderString(x+5, ypos+ fheight1+3, fwidth1a, datetime1_str, color); + g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_DATETIME]->RenderString(x + OFFSET_INNER_SMALL, ypos + OFFSET_INNER_MIN + fheight2, fwidth1a, datetime1_str, color); int seit = ( evtlist[currpos].startTime - time(NULL) ) / 60; if ( (seit> 0) && (seit<100) && (!duration_str.empty()) ) { char beginnt[100]; snprintf(beginnt, sizeof(beginnt), "%s %d %s", g_Locale->getText(LOCALE_WORD_IN), seit, unit_short_minute); - int w = g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->getRenderWidth(beginnt) + 10; - g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->RenderString(x+width-fwidth2-5- 20- w, ypos+ fheight1+3, w, beginnt, color); + int w = g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->getRenderWidth(beginnt); + g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->RenderString(x + width - 15 - 2*OFFSET_INNER_MID - fwidth2 - w, ypos + OFFSET_INNER_MIN + fheight2, w, beginnt, color); } - g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->RenderString(x+width-fwidth2-5- 20, ypos+ fheight1+3, fwidth2, duration_str, color); + g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMSMALL]->RenderString(x + width - 15 - OFFSET_INNER_MID - fwidth2, ypos + OFFSET_INNER_MIN + fheight2, fwidth2, duration_str, color); // 2nd line // set status icons @@ -780,28 +781,28 @@ void CEventList::paintItem(unsigned int pos, t_channel_id channel_idI) if (timerID > 0 && CRecordManager::getInstance()->CheckRecordingId_if_Timeshift(timerID)) icontype = NEUTRINO_ICON_AUTO_SHIFT; } - int iw = 0, ih; + int iw = 0, ih = 0; if(icontype != 0) { frameBuffer->getIconSize(icontype, &iw, &ih); - frameBuffer->paintIcon(icontype, x+5, ypos + fheight1+3 - (fheight1 - ih)/2, fheight1); + frameBuffer->paintIcon(icontype, x + OFFSET_INNER_MID, ypos + OFFSET_INNER_MIN + fheight2, fheight1); + iw += OFFSET_INNER_MID; } // detecting timer conflict and set start position of event text depending of possible painted icon bool conflict = HasTimerConflicts(evtlist[currpos].startTime, evtlist[currpos].duration, &item_event_ID); - int i2w = 0, i2h; //printf ("etype %d , conflicts %d -> %s, conflict event_ID %d -> current event_ID %d\n", etype, conflict, evtlist[currpos].description.c_str(), item_event_ID, evtlist[currpos].eventID); - //TODO: solution for zapto timer events + int i2w = 0, i2h = 0; if (conflict && item_event_ID != evtlist[currpos].eventID) { //paint_warning = true; frameBuffer->getIconSize(NEUTRINO_ICON_IMPORTANT, &i2w, &i2h); - frameBuffer->paintIcon(NEUTRINO_ICON_IMPORTANT, x+iw+7, ypos + fheight1+3 - (fheight1 - i2h)/2, fheight1); - iw += i2w+4; + frameBuffer->paintIcon(NEUTRINO_ICON_IMPORTANT, x + iw + OFFSET_INNER_MID, ypos + OFFSET_INNER_MIN + fheight2, fheight1); + iw += i2w + OFFSET_INNER_MID; } // paint 2nd line text - g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMLARGE]->RenderString(x+10+iw, ypos+ fheight, width- 25- 20 -iw, evtlist[currpos].description, color); + g_Font[SNeutrinoSettings::FONT_TYPE_EVENTLIST_ITEMLARGE]->RenderString(x + iw + OFFSET_INNER_MID, ypos + fheight, width - iw - 2*OFFSET_INNER_MID, evtlist[currpos].description, color); } } diff --git a/src/gui/infoclock.cpp b/src/gui/infoclock.cpp index 0971e2401..c0e8ebc58 100644 --- a/src/gui/infoclock.cpp +++ b/src/gui/infoclock.cpp @@ -73,17 +73,12 @@ void CInfoClock::initCCLockItems() setClockFormat("%H:%M", "%H %M"); //set height, NOTE: height is strictly bound to settings - if (g_settings.infoClockFontSize != height){ - height = g_settings.infoClockFontSize; - int dx = 0; - int dy = height; - setClockFont(*CNeutrinoFonts::getInstance()->getDynFont(dx, dy, cl_format_str, cl_font_style)); - } + height = g_settings.infoClockFontSize; + initClockFont(0, height); // set corner radius depending on clock height corner_rad = (g_settings.rounded_corners) ? std::max(height/10, CORNER_RADIUS_SMALL) : 0; - CComponentsFrmClock::initCCLockItems(); CVolumeHelper::getInstance()->refresh(cl_font); CVolumeHelper::getInstance()->getInfoClockDimensions(&x, &y, &width, &height); } diff --git a/src/gui/infoviewer_bb.cpp b/src/gui/infoviewer_bb.cpp index f7ebb3132..cf35a8d03 100644 --- a/src/gui/infoviewer_bb.cpp +++ b/src/gui/infoviewer_bb.cpp @@ -88,7 +88,8 @@ CInfoViewerBB::CInfoViewerBB() bbIconInfo[0].h = 0; BBarY = 0; BBarFontY = 0; - foot = cabar = NULL; + foot = NULL; + ca_bar = NULL; Init(); } @@ -146,7 +147,7 @@ void CInfoViewerBB::getBBIconInfo() initBBOffset(); BBarY = g_InfoViewer->BoxEndY + bottom_bar_offset; BBarFontY = BBarY + InfoHeightY_Info - (InfoHeightY_Info - g_Font[SNeutrinoSettings::FONT_TYPE_MENU_FOOT]->getHeight()) / 2; /* center in buttonbar */ - bbIconMinX = g_InfoViewer->BoxEndX - 8; //should be 10px, but 2px will be reduced for each icon + bbIconMinX = g_InfoViewer->BoxEndX - OFFSET_INNER_MID; CNeutrinoApp* neutrino = CNeutrinoApp::getInstance(); for (int i = 0; i < CInfoViewerBB::ICON_MAX; i++) { @@ -189,7 +190,9 @@ void CInfoViewerBB::getBBIconInfo() break; } if (iconView) { - bbIconMinX -= w + 2; + if (i > 0) + bbIconMinX -= OFFSET_INNER_MIN; + bbIconMinX -= w; bbIconInfo[i].x = bbIconMinX; bbIconInfo[i].h = h; } @@ -201,7 +204,7 @@ void CInfoViewerBB::getBBIconInfo() bbIconMaxH = std::max(bbIconMaxH, bbIconInfo[i].h); } if (g_settings.infobar_show_sysfs_hdd) - bbIconMinX -= hddwidth + 2; + bbIconMinX -= hddwidth + OFFSET_INNER_MIN; } void CInfoViewerBB::getBBButtonInfo() @@ -465,7 +468,7 @@ void CInfoViewerBB::paintshowButtonBar() g_InfoViewer->sec_timer_id = g_RCInput->addTimer(1*1000*1000, false); if (g_settings.infobar_casystem_display < 2) - paintCA_bar(0,0); + paint_ca_bar(); paintFoot(); @@ -830,13 +833,6 @@ void CInfoViewerBB::showIcon_CA_Status(int notfirst) } if(!notfirst) { -#if 0 - static int icon_space_offset = 0; - if ((g_settings.infobar_casystem_display == 1) && (icon_space_offset)) { - paintCA_bar(0,icon_space_offset); - icon_space_offset = 0; - } -#endif for (int i = 0; i < (int)(sizeof(caids)/sizeof(int)); i++) { bool found = false; for(casys_map_iterator_t it = channel->camap.begin(); it != channel->camap.end(); ++it) { @@ -854,52 +850,36 @@ void CInfoViewerBB::showIcon_CA_Status(int notfirst) } } -void CInfoViewerBB::paintCA_bar(int left, int right) +void CInfoViewerBB::paint_ca_bar() { initBBOffset(); - int xcnt = (g_InfoViewer->BoxEndX - g_InfoViewer->ChanInfoX - (g_settings.infobar_casystem_frame ? 24 : 0)) / 4; - int ycnt = (bottom_bar_offset - (g_settings.infobar_casystem_frame ? 14 : 0)) / 4; int ca_width = g_InfoViewer->BoxEndX - g_InfoViewer->ChanInfoX; - if (right) - right = xcnt - ((right/4)+1); - if (left) - left = xcnt - ((left/4)-1); - - if (g_settings.infobar_casystem_frame) { // with highlighted frame - if (!right || !left) { // paint full bar - // framed ca bar - if (cabar == NULL) - cabar = new CComponentsShapeSquare(g_InfoViewer->ChanInfoX+11, g_InfoViewer->BoxEndY+1, ca_width-22 , bottom_bar_offset-11 , NULL, CC_SHADOW_ON, COL_INFOBAR_CASYSTEM_PLUS_2, COL_INFOBAR_CASYSTEM_PLUS_0); - //cabar->setCorner(RADIUS_SMALL, CORNER_ALL); - cabar->enableShadow(CC_SHADOW_ON, 3, true); - cabar->setFrameThickness(2); - -// cabar->paint(CC_SAVE_SCREEN_NO); - }else{ //TODO: remove this part, cabar object can do this - if (cabar == NULL) - cabar = new CComponentsShapeSquare(g_InfoViewer->ChanInfoX, g_InfoViewer->BoxEndY, ca_width , bottom_bar_offset-11, NULL, CC_SHADOW_OFF, COL_INFOBAR_CASYSTEM_PLUS_2); - //cabar->setCorner(RADIUS_SMALL, CORNER_ALL); - cabar->disableShadow(); - cabar->setFrameThickness(2); - cabar->setColorBody(COL_INFOBAR_CASYSTEM_PLUS_0); - } - cabar->setFrameThickness(2); - cabar->setCorner(RADIUS_SMALL, CORNER_ALL); - cabar->paint(CC_SAVE_SCREEN_NO); + if (g_settings.infobar_casystem_frame) + { + if (ca_bar == NULL) + ca_bar = new CComponentsShapeSquare(g_InfoViewer->ChanInfoX + OFFSET_INNER_MID, g_InfoViewer->BoxEndY, ca_width - 2*OFFSET_INNER_MID, bottom_bar_offset - OFFSET_INNER_MID, NULL, CC_SHADOW_ON, COL_INFOBAR_CASYSTEM_PLUS_2, COL_INFOBAR_CASYSTEM_PLUS_0); + ca_bar->enableShadow(CC_SHADOW_ON, OFFSET_SHADOW/2, true); + ca_bar->setFrameThickness(2); + ca_bar->setCorner(RADIUS_SMALL, CORNER_ALL); + ca_bar->paint(CC_SAVE_SCREEN_NO); } else + { paintBoxRel(g_InfoViewer->ChanInfoX, g_InfoViewer->BoxEndY, ca_width , bottom_bar_offset, COL_INFOBAR_CASYSTEM_PLUS_0); + } #if 1 - if (!g_settings.infobar_casystem_dotmatrix) //don't show dotmatrix - return; + if (g_settings.infobar_casystem_dotmatrix) + { + int xcnt = (g_InfoViewer->BoxEndX - g_InfoViewer->ChanInfoX - (g_settings.infobar_casystem_frame ? 24 : 0)) / 4; + int ycnt = (bottom_bar_offset - (g_settings.infobar_casystem_frame ? 14 : 0)) / 4; - if (left) - left -= 1; - - for (int i = 0 + right; i < xcnt - left; i++) { - for (int j = 0; j < ycnt; j++) { - frameBuffer->paintBoxRel((g_InfoViewer->ChanInfoX + (g_settings.infobar_casystem_frame ? 14 : 2)) + i*4, g_InfoViewer->BoxEndY + (g_settings.infobar_casystem_frame ? 4 : 2) + j*4, 2, 2, COL_INFOBAR_PLUS_1); + for (int i = 0; i < xcnt; i++) + { + for (int j = 0; j < ycnt; j++) + { + frameBuffer->paintBoxRel((g_InfoViewer->ChanInfoX + (g_settings.infobar_casystem_frame ? 14 : 2)) + i*4, g_InfoViewer->BoxEndY + (g_settings.infobar_casystem_frame ? 4 : 2) + j*4, 2, 2, COL_INFOBAR_PLUS_1); + } } } #endif @@ -937,8 +917,8 @@ void CInfoViewerBB::ResetModules() if (foot){ delete foot; foot = NULL; } - if (cabar){ - delete cabar; cabar = NULL; + if (ca_bar){ + delete ca_bar; ca_bar = NULL; } } diff --git a/src/gui/infoviewer_bb.h b/src/gui/infoviewer_bb.h index 81961a018..f0f7cf658 100644 --- a/src/gui/infoviewer_bb.h +++ b/src/gui/infoviewer_bb.h @@ -108,14 +108,14 @@ class CInfoViewerBB pthread_t scrambledT; CProgressBar *hddscale, *sysscale; - CComponentsShapeSquare *foot, *cabar; + CComponentsShapeSquare *foot, *ca_bar; void paintFoot(int w = 0); void showBBIcons(const int modus, const std::string & icon); void getBBIconInfo(void); bool checkBBIcon(const char * const icon, int *w, int *h); void paint_ca_icons(int, const char*, int&); - void paintCA_bar(int,int); + void paint_ca_bar(); void showOne_CAIcon(); static void* scrambledThread(void *arg); @@ -150,7 +150,7 @@ class CInfoViewerBB void initBBOffset(void); // modules CComponentsShapeSquare* getFooter(void){return foot;} - CComponentsShapeSquare* getCABar(void){return cabar;} + CComponentsShapeSquare* getCABar(void){return ca_bar;} void ResetModules(void); void changePB(void); }; diff --git a/src/gui/lua/lua_curl.cpp b/src/gui/lua/lua_curl.cpp index 389aad1f9..9bcf47ef5 100644 --- a/src/gui/lua/lua_curl.cpp +++ b/src/gui/lua/lua_curl.cpp @@ -265,6 +265,8 @@ Example: curl_easy_setopt(curl_handle, CURLOPT_CONNECTTIMEOUT, (long)connectTimeout); curl_easy_setopt(curl_handle, CURLOPT_NOSIGNAL, 1L); curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0L); + /* enable all supported built-in compressions */ + curl_easy_setopt(curl_handle, CURLOPT_ACCEPT_ENCODING, ""); if (!userAgent.empty()) curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, userAgent.c_str()); diff --git a/src/gui/miscsettings_menu.cpp b/src/gui/miscsettings_menu.cpp index a59d266c0..071236a60 100644 --- a/src/gui/miscsettings_menu.cpp +++ b/src/gui/miscsettings_menu.cpp @@ -57,6 +57,8 @@ #include +#include + extern CPlugins * g_PluginList; extern cVideo *videoDecoder; @@ -68,6 +70,7 @@ CMiscMenue::CMiscMenue() epg_save_standby = NULL; epg_save_frequently = NULL; epg_read = NULL; + epg_read_now = NULL; epg_read_frequently = NULL; epg_dir = NULL; } @@ -140,6 +143,12 @@ int CMiscMenue::exec(CMenuTarget* parent, const std::string &actionKey) { return showMiscSettingsMenuOnlineServices(); } + else if(actionKey == "epg_read_now") + { + printf("Reading epg cache from %s....\n", g_settings.epg_dir.c_str()); + g_Sectionsd->readSIfromXML(g_settings.epg_dir.c_str()); + return menu_return::RETURN_REPAINT; + } return showMiscSettingsMenu(); } @@ -429,6 +438,9 @@ void CMiscMenue::showMiscSettingsMenuEpg(CMenuWidget *ms_epg) epg_dir = new CMenuForwarder(LOCALE_MISCSETTINGS_EPG_DIR, (g_settings.epg_save || g_settings.epg_read), g_settings.epg_dir, this, "epgdir"); epg_dir->setHint("", LOCALE_MENU_HINT_EPG_DIR); + epg_read_now = new CMenuForwarder(LOCALE_MISCSETTINGS_EPG_READ_NOW, g_settings.epg_read, NULL, this, "epg_read_now"); + epg_read_now->setHint("", LOCALE_MENU_HINT_EPG_READ_NOW); + epg_cache = to_string(g_settings.epg_cache); if (epg_cache.length() < 2) epg_cache.insert(0, 2 - epg_cache.length(), ' '); @@ -476,6 +488,7 @@ void CMiscMenue::showMiscSettingsMenuEpg(CMenuWidget *ms_epg) ms_epg->addItem(epg_read); ms_epg->addItem(epg_read_frequently); ms_epg->addItem(epg_dir); + ms_epg->addItem(epg_read_now); ms_epg->addItem(GenericMenuSeparatorLine); ms_epg->addItem(mf); ms_epg->addItem(mf1); @@ -649,6 +662,7 @@ bool CMiscMenue::changeNotify(const neutrino_locale_t OptionName, void * /*data* else if (ARE_LOCALES_EQUAL(OptionName, LOCALE_MISCSETTINGS_EPG_READ)) { epg_read_frequently->setActive(g_settings.epg_read); + epg_read_now->setActive(g_settings.epg_read); epg_dir->setActive(g_settings.epg_read || g_settings.epg_save); CNeutrinoApp::getInstance()->SendSectionsdConfig(); diff --git a/src/gui/miscsettings_menu.h b/src/gui/miscsettings_menu.h index b8bbaa1a7..61e01b561 100644 --- a/src/gui/miscsettings_menu.h +++ b/src/gui/miscsettings_menu.h @@ -36,7 +36,7 @@ //#define CPU_FREQ class CMiscMenue : public CMenuTarget, CChangeObserver -{ +{ private: CFanControlNotifier *fanNotifier; CSectionsdConfigNotifier* sectionsdConfigNotifier; @@ -51,6 +51,7 @@ class CMiscMenue : public CMenuTarget, CChangeObserver CMenuOptionChooser * youtube_onoff; CMenuOptionChooser * shoutcast_onoff; CMenuForwarder * epg_dir; + CMenuForwarder * epg_read_now; int width; std::string epg_cache; std::string epg_extendedcache; diff --git a/src/gui/motorcontrol.cpp b/src/gui/motorcontrol.cpp index 438e3eebe..ed159f368 100644 --- a/src/gui/motorcontrol.cpp +++ b/src/gui/motorcontrol.cpp @@ -542,7 +542,7 @@ void CMotorControl::paintMenu() paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_9, installerMenue ? g_Locale->getText(LOCALE_MOTORCONTROL_CALC_POSITIONS) : g_Locale->getText(LOCALE_MOTORCONTROL_STEP_DECREASE)); - paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_TOP, g_Locale->getText(LOCALE_MOTORCONTROL_POS_INCREASE)); + paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_UP, g_Locale->getText(LOCALE_MOTORCONTROL_POS_INCREASE)); paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_DOWN, g_Locale->getText(LOCALE_MOTORCONTROL_POS_DECREASE)); paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_BLUE, g_Locale->getText(LOCALE_MOTORCONTROL_STEP_DRIVE)); paintLine(xpos1, xpos2, &ypos, width2, NEUTRINO_ICON_BUTTON_INFO_SMALL, g_Locale->getText(LOCALE_MOTORCONTROL_NETWORK)); diff --git a/src/gui/moviebrowser/mb.cpp b/src/gui/moviebrowser/mb.cpp index d49dcbd73..7bb7694bc 100644 --- a/src/gui/moviebrowser/mb.cpp +++ b/src/gui/moviebrowser/mb.cpp @@ -263,6 +263,9 @@ CMovieBrowser::~CMovieBrowser() if (m_movieCover) delete m_movieCover; + + if (m_header) + delete m_header; } void CMovieBrowser::clearListLines() @@ -330,6 +333,7 @@ void CMovieBrowser::init(void) m_pcInfo1 = NULL; m_pcInfo2 = NULL; m_pcFilter = NULL; + m_header = NULL; m_windowFocus = MB_FOCUS_BROWSER; m_textTitle = g_Locale->getText(LOCALE_MOVIEBROWSER_HEAD); @@ -606,9 +610,21 @@ bool CMovieBrowser::loadSettings(MB_SETTINGS* settings) settings->sorting.direction = (MB_DIRECTION)configfile.getInt32("mb_sorting_direction", MB_DIRECTION_UP); settings->filter.item = (MB_INFO_ITEM)configfile.getInt32("mb_filter_item", MB_INFO_MAX_NUMBER); - settings->filter.optionString = configfile.getString("mb_filter_optionString", ""); + settings->filter.optionString = configfile.getString("mb_filter_optionString", g_Locale->getText(LOCALE_OPTIONS_OFF)); settings->filter.optionVar = configfile.getInt32("mb_filter_optionVar", 0); + if (settings->filter.item == MB_INFO_FILEPATH) + { + struct stat info; + if (!(stat(settings->filter.optionString.c_str(), &info) == 0 && S_ISDIR(info.st_mode))) + { + //reset filter if directory not exists + settings->filter.item = MB_INFO_MAX_NUMBER; + settings->filter.optionString = g_Locale->getText(LOCALE_OPTIONS_OFF); + settings->filter.optionVar = 0; + } + } + settings->parentalLockAge = (MI_PARENTAL_LOCKAGE)configfile.getInt32("mb_parentalLockAge", MI_PARENTAL_OVER18); settings->parentalLock = (MB_PARENTAL_LOCK)configfile.getInt32("mb_parentalLock", MB_PARENTAL_LOCK_ACTIVE); @@ -1069,10 +1085,11 @@ int CMovieBrowser::exec(const char* path) void CMovieBrowser::hide(void) { //TRACE("[mb]->%s\n", __func__); - if (m_channelLogo) - { - delete m_channelLogo; - m_channelLogo = NULL; + if (m_channelLogo){ + delete m_channelLogo; m_channelLogo = NULL; + } + if (m_header) { + delete m_header; m_header = NULL; } old_EpgId = 0; framebuffer->paintBackground(); @@ -1313,7 +1330,7 @@ void CMovieBrowser::refreshChannelLogo(void) int x = m_cBoxFrame.iX + m_cBoxFrameTitleRel.iX + m_cBoxFrameTitleRel.iWidth - m_channelLogo->getWidth() - OFFSET_INNER_MID; int y = m_cBoxFrame.iY + m_cBoxFrameTitleRel.iY + (m_cBoxFrameTitleRel.iHeight - m_channelLogo->getHeight())/2; - m_channelLogo->setXPos(x - pb_hdd_offset); + m_channelLogo->setXPos(x - pb_hdd_offset - m_header->getContextBtnObject()->getWidth()); m_channelLogo->setYPos(y); m_channelLogo->hide(); m_channelLogo->paint(); @@ -1543,7 +1560,7 @@ void CMovieBrowser::info_hdd_level(bool paint_hdd) tmp_blocks_percent_used = blocks_percent_used; const short pbw = 100; const short border = m_cBoxFrameTitleRel.iHeight/4; - CProgressBar pb(m_cBoxFrame.iX+ m_cBoxFrameFootRel.iWidth - pbw - border, m_cBoxFrame.iY+m_cBoxFrameTitleRel.iY + border, pbw, m_cBoxFrameTitleRel.iHeight/2); + CProgressBar pb(m_cBoxFrame.iX+ m_cBoxFrameFootRel.iWidth - m_header->getContextBtnObject()->getWidth() - pbw - border, m_cBoxFrame.iY+m_cBoxFrameTitleRel.iY + border, pbw, m_cBoxFrameTitleRel.iHeight/2); pb.setType(CProgressBar::PB_REDRIGHT); pb.setValues(blocks_percent_used, 100); pb.paint(false); @@ -1830,9 +1847,11 @@ void CMovieBrowser::refreshTitle(void) int w = m_cBoxFrameTitleRel.iWidth; int h = m_cBoxFrameTitleRel.iHeight; - CComponentsHeader header(x, y, w, h, title.c_str(), icon); - header.paint(CC_SAVE_SCREEN_NO); - newHeader = header.isPainted(); + if (!m_header){ + m_header = new CComponentsHeader(x, y, w, h, title.c_str(), icon, CComponentsHeader::CC_BTN_HELP); + } + m_header->paint(CC_SAVE_SCREEN_NO); + newHeader = m_header->isPainted(); info_hdd_level(true); } @@ -2067,7 +2086,11 @@ bool CMovieBrowser::onButtonPressMainFrame(neutrino_msg_t msg) onDelete(); } } - else if (msg == CRCInput::RC_help || msg == CRCInput::RC_info) + else if (msg == CRCInput::RC_help) + { + showHelp(); + } + else if (msg == CRCInput::RC_info) { if (m_movieSelectionHandler != NULL) { @@ -3136,11 +3159,9 @@ void CMovieBrowser::loadAllMovieInfo(void) void CMovieBrowser::showHelp(void) { CMovieHelp help; - help.exec(NULL,NULL); + help.exec(); } - - #define MAX_STRING 30 int CMovieBrowser::showMovieInfoMenu(MI_MOVIE_INFO* movie_info) { @@ -3402,7 +3423,6 @@ bool CMovieBrowser::showMenu(bool calledExternally) /********************************************************************/ /** main menu ******************************************************/ - CMovieHelp* movieHelp = new CMovieHelp(); CNFSSmallMenu* nfs = new CNFSSmallMenu(); if (!calledExternally) { @@ -3416,9 +3436,6 @@ bool CMovieBrowser::showMenu(bool calledExternally) mainMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_MENU_DIRECTORIES_HEAD, true, NULL, &dirMenu, NULL, CRCInput::RC_2)); mainMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_SCAN_FOR_MOVIES, true, NULL, this, "reload_movie_info", CRCInput::RC_3)); //mainMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_MENU_NFS_HEAD, true, NULL, nfs, NULL, CRCInput::RC_setup)); - mainMenu.addItem(GenericMenuSeparatorLine); - mainMenu.addItem(new CMenuForwarder(LOCALE_MOVIEBROWSER_MENU_HELP_HEAD, true, NULL, movieHelp, NULL, CRCInput::RC_help)); - //mainMenu.addItem(GenericMenuSeparator); mainMenu.exec(NULL, " "); } else @@ -3490,7 +3507,6 @@ bool CMovieBrowser::showMenu(bool calledExternally) for (i = 0; i < MB_MAX_DIRS; i++) delete notifier[i]; - delete movieHelp; delete nfs; return(true); diff --git a/src/gui/moviebrowser/mb.h b/src/gui/moviebrowser/mb.h index b5f224185..176c34f7f 100644 --- a/src/gui/moviebrowser/mb.h +++ b/src/gui/moviebrowser/mb.h @@ -163,6 +163,7 @@ class CMovieBrowser : public CMenuTarget CBox m_cBoxFrameFootRel; CBox m_cBoxFrameTitleRel; + CComponentsHeader *m_header; CComponentsDetailLine *m_detailsLine; CComponentsChannelLogo *m_channelLogo; CComponentsPicture *m_movieCover; diff --git a/src/gui/moviebrowser/mb_help.h b/src/gui/moviebrowser/mb_help.h index a295c8d12..64882eba3 100644 --- a/src/gui/moviebrowser/mb_help.h +++ b/src/gui/moviebrowser/mb_help.h @@ -40,8 +40,8 @@ #include -// Class to show Moviebrowser Information, to be used by menu -class CMovieHelp : public CMenuTarget +// Class to show moviebrowser's help, to be used by rc_help key +class CMovieHelp { private: @@ -49,35 +49,29 @@ class CMovieHelp : public CMenuTarget CMovieHelp(){}; ~CMovieHelp(){}; - int exec(CMenuTarget* /*parent*/, const std::string & /*actionKey*/) + void exec() { Helpbox helpbox(g_Locale->getText(LOCALE_HELP_BOX_TITLE)); - helpbox.addLine("Standard functions", CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 10, g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]); - helpbox.addLine(NEUTRINO_ICON_BUTTON_OKAY, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_OKAY), CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 30); - helpbox.addLine(NEUTRINO_ICON_BUTTON_PLAY, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_PLAY), CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 30); - helpbox.addLine(NEUTRINO_ICON_BUTTON_MUTE_SMALL, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_MUTE), CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 30); + helpbox.addSeparator(); + helpbox.addLine(NEUTRINO_ICON_BUTTON_PLAY, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_PLAY)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_OKAY, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_OKAY)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_MUTE_SMALL, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_MUTE)); helpbox.addSeparatorLine(); - helpbox.addLine(NEUTRINO_ICON_BUTTON_RED, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_RED), CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 30); - helpbox.addLine(NEUTRINO_ICON_BUTTON_GREEN, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_GREEN), CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 30); - helpbox.addLine(NEUTRINO_ICON_BUTTON_YELLOW, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_YELLOW), CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 30); - helpbox.addLine(NEUTRINO_ICON_BUTTON_BLUE, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_BLUE), CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 30); - helpbox.addLine(NEUTRINO_ICON_BUTTON_MENU, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_MENU), CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 30); - helpbox.addLine(" Change view", CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 30); -#if 0 - helpbox.addPagebreak(); -#endif - helpbox.addLine("During playback", CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 10, g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]); + helpbox.addLine(NEUTRINO_ICON_BUTTON_RED, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_RED)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_GREEN, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_GREEN)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_YELLOW, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_YELLOW)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_BLUE, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_BLUE)); helpbox.addSeparatorLine(); - helpbox.addLine(NEUTRINO_ICON_BUTTON_BLUE, "Marking menu", CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 30); - helpbox.addLine(NEUTRINO_ICON_BUTTON_0, "Not perform marking action", CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, 35, 30); + helpbox.addLine(NEUTRINO_ICON_BUTTON_MENU, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_MENU)); + helpbox.addSeparator(); + helpbox.addLine(NEUTRINO_ICON_BUTTON_LEFT, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_LEFT)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_RIGHT, g_Locale->getText(LOCALE_MOVIEBROWSER_HELP_BUTTON_RIGHT)); helpbox.addExitKey(CRCInput::RC_ok); helpbox.show(); - int ret = helpbox.exec(); + helpbox.exec(); helpbox.hide(); - - return ret; } }; diff --git a/src/gui/movieplayer.cpp b/src/gui/movieplayer.cpp index f9df17284..2c9472427 100644 --- a/src/gui/movieplayer.cpp +++ b/src/gui/movieplayer.cpp @@ -90,6 +90,8 @@ extern CVolume* g_volume; #define TIMESHIFT_SECONDS 3 #define ISO_MOUNT_POINT "/media/iso" +#define MUTE true +#define NO_MUTE false CMoviePlayerGui* CMoviePlayerGui::instance_mp = NULL; CMoviePlayerGui* CMoviePlayerGui::instance_bg = NULL; @@ -220,6 +222,8 @@ void CMoviePlayerGui::Init(void) blockedFromPlugin = false; m_screensaver = false; m_idletime = time(NULL); + m_mode = CTimeOSD::MODE_HIDE; + m_restore = false; } void CMoviePlayerGui::cutNeutrino() @@ -486,10 +490,31 @@ void CMoviePlayerGui::ClearQueue() milist.clear(); } -void CMoviePlayerGui::EnableClockAndMute(bool enable) + +void CMoviePlayerGui::enableOsdElements(bool mute) { - CAudioMute::getInstance()->enableMuteIcon(enable); - CInfoClock::getInstance()->enableInfoClock(enable); + if (mute) + CAudioMute::getInstance()->enableMuteIcon(true); + + CInfoClock::getInstance()->enableInfoClock(true); + + if (m_restore) { + FileTime.setMode(m_mode); + FileTime.update(position, duration); + } +} + +void CMoviePlayerGui::disableOsdElements(bool mute) +{ + if (mute) + CAudioMute::getInstance()->enableMuteIcon(false); + + CInfoClock::getInstance()->enableInfoClock(false); + + m_mode = FileTime.getMode(); + m_restore = FileTime.IsVisible(); + if (m_restore) + FileTime.kill(); } void CMoviePlayerGui::makeFilename() @@ -593,7 +618,7 @@ bool CMoviePlayerGui::SelectFile() } #endif else if (isMovieBrowser) { - EnableClockAndMute(false); + disableOsdElements(MUTE); if (moviebrowser->exec(Path_local.c_str())) { Path_local = moviebrowser->getCurrentDir(); CFile *file = NULL; @@ -613,9 +638,9 @@ bool CMoviePlayerGui::SelectFile() ret = prepareFile(&p_movie_info->file); } else menu_ret = moviebrowser->getMenuRet(); - EnableClockAndMute(true); + enableOsdElements(MUTE); } else { // filebrowser - EnableClockAndMute(false); + disableOsdElements(MUTE); while (ret == false && filebrowser->exec(Path_local.c_str()) == true) { Path_local = filebrowser->getCurrentDir(); CFile *file = NULL; @@ -637,7 +662,7 @@ bool CMoviePlayerGui::SelectFile() } } menu_ret = filebrowser->getMenuRet(); - EnableClockAndMute(true); + enableOsdElements(MUTE); } g_settings.network_nfs_moviedir = Path_local; @@ -1085,9 +1110,9 @@ void CMoviePlayerGui::stopPlayBack(void) cond.broadcast(); pthread_join(bgThread, NULL); bgThread = 0; + livestreamInfo1.clear(); + livestreamInfo2.clear(); } - livestreamInfo1.clear(); - livestreamInfo2.clear(); printf("%s: stopped\n", __func__); } @@ -1227,7 +1252,7 @@ bool CMoviePlayerGui::PlayFileStart(void) if (is_file_player) selectAutoLang(); - EnableClockAndMute(true); + enableOsdElements(MUTE); return res; } @@ -1432,7 +1457,7 @@ void CMoviePlayerGui::PlayFileLoop(void) if (timeshift == TSHIFT_MODE_OFF) callInfoViewer(); } else if (!filelist.empty()) { - EnableClockAndMute(false); + disableOsdElements(MUTE); CFileBrowser *playlist = new CFileBrowser(); CFile *pfile = NULL; pfile = &(*filelist_it); @@ -1455,7 +1480,7 @@ void CMoviePlayerGui::PlayFileLoop(void) filelist_it = filelist.begin() + selected; } delete playlist; - EnableClockAndMute(true); + enableOsdElements(MUTE); } } else if (msg == (neutrino_msg_t) g_settings.mpkey_pause) { if (playstate == CMoviePlayerGui::PAUSE) { @@ -1555,13 +1580,13 @@ void CMoviePlayerGui::PlayFileLoop(void) if (!cancel && (3 == sscanf(Value.c_str(), "%d:%d:%d", &hh, &mm, &ss))) SetPosition(1000 * (hh * 3600 + mm * 60 + ss), true); - } else if (msg == CRCInput::RC_help || msg == CRCInput::RC_info) { + } else if (msg == CRCInput::RC_help) { + disableOsdElements(NO_MUTE); + showHelp(); + enableOsdElements(NO_MUTE); + } else if (msg == CRCInput::RC_info) { if (fromInfoviewer) { - CTimeOSD::mode m_mode = FileTime.getMode(); - bool restore = FileTime.IsVisible(); - if (restore) - FileTime.kill(); - CInfoClock::getInstance()->enableInfoClock(false); + disableOsdElements(NO_MUTE); #ifdef ENABLE_LUA if (isLuaPlay && haveLuaInfoFunc) { int xres = 0, yres = 0, aspectRatio = 0, framerate = -1; @@ -1580,11 +1605,7 @@ void CMoviePlayerGui::PlayFileLoop(void) } #endif fromInfoviewer = false; - CInfoClock::getInstance()->enableInfoClock(true); - if (restore) { - FileTime.setMode(m_mode); - FileTime.update(position, duration); - } + enableOsdElements(NO_MUTE); } else callInfoViewer(); @@ -2198,19 +2219,9 @@ void CMoviePlayerGui::handleMovieBrowser(neutrino_msg_t msg, int /*position*/) } } } else if (msg == NeutrinoMessages::SHOW_EPG && p_movie_info) { - CTimeOSD::mode m_mode = FileTime.getMode(); - bool restore = FileTime.IsVisible(); - if (restore) - FileTime.kill(); - CInfoClock::getInstance()->enableInfoClock(false); - + disableOsdElements(NO_MUTE); g_EpgData->show_mp(p_movie_info, position, duration); - - CInfoClock::getInstance()->enableInfoClock(true); - if (restore) { - FileTime.setMode(m_mode); - FileTime.update(position, duration); - } + enableOsdElements(NO_MUTE); } return; } @@ -2227,22 +2238,34 @@ void CMoviePlayerGui::UpdatePosition() } } -void CMoviePlayerGui::showHelpTS() +void CMoviePlayerGui::showHelp() { Helpbox helpbox(g_Locale->getText(LOCALE_MESSAGEBOX_INFO)); - helpbox.addLine(NEUTRINO_ICON_BUTTON_RED, g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP1)); - helpbox.addLine(NEUTRINO_ICON_BUTTON_GREEN, g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP2)); - helpbox.addLine(NEUTRINO_ICON_BUTTON_YELLOW, g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP3)); - helpbox.addLine(NEUTRINO_ICON_BUTTON_BLUE, g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP4)); - helpbox.addLine(NEUTRINO_ICON_BUTTON_MENU, g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP5)); - helpbox.addLine(NEUTRINO_ICON_BUTTON_1, g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP6)); - helpbox.addLine(NEUTRINO_ICON_BUTTON_3, g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP7)); - helpbox.addLine(NEUTRINO_ICON_BUTTON_4, g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP8)); - helpbox.addLine(NEUTRINO_ICON_BUTTON_6, g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP9)); - helpbox.addLine(NEUTRINO_ICON_BUTTON_7, g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP10)); - helpbox.addLine(NEUTRINO_ICON_BUTTON_9, g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP11)); - helpbox.addLine(g_Locale->getText(LOCALE_MOVIEPLAYER_TSHELP12)); + helpbox.addSeparator(); + helpbox.addLine(NEUTRINO_ICON_BUTTON_PAUSE, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_PAUSE)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_FORWARD, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_FORWARD)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_BACKWARD, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_BACKWARD)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_STOP, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_STOP)); + helpbox.addSeparatorLine(); + helpbox.addLine(NEUTRINO_ICON_BUTTON_1, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_1)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_2, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_2)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_3, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_3)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_4, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_4)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_5, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_5)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_6, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_6)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_7, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_7)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_8, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_8)); + helpbox.addLine(NEUTRINO_ICON_BUTTON_9, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_9)); + helpbox.addSeparatorLine(); + helpbox.addLine(NEUTRINO_ICON_BUTTON_MENU, g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_BUTTON_MENU)); + helpbox.addSeparator(); + helpbox.addLine(g_Locale->getText(LOCALE_MOVIEPLAYER_HELP_ADDITIONAL)); + + helpbox.addExitKey(CRCInput::RC_ok); + helpbox.show(); + helpbox.exec(); + helpbox.hide(); } void CMoviePlayerGui::selectChapter() diff --git a/src/gui/movieplayer.h b/src/gui/movieplayer.h index cbe1ed10a..c87a71d18 100644 --- a/src/gui/movieplayer.h +++ b/src/gui/movieplayer.h @@ -189,6 +189,9 @@ class CMoviePlayerGui : public CMenuTarget static CMoviePlayerGui* instance_mp; static CMoviePlayerGui* instance_bg; + CTimeOSD::mode m_mode; + bool m_restore; + void Init(void); void PlayFile(); bool PlayFileStart(); @@ -198,7 +201,7 @@ class CMoviePlayerGui : public CMenuTarget bool StartWebtv(); void quickZap(neutrino_msg_t msg); - void showHelpTS(void); + void showHelp(void); void callInfoViewer(bool init_vzap_it = true); void fillPids(); bool getAudioName(int pid, std::string &apidtitle); @@ -221,7 +224,8 @@ class CMoviePlayerGui : public CMenuTarget void Cleanup(); void ClearFlags(); void ClearQueue(); - void EnableClockAndMute(bool enable); + void enableOsdElements(bool mute); + void disableOsdElements(bool mute); static void *ShowStartHint(void *arg); static void* bgPlayThread(void *arg); static bool sortStreamList(livestream_info_t info1, livestream_info_t info2); diff --git a/src/gui/osd_progressbar_setup.cpp b/src/gui/osd_progressbar_setup.cpp index 6f2dac976..3ff47cfc7 100644 --- a/src/gui/osd_progressbar_setup.cpp +++ b/src/gui/osd_progressbar_setup.cpp @@ -84,10 +84,10 @@ int CProgressbarSetup::exec(CMenuTarget* parent, const std::string &actionKey) printf("[neutrino] init progressbar menu setup...\n"); if (actionKey == "reset") { - g_settings.progressbar_timescale_red = 0; - g_settings.progressbar_timescale_green = 100; - g_settings.progressbar_timescale_yellow = 70; - g_settings.progressbar_timescale_invert = false; + g_settings.theme.progressbar_timescale_red = 0; + g_settings.theme.progressbar_timescale_green = 100; + g_settings.theme.progressbar_timescale_yellow = 70; + g_settings.theme.progressbar_timescale_invert = false; return menu_return::RETURN_REPAINT; } @@ -105,12 +105,12 @@ int CProgressbarSetup::showMenu() // general progress bar design CMenuOptionChooser *mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_DESIGN_LONG, - &g_settings.progressbar_design, PROGRESSBAR_COLOR_OPTIONS + 1, PROGRESSBAR_COLOR_OPTION_COUNT - 1, true, this); + &g_settings.theme.progressbar_design, PROGRESSBAR_COLOR_OPTIONS + 1, PROGRESSBAR_COLOR_OPTION_COUNT - 1, true, this); mc->setHint("", LOCALE_MENU_HINT_PROGRESSBAR_COLOR); m.addItem(mc); // progress bar gradient - mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_GRADIENT, &g_settings.progressbar_gradient, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this); + mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_GRADIENT, &g_settings.theme.progressbar_gradient, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this); mc->setHint("", LOCALE_MENU_HINT_PROGRESSBAR_GRADIENT); m.addItem(mc); @@ -122,25 +122,25 @@ int CProgressbarSetup::showMenu() CMenuOptionNumberChooser *nc; - nc = new CMenuOptionNumberChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_TIMESCALE_RED, &g_settings.progressbar_timescale_red, true, 0, 100, this); + nc = new CMenuOptionNumberChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_TIMESCALE_RED, &g_settings.theme.progressbar_timescale_red, true, 0, 100, this); nc->setNumericInput(true); nc->setNumberFormat("%d %%"); nc->setHint("", LOCALE_MENU_HINT_PROGRESSBAR_TIMESCALE_RED); m.addItem(nc); - nc = new CMenuOptionNumberChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_TIMESCALE_YELLOW, &g_settings.progressbar_timescale_yellow, true, 0, 100, this); + nc = new CMenuOptionNumberChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_TIMESCALE_YELLOW, &g_settings.theme.progressbar_timescale_yellow, true, 0, 100, this); nc->setNumericInput(true); nc->setNumberFormat("%d %%"); nc->setHint("", LOCALE_MENU_HINT_PROGRESSBAR_TIMESCALE_YELLOW); m.addItem(nc); - nc = new CMenuOptionNumberChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_TIMESCALE_GREEN, &g_settings.progressbar_timescale_green, true, 0, 100, this); + nc = new CMenuOptionNumberChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_TIMESCALE_GREEN, &g_settings.theme.progressbar_timescale_green, true, 0, 100, this); nc->setNumericInput(true); nc->setNumberFormat("%d %%"); nc->setHint("", LOCALE_MENU_HINT_PROGRESSBAR_TIMESCALE_GREEN); m.addItem(nc); - mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_TIMESCALE_INVERT, &g_settings.progressbar_timescale_invert, PROGRESSBAR_TIMESCALE_INVERT_OPTIONS, PROGRESSBAR_TIMESCALE_INVERT_OPTION_COUNT, true, this); + mc = new CMenuOptionChooser(LOCALE_MISCSETTINGS_PROGRESSBAR_TIMESCALE_INVERT, &g_settings.theme.progressbar_timescale_invert, PROGRESSBAR_TIMESCALE_INVERT_OPTIONS, PROGRESSBAR_TIMESCALE_INVERT_OPTION_COUNT, true, this); mc->setHint("", LOCALE_MENU_HINT_PROGRESSBAR_TIMESCALE_INVERT); m.addItem(mc); @@ -156,14 +156,14 @@ int CProgressbarSetup::showMenu() // extended channel list (progressbars) m.addItem(new CMenuSeparator(CMenuSeparator::LINE | CMenuSeparator::STRING, LOCALE_MAINMENU_CHANNELS)); - mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_EXTENDED, &g_settings.channellist_progressbar_design, PROGRESSBAR_COLOR_OPTIONS, PROGRESSBAR_COLOR_OPTION_COUNT, true, this); + mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_EXTENDED, &g_settings.theme.progressbar_design_channellist, PROGRESSBAR_COLOR_OPTIONS, PROGRESSBAR_COLOR_OPTION_COUNT, true, this); mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_EXTENDED); m.addItem(mc); mb = new CMenuProgressbar(LOCALE_MISCSETTINGS_PROGRESSBAR_PREVIEW); mb->setHint("", LOCALE_MENU_HINT_PROGRESSBAR_PREVIEW); mb->getScale()->setType(CProgressBar::PB_TIMESCALE); - mb->getScale()->setDesign(g_settings.channellist_progressbar_design); + mb->getScale()->setDesign(g_settings.theme.progressbar_design_channellist); mb->getScale()->doPaintBg(false); m.addItem(mb); diff --git a/src/gui/osd_setup.cpp b/src/gui/osd_setup.cpp index 42570648e..2ac4e8a99 100644 --- a/src/gui/osd_setup.cpp +++ b/src/gui/osd_setup.cpp @@ -162,7 +162,8 @@ size_t moviebrowser_font_items = sizeof(moviebrowser_font_sizes)/sizeof(moviebro const SNeutrinoSettings::FONT_TYPES other_font_sizes[] = { SNeutrinoSettings::FONT_TYPE_SUBTITLES, - SNeutrinoSettings::FONT_TYPE_FILEBROWSER_ITEM + SNeutrinoSettings::FONT_TYPE_FILEBROWSER_ITEM, + SNeutrinoSettings::FONT_TYPE_BUTTON_TEXT }; size_t other_font_items = sizeof(other_font_sizes)/sizeof(other_font_sizes[0]); @@ -181,7 +182,7 @@ font_sizes_groups font_sizes_groups[] = {LOCALE_FONTMENU_EPG , epg_font_items , epg_font_sizes , "fontsize.depg", LOCALE_MENU_HINT_EPG_FONTS }, {LOCALE_FONTMENU_INFOBAR , infobar_font_items , infobar_font_sizes , "fontsize.dinf", LOCALE_MENU_HINT_INFOBAR_FONTS }, {LOCALE_FONTMENU_MOVIEBROWSER,moviebrowser_font_items,moviebrowser_font_sizes,"fontsize.dmbr", LOCALE_MENU_HINT_MOVIEBROWSER_FONTS }, - {LOCALE_FONTMENU_MESSAGES , msgtext_font_items , msgtext_font_sizes , "fontsize.msg", LOCALE_MENU_HINT_MESSAGE_FONTS }, + {LOCALE_FONTMENU_MESSAGES , msgtext_font_items , msgtext_font_sizes , "fontsize.dmsg", LOCALE_MENU_HINT_MESSAGE_FONTS }, {LOCALE_FONTMENU_OTHER , other_font_items , other_font_sizes , "fontsize.doth", LOCALE_MENU_HINT_OTHER_FONTS } }; #define FONT_GROUP_COUNT (sizeof(font_sizes_groups)/sizeof(font_sizes_groups[0])) @@ -216,7 +217,8 @@ font_sizes_struct neutrino_font[SNeutrinoSettings::FONT_TYPE_COUNT] = {LOCALE_FONTSIZE_MOVIEBROWSER_LIST , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 0}, {LOCALE_FONTSIZE_MOVIEBROWSER_INFO , 17, CNeutrinoFonts::FONT_STYLE_REGULAR, 0}, {LOCALE_FONTSIZE_SUBTITLES , 25, CNeutrinoFonts::FONT_STYLE_BOLD , 0}, - {LOCALE_FONTSIZE_MESSAGE_TEXT , 20, CNeutrinoFonts::FONT_STYLE_REGULAR, 1} + {LOCALE_FONTSIZE_MESSAGE_TEXT , 20, CNeutrinoFonts::FONT_STYLE_REGULAR, 1}, + {LOCALE_FONTSIZE_BUTTON_TEXT , 14, CNeutrinoFonts::FONT_STYLE_REGULAR, 0} }; int COsdSetup::exec(CMenuTarget* parent, const std::string &actionKey) @@ -1021,7 +1023,7 @@ void COsdSetup::showOsdTimeoutSetup(CMenuWidget* menu_timeout) nf += g_Locale->getText(LOCALE_UNIT_SHORT_SECOND); for (int i = 0; i < SNeutrinoSettings::TIMING_SETTING_COUNT; i++) { - CMenuOptionNumberChooser *ch = new CMenuOptionNumberChooser(timing_setting[i].name, &g_settings.timing[i], true, 0, 180); + CMenuOptionNumberChooser *ch = new CMenuOptionNumberChooser(timing_setting[i].name, &g_settings.timing[i], true, 0, 240); ch->setNumberFormat(nf); ch->setHint("", timing_setting[i].hint); menu_timeout->addItem(ch); @@ -1220,7 +1222,7 @@ void COsdSetup::showOsdChanlistSetup(CMenuWidget *menu_chanlist) menu_chanlist->addItem(mc); // extended channel list - mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_EXTENDED, &g_settings.channellist_progressbar_design, PROGRESSBAR_COLOR_OPTIONS, PROGRESSBAR_COLOR_OPTION_COUNT, true, this); + mc = new CMenuOptionChooser(LOCALE_CHANNELLIST_EXTENDED, &g_settings.theme.progressbar_design_channellist, PROGRESSBAR_COLOR_OPTIONS, PROGRESSBAR_COLOR_OPTION_COUNT, true, this); mc->setHint("", LOCALE_MENU_HINT_CHANNELLIST_EXTENDED); menu_chanlist->addItem(mc); diff --git a/src/gui/personalize.cpp b/src/gui/personalize.cpp index e5d39b7ff..05de89159 100644 --- a/src/gui/personalize.cpp +++ b/src/gui/personalize.cpp @@ -387,7 +387,7 @@ int CPersonalizeGui::ShowPersonalizationMenu() { pMenu->addItem(GenericMenuSeparatorLine); uMenu = new CMenuWidget(LOCALE_PERSONALIZE_HEAD, NEUTRINO_ICON_PERSONALIZE, width, MN_WIDGET_ID_PERSONALIZE_USERMENU); - pMenu->addItem(new CMenuForwarder(LOCALE_USERMENU_HEAD, true, NULL, uMenu, NULL, CRCInput::RC_green)); + pMenu->addItem(new CMenuForwarder(LOCALE_USERMENUS_HEAD, true, NULL, uMenu, NULL, CRCInput::RC_green)); ShowUserMenu(); } @@ -490,7 +490,7 @@ void CPersonalizeGui::ShowUserMenu() { int uMenu_shortcut = 1; - uMenu->addIntroItems(LOCALE_USERMENU_HEAD); + uMenu->addIntroItems(LOCALE_USERMENUS_HEAD); uMenu->addItem(new CMenuOptionChooser(LOCALE_PERSONALIZE_USERMENU_SHOW_CANCEL, &g_settings.personalize[SNeutrinoSettings::P_UMENU_SHOW_CANCEL], OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); diff --git a/src/gui/screensaver.cpp b/src/gui/screensaver.cpp index 5082fec27..1ded487eb 100644 --- a/src/gui/screensaver.cpp +++ b/src/gui/screensaver.cpp @@ -283,14 +283,10 @@ void CScreenSaver::paint() //check position and size use only possible available screen size int x_cl, y_cl, w_cl, h_cl; - scr_clock->getDimensions( &x_cl, &y_cl, &w_cl, &h_cl); - bool unchecked = true; - while(unchecked){ - scr_clock->setPosP(uint8_t(rand() % 100),uint8_t(rand() % 100)); - scr_clock->getDimensions( &x_cl, &y_cl, &w_cl, &h_cl); - if (x_cl+w_cl < g_settings.screen_EndX && y_cl+h_cl < g_settings.screen_EndY) - unchecked = false; - } + scr_clock->getDimensions(&x_cl, &y_cl, &w_cl, &h_cl); + int x_random = rand() % ((g_settings.screen_EndX - w_cl - g_settings.screen_StartX) + 1) + g_settings.screen_StartX; + int y_random = rand() % ((g_settings.screen_EndY - h_cl - g_settings.screen_StartY) + 1) + g_settings.screen_StartY; + scr_clock->setPos(x_random, y_random); scr_clock->Start(); if (g_settings.screensaver_mode == SCR_MODE_CLOCK_COLOR) { diff --git a/src/gui/streaminfo2.cpp b/src/gui/streaminfo2.cpp index 9829f396c..801b54536 100644 --- a/src/gui/streaminfo2.cpp +++ b/src/gui/streaminfo2.cpp @@ -621,20 +621,43 @@ void CStreamInfo2::paint_techinfo(int xpos, int ypos) snprintf(buf, sizeof(buf), "%s:", g_Locale->getText (LOCALE_STREAMINFO_AUDIOTYPE)); g_Font[font_info]->RenderString (xpos, ypos, box_width, buf, COL_MENUCONTENT_TEXT); - if(type == AUDIO_FMT_MPEG) { - const int max_mode = 4; - const char *mpegmodes[max_mode] = { "stereo", "joint_st", "dual_ch", "single_ch" }; - snprintf(buf, sizeof(buf), "MPEG %s (%d)", (mode > max_mode) ?"unk":mpegmodes[mode], freq); - } else if (type == AUDIO_FMT_DOLBY_DIGITAL || type == AUDIO_FMT_DD_PLUS) { - const int max_mode = 8; - const char *ddmodes[max_mode] = { "CH1/CH2", "C", "L/R", "L/C/R", "L/R/S", "L/C/R/S", "L/R/SL/SR", "L/C/R/SL/SR" }; + if (type == AUDIO_FMT_MPEG) + { + const char *mpegmodes[] = + { + "stereo", + "joint_st", + "dual_ch", + "single_ch" + }; + int max_mode = sizeof(mpegmodes) / sizeof(mpegmodes[0]); + snprintf(buf, sizeof(buf), "MPEG %s (%d)", + (mode > max_mode) ? "unk" : mpegmodes[mode], + freq); + } + else if (type == AUDIO_FMT_DOLBY_DIGITAL || type == AUDIO_FMT_DD_PLUS) + { + const char *ddmodes[] = + { + "CH1/CH2", + "C", + "L/R", + "L/C/R", + "L/R/S", + "L/C/R/S", + "L/R/SL/SR", + "L/C/R/SL/SR" + }; + int max_mode = sizeof(ddmodes) / sizeof(ddmodes[0]); snprintf(buf, sizeof(buf), "%s %s (%d)", (type == AUDIO_FMT_DOLBY_DIGITAL) ? "DD" : "DD+", - (mode > max_mode) ?"unk": ddmodes[mode], + (mode > max_mode) ? "unk" : ddmodes[mode], freq); - } else if (type == AUDIO_FMT_AAC || type == AUDIO_FMT_AAC_PLUS) { - const int max_mode = 10; - const char *aacmodes[max_mode] = { + } + else if (type == AUDIO_FMT_AAC || type == AUDIO_FMT_AAC_PLUS) + { + const char *aacmodes[] = + { "N/S", "Mono", "L/R", @@ -646,11 +669,17 @@ void CStreamInfo2::paint_techinfo(int xpos, int ypos) "L/R/SL/SR", "Dual-Mono" }; + int max_mode = sizeof(aacmodes) / sizeof(aacmodes[0]); snprintf(buf, sizeof(buf), "%s %s (%d)", (type == AUDIO_FMT_AAC) ? "AAC" : "AAC+", - (mode > max_mode) ?"unk":aacmodes[mode], freq); - } else { - snprintf(buf, sizeof(buf), "%s (%d)", g_Locale->getText(LOCALE_STREAMINFO_AUDIOTYPE_UNKNOWN), freq); + (mode > max_mode) ? "unk" : aacmodes[mode], + freq); + } + else + { + snprintf(buf, sizeof(buf), "%s (%d)", + g_Locale->getText(LOCALE_STREAMINFO_AUDIOTYPE_UNKNOWN), + freq); } g_Font[font_info]->RenderString (xpos+spaceoffset, ypos, box_width2, buf, COL_MENUCONTENT_TEXT); @@ -712,6 +741,7 @@ void CStreamInfo2::paint_techinfo(int xpos, int ypos) int fontW = g_Font[font_small]->getWidth(); spaceoffset = 7 * fontW; box_width2 = box_width-(spaceoffset+xpos); + //onid ypos+= sheight; snprintf(buf, sizeof(buf), "0x%04X (%i)", channel->getOriginalNetworkId(), channel->getOriginalNetworkId()); diff --git a/src/gui/test_menu.cpp b/src/gui/test_menu.cpp index 1679f187c..f3bfcb5e6 100644 --- a/src/gui/test_menu.cpp +++ b/src/gui/test_menu.cpp @@ -55,7 +55,7 @@ #include #include #include - +#include #include #include #include @@ -90,6 +90,7 @@ CTestMenu::CTestMenu() clock = clock_r = NULL; text_ext = NULL; scrollbar = NULL; + timer = NULL; } CTestMenu::~CTestMenu() @@ -845,7 +846,7 @@ int CTestMenu::exec(CMenuTarget* parent, const std::string &actionKey) } else if (actionKey == "msgbox_test_yes_no") { - int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press key! ...", CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbNo, NULL, 500, -1); + int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press key! ...", CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbNo, NULL, 500); std::string msg_txt = "Return value of MsgBox test is "; msg_txt += to_string(msgRet); @@ -868,7 +869,7 @@ int CTestMenu::exec(CMenuTarget* parent, const std::string &actionKey) return res; } else if (actionKey == "msgbox_test_all"){ - int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press key! ...", CMsgBox::mbrOk, CMsgBox::mbAll, NULL, 700, -1); + int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press key! ...", CMsgBox::mbrOk, CMsgBox::mbAll, NULL, 700); std::string msg_txt = "Return value of MsgBox test is "; msg_txt += to_string(msgRet); @@ -876,7 +877,7 @@ int CTestMenu::exec(CMenuTarget* parent, const std::string &actionKey) return menu_return::RETURN_REPAINT; } else if (actionKey == "msgbox_test_yes_no_cancel"){ - int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press key! ...", CMsgBox::mbrCancel, CMsgBox::mbYes | CMsgBox::mbNo | CMsgBox::mbCancel, NULL, 500, -1); + int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press key! ...", CMsgBox::mbrCancel, CMsgBox::mbYes | CMsgBox::mbNo | CMsgBox::mbCancel, NULL, 500); std::string msg_txt = "Return value of MsgBox test is "; msg_txt += to_string(msgRet); @@ -884,7 +885,7 @@ int CTestMenu::exec(CMenuTarget* parent, const std::string &actionKey) return menu_return::RETURN_REPAINT; } else if (actionKey == "msgbox_test_ok_cancel"){ - int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press key! ...", CMsgBox::mbrOk, CMsgBox::mbOk | CMsgBox::mbCancel, NULL, 500, -1); + int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press key! ...", CMsgBox::mbrOk, CMsgBox::mbOk | CMsgBox::mbCancel, NULL, 500); std::string msg_txt = "Return value of MsgBox test is "; msg_txt += to_string(msgRet); @@ -892,7 +893,7 @@ int CTestMenu::exec(CMenuTarget* parent, const std::string &actionKey) return menu_return::RETURN_REPAINT; } else if (actionKey == "msgbox_test_no_yes"){ - int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press key! ...", CMsgBox::mbrOk, CMsgBox::mbNoYes, NULL, 500, -1); + int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press key! ...", CMsgBox::mbrOk, CMsgBox::mbNoYes, NULL, 500); std::string msg_txt = "Return value of MsgBox test is "; msg_txt += to_string(msgRet); @@ -900,7 +901,7 @@ int CTestMenu::exec(CMenuTarget* parent, const std::string &actionKey) return menu_return::RETURN_REPAINT; } else if (actionKey == "msgbox_test_ok"){ - int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press ok key! ...", CMsgBox::mbrOk, CMsgBox::mbOk, NULL, 500, -1); + int msgRet = ShowMsg("Testmenu: MsgBox test", "Test for MsgBox,\nPlease press ok key! ...", CMsgBox::mbrOk, CMsgBox::mbOk, NULL, 500); std::string msg_txt = "Return value of MsgBox test is "; msg_txt += to_string(msgRet); @@ -940,11 +941,97 @@ int CTestMenu::exec(CMenuTarget* parent, const std::string &actionKey) return res; } + else if (actionKey == "show_records"){ + showRecords(); + return res; + } return showTestMenu(); } +void CTestMenu::showRecords() +{ + CRecordManager * crm = CRecordManager::getInstance(); + + const int box_posX = 30; + const int box_posY = 300; + if (!timer) + timer = new CComponentsTimer(1); + + if (crm->RecordingStatus()) + { + CComponentsForm *recordsbox = new CComponentsForm(); + recordsbox->setWidth(0); + recordsbox->doPaintBg(false); + recordsbox->setCornerType(CORNER_NONE); + //recordsbox->setColorBody(COL_BACKGROUND_PLUS_0); + + recmap_t recmap = crm->GetRecordMap(); + std::vector images; + CComponentsForm *recline = NULL; + CComponentsText *rec_name = NULL; + int y_recline = 0; + int h_recline = 0; + int w_recbox = 0; + int w_shadow = OFFSET_SHADOW/2; + + for(recmap_iterator_t it = recmap.begin(); it != recmap.end(); it++) + { + CRecordInstance * inst = it->second; + + recline = new CComponentsForm(0, y_recline, 0); + recline->doPaintBg(true); + recline->setColorBody(COL_INFOBAR_PLUS_0); + recline->enableShadow(CC_SHADOW_ON, w_shadow); + recline->setCorner(CORNER_RADIUS_MID); + recordsbox->addCCItem(recline); + + CComponentsPicture *iconf = new CComponentsPicture(OFFSET_INNER_MID, CC_CENTERED, NEUTRINO_ICON_REC, recline, CC_SHADOW_OFF, COL_RED, COL_INFOBAR_PLUS_0); + iconf->setCornerType(CORNER_NONE); + iconf->doPaintBg(true); + iconf->SetTransparent(CFrameBuffer::TM_BLACK); + images.push_back(iconf); + h_recline = iconf->getHeight(); + y_recline += h_recline + w_shadow; + recline->setHeight(h_recline); + + std::string records_msg = inst->GetEpgTitle(); + + rec_name = new CComponentsText(iconf->getWidth()+2*OFFSET_INNER_MID, CC_CENTERED, 0, 0, records_msg, CTextBox::AUTO_WIDTH, g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]); + rec_name->doPaintBg(false); + rec_name->setTextColor(COL_INFOBAR_TEXT); + + recline->setHeight(std::max(rec_name->getHeight(), iconf->getHeight())); + recline->setWidth(OFFSET_INNER_MIN+iconf->getWidth()+OFFSET_INNER_MID+rec_name->getWidth()+OFFSET_INNER_MID); + w_recbox = (std::max(recline->getWidth(), recordsbox->getWidth())); + + recline->addCCItem(rec_name); + + recordsbox->setWidth(std::max(recordsbox->getWidth(), recline->getWidth())); + y_recline += h_recline; + } + + int h_rbox = 0; + for(size_t i = 0; i< recordsbox->size(); i++) + h_rbox += recordsbox->getCCItem(i)->getHeight()+w_shadow; + + recordsbox->setDimensionsAll(box_posX, box_posY, w_recbox+w_shadow, h_rbox); + recordsbox->paint0(); + + for(size_t j = 0; j< images.size(); j++){ + images[j]->kill(); + images[j]->paintBlink(timer); + } + + ShowHint("Testmenu: Records", "Record test ...", 200, 30, NULL, NEUTRINO_ICON_HINT_RECORDING, CComponentsHeader::CC_BTN_EXIT); + recordsbox->kill(); + delete recordsbox; recordsbox = NULL; + } + else + ShowHint("Testmenu: Records", "No records ...", 200, 30, NULL, NEUTRINO_ICON_HINT_RECORDING, CComponentsHeader::CC_BTN_EXIT); +} + /* shows entries for proxy settings */ int CTestMenu::showTestMenu() { @@ -1016,6 +1103,7 @@ void CTestMenu::showCCTests(CMenuWidget *widget) widget->addItem(new CMenuForwarder("Text-Extended", true, NULL, this, "text_ext")); widget->addItem(new CMenuForwarder("Blinking Extended Text", true, NULL, this, "blinking_text_ext")); widget->addItem(new CMenuForwarder("Scrollbar", true, NULL, this, "scrollbar")); + widget->addItem(new CMenuForwarder("Record", true, NULL, this, "show_records")); } void CTestMenu::showHWTests(CMenuWidget *widget) diff --git a/src/gui/test_menu.h b/src/gui/test_menu.h index 1b09192b0..84cacac6e 100644 --- a/src/gui/test_menu.h +++ b/src/gui/test_menu.h @@ -54,12 +54,14 @@ class CTestMenu : public CMenuTarget CComponentsChannelLogo* chnl_pic; CComponentsExtTextForm* text_ext; CComponentsScrollBar* scrollbar; + CComponentsTimer *timer; int width, selected; int showTestMenu(); void showHWTests(CMenuWidget *widget); void showCCTests(CMenuWidget *widget); void showMsgTests(CMenuWidget *widget); + void showRecords(); public: CTestMenu(); ~CTestMenu(); diff --git a/src/gui/themes.cpp b/src/gui/themes.cpp index 60834ce6f..05794c4fd 100644 --- a/src/gui/themes.cpp +++ b/src/gui/themes.cpp @@ -321,6 +321,14 @@ void CThemes::setTheme(CConfigFile &configfile) configfile.setInt32( "clock_Digit_red", t.clock_Digit_red ); configfile.setInt32( "clock_Digit_green", t.clock_Digit_green ); configfile.setInt32( "clock_Digit_blue", t.clock_Digit_blue ); + + configfile.setInt32( "progressbar_design", t.progressbar_design); + configfile.setInt32( "progressbar_design_channellist", t.progressbar_design_channellist); + configfile.setInt32( "progressbar_gradient", t.progressbar_gradient); + configfile.setInt32( "progressbar_timescale_red", t.progressbar_timescale_red); + configfile.setInt32( "progressbar_timescale_green", t.progressbar_timescale_green); + configfile.setInt32( "progressbar_timescale_yellow", t.progressbar_timescale_yellow); + configfile.setInt32( "progressbar_timescale_invert", t.progressbar_timescale_invert); } void CThemes::getTheme(CConfigFile &configfile) @@ -412,6 +420,14 @@ void CThemes::getTheme(CConfigFile &configfile) t.clock_Digit_red = configfile.getInt32( "clock_Digit_red", t.menu_Content_Text_red ); t.clock_Digit_green = configfile.getInt32( "clock_Digit_green", t.menu_Content_Text_green ); t.clock_Digit_blue = configfile.getInt32( "clock_Digit_blue", t.menu_Content_Text_blue ); + + t.progressbar_design = configfile.getInt32("progressbar_design", CProgressBar::PB_COLOR); + t.progressbar_design_channellist = configfile.getInt32("progressbar_design_channellist", t.progressbar_design); + t.progressbar_gradient = configfile.getInt32("progressbar_gradient", 1); + t.progressbar_timescale_red = configfile.getInt32("progressbar_timescale_red", 0); + t.progressbar_timescale_green = configfile.getInt32("progressbar_timescale_green", 100); + t.progressbar_timescale_yellow = configfile.getInt32("progressbar_timescale_yellow", 70); + t.progressbar_timescale_invert = configfile.getInt32("progressbar_timescale_invert", 0); } void CThemes::move_userDir() diff --git a/src/gui/timerlist.cpp b/src/gui/timerlist.cpp index a0cd363f3..f10090529 100644 --- a/src/gui/timerlist.cpp +++ b/src/gui/timerlist.cpp @@ -281,6 +281,7 @@ CTimerList::CTimerList() timerNew_message = ""; timerNew_pluginName = ""; httpConnectTimeout = 3; + changed = false; /* most probable default */ saved_dispmode = (int)CVFD::MODE_TVRADIO; @@ -653,7 +654,6 @@ struct button_label TimerListButtons[] = { NEUTRINO_ICON_BUTTON_YELLOW , LOCALE_TIMERLIST_RELOAD }, { NEUTRINO_ICON_BUTTON_BLUE , LOCALE_TIMERLIST_MODIFY }, { NEUTRINO_ICON_BUTTON_INFO_SMALL, NONEXISTANT_LOCALE }, - { NEUTRINO_ICON_BUTTON_MENU_SMALL, NONEXISTANT_LOCALE }, { NEUTRINO_ICON_BUTTON_PLAY , NONEXISTANT_LOCALE } }; // int to match the type in paintButtons @@ -992,7 +992,7 @@ int CTimerList::show() if (!epgdata.title.empty()) title = "(" + epgdata.title + ")\n"; snprintf(buf1, sizeof(buf1)-1, g_Locale->getText(LOCALE_TIMERLIST_ASK_TO_DELETE), title.c_str()); - if (ShowMsg(LOCALE_RECORDINGMENU_RECORD_IS_RUNNING, buf1, CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbNo, NULL, 450, 30, false) == CMsgBox::mbrNo) + if (ShowMsg(LOCALE_RECORDINGMENU_RECORD_IS_RUNNING, buf1, CMsgBox::mbrNo, CMsgBox::mbYesNo, NULL, 450) & CMsgBox::mbrNo) { killTimer = false; update = false; @@ -1379,16 +1379,18 @@ void CTimerList::paintHead() void CTimerList::paintFoot() { - CTimerd::responseGetTimer* timer=&timerlist[selected]; - if (timer != NULL) + if(!timerlist.empty() ) { + CTimerd::responseGetTimer* timer=&timerlist[selected]; + if (timer != NULL) + { //replace info button with dummy if timer is not type REC or ZAP - if (timer->eventType == CTimerd::TIMER_RECORD || timer->eventType == CTimerd::TIMER_REMOTEBOX || timer->eventType == CTimerd::TIMER_ZAPTO) - TimerListButtons[4].button = NEUTRINO_ICON_BUTTON_INFO_SMALL; - else - TimerListButtons[4].button = NEUTRINO_ICON_BUTTON_DUMMY_SMALL; + if (timer->eventType == CTimerd::TIMER_RECORD || timer->eventType == CTimerd::TIMER_REMOTEBOX || timer->eventType == CTimerd::TIMER_ZAPTO) + TimerListButtons[4].button = NEUTRINO_ICON_BUTTON_INFO_SMALL; + else + TimerListButtons[4].button = NEUTRINO_ICON_BUTTON_DUMMY_SMALL; + } } - //shadow frameBuffer->paintBoxRel(x + OFFSET_SHADOW, y + height - footerHeight, width, footerHeight + OFFSET_SHADOW, COL_SHADOW_PLUS_0, RADIUS_LARGE, CORNER_BOTTOM); @@ -1591,7 +1593,7 @@ int CTimerList::modifyTimer() timer->eventRepeat = (CTimerd::CTimerEventRepeat)(((int)timer->eventRepeat) & 0x1FF); CStringInput timerSettings_weekdays(LOCALE_TIMERLIST_WEEKDAYS, &m_weekdaysStr, 7, LOCALE_TIMERLIST_WEEKDAYS_HINT_1, LOCALE_TIMERLIST_WEEKDAYS_HINT_2, "-X"); CMenuForwarder *m4 = new CMenuForwarder(LOCALE_TIMERLIST_WEEKDAYS, ((int)timer->eventRepeat) >= (int)CTimerd::TIMERREPEAT_WEEKDAYS, m_weekdaysStr, &timerSettings_weekdays ); - CIntInput timerSettings_repeatCount(LOCALE_TIMERLIST_REPEATCOUNT, (int*)&timer->repeatCount,3, LOCALE_TIMERLIST_REPEATCOUNT_HELP1, LOCALE_TIMERLIST_REPEATCOUNT_HELP2); + CIntInput timerSettings_repeatCount(LOCALE_TIMERLIST_REPEATCOUNT, (int*)&timer->repeatCount,3, LOCALE_TIMERLIST_REPEATCOUNT_HINT_1, LOCALE_TIMERLIST_REPEATCOUNT_HINT_2); CMenuForwarder *m5 = new CMenuForwarder(LOCALE_TIMERLIST_REPEATCOUNT, timer->eventRepeat != (int)CTimerd::TIMERREPEAT_ONCE ,timerSettings_repeatCount.getValue() , &timerSettings_repeatCount); @@ -1701,7 +1703,7 @@ int CTimerList::newTimer() CStringInput timerSettings_weekdays(LOCALE_TIMERLIST_WEEKDAYS, &m_weekdaysStr, 7, LOCALE_TIMERLIST_WEEKDAYS_HINT_1, LOCALE_TIMERLIST_WEEKDAYS_HINT_2, "-X"); CMenuForwarder *m4 = new CMenuForwarder(LOCALE_TIMERLIST_WEEKDAYS, false, m_weekdaysStr, &timerSettings_weekdays); - CIntInput timerSettings_repeatCount(LOCALE_TIMERLIST_REPEATCOUNT, (int*)&timerNew.repeatCount,3, LOCALE_TIMERLIST_REPEATCOUNT_HELP1, LOCALE_TIMERLIST_REPEATCOUNT_HELP2); + CIntInput timerSettings_repeatCount(LOCALE_TIMERLIST_REPEATCOUNT, (int*)&timerNew.repeatCount,3, LOCALE_TIMERLIST_REPEATCOUNT_HINT_1, LOCALE_TIMERLIST_REPEATCOUNT_HINT_2); CMenuForwarder *m5 = new CMenuForwarder(LOCALE_TIMERLIST_REPEATCOUNT, false,timerSettings_repeatCount.getValue() , &timerSettings_repeatCount); CTimerListRepeatNotifier notifier((int *)&timerNew.eventRepeat,m4,m5, &m_weekdaysStr); diff --git a/src/gui/user_menue.cpp b/src/gui/user_menue.cpp index a0e3c24ca..17396222f 100644 --- a/src/gui/user_menue.cpp +++ b/src/gui/user_menue.cpp @@ -202,62 +202,44 @@ bool CUserMenu::showUserMenu(neutrino_msg_t msg) if (it->find_first_not_of("0123456789") == std::string::npos) item = atoi(*it); menu_item = NULL; - switch (item) { + switch (item) + { case SNeutrinoSettings::ITEM_NONE: + { continue; + } case SNeutrinoSettings::ITEM_BAR: + { menu->addItem(GenericMenuSeparatorLine); break; - case SNeutrinoSettings::ITEM_FAVORITS: - keyhelper.get(&key,&icon,feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_FAVORIT]].key); //CRCInput::RC_green - menu_item = new CMenuDForwarder(LOCALE_FAVORITES_MENUEADD, true, NULL, new CFavorites, "-1", key, icon); - // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); - break; - case SNeutrinoSettings::ITEM_RECORD: - if (g_settings.recording_type == RECORDING_OFF) - break; - keyhelper.get(&key,&icon,CRCInput::RC_red); - menu_item = new CMenuForwarder(LOCALE_MAINMENU_RECORDING, true, NULL, CRecordManager::getInstance(), "-1", key, icon); - // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); - break; - case SNeutrinoSettings::ITEM_MOVIEPLAYER_MB: - if (g_settings.recording_type == RECORDING_OFF) - break; - keyhelper.get(&key,&icon,CRCInput::RC_green); - menu_item = new CMenuForwarder(LOCALE_MOVIEBROWSER_HEAD, !_mode_ts, NULL, neutrino, "tsmoviebrowser", key, icon); - menu_item->setHint(NEUTRINO_ICON_HINT_MB, LOCALE_MENU_HINT_MB); - break; - case SNeutrinoSettings::ITEM_TIMERLIST: - keyhelper.get(&key,&icon,feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_TIMERLIST]].key); //CRCInput::RC_yellow - menu_item = new CMenuDForwarder(LOCALE_TIMERLIST_NAME, true, NULL, new CTimerList, "-1", key, icon); - menu_item->setHint(NEUTRINO_ICON_HINT_TIMERS, LOCALE_MENU_HINT_TIMERS); - break; - case SNeutrinoSettings::ITEM_REMOTE: - keyhelper.get(&key,&icon,feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_RC_LOCK]].key); //CRCInput::RC_nokey); - menu_item = new CMenuForwarder(LOCALE_RCLOCK_TITLE, true, NULL, CRCLock::getInstance(), "-1" , key, icon ); - // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); - break; - case SNeutrinoSettings::ITEM_EPG_SUPER: - keyhelper.get(&key,&icon,CRCInput::RC_green); - menu_item = new CMenuDForwarder(LOCALE_EPGMENU_EPGPLUS, !_mode_ts, NULL, new CEPGplusHandler, "-1", key, icon); - // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); - break; + } case SNeutrinoSettings::ITEM_EPG_LIST: + { keyhelper.get(&key,&icon,CRCInput::RC_red); menu_item = new CMenuDForwarder(LOCALE_EPGMENU_EVENTLIST, !_mode_ts, NULL, new CEventListHandler, "-1", key, icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; + } + case SNeutrinoSettings::ITEM_EPG_SUPER: + { + keyhelper.get(&key,&icon,CRCInput::RC_green); + menu_item = new CMenuDForwarder(LOCALE_EPGMENU_EPGPLUS, !_mode_ts, NULL, new CEPGplusHandler, "-1", key, icon); + // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); + break; + } case SNeutrinoSettings::ITEM_EPG_INFO: + { keyhelper.get(&key,&icon,CRCInput::RC_yellow); menu_item = new CMenuDForwarder(LOCALE_EPGMENU_EVENTINFO, !_mode_ts, NULL, new CEPGDataHandler, "-1", key, icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; + } case SNeutrinoSettings::ITEM_EPG_MISC: { dummy = g_Sectionsd->getIsScanningActive(); keyhelper.get(&key,&icon); - // new CMenuOptionChooser(LOCALE_VIDEOMENU_VIDEOMODE, &g_settings.video_Mode, VIDEOMENU_VIDEOMODE_OPTIONS, VIDEOMENU_VIDEOMODE_OPTION_COUNT, true, this, CRCInput::RC_nokey, "", true); menu_item = new CMenuOptionChooser(LOCALE_MAINMENU_PAUSESECTIONSD, &dummy, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this , key, icon ); + // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); menu->addItem(menu_item, false); keyhelper.get(&key,&icon); @@ -266,10 +248,12 @@ bool CUserMenu::showUserMenu(neutrino_msg_t msg) break; } case SNeutrinoSettings::ITEM_AUDIO_SELECT: + { keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_AUDIOSELECTMENUE_HEAD, !_mode_ts, NULL, new CAudioSelectMenuHandler, "-1", key,icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; + } case SNeutrinoSettings::ITEM_SUBCHANNEL: { if (g_RemoteControl->subChannels.empty()) @@ -278,41 +262,69 @@ bool CUserMenu::showUserMenu(neutrino_msg_t msg) break; // NVOD/SubService- Kanal! CMenuWidget *tmpNVODSelector = new CMenuWidget(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_STARTTIME, NEUTRINO_ICON_VIDEO); - if (!subchanselect.getNVODMenu(tmpNVODSelector)) { + if (!subchanselect.getNVODMenu(tmpNVODSelector)) + { delete tmpNVODSelector; break; } keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(g_RemoteControl->are_subchannels ? LOCALE_NVODSELECTOR_SUBSERVICE : LOCALE_NVODSELECTOR_STARTTIME, true, NULL, tmpNVODSelector, "-1", key,icon); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); - + break; + } + case SNeutrinoSettings::ITEM_RECORD: + { + if (g_settings.recording_type == RECORDING_OFF) + break; + keyhelper.get(&key,&icon,CRCInput::RC_red); + menu_item = new CMenuForwarder(LOCALE_MAINMENU_RECORDING, true, NULL, CRecordManager::getInstance(), "-1", key, icon); + // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); + break; + } + case SNeutrinoSettings::ITEM_MOVIEPLAYER_MB: + { + if (g_settings.recording_type == RECORDING_OFF) + break; + keyhelper.get(&key,&icon,CRCInput::RC_green); + menu_item = new CMenuForwarder(LOCALE_MOVIEBROWSER_HEAD, !_mode_ts, NULL, neutrino, "tsmoviebrowser", key, icon); + menu_item->setHint(NEUTRINO_ICON_HINT_MB, LOCALE_MENU_HINT_MB); + break; + } + case SNeutrinoSettings::ITEM_TIMERLIST: + { + keyhelper.get(&key,&icon,feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_TIMERLIST]].key); //CRCInput::RC_yellow + menu_item = new CMenuDForwarder(LOCALE_TIMERLIST_NAME, true, NULL, new CTimerList, "-1", key, icon); + menu_item->setHint(NEUTRINO_ICON_HINT_TIMERS, LOCALE_MENU_HINT_TIMERS); + break; + } + case SNeutrinoSettings::ITEM_VTXT: + { + keyhelper.get(&key,&icon, feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_VTXT]].key); //CRCInput::RC_blue + menu_item = new CMenuForwarder(LOCALE_USERMENU_ITEM_VTXT, true, NULL, CPluginsExec::getInstance(), "teletext", key, icon); + // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); + break; + } + case SNeutrinoSettings::ITEM_FAVORITS: + { + keyhelper.get(&key,&icon,feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_FAVORIT]].key); //CRCInput::RC_green + menu_item = new CMenuDForwarder(LOCALE_FAVORITES_MENUEADD, true, NULL, new CFavorites, "-1", key, icon); + // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; } case SNeutrinoSettings::ITEM_TECHINFO: + { keyhelper.get(&key,&icon,CRCInput::RC_blue); menu_item = new CMenuDForwarder(LOCALE_EPGMENU_STREAMINFO, !neutrino->channelList->isEmpty(), NULL, new CStreamInfo2, "-1", key, icon ); menu_item->setHint(NEUTRINO_ICON_HINT_STREAMINFO, LOCALE_MENU_HINT_STREAMINFO); break; - case SNeutrinoSettings::ITEM_GAMES: - keyhelper.get(&key,&icon); - menu_item = new CMenuDForwarder(LOCALE_MAINMENU_GAMES, g_PluginList->hasPlugin(CPlugins::P_TYPE_GAME), NULL, new CPluginList(LOCALE_MAINMENU_GAMES,CPlugins::P_TYPE_GAME), "-1", key, icon ); - menu_item->setHint(NEUTRINO_ICON_HINT_GAMES, LOCALE_MENU_HINT_GAMES); - break; - case SNeutrinoSettings::ITEM_TOOLS: - keyhelper.get(&key,&icon); - menu_item = new CMenuDForwarder(LOCALE_MAINMENU_TOOLS, g_PluginList->hasPlugin(CPlugins::P_TYPE_TOOL), NULL, new CPluginList(LOCALE_MAINMENU_TOOLS,CPlugins::P_TYPE_TOOL), "-1", key, icon ); - // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); - break; - case SNeutrinoSettings::ITEM_SCRIPTS: - keyhelper.get(&key,&icon); - menu_item = new CMenuDForwarder(LOCALE_MAINMENU_SCRIPTS, g_PluginList->hasPlugin(CPlugins::P_TYPE_SCRIPT), NULL, new CPluginList(LOCALE_MAINMENU_SCRIPTS,CPlugins::P_TYPE_SCRIPT), "-1", key, icon ); - menu_item->setHint(NEUTRINO_ICON_HINT_SCRIPTS, LOCALE_MENU_HINT_SCRIPTS); - break; - case SNeutrinoSettings::ITEM_LUA: - keyhelper.get(&key,&icon); - menu_item = new CMenuDForwarder(LOCALE_MAINMENU_LUA, g_PluginList->hasPlugin(CPlugins::P_TYPE_LUA), NULL, new CPluginList(LOCALE_MAINMENU_LUA,CPlugins::P_TYPE_LUA), "-1", key, icon ); + } + case SNeutrinoSettings::ITEM_REMOTE: + { + keyhelper.get(&key,&icon,feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_RC_LOCK]].key); //CRCInput::RC_nokey); + menu_item = new CMenuForwarder(LOCALE_RCLOCK_TITLE, true, NULL, CRCLock::getInstance(), "-1" , key, icon ); // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; + } case SNeutrinoSettings::ITEM_PLUGIN_TYPES: { unsigned int number_of_plugins = (unsigned int) g_PluginList->getNumberOfPlugins(); @@ -349,108 +361,131 @@ bool CUserMenu::showUserMenu(neutrino_msg_t msg) menu_item = NULL; break; } - case SNeutrinoSettings::ITEM_VTXT: - keyhelper.get(&key,&icon, feat_key[g_settings.personalize[SNeutrinoSettings::P_FEAT_KEY_VTXT]].key); //CRCInput::RC_blue - menu_item = new CMenuForwarder(LOCALE_USERMENU_ITEM_VTXT, true, NULL, CPluginsExec::getInstance(), "teletext", key, icon); - // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); - break; case SNeutrinoSettings::ITEM_IMAGEINFO: + { keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_SERVICEMENU_IMAGEINFO, true, NULL, new CImageInfo, NULL, key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_IMAGEINFO, LOCALE_MENU_HINT_IMAGEINFO); break; + } case SNeutrinoSettings::ITEM_BOXINFO: + { keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_EXTRA_DBOXINFO, true, NULL, new CDBoxInfoWidget, NULL, key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_DBOXINFO, LOCALE_MENU_HINT_DBOXINFO); break; + } #if !HAVE_SPARK_HARDWARE case SNeutrinoSettings::ITEM_CAM: - //if(cs_get_revision() == 10) continue; + { keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_CI_SETTINGS, true, NULL, g_CamHandler, NULL, key, icon); + // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; + } #endif case SNeutrinoSettings::ITEM_CLOCK: + { keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(!g_settings.mode_clock ? LOCALE_CLOCK_SWITCH_ON:LOCALE_CLOCK_SWITCH_OFF, true, NULL, neutrino, "clock_switch", key, icon); menu_item->setHint("", LOCALE_MENU_HINT_CLOCK_MODE); break; - case SNeutrinoSettings::ITEM_ADZAP: - keyhelper.get(&key,&icon,CRCInput::RC_blue); - menu_item = new CMenuForwarder(LOCALE_USERMENU_ITEM_ADZAP, true, adzap_active ? g_Locale->getText(LOCALE_OPTIONS_OFF) : NULL, CAdZapMenu::getInstance(), "adzap", key, icon); - menu_item->setHint(NEUTRINO_ICON_HINT_ADZAP, adzap_active ? LOCALE_MENU_HINT_ADZAP_ACTIVE : LOCALE_MENU_HINT_ADZAP); - break; -#if 0 - case SNeutrinoSettings::ITEM_TUNER_RESTART: + } + case SNeutrinoSettings::ITEM_GAMES: + { keyhelper.get(&key,&icon); - menu_item = new CMenuForwarder(LOCALE_SERVICEMENU_RESTART_TUNER, true, NULL, neutrino, "restarttuner", key, icon); - menu_item->setHint(NEUTRINO_ICON_HINT_RELOAD_CHANNELS, LOCALE_MENU_HINT_RESTART_TUNER); + menu_item = new CMenuDForwarder(LOCALE_MAINMENU_GAMES, g_PluginList->hasPlugin(CPlugins::P_TYPE_GAME), NULL, new CPluginList(LOCALE_MAINMENU_GAMES,CPlugins::P_TYPE_GAME), "-1", key, icon ); + menu_item->setHint(NEUTRINO_ICON_HINT_GAMES, LOCALE_MENU_HINT_GAMES); break; - case SNeutrinoSettings::ITEM_RASS: - if (!(neutrino->getMode() == CNeutrinoApp::mode_radio && g_Radiotext && g_Radiotext->haveRASS())) - continue; + } + case SNeutrinoSettings::ITEM_SCRIPTS: + { keyhelper.get(&key,&icon); - menu_item = new CMenuForwarder(LOCALE_RASS_HEAD, true, NULL, neutrino, "rass", key, icon); - menu_item->setHint(NEUTRINO_ICON_HINT_RASS, LOCALE_MENU_HINT_RASS); + menu_item = new CMenuDForwarder(LOCALE_MAINMENU_SCRIPTS, g_PluginList->hasPlugin(CPlugins::P_TYPE_SCRIPT), NULL, new CPluginList(LOCALE_MAINMENU_SCRIPTS,CPlugins::P_TYPE_SCRIPT), "-1", key, icon ); + menu_item->setHint(NEUTRINO_ICON_HINT_SCRIPTS, LOCALE_MENU_HINT_SCRIPTS); break; - case SNeutrinoSettings::ITEM_NETZKINO: - keyhelper.get(&key,&icon); - menu_item = new CMenuForwarder(LOCALE_MOVIEPLAYER_NKPLAYBACK, true, NULL, neutrino, "nkplayback", key, icon); - menu_item->setHint(NEUTRINO_ICON_HINT_NKPLAY, LOCALE_MENU_HINT_NKPLAY); - break; -#endif -#if 0 - case SNeutrinoSettings::ITEM_THREE_D_MODE: - keyhelper.get(&key,&icon); - menu_item = new CMenuForwarder(LOCALE_THREE_D_SETTINGS, true, NULL, neutrino, "3dmode", key, icon); - menu_item->setHint("", LOCALE_MENU_HINT_VIDEO_THREE_D); - break; -#endif + } case SNeutrinoSettings::ITEM_YOUTUBE: + { keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_MOVIEPLAYER_YTPLAYBACK, !_mode_ts, NULL, neutrino, "ytplayback", key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_YTPLAY, LOCALE_MENU_HINT_YTPLAY); break; + } case SNeutrinoSettings::ITEM_FILEPLAY: + { keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_MOVIEPLAYER_FILEPLAYBACK, !_mode_ts, NULL, neutrino, "fileplayback", key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_FILEPLAY, LOCALE_MENU_HINT_FILEPLAY); break; - case SNeutrinoSettings::ITEM_AUDIOPLAY: + } + case SNeutrinoSettings::ITEM_TOOLS: + { keyhelper.get(&key,&icon); - menu_item = new CMenuForwarder(LOCALE_AUDIOPLAYER_NAME, true, NULL, neutrino, "audioplayer", key, icon); - menu_item->setHint(NEUTRINO_ICON_HINT_APLAY, LOCALE_MENU_HINT_APLAY); + menu_item = new CMenuDForwarder(LOCALE_MAINMENU_TOOLS, g_PluginList->hasPlugin(CPlugins::P_TYPE_TOOL), NULL, new CPluginList(LOCALE_MAINMENU_TOOLS,CPlugins::P_TYPE_TOOL), "-1", key, icon ); + // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; - case SNeutrinoSettings::ITEM_INETPLAY: + } + case SNeutrinoSettings::ITEM_LUA: + { keyhelper.get(&key,&icon); - menu_item = new CMenuForwarder(LOCALE_INETRADIO_NAME, true, NULL, neutrino, "inetplayer", key, icon); - menu_item->setHint(NEUTRINO_ICON_HINT_INET_RADIO, LOCALE_MENU_HINT_INET_RADIO); + menu_item = new CMenuDForwarder(LOCALE_MAINMENU_LUA, g_PluginList->hasPlugin(CPlugins::P_TYPE_LUA), NULL, new CPluginList(LOCALE_MAINMENU_LUA,CPlugins::P_TYPE_LUA), "-1", key, icon ); + // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; + } case SNeutrinoSettings::ITEM_HDDMENU: + { keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_HDD_SETTINGS, true, NULL, CHDDMenuHandler::getInstance(), NULL, key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_HDD, LOCALE_MENU_HINT_HDD); break; + } + case SNeutrinoSettings::ITEM_AUDIOPLAY: + { + keyhelper.get(&key,&icon); + menu_item = new CMenuForwarder(LOCALE_AUDIOPLAYER_NAME, true, NULL, neutrino, "audioplayer", key, icon); + menu_item->setHint(NEUTRINO_ICON_HINT_APLAY, LOCALE_MENU_HINT_APLAY); + break; + } + case SNeutrinoSettings::ITEM_INETPLAY: + { + keyhelper.get(&key,&icon); + menu_item = new CMenuForwarder(LOCALE_INETRADIO_NAME, true, NULL, neutrino, "inetplayer", key, icon); + menu_item->setHint(NEUTRINO_ICON_HINT_INET_RADIO, LOCALE_MENU_HINT_INET_RADIO); + break; + } case SNeutrinoSettings::ITEM_NETSETTINGS: + { keyhelper.get(&key,&icon); menu_item = new CMenuForwarder(LOCALE_MAINSETTINGS_NETWORK, true, NULL, CNetworkSetup::getInstance(), NULL, key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_NETWORK, LOCALE_MENU_HINT_NETWORK); break; + } case SNeutrinoSettings::ITEM_SWUPDATE: + { keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_SERVICEMENU_UPDATE, true, NULL, new CSoftwareUpdate(), NULL, key, icon); menu_item->setHint(NEUTRINO_ICON_HINT_SW_UPDATE, LOCALE_MENU_HINT_SW_UPDATE); break; + } case SNeutrinoSettings::ITEM_LIVESTREAM_RESOLUTION: + { if (!_mode_webtv) break; keyhelper.get(&key,&icon); menu_item = new CMenuDForwarder(LOCALE_LIVESTREAM_RESOLUTION, true, NULL, new CWebTVResolution(), NULL, key, icon); - //menu_item->setHint(xx, yy); + // FIXME menu_item->setHint("", NONEXISTANT_LOCALE); break; + } + case SNeutrinoSettings::ITEM_ADZAP: + { + keyhelper.get(&key,&icon,CRCInput::RC_blue); + menu_item = new CMenuForwarder(LOCALE_USERMENU_ITEM_ADZAP, true, adzap_active ? g_Locale->getText(LOCALE_OPTIONS_OFF) : NULL, CAdZapMenu::getInstance(), "adzap", key, icon); + menu_item->setHint(NEUTRINO_ICON_HINT_ADZAP, adzap_active ? LOCALE_MENU_HINT_ADZAP_ACTIVE : LOCALE_MENU_HINT_ADZAP); + break; + } case -1: // plugin - { + { int number_of_plugins = g_PluginList->getNumberOfPlugins(); if (!number_of_plugins) continue; @@ -467,8 +502,9 @@ bool CUserMenu::showUserMenu(neutrino_msg_t msg) } if (count == number_of_plugins) continue; - } } + + } // switch end itemstr_last = *it; if (menu_item) { diff --git a/src/gui/user_menue_setup.cpp b/src/gui/user_menue_setup.cpp index 3ec438795..876b23e31 100644 --- a/src/gui/user_menue_setup.cpp +++ b/src/gui/user_menue_setup.cpp @@ -53,13 +53,6 @@ #include static bool usermenu_show = true; -#if 0 -#if HAVE_SPARK_HARDWARE -static bool usermenu_show_three_d_mode = true; -#else -static bool usermenu_show_three_d_mode = false; -#endif -#endif #if HAVE_SPARK_HARDWARE static bool usermenu_show_cam = false; // FIXME -- use hwcaps? #else @@ -82,33 +75,27 @@ static keyvals usermenu_items[] = { SNeutrinoSettings::ITEM_EPG_MISC, LOCALE_USERMENU_ITEM_EPG_MISC, usermenu_show }, { SNeutrinoSettings::ITEM_AUDIO_SELECT, LOCALE_AUDIOSELECTMENUE_HEAD, usermenu_show }, { SNeutrinoSettings::ITEM_SUBCHANNEL, LOCALE_NVODSELECTOR_HEAD, usermenu_show }, - { SNeutrinoSettings::ITEM_FILEPLAY, LOCALE_MOVIEPLAYER_FILEPLAYBACK, usermenu_show }, - { SNeutrinoSettings::ITEM_AUDIOPLAY, LOCALE_AUDIOPLAYER_NAME, usermenu_show }, - { SNeutrinoSettings::ITEM_INETPLAY, LOCALE_INETRADIO_NAME, usermenu_show }, + { SNeutrinoSettings::ITEM_RECORD, LOCALE_TIMERLIST_TYPE_RECORD, usermenu_show }, { SNeutrinoSettings::ITEM_MOVIEPLAYER_MB, LOCALE_MOVIEBROWSER_HEAD, usermenu_show }, { SNeutrinoSettings::ITEM_TIMERLIST, LOCALE_TIMERLIST_NAME, usermenu_show }, - { SNeutrinoSettings::ITEM_REMOTE, LOCALE_RCLOCK_TITLE, usermenu_show }, + { SNeutrinoSettings::ITEM_VTXT, LOCALE_USERMENU_ITEM_VTXT, usermenu_show }, { SNeutrinoSettings::ITEM_FAVORITS, LOCALE_FAVORITES_MENUEADD, usermenu_show }, { SNeutrinoSettings::ITEM_TECHINFO, LOCALE_EPGMENU_STREAMINFO, usermenu_show }, + { SNeutrinoSettings::ITEM_REMOTE, LOCALE_RCLOCK_TITLE, usermenu_show }, { SNeutrinoSettings::ITEM_PLUGIN_TYPES, LOCALE_USERMENU_ITEM_PLUGIN_TYPES, usermenu_show }, - { SNeutrinoSettings::ITEM_VTXT, LOCALE_USERMENU_ITEM_VTXT, usermenu_show }, { SNeutrinoSettings::ITEM_IMAGEINFO, LOCALE_SERVICEMENU_IMAGEINFO, usermenu_show }, { SNeutrinoSettings::ITEM_BOXINFO, LOCALE_EXTRA_DBOXINFO, usermenu_show }, { SNeutrinoSettings::ITEM_CAM, LOCALE_CI_SETTINGS, usermenu_show_cam }, { SNeutrinoSettings::ITEM_CLOCK, LOCALE_CLOCK_SWITCH_ON, usermenu_show }, { SNeutrinoSettings::ITEM_GAMES, LOCALE_MAINMENU_GAMES, usermenu_show }, - { SNeutrinoSettings::ITEM_TOOLS, LOCALE_MAINMENU_TOOLS, usermenu_show }, { SNeutrinoSettings::ITEM_SCRIPTS, LOCALE_MAINMENU_SCRIPTS, usermenu_show }, - { SNeutrinoSettings::ITEM_LUA, LOCALE_MAINMENU_LUA, usermenu_show }, -#if 0 - { SNeutrinoSettings::ITEM_TUNER_RESTART, LOCALE_SERVICEMENU_RESTART_TUNER, usermenu_show }, - { SNeutrinoSettings::ITEM_THREE_D_MODE, LOCALE_THREE_D_SETTINGS, usermenu_show_three_d_mode }, - { SNeutrinoSettings::ITEM_RASS, LOCALE_RASS_HEAD, usermenu_show }, - { SNeutrinoSettings::ITEM_NETZKINO, LOCALE_MOVIEPLAYER_NKPLAYBACK, usermenu_show }, -#endif { SNeutrinoSettings::ITEM_YOUTUBE, LOCALE_MOVIEPLAYER_YTPLAYBACK, usermenu_show }, - { SNeutrinoSettings::ITEM_RECORD, LOCALE_TIMERLIST_TYPE_RECORD, usermenu_show }, + { SNeutrinoSettings::ITEM_FILEPLAY, LOCALE_MOVIEPLAYER_FILEPLAYBACK, usermenu_show }, + { SNeutrinoSettings::ITEM_TOOLS, LOCALE_MAINMENU_TOOLS, usermenu_show }, + { SNeutrinoSettings::ITEM_LUA, LOCALE_MAINMENU_LUA, usermenu_show }, { SNeutrinoSettings::ITEM_HDDMENU, LOCALE_HDD_SETTINGS, usermenu_show }, + { SNeutrinoSettings::ITEM_AUDIOPLAY, LOCALE_AUDIOPLAYER_NAME, usermenu_show }, + { SNeutrinoSettings::ITEM_INETPLAY, LOCALE_INETRADIO_NAME, usermenu_show }, { SNeutrinoSettings::ITEM_NETSETTINGS, LOCALE_MAINSETTINGS_NETWORK, usermenu_show }, { SNeutrinoSettings::ITEM_SWUPDATE, LOCALE_SERVICEMENU_UPDATE, usermenu_show }, { SNeutrinoSettings::ITEM_LIVESTREAM_RESOLUTION,LOCALE_LIVESTREAM_RESOLUTION, usermenu_show }, @@ -267,7 +254,6 @@ int CUserMenuSetup::showSetup() return res; } - //check button name for details like empty string and show an user message on issue void CUserMenuSetup::checkButtonName() { diff --git a/src/gui/user_menue_setup.h b/src/gui/user_menue_setup.h index f622eadf5..0bdeebf47 100644 --- a/src/gui/user_menue_setup.h +++ b/src/gui/user_menue_setup.h @@ -59,7 +59,6 @@ const struct usermenu_props_t usermenu[USERMENU_ITEMS_COUNT] = {LOCALE_USERMENU_BUTTON_BLUE , SNeutrinoSettings::BUTTON_BLUE , CRCInput::RC_blue ,NEUTRINO_ICON_BUTTON_BLUE ,LOCALE_USERMENU_TITLE_BLUE } }; - class CUserMenuSetup : public CMenuTarget { private: @@ -87,5 +86,4 @@ class CUserMenuSetup : public CMenuTarget static neutrino_locale_t getLocale(unsigned int i); }; - #endif diff --git a/src/gui/volumebar.cpp b/src/gui/volumebar.cpp index 52f4af4ed..982c15e12 100644 --- a/src/gui/volumebar.cpp +++ b/src/gui/volumebar.cpp @@ -34,6 +34,7 @@ #include #include #include +#include using namespace std; @@ -260,9 +261,23 @@ CVolumeHelper::CVolumeHelper() frameBuffer = CFrameBuffer::getInstance(); + CNeutrinoApp::getInstance()->OnAfterSetupFonts.connect(sigc::mem_fun(this, &CVolumeHelper::resetFont)); + Init(); } +void CVolumeHelper::resetFont() +{ + if (vb_font){ + vb_font = NULL; + dprintf(DEBUG_INFO, "\033[33m[CVolumeHelper][%s - %d] reset vb font \033[0m\n", __func__, __LINE__); + } + if (clock_font){ + clock_font = NULL; + dprintf(DEBUG_INFO, "\033[33m[CVolumeHelper][%s - %d] reset clock font \033[0m\n", __func__, __LINE__); + } +} + void CVolumeHelper::Init(Font* font) { @@ -278,17 +293,14 @@ void CVolumeHelper::Init(Font* font) void CVolumeHelper::initInfoClock(Font* font) { - if (clock_font == NULL){ - if (font == NULL) { - clock_font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]; - } - else - clock_font = font; - } - else { - if (font != NULL) - clock_font = font; + if (font == NULL) { + int dx = 0; + int dy = g_settings.infoClockFontSize; + clock_font = *CNeutrinoFonts::getInstance()->getDynFont(dx, dy, g_settings.infoClockSeconds ? "%H:%M:%S" : "%H:%M"); } + else + clock_font = font; + digit_offset = (clock_font)->getDigitOffset(); digit_h = (clock_font)->getDigitHeight(); int t1 = (clock_font)->getMaxDigitWidth(); diff --git a/src/gui/volumebar.h b/src/gui/volumebar.h index 1f09a056b..62ce4d90c 100644 --- a/src/gui/volumebar.h +++ b/src/gui/volumebar.h @@ -108,6 +108,7 @@ class CVolumeHelper Font* clock_font; CFrameBuffer *frameBuffer; + void resetFont(); void Init(Font* font=NULL); void initVolBarSize(); void initMuteIcon(); diff --git a/src/gui/widget/Makefile.am b/src/gui/widget/Makefile.am index 17a932b04..5da8d7ebe 100644 --- a/src/gui/widget/Makefile.am +++ b/src/gui/widget/Makefile.am @@ -17,7 +17,6 @@ noinst_LIBRARIES = libneutrino_gui_widget.a libneutrino_gui_widget2.a libneutrino_gui_widget_a_SOURCES = \ buttons.cpp \ colorchooser.cpp \ - drawable.cpp \ helpbox.cpp \ hintbox.cpp \ keychooser.cpp \ diff --git a/src/gui/widget/drawable.cpp b/src/gui/widget/drawable.cpp deleted file mode 100644 index 0319e34ff..000000000 --- a/src/gui/widget/drawable.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/* - Neutrino-GUI - DBoxII-Project - - Copyright (C) 2001 Steffen Hehn 'McClean' - Homepage: http://dbox.cyberphoria.org/ - - Kommentar: - - Diese GUI wurde von Grund auf neu programmiert und sollte nun vom - Aufbau und auch den Ausbaumoeglichkeiten gut aussehen. Neutrino basiert - auf der Client-Server Idee, diese GUI ist also von der direkten DBox- - Steuerung getrennt. Diese wird dann von Daemons uebernommen. - - - License: GPL - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include - -#include - -#include -#include - -Drawable::Drawable() -{ -} - -Drawable::~Drawable() -{ -} - -int Drawable::getWidth(void) -{ - return m_width; -} - -int Drawable::getHeight(void) -{ - return m_height; -} - -Drawable::DType Drawable::getType(void) -{ - return Drawable::DTYPE_DRAWABLE; -} - - -// ------------------------------------------------------------------------------ -DText::DText(std::string& text) -{ - m_text = text; - init(); -} - -DText::DText(const char *text) -{ - m_text = std::string(text); - init(); -} - -void DText::init() -{ - m_width = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(m_text); - m_height = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight(); -} - - -void DText::draw(CFBWindow *window, int x, int y, int width) -{ - window->RenderString(g_Font[SNeutrinoSettings::FONT_TYPE_MENU], x, y + m_height, width, - m_text.c_str(), COL_MENUCONTENT_TEXT); -} - -void DText::print(void) -{ - std::cout << " text: " << m_text; -} - -// ------------------------------------------------------------------------------ -DIcon::DIcon(std::string& icon) -{ - m_icon = icon; - init(); -} - -DIcon::DIcon(const char *icon) -{ - m_icon = std::string(icon); - init(); -} - -void DIcon::init() -{ - m_height = 16; - m_width = 16; -} - -void DIcon::draw(CFBWindow *window, int x, int y, int /*width*/) -{ - window->paintIcon(m_icon.c_str(), x, y); -} - -void DIcon::print(void) -{ - std::cout << " icon: " << m_icon; -} - -// ------------------------------------------------------------------------------ -DPagebreak::DPagebreak() -{ - m_height = 0; - m_width = 0; -} - -void DPagebreak::draw(CFBWindow */*window*/, int /*x*/, int /*y*/, int /*width*/) -{ -// window->RenderString(g_Font[SNeutrinoSettings::FONT_TYPE_MENU], -// x, y + m_height, width, "", -// COL_MENUCONTENT_TEXT); -} - -void DPagebreak::print(void) -{ - std::cout << ""; -} - -Drawable::DType DPagebreak::getType(void) -{ - return Drawable::DTYPE_PAGEBREAK; -} diff --git a/src/gui/widget/drawable.h b/src/gui/widget/drawable.h deleted file mode 100644 index 744f4446e..000000000 --- a/src/gui/widget/drawable.h +++ /dev/null @@ -1,164 +0,0 @@ -/* - Neutrino-GUI - DBoxII-Project - - Copyright (C) 2001 Steffen Hehn 'McClean' - Homepage: http://dbox.cyberphoria.org/ - - Kommentar: - - Diese GUI wurde von Grund auf neu programmiert und sollte nun vom - Aufbau und auch den Ausbaumoeglichkeiten gut aussehen. Neutrino basiert - auf der Client-Server Idee, diese GUI ist also von der direkten DBox- - Steuerung getrennt. Diese wird dann von Daemons uebernommen. - - - License: GPL - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - - -#ifndef __drawable__ -#define __drawable__ - -#include -#include - -#include -#include - -class Drawable; - -typedef std::vector > ContentLines; - - -/** - * The base class for items which can be drawn on a CFBWindow. - */ -class Drawable -{ -public: - - enum DType { - DTYPE_DRAWABLE, - DTYPE_PAGEBREAK - }; - - virtual ~Drawable(); - - /** - * Overwrite this method in subclasses to draw on the window - * - * @param window the window to draw on - * @param x x component of the top left corner - * @param y y component of the top left corner - */ - virtual void draw(CFBWindow *window, int x, int y, int width) = 0; - - virtual int getWidth(void); - - virtual int getHeight(void); - - /** - * Overwrite this method in subclasses to print some info - * about the content. Mainly used for debuging ;) - */ - virtual void print(void) = 0; - - /** - * Returns the type of this drawable. Used to distinguish between - * drawing objects and control objects like pagebreaks. - * @return the type of this drawable. - */ - virtual DType getType(); - -protected: - - Drawable(); - - int m_height; - - int m_width; - -private: - -}; - -/** - * This class draws a given string. - */ -class DText : public Drawable -{ -public: - DText(std::string& text); - - DText(const char *text); - - void init(); - - void draw(CFBWindow *window, int x, int y, int width); - - void print(); - -protected: - - std::string m_text; - -}; - - -/** - * This class draws a given icon. - */ -class DIcon : public Drawable -{ -public: - DIcon(std::string& icon); - - DIcon(const char *icon); - - void init(); - - void draw(CFBWindow *window, int x, int y, int width); - - void print(); - -protected: - - std::string m_icon; -}; - -/** - * This class is used as a control object and forces a new page - * in scrollable windows. - */ -class DPagebreak : public Drawable -{ -public: - DPagebreak(); - - void draw(CFBWindow *window, int x, int y, int width); - - void print(); - - DType getType(); - -protected: - -private: - -}; - -#endif diff --git a/src/gui/widget/helpbox.cpp b/src/gui/widget/helpbox.cpp index 75969a502..4169b5d13 100644 --- a/src/gui/widget/helpbox.cpp +++ b/src/gui/widget/helpbox.cpp @@ -26,7 +26,6 @@ #include #endif - #include #include #include @@ -36,35 +35,31 @@ using namespace std; Helpbox::Helpbox( const string& Title, const string& Default_Text, const int& text_mode, - const int& line_space, + const int& line_height, Font* default_font_text, const char* Icon): CComponentsWindowMax( Title, Icon, NULL, - CC_SHADOW_ON, - COL_MENUCONTENT_PLUS_6, - COL_MENUCONTENT_PLUS_0, - COL_SHADOW_PLUS_0) + CC_SHADOW_ON) { page = 0; - hbox_y = 1; + hbox_y = 0; setWindowHeaderButtons(CComponentsHeader::CC_BTN_MENU | CComponentsHeader::CC_BTN_EXIT); ccw_footer->setButtonLabel(NEUTRINO_ICON_BUTTON_HOME, LOCALE_MESSAGEBOX_BACK); hbox_font = default_font_text; - if (default_font_text == NULL) + if (hbox_font == NULL) hbox_font = g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO]; if (!Default_Text.empty()) - addLine(Default_Text.c_str(), Default_Text, text_mode, line_space, HELPBOX_DEFAULT_LINE_INDENT ,hbox_font); + addLine(Default_Text.c_str(), Default_Text, text_mode, line_height, HELPBOX_DEFAULT_LINE_INDENT, hbox_font); //ensure hided channellist, because shared RC_ok CNeutrinoApp::getInstance()->allowChannelList(false); } - -void Helpbox::addLine(const std::string& icon, const std::string& text, const int& text_mode, const int& line_space, const int& line_indent, Font* font_text) +void Helpbox::addLine(const std::string& icon, const std::string& text, const int& text_mode, const int& line_height, const int& line_indent, Font* font_text) { CComponentsItem *pre_item = !ccw_body->empty() ? ccw_body->back() : NULL; //get the last current item @@ -73,52 +68,61 @@ void Helpbox::addLine(const std::string& icon, const std::string& text, const in hbox_y = pre_item->getYPos() + pre_item->getHeight(); } - int h_line = line_space; Font* font = hbox_font; - if (font_text){ - h_line = max(h_line, font_text->getHeight()); + if (font_text) font = font_text; - } + + int h_line = getLineHeight(line_height, font); CComponentsFrmChain *line = new CComponentsFrmChain(line_indent, hbox_y, 0, h_line); - if ((hbox_y + h_line)>ccw_body->getHeight()){ - addPagebreak(); - line->setYPos(hbox_y); - } - line->setPageNumber(page); int w_body = ccw_body->getWidth(); - line->setWidth(w_body - line_indent - 40); + line->setWidth(w_body - 2*line_indent); line->setXPos(line_indent); line->setColorBody(ccw_body->getColorBody()); CComponentsPicture *picon = NULL; int w_picon = 0; + int h_picon = 0; if (!icon.empty()){ picon = new CComponentsPicture (0, 0, icon); - w_picon = picon->getHeight(); + w_picon = picon->getWidth(); + h_picon = picon->getHeight(); picon->doPaintBg(false); - picon->setYPos(line->getHeight()/2 - w_picon/2); + picon->setYPos(line->getHeight()/2 - h_picon/2); picon->SetTransparent(CFrameBuffer::TM_BLACK); line->addCCItem(picon); } + int txt_height = 0; if (!text.empty()){ - int x_text = w_picon + (picon ? 10 : 0); - CComponentsText * txt = new CComponentsText(x_text, 0, line->getWidth()-x_text, line_space, text, text_mode, font); + int x_text = w_picon + (picon ? OFFSET_INNER_MID : 0); + CComponentsText * txt = new CComponentsText(x_text, 0, line->getWidth()-x_text, 0, text, text_mode, font); #if 0 //"contrast agent", if you want to see where the text items are drawn. txt->setColorBody(COL_RED); txt->doPaintBg(true); #endif + int lines = txt->getCTextBoxObject()->getLines(); + txt_height = std::max(lines*font->getHeight(), h_line); + txt->setHeight(txt_height); + line->addCCItem(txt); } + + if (txt_height > line->getHeight()) + line->setHeight(txt_height); + + if ((hbox_y + line->getHeight()) > ccw_body->getHeight()) + { + addPagebreak(); + line->setYPos(hbox_y); + } + line->setPageNumber(page); + addWindowItem(line); } - - - -void Helpbox::addSeparatorLine(const int& line_space, const int& line_indent) +void Helpbox::addSeparatorLine(const int& line_height, const int& line_indent) { CComponentsItem *pre_item = !ccw_body->empty() ? ccw_body->back() : NULL; //get the last current item @@ -127,13 +131,11 @@ void Helpbox::addSeparatorLine(const int& line_space, const int& line_indent) hbox_y = pre_item->getYPos() + pre_item->getHeight(); } - int h_line = line_space; - - CComponentsFrmChain *line = new CComponentsFrmChain(line_indent, hbox_y, 0, h_line); + CComponentsFrmChain *line = new CComponentsFrmChain(line_indent, hbox_y, 0, getLineHeight(line_height, hbox_font, true)); line->setPageNumber(page); int w_body = ccw_body->getWidth(); - line->setWidth(w_body - line_indent - 40); + line->setWidth(w_body - 2*line_indent); line->setXPos(line_indent); line->setColorBody(ccw_body->getColorBody()); @@ -151,7 +153,7 @@ void Helpbox::addSeparatorLine(const int& line_space, const int& line_indent) addWindowItem(line); } -void Helpbox::addSeparator(const int& line_space) +void Helpbox::addSeparator(const int& line_height) { CComponentsItem *pre_item = !ccw_body->empty() ? ccw_body->back() : NULL; //get the last current item @@ -160,7 +162,7 @@ void Helpbox::addSeparator(const int& line_space) hbox_y = pre_item->getYPos() + pre_item->getHeight(); } - CComponentsFrmChain *line = new CComponentsFrmChain(0, hbox_y, 0, line_space); + CComponentsFrmChain *line = new CComponentsFrmChain(0, hbox_y, 0, getLineHeight(line_height, hbox_font, true)); line->setPageNumber(page); int w_body = ccw_body->getWidth(); @@ -170,29 +172,21 @@ void Helpbox::addSeparator(const int& line_space) addWindowItem(line); } - - - - -void Helpbox::addLine(const char *icon, const char *text, const int& text_mode, const int& line_space, const int& line_indent, Font* font_text) +void Helpbox::addLine(const char *icon, const char *text, const int& text_mode, const int& line_height, const int& line_indent, Font* font_text) { - addLine(icon, std::string(text), text_mode, line_space, line_indent, font_text); - + addLine(icon, std::string(text), text_mode, line_height, line_indent, font_text); } - -void Helpbox::addLine(const char *text, const int& text_mode, const int& line_space, const int& line_indent, Font* font_text) +void Helpbox::addLine(const char *text, const int& text_mode, const int& line_height, const int& line_indent, Font* font_text) { - addLine("", std::string(text), text_mode, line_space, line_indent, font_text); + addLine("", std::string(text), text_mode, line_height, line_indent, font_text); } -void Helpbox::addLine(const std::string& text, const int& text_mode, const int& line_space, const int& line_indent, Font* font_text) +void Helpbox::addLine(const std::string& text, const int& text_mode, const int& line_height, const int& line_indent, Font* font_text) { - addLine("", text, text_mode, line_space, line_indent, font_text); + addLine("", text, text_mode, line_height, line_indent, font_text); } - - void Helpbox::addPagebreak(void) { page ++; @@ -200,3 +194,15 @@ void Helpbox::addPagebreak(void) hbox_y = 1; } +int Helpbox::getLineHeight(int line_height, Font* font_text, bool separator) +{ + if (font_text == NULL) + return 0; // should not happen + + int h = max(line_height, font_text->getHeight()); + + if (separator) + return h/2; // separators uses half height + + return h; +} diff --git a/src/gui/widget/helpbox.h b/src/gui/widget/helpbox.h index b59b36050..ed173f7fa 100644 --- a/src/gui/widget/helpbox.h +++ b/src/gui/widget/helpbox.h @@ -29,8 +29,9 @@ #include #include -#define HELPBOX_DEFAULT_LINE_HEIGHT 35 -#define HELPBOX_DEFAULT_LINE_INDENT 10 +#define HELPBOX_DEFAULT_LINE_HEIGHT 0 // use font height as default +#define HELPBOX_DEFAULT_LINE_INDENT OFFSET_INNER_MID +#define HELPBOX_DEFAULT_TEXT_MODE CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH class Helpbox : public CComponentsWindowMax { @@ -39,52 +40,128 @@ private: //start position of items on page int hbox_y; + int getLineHeight(int line_height, Font* font_text, bool separator = false); + ///default font Font* hbox_font; public: + /** + * Creates a window with pre defined items added with addLine() or + * inhertited addWindowItem() methods. This allows to add any compatible cc-items types + * e.g. Text, label, infobox, images ... + * NOTE: addLine() members are used only for compatibilty with older implementation + * of lines. + * @param[in] Title + * @li exepts type std::string, defines caption of window + * @param[in] Default_Text + * @li optional: exepts type std::string, defines a pre defined help text + * @param[in] text_mode + * @li optional: exepts type int, defines text modes, see /gui/widget/textbox.h for possible modes + * @param[in] line_height + * @li optional: exepts type int, defines height of line + * @param[in] line_indent + * @li optional: exepts type int, defines lenght of indent from left + * @param[in] font_text + * @li optional: exepts type Font*, default = NULL, this means SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO is used + * @param[in] Icon + * @li exepts type const char*, defins the title bar icon and can be name (see /gui/icons.h) or path to an image file + */ Helpbox( const std::string& Title, const std::string& Default_Text = std::string(), - const int& text_mode = CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, - const int& line_space = HELPBOX_DEFAULT_LINE_HEIGHT, + const int& text_mode = HELPBOX_DEFAULT_TEXT_MODE, + const int& line_height = HELPBOX_DEFAULT_LINE_HEIGHT, Font* font_text = NULL, const char* Icon = NEUTRINO_ICON_INFO); ///show = paint, for compatibility void show(bool do_save_bg = true){ paint(do_save_bg) ;} + + /**Adds an item with pre defined text + * @param[in] text + * @li exepts type std::string + * @param[in] text_mode + * @li optional: exepts type int, defines text modes, see /gui/widget/textbox.h for possible modes + * @param[in] line_height + * @li optional: exepts type int, defines height of line + * @param[in] line_indent + * @li optional: exepts type int, defines lenght of indent from left + * @param[in] font_text + * @li optional: exepts type Font*, default = NULL, this means SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO is used + */ void addLine( const std::string& text, - const int& text_mode = CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, - const int& line_space = HELPBOX_DEFAULT_LINE_HEIGHT, + const int& text_mode = HELPBOX_DEFAULT_TEXT_MODE, + const int& line_height = HELPBOX_DEFAULT_LINE_HEIGHT, const int& line_indent = HELPBOX_DEFAULT_LINE_INDENT, Font* font_text = NULL); + /**Adds an item with pre defined text + * @param[in] text + * @li exepts type const char * + * @param[in] text_mode + * @li optional: exepts type int, defines text modes, see /gui/widget/textbox.h for possible modes + * @param[in] line_height + * @li optional: exepts type int, defines height of line + * @param[in] line_indent + * @li optional: exepts type int, defines lenght of indent from left + * @param[in] font_text + * @li optional: exepts type Font*, default = NULL, this means SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO is used + */ void addLine( const char *text, - const int& text_mode = CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, - const int& line_space = HELPBOX_DEFAULT_LINE_HEIGHT, + const int& text_mode = HELPBOX_DEFAULT_TEXT_MODE, + const int& line_height = HELPBOX_DEFAULT_LINE_HEIGHT, const int& line_indent = HELPBOX_DEFAULT_LINE_INDENT, Font* font_text = NULL); + /**Adds an item with pre defined icon and text + * @param[in] icon + * @li exepts type std::string, icon can be name (see /gui/icons.h) or path to an image file + * @param[in] text + * @li exepts type std::string + * @param[in] text_mode + * @li optional: exepts type int, defines text modes, see /gui/widget/textbox.h for possible modes + * @param[in] line_height + * @li optional: exepts type int, defines height of line + * @param[in] line_indent + * @li optional: exepts type int, defines lenght of indent from left + * @param[in] font_text + * @li optional: exepts type Font*, default = NULL, this means SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO is used + */ void addLine( const std::string& icon, const std::string& text, - const int& text_mode = CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, - const int& line_space = HELPBOX_DEFAULT_LINE_HEIGHT, + const int& text_mode = HELPBOX_DEFAULT_TEXT_MODE, + const int& line_height = HELPBOX_DEFAULT_LINE_HEIGHT, const int& line_indent = HELPBOX_DEFAULT_LINE_INDENT, Font* font_text = NULL); + /**Adds an item with pre defined icon and text + * @param[in] icon + * @li exepts type const char *, icon can be name (see /gui/icons.h) or path to an image file + * @param[in] text + * @li exepts type const char * + * @param[in] text_mode + * @li optional: exepts type int, defines text modes, see /gui/widget/textbox.h for possible modes + * @param[in] line_height + * @li optional: exepts type int, defines height of line + * @param[in] line_indent + * @li optional: exepts type int, defines lenght of indent from left + * @param[in] font_text + * @li optional: exepts type Font*, default = NULL, this means SNeutrinoSettings::FONT_TYPE_INFOBAR_INFO is used + */ void addLine( const char *icon, const char *text, - const int& text_mode = CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH, - const int& line_space = HELPBOX_DEFAULT_LINE_HEIGHT, + const int& text_mode = HELPBOX_DEFAULT_TEXT_MODE, + const int& line_height = HELPBOX_DEFAULT_LINE_HEIGHT, const int& line_indent = HELPBOX_DEFAULT_LINE_INDENT, Font* font_text = NULL); - - ///adds a separator as horizontal line, arg 'line_space' defines the space of full separator height, the separator line itself has a defined height of 2px and is centered within line space. + + ///adds a separator as horizontal line, arg 'line_height' defines the space of full separator height, the separator line itself has a defined height of 2px and is centered within line space. ///arg 'line_indent' defines begin of line from left border within body object. - ///arg 'enable_gradient' enable/disable gradient, Note: default = true, but gradient is only effected, if global/theme gradient settings are enabled! - void addSeparatorLine( const int& line_space = HELPBOX_DEFAULT_LINE_HEIGHT, + ///gradient is only effected, if global/theme gradient settings are enabled! + void addSeparatorLine( const int& line_height = HELPBOX_DEFAULT_LINE_HEIGHT, const int& line_indent = HELPBOX_DEFAULT_LINE_INDENT); - ///adds a simple empty separator as horizontal space, arg 'line_space' defines the space of full separator height - void addSeparator( const int& line_space = HELPBOX_DEFAULT_LINE_HEIGHT); + ///adds a simple empty separator as horizontal space, arg 'line_height' defines the space of full separator height + void addSeparator( const int& line_height = HELPBOX_DEFAULT_LINE_HEIGHT); void addPagebreak(); diff --git a/src/gui/widget/hintbox.cpp b/src/gui/widget/hintbox.cpp index 6d64e7fc1..9be2aae6f 100644 --- a/src/gui/widget/hintbox.cpp +++ b/src/gui/widget/hintbox.cpp @@ -65,7 +65,7 @@ CHintBox::CHintBox( const neutrino_locale_t Caption, const char * const Picon, const int& header_buttons, const int& text_mode, - const int& indent): CComponentsWindow( 1, 1, width, + const int& indent): CComponentsWindow( 0, 0, width, HINTBOX_MIN_HEIGHT, Caption, string(Icon == NULL ? "" : Icon), @@ -82,7 +82,7 @@ CHintBox::CHintBox( const char * const Caption, const char * const Picon, const int& header_buttons, const int& text_mode, - const int& indent):CComponentsWindow( 1, 1, width, + const int& indent):CComponentsWindow( 0, 0, width, HINTBOX_MIN_HEIGHT, Caption, string(Icon == NULL ? "" : Icon), @@ -99,7 +99,7 @@ CHintBox::CHintBox( const neutrino_locale_t Caption, const char * const Picon, const int& header_buttons, const int& text_mode, - const int& indent):CComponentsWindow( 1, 1, width, + const int& indent):CComponentsWindow( 0, 0, width, HINTBOX_MIN_HEIGHT, Caption, string(Icon == NULL ? "" : Icon), @@ -116,7 +116,7 @@ CHintBox::CHintBox( const char * const Caption, const char * const Picon, const int& header_buttons, const int& text_mode, - const int& indent):CComponentsWindow( 1, 1, width, + const int& indent):CComponentsWindow( 0, 0, width, HINTBOX_MIN_HEIGHT, Caption, string(Icon == NULL ? "" : Icon), @@ -134,6 +134,8 @@ void CHintBox::init(const std::string& Text, const int& Width, const std::string hb_font = MSG_FONT; + enable_txt_scroll = false; + //enable shadow shadow = CC_SHADOW_ON; @@ -197,7 +199,7 @@ int CHintBox::exec() neutrino_msg_data_t data; int res = messages_return::none; - if (timeout == NO_TIMEOUT || timeout == 0) + if (timeout == NO_TIMEOUT || timeout == DEFAULT_TIMEOUT) timeout = HINTBOX_DEFAULT_TIMEOUT; uint64_t timeoutEnd = CRCInput::calcTimeoutEnd( timeout ); @@ -219,10 +221,14 @@ int CHintBox::exec() } else if ((msg == CRCInput::RC_up) || (msg == CRCInput::RC_down)) { - if (msg == CRCInput::RC_up) - this->scroll_up(); + if (enable_txt_scroll){ + if (msg == CRCInput::RC_up) + this->scroll_up(); + else + this->scroll_down(); + } else - this->scroll_down(); + res = messages_return::cancel_all; } else if (CNeutrinoApp::getInstance()->listModeKey(msg)){ // do nothing //TODO: if passed rc messages are ignored rc messaages: has no effect here too!! @@ -273,7 +279,8 @@ void CHintBox::addHintItem(const std::string& Text, const int& text_mode, const /* add scroll mode if needed */ if (h_lines > h_hint_obj){ txt_mode = text_mode | CTextBox::SCROLL; - ccw_buttons = ccw_buttons | CComponentsHeader::CC_BTN_TOP | CComponentsHeader::CC_BTN_DOWN; + ccw_buttons = ccw_buttons | CComponentsHeader::CC_BTN_UP | CComponentsHeader::CC_BTN_DOWN; + enable_txt_scroll = true; } /* define y start position of infobox inside body */ @@ -330,6 +337,11 @@ void CHintBox::setMsgText(const std::string& Text, const uint& hint_id, const in obj_text->setText(Text, mode, font, color_text, style); } +void CHintBox::setMsgText(const neutrino_locale_t& locale, const uint& hint_id, const int& mode, Font* font_text, const fb_pixel_t& color_text, const int& style) +{ + setMsgText(g_Locale->getText(locale), hint_id, mode, font_text, color_text, style); +} + void CHintBox::ReSize() { int h = (ccw_head ? ccw_head->getHeight() : 0); diff --git a/src/gui/widget/hintbox.h b/src/gui/widget/hintbox.h index 4afacb82a..187752286 100644 --- a/src/gui/widget/hintbox.h +++ b/src/gui/widget/hintbox.h @@ -32,11 +32,12 @@ #include -#define HINTBOX_MIN_WIDTH 420 +#define HINTBOX_MIN_WIDTH 320 #define HINTBOX_MIN_HEIGHT 125 #define HINTBOX_MAX_HEIGHT 520 #define HINTBOX_DEFAULT_TIMEOUT g_settings.timing[SNeutrinoSettings::TIMING_POPUP_MESSAGES] -#define NO_TIMEOUT -1 +#define NO_TIMEOUT 0 +#define DEFAULT_TIMEOUT -1 //frame around hint container as indent #define W_FRAME std::max(HINTBOX_MIN_WIDTH, HINTBOX_MIN_HEIGHT) * 2/100 //frame color around hint/message box @@ -59,6 +60,7 @@ class CHintBox : public CComponentsWindow int y_hint_obj; int h_hint_obj; int w_indentation; + bool enable_txt_scroll; Font* hb_font; @@ -179,7 +181,9 @@ class CHintBox : public CComponentsWindow int exec(); /** - * Defines timeout, timeout is enabled if parameter1 > -1 + * Defines timeout for message window. + * Timeout is enabled with parameter1 = DEFAULT_TIMEOUT (-1) or any other value > 0 + * To disable timeout use NO_TIMEOUT (0) * @param[in] Timeout as int as seconds */ virtual void setTimeOut(const int& Timeout){timeout = Timeout;} @@ -287,6 +291,12 @@ class CHintBox : public CComponentsWindow Font* font_text = NULL, const fb_pixel_t& color_text = COL_MENUCONTENT_TEXT, const int& style = CComponentsText::FONT_STYLE_REGULAR); + void setMsgText(const neutrino_locale_t& locale, + const uint& hint_id = 0, + const int& mode = CTextBox::AUTO_WIDTH | CTextBox::AUTO_HIGH | CTextBox::CENTER, + Font* font_text = NULL, + const fb_pixel_t& color_text = COL_MENUCONTENT_TEXT, + const int& style = CComponentsText::FONT_STYLE_REGULAR); }; /** diff --git a/src/gui/widget/icons.h b/src/gui/widget/icons.h index 0d20fa35d..cafb9b343 100644 --- a/src/gui/widget/icons.h +++ b/src/gui/widget/icons.h @@ -57,8 +57,8 @@ #define NEUTRINO_ICON_BUTTON_8 "8" #define NEUTRINO_ICON_BUTTON_9 "9" -#define NEUTRINO_ICON_BUTTON_TOP "up" -#define NEUTRINO_ICON_BUTTON_TOP_SMALL "up_small" +#define NEUTRINO_ICON_BUTTON_UP "up" +#define NEUTRINO_ICON_BUTTON_UP_SMALL "up_small" #define NEUTRINO_ICON_BUTTON_RIGHT "right" #define NEUTRINO_ICON_BUTTON_DOWN "down" #define NEUTRINO_ICON_BUTTON_DOWN_SMALL "down_small" diff --git a/src/gui/widget/keyboard_input.cpp b/src/gui/widget/keyboard_input.cpp index 92b5efaeb..7e910d618 100644 --- a/src/gui/widget/keyboard_input.cpp +++ b/src/gui/widget/keyboard_input.cpp @@ -181,8 +181,7 @@ const char* CInputString::c_str() CKeyboardInput::CKeyboardInput(const neutrino_locale_t Name, std::string* Value, int Size, CChangeObserver* Observ, const char * const Icon, const neutrino_locale_t Hint_1, const neutrino_locale_t Hint_2) { - name = Name; - head = g_Locale->getText(Name); + title = g_Locale->getText(Name); valueString = Value; inputSize = Size; @@ -205,8 +204,7 @@ CKeyboardInput::CKeyboardInput(const neutrino_locale_t Name, std::string* Value, CKeyboardInput::CKeyboardInput(const std::string &Name, std::string *Value, int Size, CChangeObserver* Observ, const char * const Icon, const neutrino_locale_t Hint_1, const neutrino_locale_t Hint_2) { - name = NONEXISTANT_LOCALE; - head = Name; + title = Name; valueString = Value; inputSize = Size; @@ -229,8 +227,7 @@ CKeyboardInput::CKeyboardInput(const std::string &Name, std::string *Value, int CKeyboardInput::CKeyboardInput(const std::string &Name, std::string *Value, int Size, CChangeObserver* Observ, const char * const Icon, std::string HintText_1, std::string HintText_2) { - name = NONEXISTANT_LOCALE; - head = Name; + title = Name; valueString = Value; inputSize = Size; @@ -286,7 +283,7 @@ void CKeyboardInput::init() } inputString = new CInputString(inputSize); - int tmp_w = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->getRenderWidth(head); + int tmp_w = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->getRenderWidth(title); if (!(iconfile.empty())) { int icol_w, icol_h; @@ -637,7 +634,7 @@ int CKeyboardInput::exec(CMenuTarget* parent, const std::string &) else if ((msg == CRCInput::RC_home) || (msg == CRCInput::RC_timeout)) { if ((inputString->getValue() != oldval) && - (ShowMsg(name, LOCALE_MESSAGEBOX_DISCARD, CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbCancel) == CMsgBox::mbrCancel)) { + (ShowMsg(title, LOCALE_MESSAGEBOX_DISCARD, CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbCancel) == CMsgBox::mbrCancel)) { timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); continue; } @@ -675,7 +672,7 @@ int CKeyboardInput::exec(CMenuTarget* parent, const std::string &) inputString = NULL; if ((observ) && (msg == CRCInput::RC_red)) - observ->changeNotify(name, (void *) valueString->c_str()); + observ->changeNotify(title, (void *) valueString->c_str()); return res; } @@ -709,7 +706,7 @@ void CKeyboardInput::paint() frameBuffer->paintBoxRel(x + OFFSET_SHADOW, y + OFFSET_SHADOW, width, height, COL_SHADOW_PLUS_0, RADIUS_LARGE, CORNER_ALL); //round frameBuffer->paintBoxRel(x, y + hheight, width, bheight, COL_MENUCONTENT_PLUS_0); - CComponentsHeader header(x, y, width, hheight, head, iconfile); + CComponentsHeader header(x, y, width, hheight, title, iconfile); header.paint(CC_SAVE_SCREEN_NO); key_y = y+ hheight+ offset+ input_h+ offset; diff --git a/src/gui/widget/keyboard_input.h b/src/gui/widget/keyboard_input.h index 7af5c1c17..23a3b3601 100644 --- a/src/gui/widget/keyboard_input.h +++ b/src/gui/widget/keyboard_input.h @@ -92,8 +92,7 @@ class CKeyboardInput : public CMenuTarget std::string (*keyboard)[KEY_COLUMNS]; CInputString * inputString; - std::string head; - neutrino_locale_t name; + std::string title; neutrino_locale_t hint_1, hint_2; std::string hintText_1, hintText_2; std::string iconfile; diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index 565069de9..de132a9e2 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -1193,7 +1193,7 @@ void CMenuWidget::calcSize() //scrollbar width sb_width=0; if(total_pages > 1) - sb_width=15; + sb_width=SCROLLBAR_WIDTH; full_width = /*ConnectLineBox_Width+*/width+sb_width+OFFSET_SHADOW; full_height = height+RADIUS_LARGE+OFFSET_SHADOW*2 /*+hint_height+OFFSET_INTER*/; @@ -1247,6 +1247,7 @@ void CMenuWidget::paint() header->enableShadow(CC_SHADOW_RIGHT | CC_SHADOW_CORNER_TOP_RIGHT | CC_SHADOW_CORNER_BOTTOM_RIGHT); header->setOffset(10); } + header->setCaption(getName()); header->setColorAll(COL_FRAME_PLUS_0, COL_MENUHEAD_PLUS_0, COL_SHADOW_PLUS_0); header->setCaptionColor(COL_MENUHEAD_TEXT); header->enableColBodyGradient(g_settings.theme.menu_Head_gradient, COL_MENUCONTENT_PLUS_0); @@ -1324,8 +1325,7 @@ void CMenuWidget::paintItems() if(total_pages>1) { int item_height=height-(item_start_y-y); - frameBuffer->paintBoxRel(x+ width,item_start_y, 15, item_height, COL_SCROLLBAR_PASSIVE_PLUS_0, RADIUS_MIN); - frameBuffer->paintBoxRel(x+ width +2, item_start_y+ 2+ current_page*(item_height-4)/total_pages, 11, (item_height-4)/total_pages, COL_SCROLLBAR_ACTIVE_PLUS_0, RADIUS_MIN); + paintScrollBar(x+ width, item_start_y, sb_width, item_height, total_pages, current_page); /* background of menu items, paint every time because different items can have * different height and this might leave artifacts otherwise after changing pages */ frameBuffer->paintBoxRel(x,item_start_y, width,item_height, COL_MENUCONTENT_PLUS_0); diff --git a/src/gui/widget/menue.h b/src/gui/widget/menue.h index 5da3cc3f5..5cfa58da2 100644 --- a/src/gui/widget/menue.h +++ b/src/gui/widget/menue.h @@ -88,6 +88,10 @@ class CChangeObserver { return false; } + virtual bool changeNotify(const std::string & /*OptionName*/, void * /*Data*/) + { + return false; + } virtual bool changeNotify(lua_State * /*L*/, const std::string & /*luaId*/, const std::string & /*luaAction*/, void * /*Data*/) { return false; diff --git a/src/gui/widget/msgbox.cpp b/src/gui/widget/msgbox.cpp index 151a0cc73..dc5b0b50c 100644 --- a/src/gui/widget/msgbox.cpp +++ b/src/gui/widget/msgbox.cpp @@ -81,8 +81,6 @@ CMsgBox::CMsgBox( const char* Text, void CMsgBox::init(const int& Height, const int& ShowButtons, const msg_result_t& Default_result) { - dprintf(DEBUG_NORMAL, "[CMsgBox] [%s - %d] \n", __func__, __LINE__); - initTimeOut(); //enable footer and add its height @@ -114,7 +112,7 @@ void CMsgBox::init(const int& Height, const int& ShowButtons, const msg_result_t void CMsgBox::initTimeOut() { - timeout = -1; + timeout = NO_TIMEOUT; enable_timeout_result = false; } @@ -238,7 +236,9 @@ int CMsgBox::exec() ccw_footer->getSelectedButtonObject()->setButtonAlias(mb_show_button); int selected = ccw_footer->getSelectedButton(); if (timeout == NO_TIMEOUT) - timeout = MSGBOX_DEFAULT_TIMEOUT; + timeout = 0; + if (timeout == DEFAULT_TIMEOUT) + timeout = g_settings.timing[SNeutrinoSettings::TIMING_STATIC_MESSAGES]; uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(timeout); @@ -526,14 +526,30 @@ int ShowMsg( const std::string & Title, return (result); } +int ShowMsg( const std::string & Title, + const neutrino_locale_t Text, + const CMsgBox::msg_result_t Default, + const uint32_t ShowButtons, + const char * const Icon, + const int Width, + const int Timeout, + bool returnDefaultOnTimeout, + const int& Text_mode, + fb_pixel_t color_frame) +{ + int result = ShowMsg2UTF(Title.c_str(), g_Locale->getText(Text), Default, ShowButtons, Icon, Width, Timeout, returnDefaultOnTimeout, Text_mode, color_frame); + + return (result); +} + void DisplayErrorMessage(const char * const ErrorMsg, const neutrino_locale_t& caption, const int& Text_mode) { - ShowMsg(caption, ErrorMsg, CMsgBox::mbrCancel, CMsgBox::mbBack, NEUTRINO_ICON_ERROR, 500, -1, false, Text_mode, COL_RED); + ShowMsg(caption, ErrorMsg, CMsgBox::mbrCancel, CMsgBox::mbBack, NEUTRINO_ICON_ERROR, 500, NO_TIMEOUT, false, Text_mode, COL_RED); } void DisplayErrorMessage(const char * const ErrorMsg, const std::string& caption, const int& Text_mode) { - ShowMsg(caption, ErrorMsg, CMsgBox::mbrCancel, CMsgBox::mbBack, NEUTRINO_ICON_ERROR, 500, -1, false, Text_mode, COL_RED); + ShowMsg(caption, ErrorMsg, CMsgBox::mbrCancel, CMsgBox::mbBack, NEUTRINO_ICON_ERROR, 500, NO_TIMEOUT, false, Text_mode, COL_RED); } void DisplayErrorMessage(const char * const ErrorMsg, const int& Text_mode) @@ -543,12 +559,12 @@ void DisplayErrorMessage(const char * const ErrorMsg, const int& Text_mode) void DisplayInfoMessage(const char * const InfoMsg, const neutrino_locale_t& caption, const int& Text_mode, fb_pixel_t color_frame) { - ShowMsg(caption, InfoMsg, CMsgBox::mbrBack, CMsgBox::mbOk, NEUTRINO_ICON_INFO, 500, -1, false, Text_mode, color_frame); + ShowMsg(caption, InfoMsg, CMsgBox::mbrBack, CMsgBox::mbOk, NEUTRINO_ICON_INFO, 500, NO_TIMEOUT, false, Text_mode, color_frame); } void DisplayInfoMessage(const char * const InfoMsg, const std::string& caption, const int& Text_mode, fb_pixel_t color_frame) { - ShowMsg(caption, InfoMsg, CMsgBox::mbrBack, CMsgBox::mbOk, NEUTRINO_ICON_INFO, 500, -1, false, Text_mode, color_frame); + ShowMsg(caption, InfoMsg, CMsgBox::mbrBack, CMsgBox::mbOk, NEUTRINO_ICON_INFO, 500, NO_TIMEOUT, false, Text_mode, color_frame); } void DisplayInfoMessage(const char * const InfoMsg, const int& Text_mode, fb_pixel_t color_frame) diff --git a/src/gui/widget/msgbox.h b/src/gui/widget/msgbox.h index 5c81dfb33..f15060973 100644 --- a/src/gui/widget/msgbox.h +++ b/src/gui/widget/msgbox.h @@ -33,10 +33,9 @@ #endif #include "hintbox.h" -#include #define MSGBOX_MIN_WIDTH HINTBOX_MIN_WIDTH -#define MSGBOX_MIN_HEIGHT HINTBOX_MIN_HEIGHT + 75 +#define MSGBOX_MIN_HEIGHT HINTBOX_MIN_HEIGHT #define MSGBOX_DEFAULT_TIMEOUT g_settings.timing[SNeutrinoSettings::TIMING_STATIC_MESSAGES] #define DEFAULT_MSGBOX_TEXT_MODE (CMsgBox::CENTER | CMsgBox::AUTO_WIDTH | CMsgBox::AUTO_HIGH) @@ -56,14 +55,14 @@ class CMsgBox : public CHintBox /* enum definition */ enum msg_result_t { - mbrYes = 0, - mbrNo = 1, - mbrCancel = 2, - mbrBack = 3, - mbrOk = 4, - mbrTimeout = 5, + mbrYes = 0x01, + mbrNo = 0x02, + mbrCancel = 0x04, + mbrBack = 0x08, + mbrOk = 0x10, + mbrTimeout = 0x20, - mbrNone = -1 + mbrNone = 0x00 }; enum button_define_t { @@ -171,7 +170,7 @@ class CMsgBox : public CHintBox const int& Width = MSGBOX_MIN_WIDTH, const int& Height = MSGBOX_MIN_HEIGHT, const int& ShowButtons = mbCancel, - const msg_result_t& Default_result = mbrCancel, + const msg_result_t& Default_result = mbrNone, const int& Text_mode = DEFAULT_MSGBOX_TEXT_MODE); /**CMsgBox Constructor @@ -225,7 +224,7 @@ class CMsgBox : public CHintBox const int& Width = MSGBOX_MIN_WIDTH, const int& Height = MSGBOX_MIN_HEIGHT, const int& ShowButtons = mbCancel, - const msg_result_t& Default_result = mbrCancel, + const msg_result_t& Default_result = mbrNone, const int& Text_mode = DEFAULT_MSGBOX_TEXT_MODE); // ~CMsgBox(); //inherited @@ -393,6 +392,17 @@ int ShowMsg( const std::string & Title, const int& Text_mode = DEFAULT_MSGBOX_TEXT_MODE, fb_pixel_t color_frame = HINTBOX_DEFAULT_FRAME_COLOR); // UTF-8 +int ShowMsg( const std::string & Title, + const neutrino_locale_t Text, + const CMsgBox::msg_result_t Default, + const uint32_t ShowButtons, + const char * const Icon = NULL, + const int Width = MSGBOX_MIN_WIDTH, + const int Timeout = NO_TIMEOUT, + bool returnDefaultOnTimeout = false, + const int& Text_mode = DEFAULT_MSGBOX_TEXT_MODE, + fb_pixel_t color_frame = HINTBOX_DEFAULT_FRAME_COLOR); // UTF-8 + void DisplayErrorMessage(const char * const ErrorMsg, const int& Text_mode = DEFAULT_MSGBOX_TEXT_MODE); // UTF-8 void DisplayErrorMessage(const char * const ErrorMsg, const neutrino_locale_t& caption, const int& Text_mode = DEFAULT_MSGBOX_TEXT_MODE); // UTF-8 void DisplayErrorMessage(const char * const ErrorMsg, const std::string& caption, const int& Text_mode = DEFAULT_MSGBOX_TEXT_MODE); // UTF-8 diff --git a/src/gui/widget/stringinput.cpp b/src/gui/widget/stringinput.cpp index 8301a0a99..f325cedb1 100644 --- a/src/gui/widget/stringinput.cpp +++ b/src/gui/widget/stringinput.cpp @@ -47,38 +47,14 @@ CStringInput::CStringInput(const neutrino_locale_t Name, std::string* Value, int Size, const neutrino_locale_t Hint_1, const neutrino_locale_t Hint_2, const char * const Valid_Chars, CChangeObserver* Observ, const char * const Icon) { - name = Name; - head = g_Locale->getText(Name); - valueString = Value; - lower_bound = -1; - upper_bound = -1; - size = Size; - - hint_1 = Hint_1; - hint_2 = Hint_2; - validchars = Valid_Chars; - iconfile = Icon ? Icon : ""; - - observ = Observ; - init(); + name = Name; + init(g_Locale->getText(name), Value, Size, Hint_1, Hint_2, Valid_Chars, Observ, Icon); } CStringInput::CStringInput(const std::string &Name, std::string *Value, int Size, const neutrino_locale_t Hint_1, const neutrino_locale_t Hint_2, const char * const Valid_Chars, CChangeObserver* Observ, const char * const Icon) { name = NONEXISTANT_LOCALE; - head = Name; - valueString = Value; - lower_bound = -1; - upper_bound = -1; - size = Size; - - hint_1 = Hint_1; - hint_2 = Hint_2; - validchars = Valid_Chars; - iconfile = Icon ? Icon : ""; - - observ = Observ; - init(); + init(Name, Value, Size, Hint_1, Hint_2, Valid_Chars, Observ, Icon); } CStringInput::~CStringInput() @@ -99,10 +75,23 @@ const struct button_label CStringInputSMSButtons[CStringInputSMSButtonsCount] = { NEUTRINO_ICON_BUTTON_YELLOW, LOCALE_STRINGINPUT_CLEAR } }; -void CStringInput::init() +void CStringInput::init(const std::string &Name, std::string *Value, int Size, const neutrino_locale_t Hint_1, const neutrino_locale_t Hint_2, const char * const Valid_Chars, CChangeObserver* Observ, const char * const Icon) { frameBuffer = CFrameBuffer::getInstance(); + head = Name; + valueString = Value; + lower_bound = -1; + upper_bound = -1; + size = Size; + + hint_1 = Hint_1; + hint_2 = Hint_2; + validchars = Valid_Chars; + iconfile = Icon ? Icon : ""; + + observ = Observ; + #ifdef DEBUG_STRINGINPUT printf("HEAD: %s (len: %d)\n", head, strlen(head)); #endif @@ -496,8 +485,9 @@ int CStringInput::exec( CMenuTarget* parent, const std::string & ) } else if ( (msg==CRCInput::RC_home) || (msg==CRCInput::RC_timeout) ) { - if ((*valueString != oldval) && - (ShowMsg(name, LOCALE_MESSAGEBOX_DISCARD, CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbCancel) == CMsgBox::mbrCancel)) { + string tmp_name = name == NONEXISTANT_LOCALE ? head : g_Locale->getText(name); + if ((trim (*valueString) != trim(oldval)) && + (ShowMsg(tmp_name, LOCALE_MESSAGEBOX_DISCARD, CMsgBox::mbrYes, CMsgBox::mbYes | CMsgBox::mbCancel) == CMsgBox::mbrCancel)) { timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); continue; } diff --git a/src/gui/widget/stringinput.h b/src/gui/widget/stringinput.h index d435a7f84..b01d65c09 100644 --- a/src/gui/widget/stringinput.h +++ b/src/gui/widget/stringinput.h @@ -64,7 +64,7 @@ class CStringInput : public CMenuTarget bool force_saveScreen; fb_pixel_t *pixBuf; - virtual void init(); + virtual void init(const std::string &Name, std::string *Value, int Size, const neutrino_locale_t Hint_1, const neutrino_locale_t Hint_2, const char * const Valid_Chars, CChangeObserver* Observ, const char * const Icon); virtual void paint(bool sms = false); virtual void paintChar(int pos, char c); diff --git a/src/gui/widget/stringinput_ext.cpp b/src/gui/widget/stringinput_ext.cpp index b83d5c38e..0de0282d9 100644 --- a/src/gui/widget/stringinput_ext.cpp +++ b/src/gui/widget/stringinput_ext.cpp @@ -267,7 +267,7 @@ int CExtendedInput::exec( CMenuTarget* parent, const std::string & ) } else if ( (msg==CRCInput::RC_home) || (msg==CRCInput::RC_timeout) ) { - if(*valueString != oldval){ + if (trim (*valueString) != trim(oldval)){ int erg = ShowMsg(name, LOCALE_MESSAGEBOX_DISCARD, CMsgBox::mbrYes, CMsgBox::mbNo | CMsgBox::mbYes | CMsgBox::mbCancel); if(erg==CMsgBox::mbrYes){ *valueString = oldval; diff --git a/src/gui/widget/textbox.cpp b/src/gui/widget/textbox.cpp index c1c17ce60..4750de544 100644 --- a/src/gui/widget/textbox.cpp +++ b/src/gui/widget/textbox.cpp @@ -713,7 +713,7 @@ void CTextBox::refreshText(void) frameBuffer->paintBoxRel(tx, ty-th, tw, th, COL_RED, m_nBgRadius, m_nBgRadiusType); #endif //TRACE("[CTextBox] %s Line %d m_cFrame.iX %d m_cFrameTextRel.iX %d\r\n", __FUNCTION__, __LINE__, m_cFrame.iX, m_cFrameTextRel.iX); - m_pcFontText->RenderString(tx, ty, tw, m_cLineArray[i].c_str(), m_textColor, 0, m_renderMode | (m_utf8_encoded) ? Font::IS_UTF8 : 0); + m_pcFontText->RenderString(tx, ty, tw, m_cLineArray[i].c_str(), m_textColor, 0, m_renderMode | ((m_utf8_encoded) ? Font::IS_UTF8 : 0)); m_old_cText = m_cText; y += m_nFontTextHeight; } @@ -890,11 +890,17 @@ int CTextBox::getLines(const std::string& text) int CTextBox::getMaxLineWidth(const std::string& text, Font* font) { - // if found no linebreak, return pure size only - if (text.find('\n', 0) == std::string::npos) - return font->getRenderWidth(text.c_str()); + std::string txt = text; + if (txt.find('\n', 0) == std::string::npos){ + /* If found no linebreak, return pure size with additional space char. + * Space char simulates a line termination as a workaround to get + * largest possible width. + */ + txt += ' '; + return font->getRenderWidth(txt.c_str()); + } - std::stringstream in (text); + std::stringstream in (txt); if (!in) return 0; diff --git a/src/gui/widget/textbox.h b/src/gui/widget/textbox.h index 5df0762a7..c38ea5ef1 100644 --- a/src/gui/widget/textbox.h +++ b/src/gui/widget/textbox.h @@ -222,7 +222,7 @@ class CTextBox : public sigc::trackable int getLines(){return(m_nNrOfLines);} /** - * Returns maximal width of passed text + * Returns width of largest line from passed text * @param[in] text * @li exepts type std::string * @param[in] font @@ -233,9 +233,10 @@ class CTextBox : public sigc::trackable static int getMaxLineWidth(const std::string& text, Font* font); /** - * Returns internal defined maximal line width of an existent CTextBox instance. + * Returns internal defined largest line width of an existant CTextBox instance. * @return width of largest line as int * @see static version getMaxLineWidth() + * setText(), parameter: max_width */ int getMaxLineWidth() {return(m_nMaxTextWidth);} diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 7102e16ab..0b3bd4292 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -353,6 +353,9 @@ int CNeutrinoApp::loadSetup(const char * fname) } parentallocked = !access(NEUTRINO_PARENTALLOCKED_FILE, R_OK); + //theme/color options + CThemes::getTheme(configfile); + g_settings.easymenu = configfile.getInt32("easymenu", 0); g_settings.softupdate_autocheck = configfile.getBool("softupdate_autocheck" , false); /* if file present and no config file found, force easy mode */ @@ -510,12 +513,6 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.infobar_show_channeldesc = configfile.getBool("infobar_show_channeldesc" , false ); g_settings.infobar_subchan_disp_pos = configfile.getInt32("infobar_subchan_disp_pos", 4); // subchan display in infobar g_settings.infobar_buttons_usertitle = configfile.getBool("infobar_buttons_usertitle", false ); - g_settings.progressbar_gradient = configfile.getBool("progressbar_gradient", false); - g_settings.progressbar_design = configfile.getInt32("progressbar_design", CProgressBar::PB_MONO); - g_settings.progressbar_timescale_red = configfile.getInt32("progressbar_timescale_red", 0); - g_settings.progressbar_timescale_green = configfile.getInt32("progressbar_timescale_green", 100); - g_settings.progressbar_timescale_yellow = configfile.getInt32("progressbar_timescale_yellow", 70); - g_settings.progressbar_timescale_invert = configfile.getBool("progressbar_timescale_invert", false); g_settings.infobar_show = configfile.getInt32("infobar_show", configfile.getInt32("infobar_cn", 1)); g_settings.infobar_show_channellogo = configfile.getInt32("infobar_show_channellogo" , 3 ); g_settings.infobar_progressbar = configfile.getInt32("infobar_progressbar" , 1 ); // below channel name @@ -594,8 +591,6 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.widget_fade = false; g_settings.widget_fade = configfile.getBool("widget_fade" , false ); - //theme/color options - CThemes::getTheme(configfile); g_settings.osd_colorsettings_advanced_mode = configfile.getBool("osd_colorsettings_advanced_mode", false); //personalize @@ -740,7 +735,6 @@ int CNeutrinoApp::loadSetup(const char * fname) g_settings.eventlist_additional = configfile.getInt32("eventlist_additional", 0); g_settings.eventlist_epgplus = configfile.getInt32("eventlist_epgplus", 1); g_settings.channellist_epgtext_align_right = configfile.getBool("channellist_epgtext_align_right" , false); - g_settings.channellist_progressbar_design = configfile.getInt32("channellist_progressbar_design", g_settings.progressbar_design); g_settings.channellist_foot = configfile.getInt32("channellist_foot", 0); //default transponder data g_settings.channellist_new_zap_mode = configfile.getInt32("channellist_new_zap_mode", 0); g_settings.channellist_sort_mode = configfile.getInt32("channellist_sort_mode", 0);//sort mode: alpha, freq, sat @@ -992,6 +986,8 @@ int CNeutrinoApp::loadSetup(const char * fname) void CNeutrinoApp::upgradeSetup(const char * fname) { + dprintf(DEBUG_NORMAL, "upgrade/cleanup %s\n", fname); + if (g_settings.version_pseudo < "20160226110000") { if (g_settings.usermenu[SNeutrinoSettings::BUTTON_YELLOW]->items == "7") @@ -1000,12 +996,35 @@ void CNeutrinoApp::upgradeSetup(const char * fname) configfile.setString("usermenu_tv_yellow", g_settings.usermenu[SNeutrinoSettings::BUTTON_YELLOW]->items); } } + if (g_settings.version_pseudo < "20162912080000") + { + //convert and remove obsolete progressbar_* keys + + g_settings.theme.progressbar_design = configfile.getInt32("progressbar_design", CProgressBar::PB_MONO); + bool pb_color = configfile.getBool("progressbar_color", true ); + if (!pb_color) + g_settings.theme.progressbar_design = CProgressBar::PB_MONO; + g_settings.theme.progressbar_design_channellist = configfile.getInt32("channellist_progressbar_design", g_settings.theme.progressbar_design); + g_settings.theme.progressbar_gradient = configfile.getBool("progressbar_gradient", false); + g_settings.theme.progressbar_timescale_red = configfile.getInt32("progressbar_timescale_red", 0); + g_settings.theme.progressbar_timescale_green = configfile.getInt32("progressbar_timescale_green", 100); + g_settings.theme.progressbar_timescale_yellow = configfile.getInt32("progressbar_timescale_yellow", 70); + g_settings.theme.progressbar_timescale_invert = configfile.getBool("progressbar_timescale_invert", false); + + configfile.deleteKey("progressbar_design"); + configfile.deleteKey("channellist_progressbar_design"); + configfile.deleteKey("progressbar_color"); + configfile.deleteKey("progressbar_gradient"); + configfile.deleteKey("progressbar_timescale_red"); + configfile.deleteKey("progressbar_timescale_green"); + configfile.deleteKey("progressbar_timescale_yellow"); + configfile.deleteKey("progressbar_timescale_invert"); + } g_settings.version_pseudo = NEUTRINO_VERSION_PSEUDO; configfile.setString("version_pseudo", g_settings.version_pseudo); - if (configfile.getModifiedFlag()) - configfile.saveConfig(fname); + saveSetup(NEUTRINO_SETTINGS_FILE); } /************************************************************************************** @@ -1019,6 +1038,9 @@ void CNeutrinoApp::saveSetup(const char * fname) dprintf(DEBUG_NORMAL, "error while saving scan-settings!\n"); } + //theme/color options + CThemes::setTheme(configfile); + //video configfile.setInt32( "video_Mode", g_settings.video_Mode ); configfile.setInt32( "analog_mode1", g_settings.analog_mode1 ); @@ -1122,12 +1144,6 @@ void CNeutrinoApp::saveSetup(const char * fname) configfile.setBool("infobar_show_channeldesc" , g_settings.infobar_show_channeldesc ); configfile.setInt32("infobar_subchan_disp_pos" , g_settings.infobar_subchan_disp_pos ); configfile.setBool("infobar_buttons_usertitle", g_settings.infobar_buttons_usertitle); - configfile.setBool("progressbar_gradient", g_settings.progressbar_gradient); - configfile.setInt32("progressbar_design", g_settings.progressbar_design); - configfile.setInt32("progressbar_timescale_red", g_settings.progressbar_timescale_red); - configfile.setInt32("progressbar_timescale_green", g_settings.progressbar_timescale_green); - configfile.setInt32("progressbar_timescale_yellow", g_settings.progressbar_timescale_yellow); - configfile.setInt32("progressbar_timescale_invert", g_settings.progressbar_timescale_invert); configfile.setInt32("infobar_show", g_settings.infobar_show); configfile.setInt32("infobar_show_channellogo" , g_settings.infobar_show_channellogo ); configfile.setInt32("infobar_progressbar" , g_settings.infobar_progressbar ); @@ -1197,8 +1213,6 @@ void CNeutrinoApp::saveSetup(const char * fname) //widget settings configfile.setBool("widget_fade" , g_settings.widget_fade ); - //theme/color options - CThemes::setTheme(configfile); configfile.setBool("osd_colorsettings_advanced_mode", g_settings.osd_colorsettings_advanced_mode); //personalize @@ -1306,7 +1320,6 @@ void CNeutrinoApp::saveSetup(const char * fname) configfile.setInt32("eventlist_epgplus", g_settings.eventlist_epgplus); configfile.setInt32("channellist_additional", g_settings.channellist_additional); configfile.setBool("channellist_epgtext_align_right", g_settings.channellist_epgtext_align_right); - configfile.setInt32("channellist_progressbar_design", g_settings.channellist_progressbar_design); configfile.setInt32("channellist_foot", g_settings.channellist_foot); configfile.setInt32("channellist_new_zap_mode", g_settings.channellist_new_zap_mode); configfile.setInt32("remote_control_hardware", g_settings.remote_control_hardware); @@ -1517,9 +1530,6 @@ void CNeutrinoApp::channelsInit(bool bOnly) RADIObouquetList = new CBouquetList(g_Locale->getText(LOCALE_CHANNELLIST_PROVS)); RADIOfavList = new CBouquetList(g_Locale->getText(LOCALE_CHANNELLIST_FAVS)); - uint32_t i; - i = 1; - int tvi = 0, ri = 0; ZapitChannelList zapitList, webtvList; @@ -1647,7 +1657,7 @@ void CNeutrinoApp::channelsInit(bool bOnly) /* Favorites and providers bouquets */ tvi = ri = 0; if(g_bouquetManager){ - for (i = 0; i < g_bouquetManager->Bouquets.size(); i++) { + for (uint32_t i = 0; i < g_bouquetManager->Bouquets.size(); i++) { CZapitBouquet *b = g_bouquetManager->Bouquets[i]; if (!b->bHidden) { if (b->getTvChannels(zapitList) || (g_settings.show_empty_favorites && b->bUser)) { @@ -2074,7 +2084,7 @@ TIMER_START(); if (loadLocale_ret == CLocaleManager::NO_SUCH_LOCALE) { g_settings.language = "english"; - loadLocale_ret = g_Locale->loadLocale(g_settings.language.c_str()); + g_Locale->loadLocale(g_settings.language.c_str()); show_startwizard = true; } @@ -2257,7 +2267,6 @@ TIMER_START(); startwizard.exec(NULL, ""); } - InitZapper(); if(loadSettingsErg) { hintBox->hide(); dprintf(DEBUG_INFO, "config file or options missing\n"); @@ -2267,6 +2276,8 @@ TIMER_START(); saveSetup(NEUTRINO_SETTINGS_FILE); } + InitZapper(); + CHDDDestExec * hdd = new CHDDDestExec(); hdd->exec(NULL, ""); delete hdd; @@ -2825,7 +2836,7 @@ void CNeutrinoApp::zapTo(t_channel_id channel_id) { bool recordingStatus = CRecordManager::getInstance()->RecordingStatus(channel_id); if (!recordingStatus || (recordingStatus && CRecordManager::getInstance()->TimeshiftOnly()) || - (recordingStatus && channelList->SameTP(channel_id))) { + (recordingStatus && channelList && channelList->SameTP(channel_id))) { dvbsub_stop(); g_Zapit->zapTo_serviceID_NOWAIT(channel_id); @@ -2860,7 +2871,8 @@ void CNeutrinoApp::standbyToStandby(void) t_channel_id live_channel_id = CZapit::getInstance()->GetCurrentChannelID(); if (standby_channel_id && (live_channel_id != standby_channel_id)) { live_channel_id = standby_channel_id; - channelList->zapTo_ChannelID(live_channel_id); + if(channelList) + channelList->zapTo_ChannelID(live_channel_id); } g_Zapit->setStandby(true); g_Sectionsd->setPauseScanning(true); @@ -3278,7 +3290,7 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data) CTimerd::EventInfo * eventinfo = (CTimerd::EventInfo *) data; if (eventinfo->channel_id != CZapit::getInstance()->GetCurrentChannelID()){ if( (recordingstatus == 0) || (recordingstatus && CRecordManager::getInstance()->TimeshiftOnly()) || - (recordingstatus && channelList->SameTP(eventinfo->channel_id)) ) { + (recordingstatus && channelList && channelList->SameTP(eventinfo->channel_id)) ) { bool isTVMode = CServiceManager::getInstance()->IsChannelTVChannel(eventinfo->channel_id); dvbsub_stop(); @@ -3289,7 +3301,9 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data) else if (isTVMode && (mode != mode_tv) && (mode != mode_webtv)) { tvMode(true); } - channelList->zapTo_ChannelID(eventinfo->channel_id); + + if(channelList) + channelList->zapTo_ChannelID(eventinfo->channel_id); } } delete[] (unsigned char*) data; @@ -3343,9 +3357,9 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data) } else if( msg == NeutrinoMessages::SLEEPTIMER) { if(data) {//INACTIVITY SLEEPTIMER - skipShutdownTimer = - (ShowMsg(LOCALE_MESSAGEBOX_INFO, g_settings.shutdown_real ? LOCALE_SHUTDOWNTIMER_ANNOUNCE:LOCALE_SLEEPTIMERBOX_ANNOUNCE, - CMsgBox::mbrNo, CMsgBox::mbYes | CMsgBox::mbNo, NULL, 450, 30, true) == CMsgBox::mbrYes);//FIXME + int msgbox = ShowMsg(LOCALE_MESSAGEBOX_INFO, g_settings.shutdown_real ? LOCALE_SHUTDOWNTIMER_ANNOUNCE:LOCALE_SLEEPTIMERBOX_ANNOUNCE, + CMsgBox::mbrCancel, CMsgBox::mbCancel, NULL, 450, 60); + skipShutdownTimer = !(msgbox & CMsgBox::mbrTimeout); if(skipShutdownTimer) { printf("NeutrinoMessages::INACTIVITY SLEEPTIMER: skiping\n"); skipShutdownTimer = false; @@ -3417,7 +3431,7 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data) } else if (msg == NeutrinoMessages::EVT_POPUP || msg == NeutrinoMessages::EVT_EXTMSG) { if (mode != mode_scart && mode != mode_standby) { - int timeout = NO_TIMEOUT; + int timeout = DEFAULT_TIMEOUT; std::string text = (char*)data; std::string::size_type pos; @@ -3461,6 +3475,11 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t _msg, neutrino_msg_data_t data) CRCLock::getInstance()->exec(NULL, CRCLock::NO_USER_INPUT); return messages_return::handled; } + else if (msg == NeutrinoMessages::LOCK_RC_EXTERN || msg == NeutrinoMessages::UNLOCK_RC_EXTERN) + { + printf("CNeutrinoApp::handleMsg: RC is %s now\n", msg == NeutrinoMessages::LOCK_RC_EXTERN ? "LOCKED" : "UNLOCKED"); + return messages_return::handled; + } else if( msg == NeutrinoMessages::CHANGEMODE ) { printf("CNeutrinoApp::handleMsg: CHANGEMODE to %d rezap %d\n", (int)(data & mode_mask), (data & norezap) != norezap); if((data & mode_mask)== mode_radio) { @@ -3580,7 +3599,7 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) if(CRecordManager::getInstance()->RecordingStatus() || cYTCache::getInstance()->isActive()) { do_shutdown = (ShowMsg(LOCALE_MESSAGEBOX_INFO, LOCALE_SHUTDOWN_RECORDING_QUERY, CMsgBox::mbrNo, - CMsgBox::mbYes | CMsgBox::mbNo, NULL, 450, 30, true) == CMsgBox::mbrYes); + CMsgBox::mbYes | CMsgBox::mbNo, NULL, 450, DEFAULT_TIMEOUT, true) == CMsgBox::mbrYes); } if(do_shutdown) { @@ -4901,7 +4920,7 @@ bool CNeutrinoApp::adjustToChannelID(const t_channel_id channel_id) if(!has_channel && old_mode == LIST_MODE_SAT) new_mode = LIST_MODE_ALL; - has_channel = TVallList->adjustToChannelID(channel_id); + TVallList->adjustToChannelID(channel_id); } else if(CNeutrinoApp::getInstance()->getMode() == NeutrinoMessages::mode_radio) { has_channel = RADIOfavList->adjustToChannelID(channel_id); @@ -4928,7 +4947,7 @@ bool CNeutrinoApp::adjustToChannelID(const t_channel_id channel_id) if(!has_channel && old_mode == LIST_MODE_SAT) new_mode = LIST_MODE_ALL; - has_channel = RADIOallList->adjustToChannelID(channel_id); + RADIOallList->adjustToChannelID(channel_id); } if(old_mode != new_mode) CNeutrinoApp::getInstance()->SetChannelMode(new_mode); diff --git a/src/neutrinoMessages.h b/src/neutrinoMessages.h index 4049ead7e..fe89d019a 100644 --- a/src/neutrinoMessages.h +++ b/src/neutrinoMessages.h @@ -71,10 +71,13 @@ struct NeutrinoMessages { REMIND = CRCInput::RC_Messages + 18, LOCK_RC = CRCInput::RC_Messages + 19, UNLOCK_RC = CRCInput::RC_Messages + 20, - REBOOT = CRCInput::RC_Messages + 21, - RELOAD_SETUP = CRCInput::RC_Messages + 22, - SHOW_MAINMENU = CRCInput::RC_Messages + 23, - LEAVE_ALL = CRCInput::RC_Messages + 24, + LOCK_RC_EXTERN = CRCInput::RC_Messages + 21, + UNLOCK_RC_EXTERN = CRCInput::RC_Messages + 22, + REBOOT = CRCInput::RC_Messages + 23, + RELOAD_SETUP = CRCInput::RC_Messages + 24, + SHOW_MAINMENU = CRCInput::RC_Messages + 25, + LEAVE_ALL = CRCInput::RC_Messages + 26, + EVT_VOLCHANGED = CRCInput::RC_Events + 1, EVT_MUTECHANGED = CRCInput::RC_Events + 2, diff --git a/src/nhttpd/Makefile.am b/src/nhttpd/Makefile.am index 1ea01bff6..3eb0c22a3 100644 --- a/src/nhttpd/Makefile.am +++ b/src/nhttpd/Makefile.am @@ -1,4 +1,4 @@ -SUBDIRS = yhttpd_core yhttpd_mods tuxboxapi web +SUBDIRS = yhttpd_core yhttpd_mods tuxboxapi AM_CPPFLAGS = -fno-rtti -fno-exceptions -D_FILE_OFFSET_BITS=64 diff --git a/src/nhttpd/doc/Changelog.txt b/src/nhttpd/doc/Changelog.txt deleted file mode 100644 index f06bd2b72..000000000 --- a/src/nhttpd/doc/Changelog.txt +++ /dev/null @@ -1,320 +0,0 @@ -Severity id Headline Build - -5-Enhancement JG200000540 nhttpd: new: /y/cache-info view and clear cache nhttpd 3.0.5 -5-Enhancement JG200000553 Live: Support for Non-compatible HTTP1.1-Clients like JtG-Servernhttpd 3.0.5 -5-Enhancement JG200000548 nhttpd: new hooks for Upload handling n httpd 3.0.5 -5-Enhancement JG200000549 nhttpd: mod_auth new Base64 algorism nhttpd 3.0.5 -5-Enhancement JG200000545 nhttpd: upload POST works with SSL now nhttpd 3.0.5 -5-Enhancement JG200000528 nhttpd: Autentication: new implemented nhttpd 3.0.5 -5-Enhancement JG200000538 nhttpd: yParser Cache nhttpd 3.0.5 -5-Enhancement JG200000544 nhttpd: new format of nhttpd.conf nhttpd 3.0.5 -5-Enhancement JG200000541 nhttpd: new /y/server-config nhttpd 3.0.5 -5-Enhancement JG200000550 nhttpd: add SSL support nhttpd 3.0.5 -5-Enhancement JG200000542 nhttpd: new module mod_cache for caching dynamic content nhttpd 3.0.5 -5-Enhancement JG200000543 nhttpd: new module mod_weblog CLF and ELF logging nhttpd 3.0.5 -5-Enhancement JG200000547 nhttpd: more Features for HTTP1.1 support nhttpd 3.0.5 -5-Enhancement JG200000546 nhttpd: new Socket multiplexing for multi-threading nhttpd 3.0.5 -5-Enhancement JG200000536 nhttpd: Upload Progress .. nhttpd 3.0.5 - -5-Enhancement JG200000552 Settings: Support for new nhttpd.conf Format R2.2.0 -5-Enhancement JG200000530 nhttpd: Webserver (yhhtpd) rewritten nhttpd 3.0.0 -5-Enhancement JG200000529 nhttpd: split nhttpd in yhttpd_core, yhttpd_mods, neutrinoAPI nhttpd 3.0.0 -5-Enhancement JG200000527 Bouquet: Bouquet-Editor moved to tools R2.1.0 -5-Enhancement JG200000523 Bouquet-Editor: new implemented R2.1.0 -5-Enhancement JG200000526 Bouquet: EPG-List: new implemented R2.1.0 -5-Enhancement JG200000534 Boxcontrol: Use /control/standby to determine standby status R2.1.0 -5-Enhancement JG200000440 Timer: ANNOUNCE_TIME_1=-120 at Rec from EPG .. R2.1.0 -5-Enhancement JG200000524 Timer: TimerList new implemented R2.1.0 -5-Enhancement JG200000531 Timer: use RecordingSafty in Timer-Prog R2.1.0 -5-Enhancement JG200000525 Timer: add/modify Timer: new implemented R2.1.0 -4-Minor JG200000522 Tools: Flash fix reboot button R2.1.0 - -5-Enhancement JG200000511 GUI: disable AutoMount if ManagementIP does not match R2.0.2 -4-Minor JG200000519 Live: VLC Snapshot with IE works again R2.0.2 -5-Enhancement JG200000512 Live: fix: Fullscreen-Button (IE) does not work R2.0.2 -5-Enhancement JG200000518 Live: add EPG-Button for Popup R2.0.2 -3-Average JG200000517 Record: fixed: Record without transcoding works again R2.0.2 -5-Enhancement JG200000514 Settings: Diverse: add EPG-Settings R2.0.2 -5-Enhancement JG200000513 Settings: Diverse: add Virtual zap R2.0.2 - -3-Average JG200000504 fix: call dboxshot correctly if installed in /var/bin (in Remote OSD) R2.0.1 -3-Average JG200000506 Live: fixed Problems switching channels in LiveTV/Radio R2.0.1 -5-Enhancement JG200000507 Live: MiniEPG only on demand R2.0.1 - -5-Enhancement JG200000478 Boxcontrol: OSD Screenshot: Support for dboxshot R2.0.0 -5-Enhancement JG200000480 Boxcontrol: Control: Live lock / unlock R2.0.0 -5-Enhancement JG200000482 Boxcontrol: Control: new: Standby Status R2.0.0 -5-Enhancement JG200000483 EPG: Link to IMDB R2.0.0 -5-Enhancement JG200000498 Boxcontrol: add SPTS Status R2.0.0 -5-Enhancement JG200000497 Boxcontrol: New RC-Imake: Nokia-Remote R2.0.0 -5-Enhancement JG200000494 Boxcontrol: Control: Add optical Output on/off/status R2.0.0 -4-Minor JG200000392 GUI: initialize Volumen correctly .. R2.0.0 -5-Enhancement JG200000331 GUI: all Pages W3C XHTML 1.0 conform .. R2.0.0 -5-Enhancement JG200000465 GUI: new volumen control R2.0.0 -5-Enhancement JG200000459 GUI: new yWeb 2.0 Layout R2.0.0 -5-Enhancement JG200000254 GUI: Show channel-logos (if mounted) R2.0.0 -5-Enhancement JG200000455 GUI: Help: New Item to Wiki R2.0.0 -5-Enhancement JG200000449 GUI: show actual time in main menu R2.0.0 -5-Enhancement JG200000439 GUI: show custom text in Menue to identify box (if you have several boxes) R2.0.0 -5-Enhancement JG200000468 Info: add external Links for getting help R2.0.0 -5-Enhancement JG200000473 Live: Radio-Streaming with VLC (0.8.5) New! R2.0.0 -5-Enhancement JG200000500 Live: Transcode: own dialogue and more settings R2.0.0 -5-Enhancement JG200000464 Live: Mini EPG for actual channel R2.0.0 -5-Enhancement JG200000484 Live: dont show bouquet if set to hidden R2.0.0 -5-Enhancement JG200000408 Live: deinterlace & http-caching R2.0.0 -5-Enhancement JG200000492 Live: Set Timer from Mini EPG R2.0.0 -5-Enhancement JG200000457 Record: Transcode while recording R2.0.0 -5-Enhancement JG200000443 Record: new option: display off R2.0.0 -5-Enhancement JG200000458 Record: add Profiles for transcoding (iPodVideo, custom...) R2.0.0 -5-Enhancement JG200000474 Record: Radio-Recording & Transcoding (VLC) to mp3, iPod, custom R2.0.0 -5-Enhancement JG200000477 Record: Radio-Recording & Transcoding (mp3, iPod, custom) R2.0.0 -5-Enhancement JG200000456 Settings: Backup & Restore settings R2.0.0 -5-Enhancement JG200000475 Settings: new direct recording Filename template R2.0.0 -5-Enhancement JG200000496 settings: remove support antiservices.xml R2.0.0 -5-Enhancement JG200000479 Settings: New Menu for Live-Settings R2.0.0 -5-Enhancement JG200000487 Settings: WebServer: new ExtrasDocRoot/URL R2.0.0 -5-Enhancement JG200000134 Timer: new: EPG+ R2.0.0 -5-Enhancement JG200000452 Timer: SyncTimer: Switch to TV only from radio-mode R2.0.0 -5-Enhancement JG200000490 Timer: EPG+ add set timer and zapto R2.0.0 -4-Minor JG200000137 Tools: Message to box displays special charachers correct R2.0.0 -5-Enhancement JG200000448 Tools: Wake on Lan fix Javascript Error R2.0.0 -5-Enhancement JG200000470 Tools: Flash image: add Demo mode R2.0.0 -5-Enhancement JG200000469 Tools: Flash image: new dialogs R2.0.0 -5-Enhancement JG200000476 Tools: AutoMount (Warmduscher Interface) R2.0.0 - -3-Average JG200000485 nhttpd: fixed: yvars now in WebserverRequest (multi-threading) nhttpd 2.2.4 -5-Enhancement JG200000463 nhttpd: add EPG data in XML format nhttpd 2.2.4 -5-Enhancement JG200000486 nhttpd: add caching for blocks nhttpd 2.2.4 -5-Enhancement JG200000488 nhttpd: Set Timer, zapto,epg: Channel_name with multiple values .. nhttpd 2.2.4 -5-Enhancement JG200000491 nhttpd: new: XML-Format for bouquets nhttpd 2.2.4 -5-Enhancement JG200000495 nhttpd: new: zapto?getallsubchannels nhttpd 2.2.4 - -5-Enhancement JG200000399 Boxcontrol: view box record-status .. R1.5.0 -3-Average JG200000424 Bouquetedit: fixed probs with Firefox 1.5 editing problems R1.5.0 -5-Enhancement JG200000414 GUI: Links to Wiki R1.5.0 -3-Average JG200000420 Live: fixed Stream-URL problems with yadd & Firefox R1.5.0 -5-Enhancement JG200000432 Live: Radio works with yadds R1.5.0 -5-Enhancement JG200000351 LiveView: Build Stream-URL with ClientAddr (for NAT, Remapping) R1.5.0 -4-Minor JG200000433 Settings: WOL fixed Javascript Errors R1.5.0 -5-Enhancement JG200000394 Settings: add: Neutrino direct recording settings ... R1.5.0 -5-Enhancement JG200000417 Settings: WebServer: add HostedDocumentRoot R1.5.0 -5-Enhancement JG200000418 Settings: WebServer: add NoAuthClient R1.5.0 -5-Enhancement JG200000373 Settings: yWeb speed up using caching R1.5.0 -5-Enhancement JG200000434 Settings: WOL Link to yWeb-Settings R1.5.0 -5-Enhancement JG200000435 Settings: About: Links to Wiki R1.5.0 -5-Enhancement JG200000425 Timer: SyncTimer: added start and stop deplay from recording settings R1.5.0 -5-Enhancement JG200000405 Timer: Sync Timer: add rec_dir R1.5.0 -5-Enhancement JG200000231 Timer: tvinfo.de download & TimerSync R1.5.0 -5-Enhancement JG200000398 Timer: new timer default now: record R1.5.0 -4-Minor JG200000410 Tools: Sagem RC is displayed in primary menu R1.5.0 -5-Enhancement JG200000415 Tools: new: Check Installation R1.5.0 -5-Enhancement JG200000348 Tools: Info: use echo -e to advoid escaped newline output R1.5.0 - -5-Enhancement JG200000438 nhttpd: add Timer: rec_dir from neutrino.conf as default nhttpd 2.2.3 -5-Enhancement JG200000423 nhttpd: fixed lost Data in POST-Method (Mozilla/Firefox) nhttpd 2.2.2 -5-Enhancement JG200000422 nhttpd: No Authentication with new NoAuthClient fixed nhttpd 2.2.2 -5-Enhancement JG200000428 nhttpd: ini-set caching: clear config on open nhttpd 2.2.2 - -5-Enhancement JG200000294 nhttpd: Host other Webs (Root defined at HostedDocumentRoot in nhttpd.conf) nhttpd 2.2.1 -5-Enhancement JG200000388 nhttpd: set IP with no authentication (e.g. for JtG etc) nhttpd 2.2.1 -5-Enhancement JG200000416 nhttdp: zapto mit channel_name nhttpd 2.2.1 - -3-Average JG200000369 Live: fixed problems switching Radio-Channels R1.4.3 -4-Minor JG200000355 nhttpd: change port now used in Scripts R1.4.3 -4-Minor JG200000365 Settings: fixed: upload cam-alpha.bin now named correctly R1.4.3 -5-Enhancement JG200000366 settings: add port to WebServer settings R1.4.3 -5-Enhancement JG200000367 gui: add remote control for Sagem R1.4.3 -5-Enhancement JG200000389 tools: restart sectionsd R1.4.3 -5-Enhancement JG200000391 flash: fixed reboot after flashing R1.4.3 - -4-Minor JG200000359 tools: fix reboot after flash R1.4.2 -5-Enhancement JG200000332 Live: record: filepath settings at settings->yWeb R1.4.2 -5-Enhancement JG200000337 bouquets: start bouquetlist at actual bouquet R1.4.2 -5-Enhancement JG200000360 bouquet: text in black again R1.4.2 - -5-Enhancement JG200000127 flash download: button for delete download-image in /tmp R1.4.1 -5-Enhancement JG200000339 nhttpd: new: file-action:;; R1.4.1 -5-Enhancement JG200000340 new: Neutrino-Settings: pictureviewer R1.4.1 -5-Enhancement JG200000341 new: Neutrino-Settings: Audioplayer R1.4.1 -5-Enhancement JG200000342 new: Neutrino-Settings: Movieplayer R1.4.1 -5-Enhancement JG200000343 new: Neutrino-Settings: Diverse R1.4.1 -5-Enhancement JG200000344 new: Neutrino-Settings: Boot Options R1.4.1 -5-Enhancement JG200000345 new: Neutrino-Settings: Parental R1.4.1 -5-Enhancement JG200000346 new: Neutrino-Settings: Recording R1.4.1 -5-Enhancement JG200000347 Timer: add recordingDir R1.4.1 - -3-Average JG200000156 Flash: Error in mtd list if length!=5 R1.4.0 -5-Enhancement JG200000326 Flash: New Dialogs R1.4.0 -5-Enhancement JG200000233 Tools: new: Wake on LAN for 3 MACs R1.4.0 -5-Enhancement JG200000246 mount: do mount at mount list R1.4.0 -5-Enhancement JG200000247 mount: new: unmount list R1.4.0 -5-Enhancement JG200000305 infos: /proc/cpuinfo, meminfo, version... R1.4.0 -5-Enhancement JG200000271 nhttpd: ycgi: new: include-block:;; R1.4.0 -5-Enhancement JG200000314 nhttpd: ycgi: new: ini-set:;; R1.4.0 -5-Enhancement JG200000234 nhttpd: ycgi: new: if-file-exists:~~ R1.4.0 -5-Enhancement JG200000315 nhttpd: ycgi: new: if-not-equal R1.4.0 -5-Enhancement JG200000317 nhttpd: ycgi: new: add var-set, var-get for local ycgi varables R1.4.0 -5-Enhancement JG200000318 Live: Experimental: Change VLC audio channel R1.4.0 -5-Enhancement JG200000311 Live: record (Expert Mode ActiveX).. R1.4.0 -5-Enhancement JG200000312 Live: record: mux type = ts, ps R1.4.0 -5-Enhancement JG200000319 Live: Expert Mode: Take VLC Snapshot R1.4.0 -5-Enhancement JG200000320 after change Web Password: reload nhttpd.conf R1.4.0 -5-Enhancement JG200000325 General from-dialog updates R1.4.0 -5-Enhancement JG200000327 New: OSD Snapshot with fbshot R1.4.0 -5-Enhancement JG200000316 Management IP for some dialogs required R1.4.0 - -3-Average JG200000308 nhttpd: re-write file upload handling (solved: problems with pre-send data - mozilla engines) R1.3.6 -5-Enhancement JG200000144 Live: add Streaminfo button R1.3.6 -5-Enhancement JG200000145 yInstaller: upload a tar-file and execude included install.sh R1.3.6 -5-Enhancement JG200000287 WebIF: telnet like commandline R1.3.6 -5-Enhancement JG200000292 Live: channel-EPG-Panel autorefresh all 5min R1.3.6 -5-Enhancement JG200000297 Live: epg preview for selected channel R1.3.6 -5-Enhancement JG200000304 nhttpd: new func get_request_data R1.3.6 -5-Enhancement JG200000307 nhttpd: re-write file upload handling (saving memory) R1.3.6 - -4-Minor JG200000266 Settings: WebServer JavaScript-Error for field port R1.3.5 -4-Minor JG200000269 _Y_Library.sh:config_set_value() interpret backslash R1.3.5 -4-Minor JG200000232 Live:Sprache: DropDown ins TV Fenster R1.3.5 -5-Enhancement JG200000141 Live: enable select audio-pid R1.3.5 -5-Enhancement JG200000237 robots.txt in html-root R1.3.5 -5-Enhancement JG200000255 keine hard-links nach httpd-y (z.B. _Y_Globals.sh) R1.3.5 -5-Enhancement JG200000272 Dialog Boot-Logo und LCD-Logo zusammenfassen R1.3.5 -5-Enhancement JG200000277 Tooltips in english R1.3.5 -5-Enhancement JG200000278 Tools->msg beide Dialoge zusammenfassen R1.3.5 -5-Enhancement JG200000280 tools: move Message to Boxcontrol R1.3.5 -5-Enhancement JG200000284 use image am maps for web-based remote control R1.3.5 - -4-Minor JG200000216 nhttp: Upload temporary file moved from /var/tmp to /tmp/upload.tmp R1.3.4 -5-Enhancement JG200000139 Live: EPG-Title in Channel-Dropdown R1.3.4 -5-Enhancement JG200000212 nhttpd: use relative path for includes R1.3.4 -5-Enhancement JG200000217 nhttpd: ycgi: set Working-Dir to template path R1.3.4 -5-Enhancement JG200000227 ycgi: new:func:get_audio_pids_as_dropdown R1.3.4 -5-Enhancement JG200000229 remote RC via Web R1.3.4 - -5-Enhancement JG200000218 ycgi: new cmd: if-empty R1.3.3 -5-Enhancement JG200000219 ycgi: new cmd: if-equal R1.3.3 -5-Enhancement JG200000220 ycgi: new:func:get_bouquts_as_dropdown R1.3.3 -5-Enhancement JG200000221 ycgi: new:func:get_actual_bouquet_numer R1.3.3 -5-Enhancement JG200000222 ycgi: new:func:get_canel_as_dropdown R1.3.3 -5-Enhancement JG200000223 ycgi: new:func:get_actual_channel_id R1.3.3 -5-Enhancement JG200000224 ycgi: new:func:get_mode R1.3.3 -5-Enhancement JG200000225 ycgi: new:func:get_video_pids R1.3.3 -5-Enhancement JG200000226 ycgi: new:func:get_radio_pid R1.3.3 -5-Enhancement JG200000235 ycgi: Neu *.yhtm-Dateien & Reorg der Dateien R1.3.3 - -5-Enhancement JG200000035 Live: Window size configurable R1.3.2 -5-Enhancement JG200000107 Live: new: Double-View R1.3.2 -5-Enhancement JG200000206 nhttpd: Set Working dir for Skripts R1.3.2 -5-Enhancement JG200000207 scripts: relative local include path R1.3.2 -5-Enhancement JG200000209 correct Frame-Destinations VNC, Skins, WebServer R1.3.2 -5-Enhancement JG200000210 Settings: yWeb Configurator (slave box, live resolution) R1.3.2 -5-Enhancement JG200000211 add ucode.bin for up/download R1.3.2 - -5-Enhancement JG200000200 Live: Radio: Player via Dateierweiterung m3u, m4u starten R1.3.1 -3-Average JG200000147 LiveView nur 9 Bouquets im Dropdown. fixed. R1.3.1 -4-Minor JG200000179 dietmarW-Images habe kein /var/tmp also /tmp nutzen R1.3.1 -5-Enhancement JG200000084 Plugins: Settings: Mount-Einstellungen R1.3.1 -5-Enhancement JG200000182 Live: Bouquets & Channel: Dropdown Breite begrenzen R1.3.1 -5-Enhancement JG200000183 Bouquets: epg und settings im yWeb_Layout R1.3.1 -5-Enhancement JG200000184 ycgi: execute=