Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
garybuhrmaster committed May 5, 2016
2 parents f5e3c9e + ad7be50 commit c83fc4c
Show file tree
Hide file tree
Showing 21 changed files with 383 additions and 242 deletions.
21 changes: 9 additions & 12 deletions mythplugins/mythgallery/mythgallery/main.cpp
Expand Up @@ -137,10 +137,9 @@ static void setupKeys(void)
"Mark image"), "T");
REG_KEY("Gallery", "FULLSCREEN", QT_TRANSLATE_NOOP("MythControls",
"Toggle scale to fullscreen/scale to fit"), "W");
REG_MEDIA_HANDLER(
QT_TRANSLATE_NOOP("MythControls", "MythGallery Media Handler 1/3"),
QT_TRANSLATE_NOOP("MythControls", "MythGallery mixed data"),
"", handleMedia, MEDIATYPE_DATA | MEDIATYPE_MIXED, QString::null);
REG_MEDIA_HANDLER(QT_TRANSLATE_NOOP("MythControls",
"MythGallery Media Handler 1/3"), "", "", handleMedia,
MEDIATYPE_DATA | MEDIATYPE_MIXED, QString::null);
QString filt;
Q_FOREACH(QString format, GalleryUtil::GetImageFilter())
{
Expand All @@ -150,10 +149,9 @@ static void setupKeys(void)
else
filt += "," + format;
}
REG_MEDIA_HANDLER(
QT_TRANSLATE_NOOP("MythControls", "MythGallery Media Handler 2/3"),
QT_TRANSLATE_NOOP("MythControls", "MythGallery images"),
"", handleMedia, MEDIATYPE_MGALLERY, filt);
REG_MEDIA_HANDLER(QT_TRANSLATE_NOOP("MythControls",
"MythGallery Media Handler 2/3"), "", "", handleMedia,
MEDIATYPE_MGALLERY, filt);
filt.clear();
Q_FOREACH(QString format, GalleryUtil::GetMovieFilter())
{
Expand All @@ -163,10 +161,9 @@ static void setupKeys(void)
else
filt += "," + format;
}
REG_MEDIA_HANDLER(
QT_TRANSLATE_NOOP("MythControls", "MythGallery Media Handler 3/3"),
QT_TRANSLATE_NOOP("MythControls", "MythGallery movies"),
"", handleMedia, MEDIATYPE_MVIDEO, filt);
REG_MEDIA_HANDLER(QT_TRANSLATE_NOOP("MythControls",
"MythGallery Media Handler 3/3"), "", "", handleMedia,
MEDIATYPE_MVIDEO, filt);
}

int mythplugin_init(const char *libversion)
Expand Down
14 changes: 6 additions & 8 deletions mythplugins/mythmusic/mythmusic/main.cpp
Expand Up @@ -868,17 +868,15 @@ static void setupKeys(void)
REG_KEY("Music", "SWITCHTORADIO", QT_TRANSLATE_NOOP("MythControls",
"Switch to the radio stream view"), "");

REG_MEDIA_HANDLER(
QT_TRANSLATE_NOOP("MythControls", "MythMusic Media Handler 1/2"),
QT_TRANSLATE_NOOP("MythControls", "MythMusic audio CD"),
"", handleCDMedia, MEDIATYPE_AUDIO | MEDIATYPE_MIXED, QString::null);
REG_MEDIA_HANDLER(QT_TRANSLATE_NOOP("MythControls",
"MythMusic Media Handler 1/2"), "", "", handleCDMedia,
MEDIATYPE_AUDIO | MEDIATYPE_MIXED, QString::null);
QString filt = MetaIO::ValidFileExtensions;
filt.replace('|',',');
filt.remove('.');
REG_MEDIA_HANDLER(
QT_TRANSLATE_NOOP("MythControls", "MythMusic Media Handler 2/2"),
QT_TRANSLATE_NOOP("MythControls", "MythMusic audio files"),
"", handleMedia, MEDIATYPE_MMUSIC, filt);
REG_MEDIA_HANDLER(QT_TRANSLATE_NOOP("MythControls",
"MythMusic Media Handler 2/2"), "", "", handleMedia,
MEDIATYPE_MMUSIC, filt);
}

int mythplugin_init(const char *libversion)
Expand Down
22 changes: 8 additions & 14 deletions mythplugins/mythnews/mythnews/mythnews.cpp
Expand Up @@ -734,20 +734,14 @@ void MythNews::customEvent(QEvent *event)

if (resultid == "options")
{
if (m_NewsSites.size() > 0)
{
if (buttonnum == 0)
ShowFeedManager();
else if (buttonnum == 1)
ShowEditDialog(false);
else if (buttonnum == 2)
ShowEditDialog(true);
else if (buttonnum == 3)
deleteNewsSite();
}
else
if (buttonnum == 0)
ShowEditDialog(false);
if (buttonnum == 0)
ShowFeedManager();
else if (buttonnum == 1)
ShowEditDialog(false);
else if (buttonnum == 2)
ShowEditDialog(true);
else if (buttonnum == 3)
deleteNewsSite();
}

m_menuPopup = NULL;
Expand Down
1 change: 1 addition & 0 deletions mythtv/bindings/python/MythTV/dataheap.py
Expand Up @@ -276,6 +276,7 @@ class Recorded( CMPRecord, DBDataWrite ):
Recorded(data=None, db=None) -> Recorded object
'data' is a tuple containing (chanid, storagegroup)
"""
_key = ['chanid','starttime']
_defaults = {'title':u'Unknown', 'subtitle':'', 'description':'',
'category':'', 'hostname':'', 'bookmark':0,
'editing':0, 'cutlist':0, 'autoexpire':0,
Expand Down
29 changes: 3 additions & 26 deletions mythtv/libs/libmyth/mythmediamonitor.cpp
Expand Up @@ -664,33 +664,10 @@ void MediaMonitor::JumpToMediaHandler(MythMediaDevice* pMedia)
return;
}

int selected = 0;
if (handlers.size() > 1)
{
QStringList buttonmsgs;
for (QList<MHData>::const_iterator it = handlers.begin(); it != handlers.end(); ++it)
buttonmsgs << ((!it->description.isEmpty()) ? it->description : it->destination);
buttonmsgs << tr("Cancel");

const DialogCode cancelbtn = DialogCode(
int(kDialogCodeButton0) + buttonmsgs.size() - 1);

DialogCode ret = MythPopupBox::ShowButtonPopup(GetMythMainWindow(),
tr("Media Handler Selection"),
tr("The new media contains mixed content "
"that can be rendered in different ways. "
"Select your preferred method."),
buttonmsgs, cancelbtn);
if (kDialogCodeRejected == ret || cancelbtn == ret)
{
LOG(VB_MEDIA, LOG_INFO, "User cancelled media handler selection");
return;
}

selected = MythDialog::CalcItemIndex(ret);
LOG(VB_MEDIA, LOG_NOTICE, QString("User selected '%1'")
.arg(handlers.at(selected).destination) );
}
// TODO - Generate a dialog, add buttons for each description,
// if user didn't cancel, selected = handlers.at(choice);
int selected = 0;

handlers.at(selected).callback(pMedia);
}
Expand Down
178 changes: 89 additions & 89 deletions mythtv/libs/libmyth/programinfo.cpp
Expand Up @@ -3971,169 +3971,169 @@ static const char *from_filemarkup_offset_asc =
"SELECT mark, offset FROM filemarkup"
" WHERE filename = :PATH"
" AND type = :TYPE"
" AND mark >= :MARK"
" AND mark >= :QUERY_ARG"
" ORDER BY filename ASC, type ASC, mark ASC LIMIT 1;";
static const char *from_filemarkup_offset_desc =
"SELECT mark, offset FROM filemarkup"
" WHERE filename = :PATH"
" AND type = :TYPE"
" AND mark <= :MARK"
" AND mark <= :QUERY_ARG"
" ORDER BY filename DESC, type DESC, mark DESC LIMIT 1;";
static const char *from_recordedseek_offset_asc =
"SELECT mark, offset FROM recordedseek"
" WHERE chanid = :CHANID"
" AND starttime = :STARTTIME"
" AND type = :TYPE"
" AND mark >= :MARK"
" AND mark >= :QUERY_ARG"
" ORDER BY chanid ASC, starttime ASC, type ASC, mark ASC LIMIT 1;";
static const char *from_recordedseek_offset_desc =
"SELECT mark, offset FROM recordedseek"
" WHERE chanid = :CHANID"
" AND starttime = :STARTTIME"
" AND type = :TYPE"
" AND mark <= :MARK"
" AND mark <= :QUERY_ARG"
" ORDER BY chanid DESC, starttime DESC, type DESC, mark DESC LIMIT 1;";
static const char *from_filemarkup_mark_asc =
"SELECT offset,mark FROM filemarkup"
" WHERE filename = :PATH"
" AND type = :TYPE"
" AND offset >= :QUERY_ARG"
" ORDER BY filename ASC, type ASC, mark ASC LIMIT 1;";
static const char *from_filemarkup_mark_desc =
"SELECT offset,mark FROM filemarkup"
" WHERE filename = :PATH"
" AND type = :TYPE"
" AND offset <= :QUERY_ARG"
" ORDER BY filename DESC, type DESC, mark DESC LIMIT 1;";
static const char *from_recordedseek_mark_asc =
"SELECT offset,mark FROM recordedseek"
" WHERE chanid = :CHANID"
" AND starttime = :STARTTIME"
" AND type = :TYPE"
" AND offset >= :QUERY_ARG"
" ORDER BY chanid ASC, starttime ASC, type ASC, mark ASC LIMIT 1;";
static const char *from_recordedseek_mark_desc =
"SELECT offset,mark FROM recordedseek"
" WHERE chanid = :CHANID"
" AND starttime = :STARTTIME"
" AND type = :TYPE"
" AND offset <= :QUERY_ARG"
" ORDER BY chanid DESC, starttime DESC, type DESC, mark DESC LIMIT 1;";

bool ProgramInfo::QueryKeyFramePosition(uint64_t *position, uint64_t keyframe, bool backwards) const
bool ProgramInfo::QueryKeyFrameInfo(uint64_t * result,
uint64_t position_or_keyframe,
bool backwards,
MarkTypes type,
const char *from_filemarkup_asc,
const char *from_filemarkup_desc,
const char *from_recordedseek_asc,
const char *from_recordedseek_desc) const
{
MSqlQuery query(MSqlQuery::InitCon());

if (IsVideo())
{
if (backwards)
query.prepare(from_filemarkup_offset_desc);
query.prepare(from_filemarkup_desc);
else
query.prepare(from_filemarkup_offset_asc);
query.prepare(from_filemarkup_asc);
query.bindValue(":PATH", StorageGroup::GetRelativePathname(pathname));
}
else if (IsRecording())
{
if (backwards)
query.prepare(from_recordedseek_offset_desc);
query.prepare(from_recordedseek_desc);
else
query.prepare(from_recordedseek_offset_asc);
query.prepare(from_recordedseek_asc);
query.bindValue(":CHANID", chanid);
query.bindValue(":STARTTIME", recstartts);
}
query.bindValue(":TYPE", MARK_GOP_BYFRAME);
query.bindValue(":MARK", (unsigned long long)keyframe);
query.bindValue(":TYPE", type);
query.bindValue(":QUERY_ARG", (unsigned long long)position_or_keyframe);

if (!query.exec())
{
MythDB::DBError("QueryKeyFramePosition", query);
MythDB::DBError("QueryKeyFrameInfo", query);
return false;
}

if (query.next())
{
*position = query.value(1).toULongLong();
*result = query.value(1).toULongLong();
return true;
}

if (IsVideo())
{
if (backwards)
query.prepare(from_filemarkup_offset_asc);
query.prepare(from_filemarkup_asc);
else
query.prepare(from_filemarkup_offset_desc);
query.prepare(from_filemarkup_desc);
query.bindValue(":PATH", StorageGroup::GetRelativePathname(pathname));
}
else if (IsRecording())
{
if (backwards)
query.prepare(from_recordedseek_offset_asc);
query.prepare(from_recordedseek_asc);
else
query.prepare(from_recordedseek_offset_desc);
query.prepare(from_recordedseek_desc);
query.bindValue(":CHANID", chanid);
query.bindValue(":STARTTIME", recstartts);
}
query.bindValue(":TYPE", MARK_GOP_BYFRAME);
query.bindValue(":MARK", (unsigned long long)keyframe);
query.bindValue(":TYPE", type);
query.bindValue(":QUERY_ARG", (unsigned long long)position_or_keyframe);

if (!query.exec())
{
MythDB::DBError("QueryKeyFramePosition", query);
MythDB::DBError("QueryKeyFrameInfo", query);
return false;
}

if (query.next())
{
*position = query.value(1).toULongLong();
*result = query.value(1).toULongLong();
return true;
}

return false;

}

bool ProgramInfo::QueryKeyFrameDuration(uint64_t *duration, uint64_t keyframe, bool backwards) const
bool ProgramInfo::QueryPositionKeyFrame(uint64_t *keyframe, uint64_t position,
bool backwards) const
{
MSqlQuery query(MSqlQuery::InitCon());

if (IsVideo())
{
if (backwards)
query.prepare(from_filemarkup_offset_desc);
else
query.prepare(from_filemarkup_offset_asc);
query.bindValue(":PATH", StorageGroup::GetRelativePathname(pathname));
}
else if (IsRecording())
{
if (backwards)
query.prepare(from_recordedseek_offset_desc);
else
query.prepare(from_recordedseek_offset_asc);
query.bindValue(":CHANID", chanid);
query.bindValue(":STARTTIME", recstartts);
}
query.bindValue(":TYPE", MARK_DURATION_MS);
query.bindValue(":MARK", (unsigned long long)keyframe);

if (!query.exec())
{
MythDB::DBError("QueryKeyFrameDuration", query);
return false;
}

if (query.next())
{
*duration = query.value(1).toULongLong();
return true;
}

if (IsVideo())
{
if (backwards)
query.prepare(from_filemarkup_offset_asc);
else
query.prepare(from_filemarkup_offset_desc);
query.bindValue(":PATH", StorageGroup::GetRelativePathname(pathname));
}
else if (IsRecording())
{
if (backwards)
query.prepare(from_recordedseek_offset_asc);
else
query.prepare(from_recordedseek_offset_desc);
query.bindValue(":CHANID", chanid);
query.bindValue(":STARTTIME", recstartts);
}
query.bindValue(":TYPE", MARK_DURATION_MS);
query.bindValue(":MARK", (unsigned long long)keyframe);

if (!query.exec())
{
MythDB::DBError("QueryKeyFrameDuration", query);
return false;
}

if (query.next())
{
*duration = query.value(1).toULongLong();
return true;
}

return false;
return QueryKeyFrameInfo(keyframe, position, backwards, MARK_GOP_BYFRAME,
from_filemarkup_mark_asc,
from_filemarkup_mark_desc,
from_recordedseek_mark_asc,
from_recordedseek_mark_desc);
}
bool ProgramInfo::QueryKeyFramePosition(uint64_t *position, uint64_t keyframe,
bool backwards) const
{
return QueryKeyFrameInfo(position, keyframe, backwards, MARK_GOP_BYFRAME,
from_filemarkup_offset_asc,
from_filemarkup_offset_desc,
from_recordedseek_offset_asc,
from_recordedseek_offset_desc);
}
bool ProgramInfo::QueryDurationKeyFrame(uint64_t *keyframe, uint64_t duration,
bool backwards) const
{
return QueryKeyFrameInfo(keyframe, duration, backwards, MARK_DURATION_MS,
from_filemarkup_mark_asc,
from_filemarkup_mark_desc,
from_recordedseek_mark_asc,
from_recordedseek_mark_desc);
}
bool ProgramInfo::QueryKeyFrameDuration(uint64_t *duration, uint64_t keyframe,
bool backwards) const
{
return QueryKeyFrameInfo(duration, keyframe, backwards, MARK_DURATION_MS,
from_filemarkup_offset_asc,
from_filemarkup_offset_desc,
from_recordedseek_offset_asc,
from_recordedseek_offset_desc);
}

/// \brief Store aspect ratio of a frame in the recordedmark table
Expand Down

0 comments on commit c83fc4c

Please sign in to comment.