-
From 13c84f81e7dcb1b13344e3b3d089a9cab6ef68ec Mon Sep 17 00:00:00 2001
From: George Nassas <gnassas@gmail.com>
Date: Wed, 26 Feb 2014 11:12:17 -0500
Subject: [PATCH] Update
---
mythtv/bindings/perl/MythTV.pm | 4 +-
mythtv/bindings/perl/MythTV/Program.pm | 4 ++
mythtv/bindings/php/MythBackend.php | 4 +-
mythtv/bindings/php/MythTVProgram.php | 1 +
mythtv/bindings/php/MythTVRecording.php | 1 +
mythtv/bindings/python/MythTV/mythproto.py | 10 +--
mythtv/bindings/python/MythTV/static.py | 4 +-
mythtv/libs/libmyth/programinfo.cpp | 73 ++++++++++++----------
mythtv/libs/libmyth/programinfo.h | 11 +++-
mythtv/libs/libmythbase/mythversion.h | 4 +-
.../datacontracts/recording.h | 3 +
mythtv/libs/libmythtv/recordinginfo.cpp | 6 +-
mythtv/libs/libmythtv/tv_rec.cpp | 8 ++-
mythtv/libs/libmythtv/videosource.cpp | 8 +--
.../programs/mythbackend/services/serviceUtil.cpp | 1 +
mythtv/programs/mythfrontend/progdetails.cpp | 6 +-
.../MythCenter-wide/htmls/progdetails_page2.html | 1 +
.../themes/MythCenter/htmls/progdetails_page2.html | 1 +
mythtv/themes/Terra/htmls/progdetails_page2.html | 1 +
mythtv/themes/default/htmls/progdetails_page2.html | 1 +
20 files changed, 97 insertions(+), 55 deletions(-)
diff --git a/mythtv/bindings/perl/MythTV.pm b/mythtv/bindings/perl/MythTV.pm
index b1fcae5..ae9f7ff 100644
a
|
b
|
package MythTV; |
107 | 107 | # Note: as of July 21, 2010, this is actually a string, to account for proto |
108 | 108 | # versions of the form "58a". This will get used if protocol versions are |
109 | 109 | # changed on a fixes branch ongoing. |
110 | | our $PROTO_VERSION = "79"; |
111 | | our $PROTO_TOKEN = "BasaltGiant"; |
| 110 | our $PROTO_VERSION = "80"; |
| 111 | our $PROTO_TOKEN = "SeaBird"; |
112 | 112 | |
113 | 113 | # currentDatabaseVersion is defined in libmythtv in |
114 | 114 | # mythtv/libs/libmythtv/dbcheck.cpp and should be the current MythTV core |
-
diff --git a/mythtv/bindings/perl/MythTV/Program.pm b/mythtv/bindings/perl/MythTV/Program.pm
index eb70a2d..c74f00e 100644
a
|
b
|
package MythTV::Program; |
94 | 94 | $self->{'parttotal'} = $_[47]; # part total |
95 | 95 | $self->{'categorytype'} = $_[48]; # category type (enum) |
96 | 96 | |
| 97 | $self->{'recinput'} = $_[49]; # recording input |
| 98 | |
97 | 99 | # Load the channel data |
98 | 100 | if ($self->{'chanid'}) { |
99 | 101 | $self->{'channel'} = $self->{'_mythtv'}->channel($self->{'chanid'}); |
… |
… |
package MythTV::Program; |
190 | 192 | $self->{'year'} , # 44 production year |
191 | 193 | $self->{'partnumber'} , # 45 part number |
192 | 194 | $self->{'parttotal'} , # 46 part total |
| 195 | |
| 196 | $self->{'recinput'} , # 47 rec input |
193 | 197 | '' # trailing separator |
194 | 198 | ); |
195 | 199 | } |
-
diff --git a/mythtv/bindings/php/MythBackend.php b/mythtv/bindings/php/MythBackend.php
index 0866afd..41d2111 100644
a
|
b
|
class MythBackend { |
11 | 11 | |
12 | 12 | // MYTH_PROTO_VERSION is defined in libmyth in mythtv/libs/libmyth/mythcontext.h |
13 | 13 | // and should be the current MythTV protocol version. |
14 | | static $protocol_version = '79'; |
15 | | static $protocol_token = 'BasaltGiant'; |
| 14 | static $protocol_version = '80'; |
| 15 | static $protocol_token = 'SeaBird'; |
16 | 16 | |
17 | 17 | // The character string used by the backend to separate records |
18 | 18 | static $backend_separator = '[]:[]'; |
-
diff --git a/mythtv/bindings/php/MythTVProgram.php b/mythtv/bindings/php/MythTVProgram.php
index a99741e..70c6677 100644
a
|
b
|
class MythTVProgram { |
45 | 45 | public $airdate; |
46 | 46 | public $playgroup; |
47 | 47 | public $recpriority2; |
| 48 | public $recinput; |
48 | 49 | public $parentid; |
49 | 50 | public $storagegroup; |
50 | 51 | public $audioprop; |
-
diff --git a/mythtv/bindings/php/MythTVRecording.php b/mythtv/bindings/php/MythTVRecording.php
index 933b54f..6929126 100644
a
|
b
|
class MythTVRecording { |
34 | 34 | public $transcoder; |
35 | 35 | public $timestretch; |
36 | 36 | public $recpriority; |
| 37 | public $recinput; |
37 | 38 | public $basename; |
38 | 39 | public $progstart; |
39 | 40 | public $progend; |
-
diff --git a/mythtv/bindings/python/MythTV/mythproto.py b/mythtv/bindings/python/MythTV/mythproto.py
index ce6c738..6ae583e 100644
a
|
b
|
class Program( CMPRecord, DictData, RECSTATUS, AUDIO_PROPS, \ |
841 | 841 | 'airdate', 'playgroup', 'recpriority2', |
842 | 842 | 'parentid', 'storagegroup', 'audio_props', |
843 | 843 | 'video_props', 'subtitle_type','year', |
844 | | 'part_number', 'part_total', 'categorytype'] |
| 844 | 'part_number', 'part_total', 'categorytype', |
| 845 | 'recinput'] |
845 | 846 | _field_type = [ 3, 3, 3, |
846 | 847 | 0, 0, 0, |
847 | 848 | 3, |
… |
… |
class Program( CMPRecord, DictData, RECSTATUS, AUDIO_PROPS, \ |
858 | 859 | 5, 3, 0, |
859 | 860 | 3, 3, 0, |
860 | 861 | 0, 0, 0, |
861 | | 0, 0, 0] |
| 862 | 0, 0, 0, |
| 863 | 3] |
862 | 864 | def __str__(self): |
863 | 865 | return u"<Program '%s','%s' at %s>" % (self.title, |
864 | 866 | self.starttime.isoformat(' '), hex(id(self))) |
… |
… |
class Program( CMPRecord, DictData, RECSTATUS, AUDIO_PROPS, \ |
886 | 888 | for key in ('title','subTitle','seriesId','programId','airdate', |
887 | 889 | 'category','hostname','chanNum','callSign','playGroup', |
888 | 890 | 'recGroup','rectype','programFlags','chanId','recStatus', |
889 | | 'commFree','stars','filesize'): |
| 891 | 'commFree','stars','filesize','recinput'): |
890 | 892 | if key in xmldat: |
891 | 893 | dat[key.lower()] = xmldat[key] |
892 | 894 | for key in ('startTime','endTime','lastModified', |
… |
… |
class Program( CMPRecord, DictData, RECSTATUS, AUDIO_PROPS, \ |
914 | 916 | ('ChanId', 'CallSign', 'ChanNum', 'InputId', 'SourceId'), True) |
915 | 917 | CopyData2(prog['Channel'], dat, (('ChannelName', 'channame'),)) |
916 | 918 | CopyData(prog['Recording'], dat, |
917 | | ('DupMethod', 'PlayGroup', 'RecType', 'RecordId'), True) |
| 919 | ('DupMethod', 'PlayGroup', 'RecType', 'RecordId', 'RecInput'), True) |
918 | 920 | CopyData2(prog['Recording'], dat, (('DupInType', 'dupin'), |
919 | 921 | ('Status', 'recstatus'))) |
920 | 922 | |
-
diff --git a/mythtv/bindings/python/MythTV/static.py b/mythtv/bindings/python/MythTV/static.py
index a485903..30ff232 100644
a
|
b
|
OWN_VERSION = (0,28,-1,0) |
8 | 8 | SCHEMA_VERSION = 1322 |
9 | 9 | NVSCHEMA_VERSION = 1007 |
10 | 10 | MUSICSCHEMA_VERSION = 1018 |
11 | | PROTO_VERSION = '79' |
12 | | PROTO_TOKEN = 'BasaltGiant' |
| 11 | PROTO_VERSION = '80' |
| 12 | PROTO_TOKEN = 'SeaBird' |
13 | 13 | BACKEND_SEP = '[]:[]' |
14 | 14 | INSTALL_PREFIX = '/usr/local' |
15 | 15 | |
-
diff --git a/mythtv/libs/libmyth/programinfo.cpp b/mythtv/libs/libmyth/programinfo.cpp
index 7400eaf..ea64073 100644
a
|
b
|
const QString ProgramInfo::kFromRecordedQuery = |
66 | 66 | " r.findid, rec.dupin, rec.dupmethod, "//45-47 |
67 | 67 | " p.syndicatedepisodenumber, p.partnumber, p.parttotal, "//48-50 |
68 | 68 | " p.season, p.episode, p.totalepisodes, "//51-53 |
69 | | " p.category_type "//54 |
| 69 | " p.category_type, r.recinput "//54-55 |
70 | 70 | "FROM recorded AS r " |
71 | 71 | "LEFT JOIN channel AS c " |
72 | 72 | "ON (r.chanid = c.chanid) " |
… |
… |
ProgramInfo::ProgramInfo(void) : |
123 | 123 | director(), |
124 | 124 | |
125 | 125 | recpriority(0), |
| 126 | recinput(), |
126 | 127 | |
127 | 128 | chanid(0), |
128 | 129 | chanstr(), |
… |
… |
ProgramInfo::ProgramInfo(const ProgramInfo &other) : |
207 | 208 | director(other.director), |
208 | 209 | |
209 | 210 | recpriority(other.recpriority), |
| 211 | recinput(other.recinput), |
210 | 212 | |
211 | 213 | chanid(other.chanid), |
212 | 214 | chanstr(other.chanstr), |
… |
… |
ProgramInfo::ProgramInfo( |
317 | 319 | CategoryType _catType, |
318 | 320 | |
319 | 321 | int _recpriority, |
| 322 | const QString &_recinput, |
320 | 323 | |
321 | 324 | uint64_t _filesize, |
322 | 325 | |
… |
… |
ProgramInfo::ProgramInfo( |
357 | 360 | director(), |
358 | 361 | |
359 | 362 | recpriority(_recpriority), |
| 363 | recinput(_recinput), |
360 | 364 | |
361 | 365 | chanid(_chanid), |
362 | 366 | chanstr(_channum), |
… |
… |
ProgramInfo::ProgramInfo( |
475 | 479 | director(), |
476 | 480 | |
477 | 481 | recpriority(0), |
| 482 | recinput(), |
478 | 483 | |
479 | 484 | chanid(_chanid), |
480 | 485 | chanstr(_channum), |
… |
… |
ProgramInfo::ProgramInfo( |
602 | 607 | director(), |
603 | 608 | |
604 | 609 | recpriority(0), |
| 610 | recinput(), |
605 | 611 | |
606 | 612 | chanid(_chanid), |
607 | 613 | chanstr(_channum), |
… |
… |
ProgramInfo::ProgramInfo( |
746 | 752 | director(), |
747 | 753 | |
748 | 754 | recpriority(0), |
| 755 | recinput(), |
749 | 756 | |
750 | 757 | chanid(_chanid), |
751 | 758 | chanstr(_channum), |
… |
… |
void ProgramInfo::clone(const ProgramInfo &other, |
1010 | 1017 | catType = other.catType; |
1011 | 1018 | |
1012 | 1019 | recpriority = other.recpriority; |
| 1020 | recinput = other.recinput; |
1013 | 1021 | |
1014 | 1022 | filesize = other.filesize; |
1015 | 1023 | |
… |
… |
void ProgramInfo::clone(const ProgramInfo &other, |
1079 | 1087 | programid.detach(); |
1080 | 1088 | inetref.detach(); |
1081 | 1089 | |
| 1090 | recinput.detach(); |
| 1091 | |
1082 | 1092 | sortTitle.detach(); |
1083 | 1093 | inUseForWhat.detach(); |
1084 | 1094 | } |
… |
… |
void ProgramInfo::clear(void) |
1116 | 1126 | seriesid.clear(); |
1117 | 1127 | programid.clear(); |
1118 | 1128 | inetref.clear(); |
| 1129 | recinput.clear(); |
1119 | 1130 | catType = kCategoryNone; |
1120 | 1131 | |
1121 | 1132 | sortTitle.clear(); |
… |
… |
void ProgramInfo::ToStringList(QStringList &list) const |
1311 | 1322 | INT_TO_LIST(partnumber); // 46 |
1312 | 1323 | INT_TO_LIST(parttotal); // 47 |
1313 | 1324 | INT_TO_LIST(catType); // 48 |
| 1325 | STR_TO_LIST(recinput); // 49 |
1314 | 1326 | /* do not forget to update the NUMPROGRAMLINES defines! */ |
1315 | 1327 | } |
1316 | 1328 | |
… |
… |
bool ProgramInfo::FromStringList(QStringList::const_iterator &it, |
1415 | 1427 | INT_FROM_LIST(partnumber); // 46 |
1416 | 1428 | INT_FROM_LIST(parttotal); // 47 |
1417 | 1429 | ENUM_FROM_LIST(catType, CategoryType); // 48 |
| 1430 | STR_FROM_LIST(recinput); // 49 |
1418 | 1431 | |
1419 | 1432 | if (!origChanid || !origRecstartts.isValid() || |
1420 | 1433 | (origChanid != chanid) || (origRecstartts != recstartts)) |
… |
… |
void ProgramInfo::ToMap(InfoMap &progMap, |
1533 | 1546 | if (timeNow.toLocalTime().date().year() != |
1534 | 1547 | endts.toLocalTime().date().year()) |
1535 | 1548 | progMap["endyear"] = endts.toLocalTime().toString("yyyy"); |
| 1549 | progMap["inputname"] = recinput; |
1536 | 1550 | } |
1537 | 1551 | |
1538 | 1552 | using namespace MythDate; |
… |
… |
void ProgramInfo::ToMap(InfoMap &progMap, |
1620 | 1634 | |
1621 | 1635 | progMap["card"] = ::toString(GetRecordingStatus(), cardid); |
1622 | 1636 | progMap["input"] = ::toString(GetRecordingStatus(), inputid); |
1623 | | progMap["inputname"] = QueryInputDisplayName(); |
1624 | 1637 | |
1625 | 1638 | progMap["recpriority"] = recpriority; |
1626 | 1639 | progMap["recpriority2"] = recpriority2; |
… |
… |
bool ProgramInfo::LoadProgramFromRecorded( |
1943 | 1956 | catType = string_to_myth_category_type(query.value(54).toString()); |
1944 | 1957 | |
1945 | 1958 | recpriority = query.value(16).toInt(); |
| 1959 | recinput = query.value(55).toString(); |
1946 | 1960 | |
1947 | 1961 | filesize = query.value(20).toULongLong(); |
1948 | 1962 | |
… |
… |
void ProgramInfo::SaveInetRef(const QString &inet) |
4357 | 4371 | SendUpdateEvent(); |
4358 | 4372 | } |
4359 | 4373 | |
| 4374 | /** \fn ProgramInfo::SaveRecInput(const QString) |
| 4375 | * \brief Sets recording input display name in database, |
| 4376 | * and sets "recinput" field. |
| 4377 | */ |
| 4378 | void ProgramInfo::SaveRecInput(const QString &inputName) |
| 4379 | { |
| 4380 | recinput = inputName; |
| 4381 | |
| 4382 | MSqlQuery query(MSqlQuery::InitCon()); |
| 4383 | |
| 4384 | query.prepare( |
| 4385 | "UPDATE recorded " |
| 4386 | "SET recinput = :RECINPUT " |
| 4387 | "WHERE chanid = :CHANID AND starttime = :STARTTIME " |
| 4388 | "AND recordid = :RECORDID"); |
| 4389 | |
| 4390 | query.bindValue(":RECINPUT", inputName); |
| 4391 | query.bindValue(":CHANID", chanid); |
| 4392 | query.bindValue(":STARTTIME", recstartts); |
| 4393 | query.bindValue(":RECORDID", recordid); |
| 4394 | query.exec(); |
| 4395 | } |
| 4396 | |
4360 | 4397 | /** \brief Attempts to ascertain if the main file for this ProgramInfo |
4361 | 4398 | * is readable. |
4362 | 4399 | * \note This method often initiates a QUERY_CHECKFILE MythProto |
… |
… |
bool ProgramInfo::QueryTuningInfo(QString &channum, QString &input) const |
4712 | 4749 | } |
4713 | 4750 | } |
4714 | 4751 | |
4715 | | /** \brief Returns the display name of the card input for this program. |
4716 | | * \note Ideally this would call CardUtil::GetDisplayName(), but |
4717 | | * that's in libmythtv. Dupliacte code for now until a better |
4718 | | * solution can be found. |
4719 | | */ |
4720 | | QString ProgramInfo::QueryInputDisplayName(void) const |
4721 | | { |
4722 | | if (!inputid) |
4723 | | return QString::null; |
4724 | | |
4725 | | MSqlQuery query(MSqlQuery::InitCon()); |
4726 | | query.prepare("SELECT displayname, cardid, inputname " |
4727 | | "FROM cardinput " |
4728 | | "WHERE cardinputid = :INPUTID"); |
4729 | | query.bindValue(":INPUTID", inputid); |
4730 | | |
4731 | | if (!query.exec()) |
4732 | | MythDB::DBError("ProgramInfo::GetInputDisplayName(uint)", query); |
4733 | | else if (query.next()) |
4734 | | { |
4735 | | QString result = query.value(0).toString(); |
4736 | | if (result.isEmpty()) |
4737 | | result = QString("%1: %2").arg(query.value(1).toInt()) |
4738 | | .arg(query.value(2).toString()); |
4739 | | return result; |
4740 | | } |
4741 | | |
4742 | | return QString::null; |
4743 | | } |
4744 | | |
4745 | 4752 | static int init_tr(void) |
4746 | 4753 | { |
4747 | 4754 | static bool done = false; |
… |
… |
void ProgramInfo::SubstituteMatches(QString &str) |
4866 | 4873 | str.replace(QString("%PLAYGROUP%"), playgroup); |
4867 | 4874 | str.replace(QString("%CHANID%"), QString::number(chanid)); |
4868 | 4875 | str.replace(QString("%INETREF%"), inetref); |
| 4876 | str.replace(QString("%RECINPUT%"), recinput); |
4869 | 4877 | str.replace(QString("%PARTNUMBER%"), QString::number(partnumber)); |
4870 | 4878 | str.replace(QString("%PARTTOTAL%"), QString::number(parttotal)); |
4871 | 4879 | str.replace(QString("%ORIGINALAIRDATE%"), |
… |
… |
bool LoadFromRecorded( |
5366 | 5374 | string_to_myth_category_type(query.value(54).toString()), // category_type |
5367 | 5375 | |
5368 | 5376 | query.value(16).toInt(), // recpriority |
| 5377 | query.value(55).toString(), // recinput |
5369 | 5378 | |
5370 | 5379 | query.value(20).toULongLong(), // filesize |
5371 | 5380 | |
-
diff --git a/mythtv/libs/libmyth/programinfo.h b/mythtv/libs/libmyth/programinfo.h
index 0254901..890c791 100644
a
|
b
|
|
30 | 30 | mythtv/bindings/python/MythTV/static.py (version number) |
31 | 31 | mythtv/bindings/python/MythTV/mythproto.py (layout) |
32 | 32 | */ |
33 | | #define NUMPROGRAMLINES 49 |
| 33 | #define NUMPROGRAMLINES 50 |
34 | 34 | |
35 | 35 | class ProgramInfo; |
36 | 36 | typedef AutoDeleteDeque<ProgramInfo*> ProgramList; |
… |
… |
class MPUBLIC ProgramInfo |
112 | 112 | CategoryType catType, |
113 | 113 | |
114 | 114 | int recpriority, |
| 115 | const QString &recinput, |
115 | 116 | |
116 | 117 | uint64_t filesize, |
117 | 118 | |
… |
… |
class MPUBLIC ProgramInfo |
417 | 418 | QString GetCategoryTypeString(void) const; |
418 | 419 | int GetRecordingPriority(void) const { return recpriority; } |
419 | 420 | int GetRecordingPriority2(void) const { return recpriority2; } |
| 421 | QString GetRecInput(void) const { return recinput; } |
420 | 422 | float GetStars(void) const { return stars; } |
421 | 423 | uint GetStars(uint range_max) const |
422 | 424 | { return (int)(stars * range_max + 0.5f); } |
… |
… |
class MPUBLIC ProgramInfo |
504 | 506 | void SetRecordingPriority2(int priority) { recpriority2 = priority; } |
505 | 507 | void SetRecordingRuleID(uint id) { recordid = id; } |
506 | 508 | void SetSourceID(uint id) { sourceid = id; } |
507 | | void SetInputID( uint id) { inputid = id; } |
| 509 | virtual void |
| 510 | SetInputID( uint id) { inputid = id; } |
508 | 511 | void SetCardID( uint id) { cardid = id; } |
| 512 | void SetRecInput( const QString &inpName) { recinput = inpName; } |
509 | 513 | void SetReactivated(bool reactivate) |
510 | 514 | { |
511 | 515 | programflags &= ~FL_REACTIVATE; |
… |
… |
class MPUBLIC ProgramInfo |
548 | 552 | AutoExpireType QueryAutoExpire(void) const; |
549 | 553 | TranscodingStatus QueryTranscodeStatus(void) const; |
550 | 554 | bool QueryTuningInfo(QString &channum, QString &input) const; |
551 | | QString QueryInputDisplayName(void) const; |
552 | 555 | uint QueryAverageWidth(void) const; |
553 | 556 | uint QueryAverageHeight(void) const; |
554 | 557 | uint QueryAverageFrameRate(void) const; |
… |
… |
class MPUBLIC ProgramInfo |
586 | 589 | void UpdateInUseMark(bool force = false); |
587 | 590 | void SaveSeasonEpisode(uint seas, uint ep); |
588 | 591 | void SaveInetRef(const QString &inet); |
| 592 | void SaveRecInput(const QString &inputName); |
589 | 593 | |
590 | 594 | // Extremely slow functions that cannot be called from the UI thread. |
591 | 595 | QString DiscoverRecordingDirectory(void) const; |
… |
… |
class MPUBLIC ProgramInfo |
688 | 692 | QString director; |
689 | 693 | |
690 | 694 | int32_t recpriority; |
| 695 | QString recinput; |
691 | 696 | |
692 | 697 | uint32_t chanid; |
693 | 698 | QString chanstr; // Channum |
-
diff --git a/mythtv/libs/libmythbase/mythversion.h b/mythtv/libs/libmythbase/mythversion.h
index cc7800f..a9f2bc4 100644
a
|
b
|
|
39 | 39 | * http://www.mythtv.org/wiki/Category:Myth_Protocol_Commands |
40 | 40 | * http://www.mythtv.org/wiki/Category:Myth_Protocol |
41 | 41 | */ |
42 | | #define MYTH_PROTO_VERSION "79" |
43 | | #define MYTH_PROTO_TOKEN "BasaltGiant" |
| 42 | #define MYTH_PROTO_VERSION "80" |
| 43 | #define MYTH_PROTO_TOKEN "SeaBird" |
44 | 44 | |
45 | 45 | /** \brief Increment this whenever the MythTV core database schema changes. |
46 | 46 | * |
-
diff --git a/mythtv/libs/libmythservicecontracts/datacontracts/recording.h b/mythtv/libs/libmythservicecontracts/datacontracts/recording.h
index d2870eb..e247803 100644
a
|
b
|
class SERVICE_PUBLIC RecordingInfo : public QObject |
41 | 41 | Q_PROPERTY( int EncoderId READ EncoderId WRITE setEncoderId DESIGNABLE SerializeDetails ) |
42 | 42 | Q_PROPERTY( QString EncoderName READ EncoderName WRITE setEncoderName DESIGNABLE SerializeDetails ) |
43 | 43 | Q_PROPERTY( QString Profile READ Profile WRITE setProfile DESIGNABLE SerializeDetails ) |
| 44 | Q_PROPERTY( QString InputName READ InputName WRITE setInputName DESIGNABLE SerializeDetails ) |
44 | 45 | |
45 | 46 | /* |
46 | 47 | Not using since Q_ENUMS seem to require the enum be defined in this class |
… |
… |
class SERVICE_PUBLIC RecordingInfo : public QObject |
66 | 67 | PROPERTYIMP ( int , EncoderId ) |
67 | 68 | PROPERTYIMP ( QString , EncoderName ) |
68 | 69 | PROPERTYIMP ( QString , Profile ) |
| 70 | PROPERTYIMP ( QString , InputName ) |
69 | 71 | |
70 | 72 | // Used only by Serializer |
71 | 73 | PROPERTYIMP( bool, SerializeDetails ) |
… |
… |
class SERVICE_PUBLIC RecordingInfo : public QObject |
109 | 111 | m_DupMethod = src.m_DupMethod ; |
110 | 112 | m_EncoderId = src.m_EncoderId ; |
111 | 113 | m_Profile = src.m_Profile ; |
| 114 | m_InputName = src.m_InputName ; |
112 | 115 | m_SerializeDetails= src.m_SerializeDetails ; |
113 | 116 | } |
114 | 117 | }; |
-
diff --git a/mythtv/libs/libmythtv/recordinginfo.cpp b/mythtv/libs/libmythtv/recordinginfo.cpp
index ff2cc9e..d8801cd 100644
a
|
b
|
using namespace std; |
30 | 30 | #include "mythdb.h" |
31 | 31 | #include "mythlogging.h" |
32 | 32 | #include "previewgenerator.h" |
| 33 | #include "cardutil.h" |
33 | 34 | #include "channelutil.h" |
34 | 35 | |
35 | 36 | #define LOC QString("RecordingInfo(%1): ").arg(GetBasename()) |
… |
… |
bool RecordingInfo::InsertProgram(const RecordingInfo *pg, |
1025 | 1026 | " stars, previouslyshown, originalairdate, " |
1026 | 1027 | " findid, transcoder, playgroup, recpriority, " |
1027 | 1028 | " basename, progstart, progend, profile, " |
1028 | | " duplicate, storagegroup) " |
| 1029 | " duplicate, storagegroup,recinput) " |
1029 | 1030 | "VALUES" |
1030 | 1031 | " (:CHANID, :STARTS, :ENDS, :TITLE, " |
1031 | 1032 | " :SUBTITLE, :DESC, :SEASON, :EPISODE, " |
… |
… |
bool RecordingInfo::InsertProgram(const RecordingInfo *pg, |
1034 | 1035 | " :STARS, :REPEAT, :ORIGAIRDATE, " |
1035 | 1036 | " :FINDID, :TRANSCODER, :PLAYGROUP, :RECPRIORITY, " |
1036 | 1037 | " :BASENAME, :PROGSTART, :PROGEND, :PROFILE, " |
1037 | | " 0, :STORGROUP) " |
| 1038 | " 0, :STORGROUP, :RECINPUT)" |
1038 | 1039 | ); |
1039 | 1040 | |
1040 | 1041 | if (pg->rectype == kOverrideRecord) |
… |
… |
bool RecordingInfo::InsertProgram(const RecordingInfo *pg, |
1068 | 1069 | query.bindValue(":TRANSCODER", rule->m_transcoder); |
1069 | 1070 | query.bindValue(":PLAYGROUP", pg->playgroup); |
1070 | 1071 | query.bindValue(":RECPRIORITY", rule->m_recPriority); |
| 1072 | query.bindValue(":RECINPUT", null_to_empty(pg->recinput)); |
1071 | 1073 | query.bindValue(":BASENAME", pg->pathname); |
1072 | 1074 | query.bindValue(":STORGROUP", null_to_empty(pg->storagegroup)); |
1073 | 1075 | query.bindValue(":PROGSTART", pg->startts); |
-
diff --git a/mythtv/libs/libmythtv/tv_rec.cpp b/mythtv/libs/libmythtv/tv_rec.cpp
index 20c5f23..15edd97 100644
a
|
b
|
uint TVRec::TuningCheckForHWChange(const TuningRequest &request, |
3601 | 3601 | curCardID = channel->GetInputCardID(current_input); |
3602 | 3602 | newCardID = channel->GetInputCardID(new_input); |
3603 | 3603 | LOG(VB_GENERAL, LOG_INFO, LOC + QString("HW Tuner: %1->%2") |
3604 | | .arg(curCardID).arg(newCardID)); |
| 3604 | .arg(curCardID).arg(newCardID)); |
3605 | 3605 | } |
3606 | 3606 | |
3607 | 3607 | if (curCardID != newCardID || !CardUtil::IsChannelReusable(genOpt.cardtype)) |
… |
… |
void TVRec::TuningFrequency(const TuningRequest &request) |
3782 | 3782 | else |
3783 | 3783 | ok = true; |
3784 | 3784 | |
| 3785 | LOG(VB_RECORD, LOG_INFO, LOC + QString("Tuning on: %1").arg(input)); |
| 3786 | if (curRecording) { |
| 3787 | curRecording->SaveRecInput( |
| 3788 | CardUtil::GetDisplayName(cardid,input)); |
| 3789 | } |
| 3790 | |
3785 | 3791 | if (!ok) |
3786 | 3792 | { |
3787 | 3793 | if (!(request.flags & kFlagLiveTV) || !(request.flags & kFlagEITScan)) |
-
diff --git a/mythtv/libs/libmythtv/videosource.cpp b/mythtv/libs/libmythtv/videosource.cpp
index 2c943c6..e5bfdf3 100644
a
|
b
|
class InputDisplayName : public LineEditSetting, public CardInputDBStorage |
2561 | 2561 | { |
2562 | 2562 | setLabel(QObject::tr("Display name (optional)")); |
2563 | 2563 | setHelpText(QObject::tr( |
2564 | | "This name is displayed on screen when Live TV begins " |
2565 | | "and when changing the selected input or card. If you " |
2566 | | "use this, make sure the information is unique for " |
2567 | | "each input.")); |
| 2564 | "This name is displayed on screen when Live TV begins, " |
| 2565 | "when changing the selected input or card, and on a " |
| 2566 | "recording's info dialog. If you use this, make sure " |
| 2567 | "the information is unique for each input.")); |
2568 | 2568 | }; |
2569 | 2569 | }; |
2570 | 2570 | |
-
diff --git a/mythtv/programs/mythbackend/services/serviceUtil.cpp b/mythtv/programs/mythbackend/services/serviceUtil.cpp
index 92ce181..cfecc68 100644
a
|
b
|
void FillProgramInfo( DTC::Program *pProgram, |
140 | 140 | pProgram->Channel()->SourceId()); |
141 | 141 | pRecording->setEncoderName( encoderName ); |
142 | 142 | } |
| 143 | pRecording->setInputName ( pInfo->GetRecInput() ); |
143 | 144 | |
144 | 145 | const RecordingInfo ri(*pInfo); |
145 | 146 | pRecording->setProfile( ri.GetProgramRecordingProfile() ); |
-
diff --git a/mythtv/programs/mythfrontend/progdetails.cpp b/mythtv/programs/mythfrontend/progdetails.cpp
index fcff565..c817f85 100644
a
|
b
|
void ProgDetails::loadPage(void) |
664 | 664 | addItem("FINDID", tr("Find ID"), s); |
665 | 665 | |
666 | 666 | QString recordingHost; |
| 667 | QString recordingInput; |
667 | 668 | QString recordedFilename; |
668 | 669 | QString recordedFileSize; |
669 | 670 | QString recordingGroup; |
… |
… |
void ProgDetails::loadPage(void) |
671 | 672 | QString playbackGroup; |
672 | 673 | QString recordingProfile; |
673 | 674 | |
| 675 | recordingHost = m_progInfo.GetHostname(); |
| 676 | recordingInput = m_progInfo.GetRecInput(); |
| 677 | |
674 | 678 | if (recorded) |
675 | 679 | { |
676 | | recordingHost = m_progInfo.GetHostname(); |
677 | 680 | recordedFilename = m_progInfo.GetBasename(); |
678 | 681 | recordedFileSize = QString("%1 ") |
679 | 682 | .arg(m_progInfo.GetFilesize()/((double)(1<<30)),0,'f',2); |
… |
… |
void ProgDetails::loadPage(void) |
698 | 701 | recordingProfile = record->m_recProfile; |
699 | 702 | } |
700 | 703 | addItem("RECORDING_HOST", tr("Recording Host"), recordingHost); |
| 704 | addItem("RECORDING_INPUT", tr("Recording Input"), recordingInput); |
701 | 705 | addItem("RECORDED_FILE_NAME", tr("Recorded File Name"), recordedFilename); |
702 | 706 | addItem("RECORDED_FILE_SIZE", tr("Recorded File Size"), recordedFileSize); |
703 | 707 | addItem("RECORDING_PROFILE", tr("Recording Profile"), recordingProfile); |
-
diff --git a/mythtv/themes/MythCenter-wide/htmls/progdetails_page2.html b/mythtv/themes/MythCenter-wide/htmls/progdetails_page2.html
index 499bfb5..fdb9cf9 100644
a
|
b
|
|
36 | 36 | <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p> |
37 | 37 | <h1>%FINDID_LABEL%</h1> <p>%FINDID%</p> |
38 | 38 | <h1>%RECORDING_HOST_LABEL%</h1> <p>%RECORDING_HOST%</p> |
| 39 | <h1>%RECORDING_INPUT_LABEL%</h1> <p>%RECORDING_INPUT%</p> |
39 | 40 | <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p> |
40 | 41 | <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p> |
41 | 42 | <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p> |
-
diff --git a/mythtv/themes/MythCenter/htmls/progdetails_page2.html b/mythtv/themes/MythCenter/htmls/progdetails_page2.html
index 3619729..cf36332 100644
a
|
b
|
|
38 | 38 | <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p> |
39 | 39 | <h1>%FINDID_LABEL%</h1> <p>%FINDID%</p> |
40 | 40 | <h1>%RECORDING_HOST_LABEL%</h1> <p>%RECORDING_HOST%</p> |
| 41 | <h1>%RECORDING_INPUT_LABEL%</h1> <p>%RECORDING_INPUT%</p> |
41 | 42 | <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p> |
42 | 43 | <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p> |
43 | 44 | <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p> |
-
diff --git a/mythtv/themes/Terra/htmls/progdetails_page2.html b/mythtv/themes/Terra/htmls/progdetails_page2.html
index 243d041..a1426d6 100644
a
|
b
|
|
41 | 41 | <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p> |
42 | 42 | <h1>%FINDID_LABEL%</h1> <p>%FINDID%</p> |
43 | 43 | <h1>%RECORDING_HOST_LABEL%</h1> <p>%RECORDING_HOST%</p> |
| 44 | <h1>%RECORDING_INPUT_LABEL%</h1> <p>%RECORDING_INPUT%</p> |
44 | 45 | <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p> |
45 | 46 | <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p> |
46 | 47 | <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p> |
-
diff --git a/mythtv/themes/default/htmls/progdetails_page2.html b/mythtv/themes/default/htmls/progdetails_page2.html
index 900fd31..40fb94b 100644
a
|
b
|
|
38 | 38 | <h1>%SEARCH_PHRASE_LABEL%</h1> <p>%SEARCH_PHRASE%</p> |
39 | 39 | <h1>%FINDID_LABEL%</h1> <p>%FINDID%</p> |
40 | 40 | <h1>%RECORDING_HOST_LABEL%</h1> <p>%RECORDING_HOST%</p> |
| 41 | <h1>%RECORDING_INPUT_LABEL%</h1> <p>%RECORDING_INPUT%</p> |
41 | 42 | <h1>%RECORDED_FILE_NAME_LABEL%</h1> <p>%RECORDED_FILE_NAME%</p> |
42 | 43 | <h1>%RECORDED_FILE_SIZE_LABEL%</h1> <p>%RECORDED_FILE_SIZE%</p> |
43 | 44 | <h1>%RECORDING_PROFILE_LABEL%</h1> <p>%RECORDING_PROFILE%</p> |