-
From f055dd56838d9b3cae4b28386d3b983e15168e2d Mon Sep 17 00:00:00 2001
From: George Nassas <gnassas@gmail.com>
Date: Tue, 5 Nov 2013 08:44:19 -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 | 8 +--
mythtv/bindings/python/MythTV/static.py | 4 +-
mythtv/libs/libmyth/programinfo.cpp | 75 +++++++++++++---------
mythtv/libs/libmyth/programinfo.h | 9 ++-
mythtv/libs/libmythbase/mythversion.h | 4 +-
.../datacontracts/recording.h | 3 +
mythtv/libs/libmythtv/recordinginfo.cpp | 18 +++++-
mythtv/libs/libmythtv/recordinginfo.h | 2 +
mythtv/libs/libmythtv/videosource.cpp | 8 +--
.../programs/mythbackend/services/serviceUtil.cpp | 1 +
mythtv/programs/mythfrontend/progdetails.cpp | 3 +
.../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, 101 insertions(+), 52 deletions(-)
diff --git a/mythtv/bindings/perl/MythTV.pm b/mythtv/bindings/perl/MythTV.pm
index f6812cf..588c2a7 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 = "78"; |
111 | | our $PROTO_TOKEN = "IceBurns"; |
| 110 | our $PROTO_VERSION = "79"; |
| 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 7e3f3cc..c3429ca 100644
a
|
b
|
package MythTV::Program; |
93 | 93 | $self->{'partnumber'} = $_[46]; # part number |
94 | 94 | $self->{'parttotal'} = $_[47]; # part total |
95 | 95 | |
| 96 | $self->{'recinput'} = $_[48]; # recording input |
| 97 | |
96 | 98 | # Load the channel data |
97 | 99 | if ($self->{'chanid'}) { |
98 | 100 | $self->{'channel'} = $self->{'_mythtv'}->channel($self->{'chanid'}); |
… |
… |
package MythTV::Program; |
189 | 191 | $self->{'year'} , # 44 production year |
190 | 192 | $self->{'partnumber'} , # 45 part number |
191 | 193 | $self->{'parttotal'} , # 46 part total |
| 194 | |
| 195 | $self->{'recinput'} , # 47 rec input |
192 | 196 | '' # trailing separator |
193 | 197 | ); |
194 | 198 | } |
-
diff --git a/mythtv/bindings/php/MythBackend.php b/mythtv/bindings/php/MythBackend.php
index 81be951..c3e6c35 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 = '78'; |
15 | | static $protocol_token = 'IceBurns'; |
| 14 | static $protocol_version = '79'; |
| 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 079a478..b138130 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'] |
| 844 | 'part_number', 'part_total', 'recinput'] |
845 | 845 | _field_type = [ 3, 3, 3, |
846 | 846 | 0, 0, 0, |
847 | 847 | 3, |
… |
… |
class Program( CMPRecord, DictData, RECSTATUS, AUDIO_PROPS, \ |
858 | 858 | 5, 3, 0, |
859 | 859 | 3, 3, 0, |
860 | 860 | 0, 0, 0, |
861 | | 0, 0] |
| 861 | 0, 0, 3] |
862 | 862 | def __str__(self): |
863 | 863 | return u"<Program '%s','%s' at %s>" % (self.title, |
864 | 864 | self.starttime.isoformat(' '), hex(id(self))) |
… |
… |
class Program( CMPRecord, DictData, RECSTATUS, AUDIO_PROPS, \ |
886 | 886 | for key in ('title','subTitle','seriesId','programId','airdate', |
887 | 887 | 'category','hostname','chanNum','callSign','playGroup', |
888 | 888 | 'recGroup','rectype','programFlags','chanId','recStatus', |
889 | | 'commFree','stars','filesize'): |
| 889 | 'commFree','stars','filesize','recinput'): |
890 | 890 | if key in xmldat: |
891 | 891 | dat[key.lower()] = xmldat[key] |
892 | 892 | for key in ('startTime','endTime','lastModified', |
… |
… |
class Program( CMPRecord, DictData, RECSTATUS, AUDIO_PROPS, \ |
914 | 914 | ('ChanId', 'CallSign', 'ChanNum', 'InputId', 'SourceId'), True) |
915 | 915 | CopyData2(prog['Channel'], dat, (('ChannelName', 'channame'),)) |
916 | 916 | CopyData(prog['Recording'], dat, |
917 | | ('DupMethod', 'PlayGroup', 'RecType', 'RecordId'), True) |
| 917 | ('DupMethod', 'PlayGroup', 'RecType', 'RecordId', 'RecInput'), True) |
918 | 918 | CopyData2(prog['Recording'], dat, (('DupInType', 'dupin'), |
919 | 919 | ('Status', 'recstatus'))) |
920 | 920 | |
-
diff --git a/mythtv/bindings/python/MythTV/static.py b/mythtv/bindings/python/MythTV/static.py
index c4e1696..afef132 100644
a
|
b
|
OWN_VERSION = (0,28,-1,0) |
8 | 8 | SCHEMA_VERSION = 1320 |
9 | 9 | NVSCHEMA_VERSION = 1007 |
10 | 10 | MUSICSCHEMA_VERSION = 1018 |
11 | | PROTO_VERSION = '78' |
12 | | PROTO_TOKEN = 'IceBurns' |
| 11 | PROTO_VERSION = '79' |
| 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 5a50c96..bebdb34 100644
a
|
b
|
const QString ProgramInfo::kFromRecordedQuery = |
65 | 65 | " p.audioprop+0, p.videoprop+0, p.subtitletypes+0, "//42-44 |
66 | 66 | " r.findid, rec.dupin, rec.dupmethod, "//45-47 |
67 | 67 | " p.syndicatedepisodenumber, p.partnumber, p.parttotal, "//48-50 |
68 | | " p.season, p.episode, p.totalepisodes "//51-53 |
| 68 | " p.season, p.episode, p.totalepisodes, "//51-53 |
| 69 | " r.recinput "//54 |
69 | 70 | "FROM recorded AS r " |
70 | 71 | "LEFT JOIN channel AS c " |
71 | 72 | "ON (r.chanid = c.chanid) " |
… |
… |
ProgramInfo::ProgramInfo(void) : |
122 | 123 | director(), |
123 | 124 | |
124 | 125 | recpriority(0), |
| 126 | recinput(), |
125 | 127 | |
126 | 128 | chanid(0), |
127 | 129 | chanstr(), |
… |
… |
ProgramInfo::ProgramInfo(const ProgramInfo &other) : |
206 | 208 | director(other.director), |
207 | 209 | |
208 | 210 | recpriority(other.recpriority), |
| 211 | recinput(other.recinput), |
209 | 212 | |
210 | 213 | chanid(other.chanid), |
211 | 214 | chanstr(other.chanstr), |
… |
… |
ProgramInfo::ProgramInfo( |
315 | 318 | const QString &_inetref, |
316 | 319 | |
317 | 320 | int _recpriority, |
| 321 | const QString &_recinput, |
318 | 322 | |
319 | 323 | uint64_t _filesize, |
320 | 324 | |
… |
… |
ProgramInfo::ProgramInfo( |
355 | 359 | director(), |
356 | 360 | |
357 | 361 | recpriority(_recpriority), |
| 362 | recinput(_recinput), |
358 | 363 | |
359 | 364 | chanid(_chanid), |
360 | 365 | chanstr(_channum), |
… |
… |
ProgramInfo::ProgramInfo( |
473 | 478 | director(), |
474 | 479 | |
475 | 480 | recpriority(0), |
| 481 | recinput(), |
476 | 482 | |
477 | 483 | chanid(_chanid), |
478 | 484 | chanstr(_channum), |
… |
… |
ProgramInfo::ProgramInfo( |
600 | 606 | director(), |
601 | 607 | |
602 | 608 | recpriority(0), |
| 609 | recinput(), |
603 | 610 | |
604 | 611 | chanid(_chanid), |
605 | 612 | chanstr(_channum), |
… |
… |
ProgramInfo::ProgramInfo( |
744 | 751 | director(), |
745 | 752 | |
746 | 753 | recpriority(0), |
| 754 | recinput(), |
747 | 755 | |
748 | 756 | chanid(_chanid), |
749 | 757 | chanstr(_channum), |
… |
… |
void ProgramInfo::clone(const ProgramInfo &other, |
1008 | 1016 | catType = other.catType; |
1009 | 1017 | |
1010 | 1018 | recpriority = other.recpriority; |
| 1019 | recinput = other.recinput; |
1011 | 1020 | |
1012 | 1021 | filesize = other.filesize; |
1013 | 1022 | |
… |
… |
void ProgramInfo::clone(const ProgramInfo &other, |
1077 | 1086 | programid.detach(); |
1078 | 1087 | inetref.detach(); |
1079 | 1088 | |
| 1089 | recinput.detach(); |
| 1090 | |
1080 | 1091 | sortTitle.detach(); |
1081 | 1092 | inUseForWhat.detach(); |
1082 | 1093 | } |
… |
… |
void ProgramInfo::clear(void) |
1114 | 1125 | seriesid.clear(); |
1115 | 1126 | programid.clear(); |
1116 | 1127 | inetref.clear(); |
| 1128 | recinput.clear(); |
1117 | 1129 | catType = kCategoryNone; |
1118 | 1130 | |
1119 | 1131 | sortTitle.clear(); |
… |
… |
void ProgramInfo::ToStringList(QStringList &list) const |
1308 | 1320 | INT_TO_LIST(year); // 45 |
1309 | 1321 | INT_TO_LIST(partnumber); // 46 |
1310 | 1322 | INT_TO_LIST(parttotal); // 47 |
| 1323 | STR_TO_LIST(recinput); // 48 |
1311 | 1324 | /* do not forget to update the NUMPROGRAMLINES defines! */ |
1312 | 1325 | } |
1313 | 1326 | |
… |
… |
bool ProgramInfo::FromStringList(QStringList::const_iterator &it, |
1412 | 1425 | INT_FROM_LIST(partnumber); // 46 |
1413 | 1426 | INT_FROM_LIST(parttotal); // 47 |
1414 | 1427 | |
| 1428 | STR_FROM_LIST(recinput); // 48 |
| 1429 | |
1415 | 1430 | if (!origChanid || !origRecstartts.isValid() || |
1416 | 1431 | (origChanid != chanid) || (origRecstartts != recstartts)) |
1417 | 1432 | { |
… |
… |
void ProgramInfo::ToMap(InfoMap &progMap, |
1529 | 1544 | if (timeNow.toLocalTime().date().year() != |
1530 | 1545 | endts.toLocalTime().date().year()) |
1531 | 1546 | progMap["endyear"] = endts.toLocalTime().toString("yyyy"); |
| 1547 | progMap["inputname"] = recinput; |
1532 | 1548 | } |
1533 | 1549 | |
1534 | 1550 | using namespace MythDate; |
… |
… |
void ProgramInfo::ToMap(InfoMap &progMap, |
1616 | 1632 | |
1617 | 1633 | progMap["card"] = ::toString(GetRecordingStatus(), cardid); |
1618 | 1634 | progMap["input"] = ::toString(GetRecordingStatus(), inputid); |
1619 | | progMap["inputname"] = QueryInputDisplayName(); |
1620 | 1635 | |
1621 | 1636 | progMap["recpriority"] = recpriority; |
1622 | 1637 | progMap["recpriority2"] = recpriority2; |
… |
… |
bool ProgramInfo::LoadProgramFromRecorded( |
1939 | 1954 | /**///catType; |
1940 | 1955 | |
1941 | 1956 | recpriority = query.value(16).toInt(); |
| 1957 | recinput = query.value(54).toString(); |
1942 | 1958 | |
1943 | 1959 | filesize = query.value(20).toULongLong(); |
1944 | 1960 | |
… |
… |
void ProgramInfo::SaveInetRef(const QString &inet) |
4329 | 4345 | SendUpdateEvent(); |
4330 | 4346 | } |
4331 | 4347 | |
| 4348 | /** \fn ProgramInfo::SaveRecInput(const QString) |
| 4349 | * \brief Sets recording input display name in database, |
| 4350 | * and sets "recinput" field. |
| 4351 | */ |
| 4352 | void ProgramInfo::SaveRecInput(const QString &inputName) |
| 4353 | { |
| 4354 | recinput = inputName; |
| 4355 | |
| 4356 | MSqlQuery query(MSqlQuery::InitCon()); |
| 4357 | |
| 4358 | query.prepare( |
| 4359 | "UPDATE recorded " |
| 4360 | "SET recinput = :RECINPUT " |
| 4361 | "WHERE chanid = :CHANID AND starttime = :STARTTIME " |
| 4362 | "AND recordid = :RECORDID"); |
| 4363 | |
| 4364 | query.bindValue(":RECINPUT", inputName); |
| 4365 | query.bindValue(":CHANID", chanid); |
| 4366 | query.bindValue(":STARTTIME", recstartts); |
| 4367 | query.bindValue(":RECORDID", recordid); |
| 4368 | query.exec(); |
| 4369 | } |
| 4370 | |
4332 | 4371 | /** \brief Attempts to ascertain if the main file for this ProgramInfo |
4333 | 4372 | * is readable. |
4334 | 4373 | * \note This method often initiates a QUERY_CHECKFILE MythProto |
… |
… |
bool ProgramInfo::QueryTuningInfo(QString &channum, QString &input) const |
4684 | 4723 | } |
4685 | 4724 | } |
4686 | 4725 | |
4687 | | /** \brief Returns the display name of the card input for this program. |
4688 | | * \note Ideally this would call CardUtil::GetDisplayName(), but |
4689 | | * that's in libmythtv. Dupliacte code for now until a better |
4690 | | * solution can be found. |
4691 | | */ |
4692 | | QString ProgramInfo::QueryInputDisplayName(void) const |
4693 | | { |
4694 | | if (!inputid) |
4695 | | return QString::null; |
4696 | | |
4697 | | MSqlQuery query(MSqlQuery::InitCon()); |
4698 | | query.prepare("SELECT displayname, cardid, inputname " |
4699 | | "FROM cardinput " |
4700 | | "WHERE cardinputid = :INPUTID"); |
4701 | | query.bindValue(":INPUTID", inputid); |
4702 | | |
4703 | | if (!query.exec()) |
4704 | | MythDB::DBError("ProgramInfo::GetInputDisplayName(uint)", query); |
4705 | | else if (query.next()) |
4706 | | { |
4707 | | QString result = query.value(0).toString(); |
4708 | | if (result.isEmpty()) |
4709 | | result = QString("%1: %2").arg(query.value(1).toInt()) |
4710 | | .arg(query.value(2).toString()); |
4711 | | return result; |
4712 | | } |
4713 | | |
4714 | | return QString::null; |
4715 | | } |
4716 | | |
4717 | 4726 | static int init_tr(void) |
4718 | 4727 | { |
4719 | 4728 | static bool done = false; |
… |
… |
void ProgramInfo::SubstituteMatches(QString &str) |
4838 | 4847 | str.replace(QString("%PLAYGROUP%"), playgroup); |
4839 | 4848 | str.replace(QString("%CHANID%"), QString::number(chanid)); |
4840 | 4849 | str.replace(QString("%INETREF%"), inetref); |
| 4850 | str.replace(QString("%RECINPUT%"), recinput); |
4841 | 4851 | str.replace(QString("%PARTNUMBER%"), QString::number(partnumber)); |
4842 | 4852 | str.replace(QString("%PARTTOTAL%"), QString::number(parttotal)); |
4843 | 4853 | str.replace(QString("%ORIGINALAIRDATE%"), |
… |
… |
bool LoadFromRecorded( |
5301 | 5311 | query.value(19).toString(), // inetref |
5302 | 5312 | |
5303 | 5313 | query.value(16).toInt(), // recpriority |
| 5314 | query.value(51).toString(), // recinput |
5304 | 5315 | |
5305 | 5316 | query.value(20).toULongLong(), // filesize |
5306 | 5317 | |
-
diff --git a/mythtv/libs/libmyth/programinfo.h b/mythtv/libs/libmyth/programinfo.h
index a44aeac..e08485f 100644
a
|
b
|
class MPUBLIC ProgramInfo |
111 | 111 | const QString &inetref, |
112 | 112 | |
113 | 113 | int recpriority, |
| 114 | const QString &recinput, |
114 | 115 | |
115 | 116 | uint64_t filesize, |
116 | 117 | |
… |
… |
class MPUBLIC ProgramInfo |
415 | 416 | QString GetCategoryTypeString(void) const; |
416 | 417 | int GetRecordingPriority(void) const { return recpriority; } |
417 | 418 | int GetRecordingPriority2(void) const { return recpriority2; } |
| 419 | QString GetRecInput(void) const { return recinput; } |
418 | 420 | float GetStars(void) const { return stars; } |
419 | 421 | uint GetStars(uint range_max) const |
420 | 422 | { return (int)(stars * range_max + 0.5f); } |
… |
… |
class MPUBLIC ProgramInfo |
502 | 504 | void SetRecordingPriority2(int priority) { recpriority2 = priority; } |
503 | 505 | void SetRecordingRuleID(uint id) { recordid = id; } |
504 | 506 | void SetSourceID(uint id) { sourceid = id; } |
505 | | void SetInputID( uint id) { inputid = id; } |
| 507 | virtual void |
| 508 | SetInputID( uint id) { inputid = id; } |
506 | 509 | void SetCardID( uint id) { cardid = id; } |
| 510 | void SetRecInput( const QString &inpName) { recinput = inpName; } |
507 | 511 | void SetReactivated(bool reactivate) |
508 | 512 | { |
509 | 513 | programflags &= ~FL_REACTIVATE; |
… |
… |
class MPUBLIC ProgramInfo |
546 | 550 | AutoExpireType QueryAutoExpire(void) const; |
547 | 551 | TranscodingStatus QueryTranscodeStatus(void) const; |
548 | 552 | bool QueryTuningInfo(QString &channum, QString &input) const; |
549 | | QString QueryInputDisplayName(void) const; |
550 | 553 | uint QueryAverageWidth(void) const; |
551 | 554 | uint QueryAverageHeight(void) const; |
552 | 555 | uint QueryAverageFrameRate(void) const; |
… |
… |
class MPUBLIC ProgramInfo |
584 | 587 | void UpdateInUseMark(bool force = false); |
585 | 588 | void SaveSeasonEpisode(uint seas, uint ep); |
586 | 589 | void SaveInetRef(const QString &inet); |
| 590 | void SaveRecInput(const QString &inputName); |
587 | 591 | |
588 | 592 | // Extremely slow functions that cannot be called from the UI thread. |
589 | 593 | QString DiscoverRecordingDirectory(void) const; |
… |
… |
class MPUBLIC ProgramInfo |
686 | 690 | QString director; |
687 | 691 | |
688 | 692 | int32_t recpriority; |
| 693 | QString recinput; |
689 | 694 | |
690 | 695 | uint32_t chanid; |
691 | 696 | QString chanstr; // Channum |
-
diff --git a/mythtv/libs/libmythbase/mythversion.h b/mythtv/libs/libmythbase/mythversion.h
index f5e32e2..88a8271 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 "78" |
43 | | #define MYTH_PROTO_TOKEN "IceBurns" |
| 42 | #define MYTH_PROTO_VERSION "79" |
| 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 6157086..76bc440 100644
a
|
b
|
class SERVICE_PUBLIC RecordingInfo : public QObject |
40 | 40 | Q_PROPERTY( int DupMethod READ DupMethod WRITE setDupMethod DESIGNABLE SerializeDetails ) |
41 | 41 | Q_PROPERTY( int EncoderId READ EncoderId WRITE setEncoderId DESIGNABLE SerializeDetails ) |
42 | 42 | Q_PROPERTY( QString Profile READ Profile WRITE setProfile DESIGNABLE SerializeDetails ) |
| 43 | Q_PROPERTY( QString InputName READ InputName WRITE setInputName DESIGNABLE SerializeDetails ) |
43 | 44 | |
44 | 45 | /* |
45 | 46 | Not using since Q_ENUMS seem to require the enum be defined in this class |
… |
… |
class SERVICE_PUBLIC RecordingInfo : public QObject |
64 | 65 | PROPERTYIMP_ENUM( RecordingDupMethodType , DupMethod ) |
65 | 66 | PROPERTYIMP ( int , EncoderId ) |
66 | 67 | PROPERTYIMP ( QString , Profile ) |
| 68 | PROPERTYIMP ( QString , InputName ) |
67 | 69 | |
68 | 70 | // Used only by Serializer |
69 | 71 | PROPERTYIMP( bool, SerializeDetails ) |
… |
… |
class SERVICE_PUBLIC RecordingInfo : public QObject |
107 | 109 | m_DupMethod = src.m_DupMethod ; |
108 | 110 | m_EncoderId = src.m_EncoderId ; |
109 | 111 | m_Profile = src.m_Profile ; |
| 112 | m_InputName = src.m_InputName ; |
110 | 113 | m_SerializeDetails= src.m_SerializeDetails ; |
111 | 114 | } |
112 | 115 | }; |
-
diff --git a/mythtv/libs/libmythtv/recordinginfo.cpp b/mythtv/libs/libmythtv/recordinginfo.cpp
index e670292..b4170d0 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()) |
… |
… |
RecordingInfo::RecordingInfo( |
156 | 157 | inputid = _inputid; |
157 | 158 | cardid = _cardid; |
158 | 159 | |
| 160 | SetRecInput(CardUtil::GetDisplayName(inputid)); |
| 161 | |
159 | 162 | findid = _findid; |
160 | 163 | |
161 | 164 | properties = ((_subtitleType << 11) | |
… |
… |
void RecordingInfo::ApplyTranscoderProfileChange(const QString &profile) const |
781 | 784 | } |
782 | 785 | } |
783 | 786 | |
| 787 | /** \fn RecordingInfo::SetInputID(uint id) |
| 788 | * \brief Extend ProgramInfo's method to set the recording input |
| 789 | & name as a side effect. |
| 790 | */ |
| 791 | void RecordingInfo::SetInputID(uint id) |
| 792 | { |
| 793 | ProgramInfo::SetInputID(id); |
| 794 | SaveRecInput(CardUtil::GetDisplayName(id)); |
| 795 | } |
| 796 | |
784 | 797 | /** \fn RecordingInfo::QuickRecord(void) |
785 | 798 | * \brief Create a kSingleRecord if not already scheduled. |
786 | 799 | */ |
… |
… |
bool RecordingInfo::InsertProgram(const RecordingInfo *pg, |
949 | 962 | " stars, previouslyshown, originalairdate, " |
950 | 963 | " findid, transcoder, playgroup, recpriority, " |
951 | 964 | " basename, progstart, progend, profile, " |
952 | | " duplicate, storagegroup) " |
| 965 | " duplicate, storagegroup,recinput) " |
953 | 966 | "VALUES" |
954 | 967 | " (:CHANID, :STARTS, :ENDS, :TITLE, " |
955 | 968 | " :SUBTITLE, :DESC, :SEASON, :EPISODE, " |
… |
… |
bool RecordingInfo::InsertProgram(const RecordingInfo *pg, |
958 | 971 | " :STARS, :REPEAT, :ORIGAIRDATE, " |
959 | 972 | " :FINDID, :TRANSCODER, :PLAYGROUP, :RECPRIORITY, " |
960 | 973 | " :BASENAME, :PROGSTART, :PROGEND, :PROFILE, " |
961 | | " 0, :STORGROUP) " |
| 974 | " 0, :STORGROUP, :RECINPUT)" |
962 | 975 | ); |
963 | 976 | |
964 | 977 | if (pg->rectype == kOverrideRecord) |
… |
… |
bool RecordingInfo::InsertProgram(const RecordingInfo *pg, |
992 | 1005 | query.bindValue(":TRANSCODER", rule->m_transcoder); |
993 | 1006 | query.bindValue(":PLAYGROUP", pg->playgroup); |
994 | 1007 | query.bindValue(":RECPRIORITY", rule->m_recPriority); |
| 1008 | query.bindValue(":RECINPUT", null_to_empty(pg->recinput)); |
995 | 1009 | query.bindValue(":BASENAME", pg->pathname); |
996 | 1010 | query.bindValue(":STORGROUP", null_to_empty(pg->storagegroup)); |
997 | 1011 | query.bindValue(":PROGSTART", pg->startts); |
-
diff --git a/mythtv/libs/libmythtv/recordinginfo.h b/mythtv/libs/libmythtv/recordinginfo.h
index 806fe2f..9a2cbbd 100644
a
|
b
|
class MTV_PUBLIC RecordingInfo : public ProgramInfo |
271 | 271 | QDateTime desiredrecstartts; |
272 | 272 | QDateTime desiredrecendts; |
273 | 273 | |
| 274 | void SetInputID(uint id); |
| 275 | |
274 | 276 | private: |
275 | 277 | mutable class RecordingRule *record; |
276 | 278 | |
-
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 1601098..ade5d3d 100644
a
|
b
|
void FillProgramInfo( DTC::Program *pProgram, |
126 | 126 | pRecording->setDupInType ( pInfo->GetDuplicateCheckSource() ); |
127 | 127 | pRecording->setDupMethod ( pInfo->GetDuplicateCheckMethod() ); |
128 | 128 | pRecording->setEncoderId ( pInfo->GetCardID() ); |
| 129 | pRecording->setInputName ( pInfo->GetRecInput() ); |
129 | 130 | |
130 | 131 | const RecordingInfo ri(*pInfo); |
131 | 132 | pRecording->setProfile( ri.GetProgramRecordingProfile() ); |
-
diff --git a/mythtv/programs/mythfrontend/progdetails.cpp b/mythtv/programs/mythfrontend/progdetails.cpp
index fcff565..a1f72ad 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) |
674 | 675 | if (recorded) |
675 | 676 | { |
676 | 677 | recordingHost = m_progInfo.GetHostname(); |
| 678 | recordingInput = m_progInfo.GetRecInput(); |
677 | 679 | recordedFilename = m_progInfo.GetBasename(); |
678 | 680 | recordedFileSize = QString("%1 ") |
679 | 681 | .arg(m_progInfo.GetFilesize()/((double)(1<<30)),0,'f',2); |
… |
… |
void ProgDetails::loadPage(void) |
698 | 700 | recordingProfile = record->m_recProfile; |
699 | 701 | } |
700 | 702 | addItem("RECORDING_HOST", tr("Recording Host"), recordingHost); |
| 703 | addItem("RECORDING_INPUT", tr("Recording Input"), recordingInput); |
701 | 704 | addItem("RECORDED_FILE_NAME", tr("Recorded File Name"), recordedFilename); |
702 | 705 | addItem("RECORDED_FILE_SIZE", tr("Recorded File Size"), recordedFileSize); |
703 | 706 | 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> |