diff -Nru kodi-pvr-vdr-vnsi-2.6.11/debian/changelog kodi-pvr-vdr-vnsi-2.6.17/debian/changelog --- kodi-pvr-vdr-vnsi-2.6.11/debian/changelog 2016-12-19 12:55:51.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/debian/changelog 2017-01-19 16:31:38.000000000 +0000 @@ -1,4 +1,4 @@ -kodi-pvr-vdr-vnsi (2.6.11-1~xenial) xenial; urgency=low +kodi-pvr-vdr-vnsi (2.6.17-3~xenial) xenial; urgency=low [ xbmc ] * autogenerated dummy changelog @@ -6,4 +6,4 @@ [ wsnipex ] * no upstream changelog available - -- wsnipex Mon, 19 Dec 2016 13:55:51 +0100 + -- wsnipex Thu, 19 Jan 2017 17:31:38 +0100 diff -Nru kodi-pvr-vdr-vnsi-2.6.11/debian/changelog.tmp kodi-pvr-vdr-vnsi-2.6.17/debian/changelog.tmp --- kodi-pvr-vdr-vnsi-2.6.11/debian/changelog.tmp 2016-12-19 12:55:30.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/debian/changelog.tmp 2017-01-19 16:31:16.000000000 +0000 @@ -1,4 +1,4 @@ -kodi-pvr-vdr-vnsi (2.6.11-1~#DIST#) #DIST#; urgency=low +kodi-pvr-vdr-vnsi (2.6.17-3~#DIST#) #DIST#; urgency=low [ xbmc ] * autogenerated dummy changelog diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/addon.xml.in kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/addon.xml.in --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/addon.xml.in 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/addon.xml.in 2017-01-14 14:03:27.000000000 +0000 @@ -1,7 +1,7 @@ diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.af_za/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.af_za/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.af_za/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.af_za/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -272,6 +272,26 @@ msgid "Provider Unknown" msgstr "Verskaffer onbekend" +msgctxt "#30200" +msgid "Single" +msgstr "Enkel" + msgctxt "#30201" msgid "Repeating" msgstr "Herhaal" + +msgctxt "#30202" +msgid "EGP" +msgstr "EGP" + +msgctxt "#30203" +msgid "VPS" +msgstr "VPS" + +msgctxt "#30204" +msgid "Search EPG" +msgstr "Deursoek EPG" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Herhalend Kind" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.en_gb/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.en_gb/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.en_gb/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.en_gb/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -299,3 +299,7 @@ msgctxt "#30204" msgid "Search EPG" msgstr "" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.en_nz/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.en_nz/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.en_nz/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.en_nz/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -287,3 +287,7 @@ msgctxt "#30204" msgid "Search EPG" msgstr "Search EPG" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Repeating Child" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.es_es/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.es_es/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.es_es/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.es_es/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -238,7 +238,7 @@ msgctxt "#30106" msgid "Timeshift Buffer (File) x1 GB" -msgstr "Buffer Timeshift Buffer (Archivo) x1 GB" +msgstr "Buffer Timeshift (Archivo) x1 GB" msgctxt "#30107" msgid "VDR Admin" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.es_mx/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.es_mx/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.es_mx/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.es_mx/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -228,6 +228,18 @@ msgid "Select to control OSD" msgstr "Seleccionar para controlar OSD" +msgctxt "#30104" +msgid "Timeshift Mode" +msgstr "Modo Timeshift" + +msgctxt "#30105" +msgid "Timeshift Buffer (RAM) x100 MB" +msgstr "Buffer Timeshift (RAM) x100 MB" + +msgctxt "#30106" +msgid "Timeshift Buffer (File) x1 GB" +msgstr "Buffer Timeshift (Archivo) x1 GB" + msgctxt "#30107" msgid "VDR Admin" msgstr "VDR Admin" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.fi_fi/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.fi_fi/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.fi_fi/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.fi_fi/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -291,3 +291,7 @@ msgctxt "#30204" msgid "Search EPG" msgstr "Etsi ohjelmaoppaasta" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Toistuva (lapsi)" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.fr_ca/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.fr_ca/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.fr_ca/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.fr_ca/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -291,3 +291,7 @@ msgctxt "#30204" msgid "Search EPG" msgstr "Rechercher dans le GÉP" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Répétition de l'enfant" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.fr_fr/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.fr_fr/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.fr_fr/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.fr_fr/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -291,3 +291,7 @@ msgctxt "#30204" msgid "Search EPG" msgstr "Rechercher dans le guide" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Répétition de l'enfant" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.it_it/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.it_it/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.it_it/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.it_it/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -291,3 +291,7 @@ msgctxt "#30204" msgid "Search EPG" msgstr "Cerca EPG" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Ripetizione Bambini" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.lt_lt/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.lt_lt/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.lt_lt/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.lt_lt/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -291,3 +291,7 @@ msgctxt "#30204" msgid "Search EPG" msgstr "Ieškoti EPG" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Pasikartojantis vaikas" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.nb_no/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.nb_no/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.nb_no/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.nb_no/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -291,3 +291,7 @@ msgctxt "#30204" msgid "Search EPG" msgstr "Søk EPG" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Gjentagende Underelement" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.pl_pl/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.pl_pl/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.pl_pl/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.pl_pl/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -291,3 +291,7 @@ msgctxt "#30204" msgid "Search EPG" msgstr "Wyszukaj w przewodniku" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Cyklicznie potomka" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.pt_br/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.pt_br/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.pt_br/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.pt_br/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -291,3 +291,7 @@ msgctxt "#30204" msgid "Search EPG" msgstr "Procurar EPG" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Repetindo Criança" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.sk_sk/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.sk_sk/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.sk_sk/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.sk_sk/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -291,3 +291,7 @@ msgctxt "#30204" msgid "Search EPG" msgstr "Hľadať EPG" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Opakovacie dieťa" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.sv_se/strings.po kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.sv_se/strings.po --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/language/resource.language.sv_se/strings.po 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/language/resource.language.sv_se/strings.po 2017-01-14 14:03:27.000000000 +0000 @@ -278,7 +278,7 @@ msgctxt "#30201" msgid "Repeating" -msgstr "Upprepat" +msgstr "Repeterande" msgctxt "#30202" msgid "EGP" @@ -287,3 +287,11 @@ msgctxt "#30203" msgid "VPS" msgstr "VPS" + +msgctxt "#30204" +msgid "Search EPG" +msgstr "Sök EPG" + +msgctxt "#30205" +msgid "Repeating Child" +msgstr "Repeterande Barn" diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/skins/skin.estuary/1080i/Admin.xml kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/skins/skin.estuary/1080i/Admin.xml --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/skins/skin.estuary/1080i/Admin.xml 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/skins/skin.estuary/1080i/Admin.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,292 +0,0 @@ - - - 10 - background - no - 36 - - DefaultBackground - - 110 - 0 - - OpenClose_Left - - Menu Panel - -20 - 138 - 440 - 792 - dialogs/dialog-bg.png - - - button area - 0 - 160 - 400 - 700 - 10 - 11 - 10 - 10 - - - - - - - - - - noop - - - - noop - - - - noop - - - - - - OpenClose_Right - - 420 - 138 - 1300 - 792 - dialogs/dialog-bg.png - - - Container(10).HasFocus(1) - - 472 - 172 - 1216 - 686 - top - center - 690 - - - buttons/thumbnail_focused.png - - - 480 - 180 - 1200 - 670 - - - - 442 - 160 - 1256 - 610 - Container(10).HasFocus(2) - 10 - - - 1256 - DefaultSettingButton - - - - 1256 - DefaultSettingButton - - - - 1256 - DefaultSettingButton - - - - Container(10).HasFocus(3) - 33 - - Channels label - 480 - 165 - 1000 - 60 - font30_title - - left - center - white - black - - - 1550 - 180 - 40 - 40 - FFCC0000 - overlays/circle.png - StringCompare(Window.Property(IsDirty),1) - - - 1550 - 180 - 40 - 40 - FF00FF00 - overlays/circle.png - !StringCompare(Window.Property(IsDirty),1) - - - 442 - 230 - 520 - 610 - 10 - 36 - - Is Radio - 520 - DefaultSettingButton - - - - providers - 520 - - DefaultSettingButton - Select - - - channels - 520 - - DefaultSettingButton - Select - - - save - 520 - - DefaultSettingButton - - - - 980 - 230 - 640 - 640 - buttons/dialogbutton-nofo.png - - - 1000 - 250 - 600 - 600 - 36 - 35 - 37 - 36 - 37 - 200 - - - 0 - 0 - 6000 - 40 - lists/separator.png - - - 40 - 0 - 6000 - 40 - left - ListItem.Label - - - 2 - 2 - 36 - 36 - stretch - 7790EE90 - overlays/arrowright.png - ListItem.Property(IsWhitelist) - - - 2 - 2 - 36 - 36 - stretch - 77FF0000 - overlays/arrowright.png - ListItem.Property(IsBlacklist) - - - - - 0 - 0 - 600 - 40 - lists/separator.png - - - 0 - 0 - 600 - 40 - lists/focus.png - - - 40 - 0 - 600 - 40 - left - ListItem.Label - - - 2 - 2 - 36 - 36 - stretch - 7790EE90 - overlays/arrowright.png - ListItem.Property(IsWhitelist) - - - 2 - 2 - 36 - 36 - stretch - 77FF0000 - overlays/arrowright.png - ListItem.Property(IsBlacklist) - - - - - 1620 - 250 - 13 - 600 - 36 - false - vertical - - - - - - - - - BottomBar - - diff -Nru kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/skins/skin.estuary/xml/Admin.xml kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/skins/skin.estuary/xml/Admin.xml --- kodi-pvr-vdr-vnsi-2.6.11/pvr.vdr.vnsi/resources/skins/skin.estuary/xml/Admin.xml 1970-01-01 00:00:00.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/pvr.vdr.vnsi/resources/skins/skin.estuary/xml/Admin.xml 2017-01-14 14:03:27.000000000 +0000 @@ -0,0 +1,292 @@ + + + 10 + background + no + 36 + + DefaultBackground + + 110 + 0 + + OpenClose_Left + + Menu Panel + -20 + 138 + 440 + 792 + dialogs/dialog-bg.png + + + button area + 0 + 160 + 400 + 700 + 10 + 11 + 10 + 10 + + + + + + + + + + noop + + + + noop + + + + noop + + + + + + OpenClose_Right + + 420 + 138 + 1300 + 792 + dialogs/dialog-bg.png + + + Container(10).HasFocus(1) + + 472 + 172 + 1216 + 686 + top + center + 690 + - + buttons/thumbnail_focused.png + + + 480 + 180 + 1200 + 670 + + + + 442 + 160 + 1256 + 610 + Container(10).HasFocus(2) + 10 + + + 1256 + DefaultSettingButton + + + + 1256 + DefaultSettingButton + + + + 1256 + DefaultSettingButton + + + + Container(10).HasFocus(3) + 33 + + Channels label + 480 + 165 + 1000 + 60 + font30_title + + left + center + white + black + + + 1550 + 180 + 40 + 40 + FFCC0000 + overlays/circle.png + StringCompare(Window.Property(IsDirty),1) + + + 1550 + 180 + 40 + 40 + FF00FF00 + overlays/circle.png + !StringCompare(Window.Property(IsDirty),1) + + + 442 + 230 + 520 + 610 + 10 + 36 + + Is Radio + 520 + DefaultSettingButton + + + + providers + 520 + + DefaultSettingButton + Select + + + channels + 520 + + DefaultSettingButton + Select + + + save + 520 + + DefaultSettingButton + + + + 980 + 230 + 640 + 640 + buttons/dialogbutton-nofo.png + + + 1000 + 250 + 600 + 600 + 36 + 35 + 37 + 36 + 37 + 200 + + + 0 + 0 + 6000 + 40 + lists/separator.png + + + 40 + 0 + 6000 + 40 + left + ListItem.Label + + + 2 + 2 + 36 + 36 + stretch + 7790EE90 + overlays/arrowright.png + ListItem.Property(IsWhitelist) + + + 2 + 2 + 36 + 36 + stretch + 77FF0000 + overlays/arrowright.png + ListItem.Property(IsBlacklist) + + + + + 0 + 0 + 600 + 40 + lists/separator.png + + + 0 + 0 + 600 + 40 + lists/focus.png + + + 40 + 0 + 600 + 40 + left + ListItem.Label + + + 2 + 2 + 36 + 36 + stretch + 7790EE90 + overlays/arrowright.png + ListItem.Property(IsWhitelist) + + + 2 + 2 + 36 + 36 + stretch + 77FF0000 + overlays/arrowright.png + ListItem.Property(IsBlacklist) + + + + + 1620 + 250 + 13 + 600 + 36 + false + vertical + + + + + + + + + BottomBar + + diff -Nru kodi-pvr-vdr-vnsi-2.6.11/src/vnsicommand.h kodi-pvr-vdr-vnsi-2.6.17/src/vnsicommand.h --- kodi-pvr-vdr-vnsi-2.6.11/src/vnsicommand.h 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/src/vnsicommand.h 2017-01-14 14:03:27.000000000 +0000 @@ -23,7 +23,7 @@ #define VNSI_COMMAND_H /** Current VNSI Protocol Version number */ -#define VNSI_PROTOCOLVERSION 9 +#define VNSI_PROTOCOLVERSION 10 /** Start of RDS support protocol Version */ #define VNSI_RDS_PROTOCOLVERSION 8 @@ -165,6 +165,7 @@ #define VNSI_TIMER_TYPE_EPG 3 #define VNSI_TIMER_TYPE_VPS 4 #define VNSI_TIMER_TYPE_EPG_SEARCH 5 +#define VNSI_TIMER_TYPE_MAN_REPEAT_CHILD 6 /** Packet return codes */ #define VNSI_RET_OK 0 diff -Nru kodi-pvr-vdr-vnsi-2.6.11/src/VNSIData.cpp kodi-pvr-vdr-vnsi-2.6.17/src/VNSIData.cpp --- kodi-pvr-vdr-vnsi-2.6.11/src/VNSIData.cpp 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/src/VNSIData.cpp 2017-01-14 14:03:27.000000000 +0000 @@ -24,6 +24,43 @@ #include "requestpacket.h" #include "vnsicommand.h" #include "p8-platform/util/StdString.h" +#include +#include +#include + +// helper functions (taken from VDR) + +time_t IncDay(time_t t, int days) +{ + struct tm tm = *localtime(&t); + tm.tm_mday += days; + int h = tm.tm_hour; + tm.tm_isdst = -1; + t = mktime(&tm); + tm.tm_hour = h; + return mktime(&tm); +} + +int GetWDay(time_t t) +{ + int weekday = localtime(&t)->tm_wday; + return weekday == 0 ? 6 : weekday - 1; // we start with Monday==0! +} + +bool DayMatches(time_t t, unsigned int weekdays) +{ + return (weekdays & (1 << GetWDay(t))) != 0; +} + +time_t SetTime(time_t t, int secondsFromMidnight) +{ + struct tm tm = *localtime(&t); + tm.tm_hour = secondsFromMidnight / 3600; + tm.tm_min = (secondsFromMidnight % 3600) / 60; + tm.tm_sec = secondsFromMidnight % 60; + tm.tm_isdst = -1; // makes sure mktime() will determine the correct DST setting + return mktime(&tm); +} using namespace ADDON; using namespace P8PLATFORM; @@ -44,8 +81,7 @@ return vresp; } -void -cVNSIData::Queue::Set(std::unique_ptr &&vresp) +void cVNSIData::Queue::Set(std::unique_ptr &&vresp) { CLockObject lock(m_mutex); SMessages::iterator it = m_queue.find(vresp->getRequestID()); @@ -396,6 +432,14 @@ { char *epgSearch = vresp->extract_String(); strncpy(tag.strEpgSearchString, epgSearch, sizeof(tag.strEpgSearchString) - 1); + + if (tag.iTimerType == VNSI_TIMER_TYPE_MAN && tag.iWeekdays) + tag.iTimerType = VNSI_TIMER_TYPE_MAN_REPEAT; + } + + if (GetProtocol() >= 10) + { + tag.iParentClientIndex = vresp->extract_U32(); } return PVR_ERROR_NO_ERROR; @@ -453,29 +497,81 @@ { char *epgSearch = vresp->extract_String(); strncpy(tag.strEpgSearchString, epgSearch, sizeof(tag.strEpgSearchString) - 1); + + if (tag.iTimerType == VNSI_TIMER_TYPE_MAN && tag.iWeekdays) + tag.iTimerType = VNSI_TIMER_TYPE_MAN_REPEAT; + } + + if (GetProtocol() >= 10) + { + tag.iParentClientIndex = vresp->extract_U32(); } if (tag.startTime == 0) - tag.bStartAnyTime = true; + tag.bStartAnyTime = true; if (tag.endTime == 0) - tag.bEndAnyTime = true; + tag.bEndAnyTime = true; PVR->TransferTimerEntry(handle, &tag); + + if (tag.iTimerType == VNSI_TIMER_TYPE_MAN_REPEAT && + tag.state != PVR_TIMER_STATE_DISABLED) + { + GenTimerChildren(tag, handle); + } } } return true; } -PVR_ERROR cVNSIData::AddTimer(const PVR_TIMER &timerinfo) +bool cVNSIData::GenTimerChildren(const PVR_TIMER &timer, ADDON_HANDLE handle) { - cRequestPacket vrp; - vrp.init(VNSI_TIMER_ADD); + time_t now = time(nullptr); + time_t firstDay = timer.firstDay; + + struct tm *loctime = localtime(&timer.startTime); + int startSec = loctime->tm_hour * 3600 + loctime->tm_min * 60; + loctime = localtime(&timer.endTime); + int stopSec = loctime->tm_hour * 3600 + loctime->tm_min * 60; + int length = stopSec - startSec; + if (length < 0) + length += 3600 * 24; + + for (int n = 0; n < 2; ++n) + { + for (int i = -1; i <= 7; i++) + { + time_t t0 = IncDay(firstDay ? std::max(firstDay, now) : now, i); + if (DayMatches(t0, timer.iWeekdays)) + { + time_t start = SetTime(t0, startSec); + time_t stop = start + length; + if ((!firstDay || start >= firstDay) && now < stop) + { + PVR_TIMER child = timer; + child.iClientIndex = timer.iClientIndex + n | 0xF000; + child.iParentClientIndex = timer.iClientIndex; + child.iTimerType = VNSI_TIMER_TYPE_MAN_REPEAT_CHILD; + child.startTime = start; + child.endTime = stop; + child.iWeekdays = 0; + PVR->TransferTimerEntry(handle, &child); + firstDay = start + length + 300; + break; + } + } + } + } + return true; +} +std::string cVNSIData::GenTimerFolder(std::string directory, std::string title) +{ // add directory in front of the title std::string path; - if (strlen(timerinfo.strDirectory) > 0) + if (strlen(directory.c_str()) > 0) { - path += timerinfo.strDirectory; + path += directory; if (path == "/") { path.clear(); @@ -503,9 +599,9 @@ } } - if (strlen(timerinfo.strTitle) > 0) + if (strlen(title.c_str()) > 0) { - path += timerinfo.strTitle; + path += title; } // replace colons @@ -517,6 +613,16 @@ } } + return path; +} + +PVR_ERROR cVNSIData::AddTimer(const PVR_TIMER &timerinfo) +{ + cRequestPacket vrp; + vrp.init(VNSI_TIMER_ADD); + + // add directory in front of the title + std::string path = GenTimerFolder(timerinfo.strDirectory, timerinfo.strTitle); if (path.empty()) { XBMC->Log(LOG_ERROR, "%s - Empty filename !", __FUNCTION__); @@ -548,6 +654,12 @@ vrp.add_String(timerinfo.strEpgSearchString); } + if (GetProtocol() >= 10) + { + vrp.add_U32(timerinfo.iMarginStart*60); + vrp.add_U32(timerinfo.iMarginEnd*60); + } + auto vresp = ReadResult(&vrp); if (vresp == NULL || vresp->noResponse()) { @@ -608,6 +720,14 @@ uint32_t starttime = timerinfo.startTime - timerinfo.iMarginStart*60; uint32_t endtime = timerinfo.endTime + timerinfo.iMarginEnd*60; + // add directory in front of the title + std::string path = GenTimerFolder(timerinfo.strDirectory, timerinfo.strTitle); + if (path.empty()) + { + XBMC->Log(LOG_ERROR, "%s - Empty filename !", __FUNCTION__); + return PVR_ERROR_UNKNOWN; + } + cRequestPacket vrp; vrp.init(VNSI_TIMER_UPDATE); @@ -624,7 +744,7 @@ vrp.add_U32(endtime); vrp.add_U32(timerinfo.iWeekdays != PVR_WEEKDAY_NONE ? timerinfo.firstDay : 0); vrp.add_U32(timerinfo.iWeekdays); - vrp.add_String(""); + vrp.add_String(path.c_str()); vrp.add_String(timerinfo.strTitle); if (GetProtocol() >= 9) @@ -683,6 +803,20 @@ PVR_TIMER_TYPE_SUPPORTS_RECORDING_FOLDERS; (*size)++; + // Repeating manual + memset(&types[*size], 0, sizeof(types[*size])); + types[*size].iId = VNSI_TIMER_TYPE_MAN_REPEAT_CHILD; + strncpy(types[*size].strDescription, XBMC->GetLocalizedString(30205), 64); + types[*size].iAttributes = PVR_TIMER_TYPE_IS_MANUAL | + PVR_TIMER_TYPE_IS_READONLY | + PVR_TIMER_TYPE_SUPPORTS_CHANNELS | + PVR_TIMER_TYPE_SUPPORTS_START_TIME | + PVR_TIMER_TYPE_SUPPORTS_END_TIME | + PVR_TIMER_TYPE_SUPPORTS_PRIORITY | + PVR_TIMER_TYPE_SUPPORTS_LIFETIME | + PVR_TIMER_TYPE_SUPPORTS_RECORDING_FOLDERS; + (*size)++; + // One-shot epg-based memset(&types[*size], 0, sizeof(types[*size])); types[*size].iId = VNSI_TIMER_TYPE_EPG; @@ -807,8 +941,8 @@ char *strTitle = vresp->extract_String(); strncpy(tag.strTitle, strTitle, sizeof(tag.strTitle) - 1); - char *strPlotOutline = vresp->extract_String(); - strncpy(tag.strPlotOutline, strPlotOutline, sizeof(tag.strPlotOutline) - 1); + char *strEpisodeName = vresp->extract_String(); + strncpy(tag.strEpisodeName, strEpisodeName, sizeof(tag.strEpisodeName) - 1); char *strPlot = vresp->extract_String(); strncpy(tag.strPlot, strPlot, sizeof(tag.strPlot) - 1); @@ -959,8 +1093,8 @@ char *strTitle = vresp->extract_String(); strncpy(tag.strTitle, strTitle, sizeof(tag.strTitle) - 1); - char *strPlotOutline = vresp->extract_String(); - strncpy(tag.strPlotOutline, strPlotOutline, sizeof(tag.strPlotOutline) - 1); + char *strEpisodeName = vresp->extract_String(); + strncpy(tag.strEpisodeName, strEpisodeName, sizeof(tag.strEpisodeName) - 1); char *strPlot = vresp->extract_String(); strncpy(tag.strPlot, strPlot, sizeof(tag.strPlot) - 1); diff -Nru kodi-pvr-vdr-vnsi-2.6.11/src/VNSIData.h kodi-pvr-vdr-vnsi-2.6.17/src/VNSIData.h --- kodi-pvr-vdr-vnsi-2.6.11/src/VNSIData.h 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/src/VNSIData.h 2017-01-14 14:03:27.000000000 +0000 @@ -58,6 +58,8 @@ PVR_ERROR RenameTimer(const PVR_TIMER &timerinfo, const char *newname); PVR_ERROR UpdateTimer(const PVR_TIMER &timerinfo); PVR_ERROR GetTimerTypes(PVR_TIMER_TYPE types[], int *size); + bool GenTimerChildren(const PVR_TIMER &timer, ADDON_HANDLE handle); + std::string GenTimerFolder(std::string directory, std::string title); int GetRecordingsCount(); PVR_ERROR GetRecordingsList(ADDON_HANDLE handle); diff -Nru kodi-pvr-vdr-vnsi-2.6.11/src/xbmc_codec_descriptor.hpp kodi-pvr-vdr-vnsi-2.6.17/src/xbmc_codec_descriptor.hpp --- kodi-pvr-vdr-vnsi-2.6.11/src/xbmc_codec_descriptor.hpp 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/src/xbmc_codec_descriptor.hpp 2017-01-14 14:03:27.000000000 +0000 @@ -20,7 +20,7 @@ #ifndef XBMC_CODEC_DESCRIPTOR_HPP #define XBMC_CODEC_DESCRIPTOR_HPP -#include "kodi/libXBMC_codec.h" +#include "libXBMC_codec.h" /** * Adapter which converts codec names used by tvheadend and VDR into their diff -Nru kodi-pvr-vdr-vnsi-2.6.11/.travis.yml kodi-pvr-vdr-vnsi-2.6.17/.travis.yml --- kodi-pvr-vdr-vnsi-2.6.11/.travis.yml 2016-12-18 09:37:43.000000000 +0000 +++ kodi-pvr-vdr-vnsi-2.6.17/.travis.yml 2017-01-14 14:03:27.000000000 +0000 @@ -36,7 +36,7 @@ # before_script: - cd $TRAVIS_BUILD_DIR/.. - - git clone --depth=1 https://github.com/xbmc/xbmc.git + - git clone -b Krypton --depth=1 https://github.com/xbmc/xbmc.git - cd pvr.vdr.vnsi && mkdir build && cd build - cmake -DADDONS_TO_BUILD=pvr.vdr.vnsi -DADDON_SRC_PREFIX=$TRAVIS_BUILD_DIR/.. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$TRAVIS_BUILD_DIR/../xbmc/addons -DPACKAGE_ZIP=1 $TRAVIS_BUILD_DIR/../xbmc/project/cmake/addons