---
-###Playing a Recording
-
-You can play a recording by clicking the *Play* icon.
-This will automatically launch an appropriate player, otherwise you will
-need to manually open the playlist to start watching (normally a
-double-click on the downloaded file).
-
-Note that these are not links to an actual file but to a playlist.
+<tvh_include>inc/play</tvh_include>
---
###Playing a Stream/File
-You can play a stream/file by copying/pasting the Play icon link from
-the grid into the desired player/software.
+You can play a stream/file by clicking the play icon .
+This will automatically launch an appropriate player, otherwise you will
+need to manually open the playlist to start watching (normally a
+double-click on the downloaded file).
-**Notes**:
-* The links don't link to the actual stream but to a playlist for
+Note that the links don't link to the actual stream but to a playlist for
use with media players such as VLC, If you'd prefer to receive the raw
stream instead, you can do so by removing the `/play/` path from
-the URL - see [URL Syntax](url) for more.
-
+the URL - see [URL Syntax](url) for more info.
--- /dev/null
+:
+
+Option | Description
+-------------------------------|------------
+**Create bouquet tag** | Create a tag with the bouquets name and link it to all channels created by the bouquet.
+**Create type-based tags** | Create a tag based on the channel type and link it to the channel.
+**Create provider name tags** | Create a tag with the channel provider's name and link it to the channel.
+**Create network name tags** | Create a tag with the network name and link it to all channels created by the bouquet.
:
-You must set the *Picon path* (above) to be able to correctly
-generate icon filenames. Note that changing this option **won't**
-automatically (re-)generate icon filenames, you must manually
-(re-)generate them using the *[Reset Icons]* button in the
-*Configuration -> Channel / EPG -> Channels* tab.
-If your picon pack uses filenames that start with "1_0_1_xxxx" you'll want to
-use the *force service type to 1* setting. If your filenames use the
-standard naming scheme, e.g "1_0_19_xxxx" leave it as *Standard*.
+You must set the *Picon path* (above) to be able to correctly
+generate icon filenames.
+Scheme | Description
+------------------------------|------------
+**Standard** | If your filenames use the standard naming scheme, e.g "1_0_19_xxxx".
+**force service type to 1** | If your picon pack uses filenames that start with "1_0_1_xxxx".
+Note that changing this setting **won't**
+automatically (re-)generate icon filenames, you must manually
+(re-)generate them using the *[Reset Icons]* button in the
+[Channels](class/channel) tab.
--- /dev/null
+:
+
+Option | Description
+---------------------------------------------|------------
+**Record all** | Record all matching events.
+**Record if different episode number** | Record a matching event only if the episode number is different.
+**Record if different subtitle** | Record a matching event only if the subtitle is different.
+**Record if different description** | Record a matching event only if the description is different.
+**Record once per week** | Record the first matching event once a week.
+**Record once per day** | Record the first matching event once a day.
+
+*Local* or *All*? Local only checks the DVR log entries that were created by the
+same autorec rule for duplicates, All checks all DVR log entries for
+duplicates.
CLASS_DOC(bouquet)
PROP_DOC(bouquet_mapping_options)
+PROP_DOC(bouquet_tagging)
const idclass_t bouquet_class = {
.ic_class = "bouquet",
.get = bouquet_class_mapopt_get,
.set = bouquet_class_mapopt_set,
.rend = bouquet_class_mapopt_rend,
- .opts = PO_ADVANCED
+ .opts = PO_ADVANCED | PO_DOC_NLIST,
},
{
.type = PT_INT,
.id = "chtag",
.name = N_("Create tags"),
.desc = N_("Create and link these tags to channels when "
- "mapping; Create bouquet tag: create a "
- "tag with the bouquets name and link it to all mapped "
- "channels created by the bouquet. | Create "
- "type-based tags: create a tag based on "
- "the channel type and link it to the channel. | "
- "Create provider name tags: create a tag with the "
- "channel providers name and link it to the "
- "channel. | Create network name tags: create a tag "
- "with the network name and link it to all mapped "
- "channels created by the bouquet."),
+ "mapping."),
+ .doc = prop_doc_bouquet_tagging,
.notify = bouquet_class_chtag_notify,
.list = bouquet_class_chtag_enum,
.get = bouquet_class_chtag_get,
.set = bouquet_class_chtag_set,
.rend = bouquet_class_chtag_rend,
- .opts = PO_ADVANCED
+ .opts = PO_ADVANCED | PO_DOC_NLIST,
},
{
.type = PT_STR,
"good at time keeping."),
.off = offsetof(channel_t, ch_epg_running),
.list = channel_class_epg_running_list,
- .opts = PO_ADVANCED
+ .opts = PO_ADVANCED | PO_DOC_NLIST,
},
{
.type = PT_STR,
"Help button)."),
.off = offsetof(config_t, uilevel),
.list = config_class_uilevel,
+ .opts = PO_DOC_NLIST,
.group = 1
},
{
"Differentiated_services for more information. "),
.off = offsetof(config_t, dscp),
.list = config_class_dscp_list,
- .opts = PO_EXPERT,
+ .opts = PO_EXPERT | PO_DOC_NLIST,
.group = 1
},
{
.set = config_class_info_area_set,
.get = config_class_info_area_get,
.list = config_class_info_area_list,
- .opts = PO_LORDER | PO_ADVANCED,
+ .opts = PO_LORDER | PO_ADVANCED | PO_DOC_NLIST,
.group = 3
},
{
" theme isn't set in the Access Entries tab."),
.list = theme_get_ui_list,
.off = offsetof(config_t, theme_ui),
+ .opts = PO_DOC_NLIST,
.group = 3
},
{
.list = config_class_chiconscheme_list,
.doc = prop_doc_config_channelname_scheme,
.off = offsetof(config_t, chicon_scheme),
- .opts = PO_ADVANCED,
+ .opts = PO_ADVANCED | PO_DOC_NLIST,
.group = 6,
},
{
.list = config_class_piconscheme_list,
.doc = prop_doc_config_picon_servicetype,
.off = offsetof(config_t, picon_scheme),
- .opts = PO_ADVANCED,
+ .opts = PO_ADVANCED | PO_DOC_NLIST,
.group = 6,
},
{
}
CLASS_DOC(dvrautorec)
+PROP_DOC(duplicate_handling)
const idclass_t dvr_autorec_entry_class = {
.ic_class = "dvrautorec",
.def.i = DVR_AUTOREC_BTYPE_ALL,
.off = offsetof(dvr_autorec_entry_t, dae_btype),
.list = dvr_autorec_entry_class_btype_list,
- .opts = PO_HIDDEN | PO_ADVANCED,
+ .opts = PO_HIDDEN | PO_ADVANCED | PO_DOC_NLIST,
},
{
.type = PT_U32,
.list = dvr_entry_class_pri_list,
.def.i = DVR_PRIO_NORMAL,
.off = offsetof(dvr_autorec_entry_t, dae_pri),
- .opts = PO_ADVANCED,
+ .opts = PO_ADVANCED | PO_DOC_NLIST,
},
{
.type = PT_U32,
.name = N_("Duplicate handling"),
.desc = N_("Duplicate recording handling."),
.def.i = DVR_AUTOREC_RECORD_ALL,
+ .doc = prop_doc_duplicate_handling,
.off = offsetof(dvr_autorec_entry_t, dae_record),
.list = dvr_autorec_entry_class_dedup_list,
- .opts = PO_ADVANCED,
+ .opts = PO_ADVANCED | PO_DOC_NLIST,
},
{
.type = PT_U32,
.type = PT_STR,
.id = "disp_title",
.name = N_("Title"),
- .desc = N_("Title of the program."),
+ .desc = N_("Title of the program (display)."),
.get = dvr_entry_class_disp_title_get,
.set = dvr_entry_class_disp_title_set,
.opts = PO_NOSAVE,
.type = PT_STR,
.id = "disp_description",
.name = N_("Description"),
- .desc = N_("Program synopsis."),
+ .desc = N_("Program synopsis (display)."),
.get = dvr_entry_class_disp_description_get,
.opts = PO_RDONLY | PO_NOSAVE | PO_HIDDEN,
},
.type = PT_INT,
.id = "pri",
.name = N_("Priority"),
- .desc = N_("Priority of the recording."),
+ .desc = N_("Priority of the recording. Higher-priority entries will take precedence and cancel lower-priority events."),
.off = offsetof(dvr_entry_t, de_pri),
.def.i = DVR_PRIO_NORMAL,
.set = dvr_entry_class_pri_set,
.list = dvr_entry_class_pri_list,
- .opts = PO_SORTKEY,
+ .opts = PO_SORTKEY | PO_DOC_NLIST,
},
{
.type = PT_U32,
.list = dvr_entry_class_pri_list,
.def.i = DVR_PRIO_NORMAL,
.off = offsetof(dvr_timerec_entry_t, dte_pri),
- .opts = PO_SORTKEY | PO_ADVANCED,
+ .opts = PO_SORTKEY | PO_ADVANCED | PO_DOC_NLIST,
},
{
.type = PT_U32,
.desc = DN_CHNUM_DESC,
.off = offsetof(epggrab_module_int_t, xmltv_chnum),
.list = xmltv_dn_chnum_list,
+ .opts = PO_DOC_NLIST,
.group = 1
},
{}
.name = DN_CHNUM_NAME,
.desc = DN_CHNUM_DESC,
.off = offsetof(epggrab_module_ext_t, xmltv_chnum),
+ .opts = PO_DOC_NLIST,
.group = 1
},
{}
.off = offsetof(mpegts_mux_t, mm_epg),
.def.i = MM_EPG_ENABLE,
.list = mpegts_mux_epg_list,
+ .opts = PO_DOC_NLIST,
},
{
.type = PT_STR,
.off = offsetof(mpegts_mux_t, mm_scan_state),
.set = mpegts_mux_class_scan_state_set,
.list = mpegts_mux_class_scan_state_enum,
- .opts = PO_NOSAVE | PO_SORTKEY,
+ .opts = PO_NOSAVE | PO_SORTKEY | PO_DOC_NLIST,
},
{
.type = PT_INT,
.name = N_("Scan result"),
.desc = N_("The outcome of the last scan performed on this mux."),
.off = offsetof(mpegts_mux_t, mm_scan_result),
- .opts = PO_RDONLY | PO_SORTKEY,
+ .opts = PO_RDONLY | PO_SORTKEY | PO_DOC_NLIST,
.list = mpegts_mux_class_scan_result_enum,
},
{
" appear garbled."),
.off = offsetof(mpegts_mux_t, mm_charset),
.list = dvb_charset_enum,
- .opts = PO_ADVANCED,
+ .opts = PO_ADVANCED | PO_DOC_NLIST,
},
{
.type = PT_INT,
.off = offsetof(mpegts_mux_t, mm_pmt_ac3),
.def.i = MM_AC3_STANDARD,
.list = mpegts_mux_ac3_list,
- .opts = PO_HIDDEN | PO_EXPERT
+ .opts = PO_HIDDEN | PO_EXPERT | PO_DOC_NLIST,
},
{
.type = PT_BOOL,
"Conditional Access Packet Identifier. See Help "
"for more information."),
.off = offsetof(mpegts_service_t, s_dvb_prefcapid_lock),
- .opts = PO_EXPERT,
+ .opts = PO_EXPERT | PO_DOC_NLIST,
.list = mpegts_service_pref_capid_lock_list,
},
{
.type = PT_BOOL,
.id = "enabled",
.name = N_("Enabled"),
+ .desc = N_("Enable/Disable service."),
.off = offsetof(service_t, s_enabled),
.notify = service_class_notify_enabled,
},
"\"Missing In PAT/SDT\"."),
.list = service_class_auto_list,
.off = offsetof(service_t, s_auto),
- .opts = PO_ADVANCED,
+ .opts = PO_ADVANCED | PO_DOC_NLIST,
},
{
.type = PT_STR,
"service type provided by the stream."),
.list = service_type_auto_list,
.off = offsetof(service_t, s_type_user),
- .opts = PO_ADVANCED
+ .opts = PO_ADVANCED | PO_DOC_NLIST,
},
{}
}