-
From a8011a7317ec559f691c12330adae773bfb4ff69 Mon Sep 17 00:00:00 2001
From: George Nassas <gnassas@gmail.com>
Date: Thu, 27 Mar 2014 15:56:05 -0400
Subject: [PATCH] Update
---
mythtv/bindings/perl/MythTV.pm | 4 +-
mythtv/bindings/perl/MythTV/Program.pm | 4 ++
mythtv/bindings/php/MythBackend.php | 3 +-
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(+), 54 deletions(-)
diff --git a/mythtv/bindings/perl/MythTV.pm b/mythtv/bindings/perl/MythTV.pm
index f35178e..e113655 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 = "80"; |
111 | | our $PROTO_TOKEN = "TaDah!"; |
| 110 | our $PROTO_VERSION = "81"; |
| 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 4a162b4..e2fbb29 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 = '80'; |
| 14 | static $protocol_version = '81'; |
| 15 | static $protocol_token = 'SeaBird'; |
15 | 16 | static $protocol_token = 'TaDah!'; |
16 | 17 | |
17 | 18 | // The character string used by the backend to separate records |
-
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 579468c..b642011 100644
a
|
b
|
OWN_VERSION = (0,28,-1,0) |
8 | 8 | SCHEMA_VERSION = 1324 |
9 | 9 | NVSCHEMA_VERSION = 1007 |
10 | 10 | MUSICSCHEMA_VERSION = 1018 |
11 | | PROTO_VERSION = '80' |
12 | | PROTO_TOKEN = 'TaDah!' |
| 11 | PROTO_VERSION = '81' |
| 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 06cc019..29d0401 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( |
761 | 767 | director(), |
762 | 768 | |
763 | 769 | recpriority(0), |
| 770 | recinput(), |
764 | 771 | |
765 | 772 | chanid(_chanid), |
766 | 773 | chanstr(_channum), |
… |
… |
void ProgramInfo::clone(const ProgramInfo &other, |
1025 | 1032 | catType = other.catType; |
1026 | 1033 | |
1027 | 1034 | recpriority = other.recpriority; |
| 1035 | recinput = other.recinput; |
1028 | 1036 | |
1029 | 1037 | filesize = other.filesize; |
1030 | 1038 | |
… |
… |
void ProgramInfo::clone(const ProgramInfo &other, |
1095 | 1103 | programid.detach(); |
1096 | 1104 | inetref.detach(); |
1097 | 1105 | |
| 1106 | recinput.detach(); |
| 1107 | |
1098 | 1108 | sortTitle.detach(); |
1099 | 1109 | inUseForWhat.detach(); |
1100 | 1110 | } |
… |
… |
void ProgramInfo::clear(void) |
1132 | 1142 | seriesid.clear(); |
1133 | 1143 | programid.clear(); |
1134 | 1144 | inetref.clear(); |
| 1145 | recinput.clear(); |
1135 | 1146 | catType = kCategoryNone; |
1136 | 1147 | |
1137 | 1148 | sortTitle.clear(); |
… |
… |
void ProgramInfo::ToStringList(QStringList &list) const |
1327 | 1338 | INT_TO_LIST(partnumber); // 46 |
1328 | 1339 | INT_TO_LIST(parttotal); // 47 |
1329 | 1340 | INT_TO_LIST(catType); // 48 |
| 1341 | STR_TO_LIST(recinput); // 49 |
1330 | 1342 | /* do not forget to update the NUMPROGRAMLINES defines! */ |
1331 | 1343 | } |
1332 | 1344 | |
… |
… |
bool ProgramInfo::FromStringList(QStringList::const_iterator &it, |
1431 | 1443 | INT_FROM_LIST(partnumber); // 46 |
1432 | 1444 | INT_FROM_LIST(parttotal); // 47 |
1433 | 1445 | ENUM_FROM_LIST(catType, CategoryType); // 48 |
| 1446 | STR_FROM_LIST(recinput); // 49 |
1434 | 1447 | |
1435 | 1448 | if (!origChanid || !origRecstartts.isValid() || |
1436 | 1449 | (origChanid != chanid) || (origRecstartts != recstartts)) |
… |
… |
void ProgramInfo::ToMap(InfoMap &progMap, |
1549 | 1562 | if (timeNow.toLocalTime().date().year() != |
1550 | 1563 | endts.toLocalTime().date().year()) |
1551 | 1564 | progMap["endyear"] = endts.toLocalTime().toString("yyyy"); |
| 1565 | progMap["inputname"] = recinput; |
1552 | 1566 | } |
1553 | 1567 | |
1554 | 1568 | using namespace MythDate; |
… |
… |
void ProgramInfo::ToMap(InfoMap &progMap, |
1636 | 1650 | |
1637 | 1651 | progMap["card"] = ::toString(GetRecordingStatus(), cardid); |
1638 | 1652 | progMap["input"] = ::toString(GetRecordingStatus(), inputid); |
1639 | | progMap["inputname"] = QueryInputDisplayName(); |
1640 | 1653 | |
1641 | 1654 | progMap["recpriority"] = recpriority; |
1642 | 1655 | progMap["recpriority2"] = recpriority2; |
… |
… |
bool ProgramInfo::LoadProgramFromRecorded( |
1959 | 1972 | catType = string_to_myth_category_type(query.value(54).toString()); |
1960 | 1973 | |
1961 | 1974 | recpriority = query.value(16).toInt(); |
| 1975 | recinput = query.value(55).toString(); |
1962 | 1976 | |
1963 | 1977 | filesize = query.value(20).toULongLong(); |
1964 | 1978 | |
… |
… |
void ProgramInfo::SaveInetRef(const QString &inet) |
4385 | 4399 | SendUpdateEvent(); |
4386 | 4400 | } |
4387 | 4401 | |
| 4402 | /** \fn ProgramInfo::SaveRecInput(const QString) |
| 4403 | * \brief Sets recording input display name in database, |
| 4404 | * and sets "recinput" field. |
| 4405 | */ |
| 4406 | void ProgramInfo::SaveRecInput(const QString &inputName) |
| 4407 | { |
| 4408 | recinput = inputName; |
| 4409 | |
| 4410 | MSqlQuery query(MSqlQuery::InitCon()); |
| 4411 | |
| 4412 | query.prepare( |
| 4413 | "UPDATE recorded " |
| 4414 | "SET recinput = :RECINPUT " |
| 4415 | "WHERE chanid = :CHANID AND starttime = :STARTTIME " |
| 4416 | "AND recordid = :RECORDID"); |
| 4417 | |
| 4418 | query.bindValue(":RECINPUT", inputName); |
| 4419 | query.bindValue(":CHANID", chanid); |
| 4420 | query.bindValue(":STARTTIME", recstartts); |
| 4421 | query.bindValue(":RECORDID", recordid); |
| 4422 | query.exec(); |
| 4423 | } |
| 4424 | |
4388 | 4425 | /** \brief Attempts to ascertain if the main file for this ProgramInfo |
4389 | 4426 | * is readable. |
4390 | 4427 | * \note This method often initiates a QUERY_CHECKFILE MythProto |
… |
… |
bool ProgramInfo::QueryTuningInfo(QString &channum, QString &input) const |
4740 | 4777 | } |
4741 | 4778 | } |
4742 | 4779 | |
4743 | | /** \brief Returns the display name of the card input for this program. |
4744 | | * \note Ideally this would call CardUtil::GetDisplayName(), but |
4745 | | * that's in libmythtv. Dupliacte code for now until a better |
4746 | | * solution can be found. |
4747 | | */ |
4748 | | QString ProgramInfo::QueryInputDisplayName(void) const |
4749 | | { |
4750 | | if (!inputid) |
4751 | | return QString::null; |
4752 | | |
4753 | | MSqlQuery query(MSqlQuery::InitCon()); |
4754 | | query.prepare("SELECT displayname, cardid, inputname " |
4755 | | "FROM cardinput " |
4756 | | "WHERE cardinputid = :INPUTID"); |
4757 | | query.bindValue(":INPUTID", inputid); |
4758 | | |
4759 | | if (!query.exec()) |
4760 | | MythDB::DBError("ProgramInfo::GetInputDisplayName(uint)", query); |
4761 | | else if (query.next()) |
4762 | | { |
4763 | | QString result = query.value(0).toString(); |
4764 | | if (result.isEmpty()) |
4765 | | result = QString("%1: %2").arg(query.value(1).toInt()) |
4766 | | .arg(query.value(2).toString()); |
4767 | | return result; |
4768 | | } |
4769 | | |
4770 | | return QString::null; |
4771 | | } |
4772 | | |
4773 | 4780 | static int init_tr(void) |
4774 | 4781 | { |
4775 | 4782 | static bool done = false; |
… |
… |
void ProgramInfo::SubstituteMatches(QString &str) |
4894 | 4901 | str.replace(QString("%PLAYGROUP%"), playgroup); |
4895 | 4902 | str.replace(QString("%CHANID%"), QString::number(chanid)); |
4896 | 4903 | str.replace(QString("%INETREF%"), inetref); |
| 4904 | str.replace(QString("%RECINPUT%"), recinput); |
4897 | 4905 | str.replace(QString("%PARTNUMBER%"), QString::number(partnumber)); |
4898 | 4906 | str.replace(QString("%PARTTOTAL%"), QString::number(parttotal)); |
4899 | 4907 | str.replace(QString("%ORIGINALAIRDATE%"), |
… |
… |
bool LoadFromRecorded( |
5394 | 5402 | string_to_myth_category_type(query.value(54).toString()), // category_type |
5395 | 5403 | |
5396 | 5404 | query.value(16).toInt(), // recpriority |
| 5405 | query.value(55).toString(), // recinput |
5397 | 5406 | |
5398 | 5407 | query.value(20).toULongLong(), // filesize |
5399 | 5408 | |
-
diff --git a/mythtv/libs/libmyth/programinfo.h b/mythtv/libs/libmyth/programinfo.h
index 161c34a..9630552 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 |
418 | 419 | QString GetCategoryTypeString(void) const; |
419 | 420 | int GetRecordingPriority(void) const { return recpriority; } |
420 | 421 | int GetRecordingPriority2(void) const { return recpriority2; } |
| 422 | QString GetRecInput(void) const { return recinput; } |
421 | 423 | float GetStars(void) const { return stars; } |
422 | 424 | uint GetStars(uint range_max) const |
423 | 425 | { return (int)(stars * range_max + 0.5f); } |
… |
… |
class MPUBLIC ProgramInfo |
505 | 507 | void SetRecordingPriority2(int priority) { recpriority2 = priority; } |
506 | 508 | void SetRecordingRuleID(uint id) { recordid = id; } |
507 | 509 | void SetSourceID(uint id) { sourceid = id; } |
508 | | void SetInputID( uint id) { inputid = id; } |
| 510 | virtual void |
| 511 | SetInputID( uint id) { inputid = id; } |
509 | 512 | void SetCardID( uint id) { cardid = id; } |
| 513 | void SetRecInput( const QString &inpName) { recinput = inpName; } |
510 | 514 | void SetReactivated(bool reactivate) |
511 | 515 | { |
512 | 516 | programflags &= ~FL_REACTIVATE; |
… |
… |
class MPUBLIC ProgramInfo |
549 | 553 | AutoExpireType QueryAutoExpire(void) const; |
550 | 554 | TranscodingStatus QueryTranscodeStatus(void) const; |
551 | 555 | bool QueryTuningInfo(QString &channum, QString &input) const; |
552 | | QString QueryInputDisplayName(void) const; |
553 | 556 | uint QueryAverageWidth(void) const; |
554 | 557 | uint QueryAverageHeight(void) const; |
555 | 558 | uint QueryAverageFrameRate(void) const; |
… |
… |
class MPUBLIC ProgramInfo |
587 | 590 | void UpdateInUseMark(bool force = false); |
588 | 591 | void SaveSeasonEpisode(uint seas, uint ep); |
589 | 592 | void SaveInetRef(const QString &inet); |
| 593 | void SaveRecInput(const QString &inputName); |
590 | 594 | |
591 | 595 | // Extremely slow functions that cannot be called from the UI thread. |
592 | 596 | QString DiscoverRecordingDirectory(void) const; |
… |
… |
class MPUBLIC ProgramInfo |
689 | 693 | QString director; |
690 | 694 | |
691 | 695 | int32_t recpriority; |
| 696 | QString recinput; |
692 | 697 | |
693 | 698 | uint32_t chanid; |
694 | 699 | QString chanstr; // Channum |
-
diff --git a/mythtv/libs/libmythbase/mythversion.h b/mythtv/libs/libmythbase/mythversion.h
index aed1ba4..c3f01b0 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 "80" |
43 | | #define MYTH_PROTO_TOKEN "TaDah!" |
| 42 | #define MYTH_PROTO_VERSION "81" |
| 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 023799f..042a01b 100644
a
|
b
|
class InputDisplayName : public LineEditSetting, public CardInputDBStorage |
2567 | 2567 | { |
2568 | 2568 | setLabel(QObject::tr("Display name (optional)")); |
2569 | 2569 | setHelpText(QObject::tr( |
2570 | | "This name is displayed on screen when Live TV begins " |
2571 | | "and when changing the selected input or card. If you " |
2572 | | "use this, make sure the information is unique for " |
2573 | | "each input.")); |
| 2570 | "This name is displayed on screen when Live TV begins, " |
| 2571 | "when changing the selected input or card, and on a " |
| 2572 | "recording's info dialog. If you use this, make sure " |
| 2573 | "the information is unique for each input.")); |
2574 | 2574 | }; |
2575 | 2575 | }; |
2576 | 2576 | |
-
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> |