]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
A bucket of changes!
authorMark Clarkstone <hello@markclarkstone.co.uk>
Thu, 7 Apr 2016 14:34:22 +0000 (15:34 +0100)
committerJaroslav Kysela <perex@perex.cz>
Thu, 7 Apr 2016 15:56:41 +0000 (17:56 +0200)
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..

docs/class/dvrentry.md
docs/docresources/configdvrtabs4.png [new file with mode: 0644]
docs/markdown/dvr_failed.md [new file with mode: 0644]
docs/markdown/dvr_finished.md [new file with mode: 0644]
docs/markdown/dvr_upcoming.md
docs/markdown/toc.md
docs/property/dvr_status.md [new file with mode: 0644]
src/dvr/dvr_db.c

index 646047b7bf2608ba1d46a088c8cacd407bedb317..82586fd190602b5416a24ad5a84825d46886906f 100644 (file)
@@ -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.
+
diff --git a/docs/docresources/configdvrtabs4.png b/docs/docresources/configdvrtabs4.png
new file mode 100644 (file)
index 0000000..75aad50
Binary files /dev/null and b/docs/docresources/configdvrtabs4.png differ
diff --git a/docs/markdown/dvr_failed.md b/docs/markdown/dvr_failed.md
new file mode 100644 (file)
index 0000000..f716ea9
--- /dev/null
@@ -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).
+
diff --git a/docs/markdown/dvr_finished.md b/docs/markdown/dvr_finished.md
new file mode 100644 (file)
index 0000000..7377d1b
--- /dev/null
@@ -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).
+
+
index 811168724b55687f5cc8e1abbcadd28571e730cc..e14815c05cd980c30d6d6d005dfac4de0ee62dea 100644 (file)
@@ -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 
@@ -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. 
 
@@ -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.**
index 5f49591114d9507b62049f3f20b7400db37975ce..2c71b5cf1769d9444876eaebac40b6f5e7a5befe 100644 (file)
@@ -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
 
diff --git a/docs/property/dvr_status.md b/docs/property/dvr_status.md
new file mode 100644 (file)
index 0000000..f136a1e
--- /dev/null
@@ -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;
index aa8217f97343bbc0907034a6d4a3e9afb9d10748..bc9ba1b54bac3a4e28df829c3d2c85a283eb3137 100644 (file)
@@ -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
@@ -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,
@@ -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,
@@ -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,
     },
@@ -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,
@@ -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,
@@ -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,
@@ -3046,7 +3053,7 @@ 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,
     },
@@ -3054,7 +3061,7 @@ const idclass_t dvr_entry_class = {
       .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,
     },
@@ -3062,7 +3069,7 @@ const idclass_t dvr_entry_class = {
       .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,
     },
@@ -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,