Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
A bucket of changes!
mdhelp: add dvr_failed and dvr_finished
mdhelp: add dvr tab image
mdhelp: move "details" column info to dvrentry (as it applies to the other tabs too)
mdhelp: update dvrentry
mdhelp: update toc
mdhelp: add extended info for the status property (added dvr_status.md)
dvr_db: update various property descriptions
dvb_db: add PO_DOC_NLIST opt to some properties

Plus some other little bits here and there..
  • Loading branch information
Mark Clarkstone authored and perexg committed Apr 7, 2016
1 parent 954ac7a commit e296daa
Show file tree
Hide file tree
Showing 8 changed files with 154 additions and 44 deletions.
30 changes: 21 additions & 9 deletions docs/class/dvrentry.md
@@ -1,12 +1,24 @@
The DVR entry is used by Tvheadend to keep track of the upcoming,
finished and failed recordings.
DVR entries are used by Tvheadend to keep track of upcoming, finished and failed recordings.

* Upcoming and currently recording entries remain in the 'Upcoming/
Current Recordings' tab.
* When a recording completes successfully the entry gets moved to the
'Finished recordings' tab.
* When a recording fails or is aborted it gets moved to the 'Failed
recordings' tab.
!['Digital Video Recorder' Tabs](docresources/configdvrtabs4.png)

Some entry details are not available/incomplete until the recording
---

* Upcoming and currently recording entries remain in the [Upcoming/Current Recordings](dvr_upcoming) tab.

* When a recording completes successfully the entry is moved to the [Finished Recordings](dvr_finished) tab.

* When a recording fails or gets aborted the entry is moved to the [Failed Recordings](dvr_failed) tab.

The *Details* column gives a quick overview as to the status of each
entry:

Icon | Description
-------------------------------------------|-------------
![Clock icon](icons/scheduled.png) | the program is scheduled (upcoming)
![Recording icon](icons/rec.png) | the program is active and underway (current)
![Information icon](icons/information.png) | click to display detailed information about the selected recording (upcoming or current)

**Note**: Some entry details are not available/incomplete until the recording
completes or fails, e.g. filesize, total data errors, etc.

Binary file added docs/docresources/configdvrtabs4.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 48 additions & 0 deletions docs/markdown/dvr_failed.md
@@ -0,0 +1,48 @@
##Digital Video Recorder - Failed Recordings

This tab shows all failed recordings.

!['Failed Recordings' Tab](docresources/failedrecordings1.png)

The *Status* column indicates why a recording failed.
See the status item on the [DVR Entries](class/dvrentry) page for more
information.

---

###1. Playing a Failed Recording

You can play a partial recording by clicking the *Play* link.

If your browser supports video playback it should automatically start
playing. Note, the *Play* links do not link to an actual file but to a m3u playlist.

###2. Downloading a Recording

Highlight the desired entry then press the *[Download]* button from the
menu bar.

###3. Re-recording an Entry/Re-schedule a Failed Recording.

You can re-schedule an entry by pressing the *[Re-record]* button from
the menu bar.

**Note**: Your EPG data must have another matching event to be able to re-schedule
the entry.

###4. Moving an Entry

Failed recording can be moved to the [Finished Recordings](dvr_finished)
tab by highlighting the desired entry and then pressing the *[Move to finished]*
button from the menu bar.

###5. Deleting an Entry

Highlight the desired entry(s) then press the *[Delete]* button.

**Deleting an entry cannot be undone. You
will be prompted to confirm deletion.**

**Tip**: You can highlight multiple entries by holding ctrl or shift
(to select a range).

36 changes: 36 additions & 0 deletions docs/markdown/dvr_finished.md
@@ -0,0 +1,36 @@
##Digital Video Recorder - Finished Recordings

This tab shows all your finished recordings.

!['Finished Recordings' Tab](docresources/finishedrecordings1.png)

---

###1. Playing a Recording

You can play a recording by clicking the *Play* link.

If your browser supports video playback it should automatically start
playing. Note, the *Play* links do not link to an actual file but to a m3u playlist.

###2. Downloading a Recording

Highlight the desired entry then press the *[Download]* button from the
menu bar.

###3. Editing an Entry

You can edit an entry by clicking the *[Edit]* button from the menu bar,
note that not all [DVR Entry](class/dvrentry) fields can be edited.

###4. Deleting an Entry.

Highlight the desired entry(s) then press the *[Delete]* button.

**Deleting an entry cannot be undone. You
will be prompted to confirm deletion.**

**Tip**: You can highlight multiple entries by holding ctrl or shift
(to select a range).


43 changes: 21 additions & 22 deletions docs/markdown/dvr_upcoming.md
Expand Up @@ -4,25 +4,11 @@ This tab shows your all upcoming/current recordings.

!['Upcoming/Current Recordings' Tab](docresources/upcomingrecordings1.png)

### Items
---

**Details**
: Shows the status of the recording event:
###1. Adding and Editing an Entry

Icon | Description
-------------------------------------------|-------------
![Clock icon](icons/clock.png) | the program is scheduled (upcoming)
![Recording icon](icons/rec.png) | the program is active and underway (current)
![Information icon](icons/information.png) | click to display detailed information about the selected recording (upcoming or current)

Please see the [DVR Entry](class/dvrentry) page for a more detailed look at
the various entry options.

###1. Adding an Entry/Adding a New Recording

You can add an entry by:

####1.1. Using the EPG
####1.1. Adding an Entry Using the EPG

Using the Electronic Program Guide search functionality, find the
program/event you would like to record. For full instructions on how to
Expand All @@ -34,10 +20,10 @@ using the resultant dialog you can:
* Record it once by pressing the *[Record program]* button.
* Automatically record all upcoming events matching the program's title by pressing the *[Autorec]* button.
* Record all upcoming series episodes by pressing the *[Record series]* button. **This replaces the *[Autorec]* button when series link information is available.**

**Tip**: You can quickly find all matching programs by clicking on the title.

####1.2. Using Autorec Rules
####1.2. Adding an Entry Using Autorec Rules

Autorec rules allow you to match events using various options.

Expand All @@ -46,12 +32,25 @@ Autorec rules allow you to match events using various options.

Please see [Autorec](dvr_autorec) for more information.

###1.3. Manual Event Entry/Editing an Entry
####1.3. Manual Event Entry/Editing an Entry

A common set of fields is used for the _Add_ or _Edit_ functions, most
Use the *[Add]* button to manually to add an entry. To edit an entry,
highlight the desired entry within the grid and then press the *[Edit]* button.

A common set of fields is used for the _Add_ or _Edit_ dialogs, most
of which can also be seen in the grid view:

![Add/Edit Upcoming Recording](docresources/upcomingrecordings3.png)

See the [DVR Entry](class/dvrentry) page for a more detailed look at
See the [DVR Entries](class/dvrentry) page for a more detailed look at
the various entry options.

###2. Deleting an Entry

You can delete or abort an upcoming entry (or an already in-progress recording) by pressing
the *[Delete]* or *[Abort]* buttons.

* The *[Delete]* button completely removes the event and any associated files.
* The *[Abort]* button stops an already in-progress recording, moves the entry to the [Failed Recordings](dvr_failed) and marks it as *Aborted by user*. Note that this does not remove the (partial) recording file from disk.

**Deleting or aborting an entry cannot be undone, you will be prompted for confirmation.**
6 changes: 3 additions & 3 deletions docs/markdown/toc.md
Expand Up @@ -22,12 +22,12 @@ Web Interface Guide

* Digital Video Recorder

- [DVR Entries](class/dvrentry)
- [Upcoming/Current Recordings](dvr_upcoming)
- [Finished Recordings](class/dvrentry)
- [Failed Recordings](class/dvrentry)
- [Finished Recordings](dvr_finished)
- [Failed Recordings](dvr_failed)
- [DVR AutoRec Entries](class/dvrautorec)
- [Time Schedules (TimeRec)](class/dvrtimerec)
- [DVR Entry](class/dvrentry)

Web Interface Configuration Guide

Expand Down
7 changes: 7 additions & 0 deletions docs/property/dvr_status.md
@@ -0,0 +1,7 @@
The *status* column indicates why an entry failed:

Status | Description
-----------------|----------------------------------------------------------
Aborted by user | The recording was interrupted by the user.
File missing | The associated file(s) cannot be found on disk.
Time missed | Indicates a recording failed due to one (or more) of the following: Tvheadend wasn't running when the entry/recording was scheduled to start; Tvheadend couldn't create the necessary file(s)/folder(s) to begin recording due to file system issues; The tuner returned no data indicating a signal/external problem; No free tuner was available for use;
28 changes: 18 additions & 10 deletions src/dvr/dvr_db.c
Expand Up @@ -2153,7 +2153,7 @@ dvr_entry_class_start_extra_opts(void *o)
dvr_entry_t *de = (dvr_entry_t *)o;
if (de && !dvr_entry_is_editable(de))
return PO_RDONLY | PO_DURATION | PO_ADVANCED;
return PO_DURATION | PO_ADVANCED;
return PO_DURATION | PO_ADVANCED | PO_DOC_NLIST;
}

static int
Expand Down Expand Up @@ -2809,11 +2809,18 @@ dvr_entry_class_content_type_list(void *o, const char *lang)
return m;
}

static char *
dvr_entry_prop_status_doc(const struct property *p, const char *lang)
{
extern const char *tvh_doc_dvr_status_property[];
return prop_md_doc(tvh_doc_dvr_status_property, lang);
}

extern const char *tvh_doc_dvrentry_class[];

const idclass_t dvr_entry_class = {
.ic_class = "dvrentry",
.ic_caption = N_("DVR Entry"),
.ic_caption = N_("DVR Entries"),
.ic_event = "dvrentry",
.ic_doc = tvh_doc_dvrentry_class,
.ic_changed = dvr_entry_class_changed,
Expand Down Expand Up @@ -2882,7 +2889,7 @@ const idclass_t dvr_entry_class = {
"stop time."),
.off = offsetof(dvr_entry_t, de_stop_extra),
.list = dvr_entry_class_extra_list,
.opts = PO_SORTKEY | PO_ADVANCED,
.opts = PO_SORTKEY | PO_ADVANCED | PO_DOC_NLIST,
},
{
.type = PT_TIME,
Expand Down Expand Up @@ -2917,7 +2924,7 @@ const idclass_t dvr_entry_class = {
.type = PT_STR,
.id = "channel_icon",
.name = N_("Channel icon"),
/*.desc = N_("Channel icon URL."),*/
.desc = N_("Channel icon URL."),
.get = dvr_entry_class_channel_icon_url_get,
.opts = PO_HIDDEN | PO_RDONLY | PO_NOSAVE | PO_NOUI,
},
Expand Down Expand Up @@ -2990,7 +2997,7 @@ const idclass_t dvr_entry_class = {
.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,
Expand All @@ -3000,7 +3007,7 @@ const idclass_t dvr_entry_class = {
.off = offsetof(dvr_entry_t, de_retention),
.def.i = DVR_RET_DVRCONFIG,
.list = dvr_entry_class_retention_list,
.opts = PO_HIDDEN | PO_EXPERT
.opts = PO_HIDDEN | PO_EXPERT | PO_DOC_NLIST,
},
{
.type = PT_U32,
Expand All @@ -3010,7 +3017,7 @@ const idclass_t dvr_entry_class = {
.off = offsetof(dvr_entry_t, de_removal),
.def.i = DVR_RET_DVRCONFIG,
.list = dvr_entry_class_removal_list,
.opts = PO_HIDDEN | PO_ADVANCED
.opts = PO_HIDDEN | PO_ADVANCED | PO_DOC_NLIST,
},
{
.type = PT_STR,
Expand Down Expand Up @@ -3046,23 +3053,23 @@ const idclass_t dvr_entry_class = {
.type = PT_STR,
.id = "filename",
.name = N_("Filename"),
/*.desc = N_("Filename used by this entry."), */
.desc = N_("Filename used by the entry."),
.get = dvr_entry_class_filename_get,
.opts = PO_RDONLY | PO_NOSAVE | PO_NOUI,
},
{
.type = PT_STR,
.id = "directory",
.name = N_("Directory"),
/*.desc = N_("Directory used by this entry."), */
.desc = N_("Directory used by the entry."),
.off = offsetof(dvr_entry_t, de_directory),
.opts = PO_RDONLY | PO_NOUI,
},
{
.type = PT_U32,
.id = "errorcode",
.name = N_("Error code"),
/*.desc = N_("Error code of entry."), */
.desc = N_("Error code of entry."),
.off = offsetof(dvr_entry_t, de_last_error),
.opts = PO_RDONLY | PO_NOUI,
},
Expand Down Expand Up @@ -3205,6 +3212,7 @@ const idclass_t dvr_entry_class = {
.type = PT_STR,
.id = "status",
.name = N_("Status"),
.doc = dvr_entry_prop_status_doc,
.desc = N_("The recording/entry status."),
.get = dvr_entry_class_status_get,
.opts = PO_RDONLY | PO_NOSAVE | PO_LOCALE,
Expand Down

0 comments on commit e296daa

Please sign in to comment.