22 .replace(
"\"",
"\\\"")
24 .replace(
"\\$",
"\\$");
38 QString
tmp = command;
39 if (
tmp.contains(
"%d"))
41 QString default_handler =
43 if (
tmp.contains(
"%s") && default_handler.contains(
"%s"))
44 default_handler = default_handler.replace(
"%s",
"");
45 tmp.replace(
"%d", default_handler);
50 if (
tmp.contains(
"%s"))
51 return tmp.replace(
"%s", arg);
53 return QString(
"%1 %2").arg(
tmp, arg);
70 virtual bool Play()
const = 0;
83 QString plot, QString title, QString subtitle,
84 QString director,
int season,
int episode, QString inetref,
85 std::chrono::minutes length, QString year, QString
id) :
98 const QString &mrl,
const QString &plot,
const QString &title,
99 const QString &subtitle,
const QString &director,
100 int season,
int episode,
const QString &inetref,
101 std::chrono::minutes length,
const QString &year,
const QString &
id)
104 director, season, episode, inetref, length, year,
id);
145 QString play_command) :
189 auto playerclone = [](
auto *player) {
return player->Clone(); };
205 QString play_command =
219 if (!play_command.isEmpty())
226 QString::number(item->
GetID()));
252 if (!play_command.isEmpty())
259 QString::number(item->
GetID()));
270 QString extension =
filename.section(
".", -1, -1);
271 QDir dir_test(QString(
"%1/VIDEO_TS").arg(
filename));
272 if (dir_test.exists())
273 extension =
"VIDEO_TS";
274 QDir bd_dir_test(QString(
"%1/BDMV").arg(
filename));
275 if (bd_dir_test.exists())
282 auto sameext = [extension](
const auto & fa)
283 {
return fa.extension.toLower() == extension.toLower() &&
285 auto fa = std::find_if(fa_list.cbegin(), fa_list.cend(), sameext);
286 if (fa != fa_list.cend())
287 play_command = fa->playcommand;
289 if (play_command.trimmed().isEmpty())
290 play_command =
"Internal";
299 std::chrono::minutes length = 0min;
305 plot = extraData->GetPlot();
306 title = extraData->GetTitle();
307 subtitle = extraData->GetSubtitle();
308 director = extraData->GetDirector();
309 season = extraData->GetSeason();
310 episode = extraData->GetEpisode();
311 inetref = extraData->GetInetRef();
312 length = extraData->GetLength();
313 year = QString::number(extraData->GetYear());
314 id = QString::number(extraData->GetID());
318 season, episode, inetref, length, year,
id);
332 [](
auto *player){
return player->Play(); } );
344 const QString &plot,
const QString &title,
const QString &subtitle,
345 const QString &director,
int season,
int episode,
const QString &inetref,
346 std::chrono::minutes length,
const QString &year,
const QString &
id)
349 plot, title, subtitle, director, season, episode, inetref,
static FileAssociations & getFileAssociation()
const association_list & getList() const
std::vector< file_association > association_list
void setFunctionLEDs(enum LCDFunctionSet func, bool on)
void emitTVPlaybackStopped(void)
QString GetSetting(const QString &key, const QString &defaultval="")
void WantingPlayback(QObject *sender)
All the objects that have registered using MythCoreContext::RegisterForPlayback but sender will be ca...
void PauseIdleTimer(bool Pause)
Pause the idle timeout timer.
bool HandleMedia(const QString &Handler, const QString &Mrl, const QString &Plot="", const QString &Title="", const QString &Subtitle="", const QString &Director="", int Season=0, int Episode=0, const QString &Inetref="", std::chrono::minutes LenMins=2h, const QString &Year="1895", const QString &Id="", bool UseBookmarks=false)
static QString generate_file_url(const QString &storage_group, const QString &host, const QString &path)
bool Play() const override
VideoPlayMythSystem(QString disp_command, QString play_command)
QString GetCommandDisplayName() const override
VideoPlayMythSystem * Clone() const override
static VideoPlayMythSystem * Create(const QString &command, const QString &filename)
player_list m_playerProcs
VideoPlayerCommandPrivate & operator=(const VideoPlayerCommandPrivate &rhs)=delete
void AltPlayerFor(const VideoMetadata *item)
VideoPlayerCommandPrivate()=default
QString GetCommandDisplayName() const
VideoPlayerCommandPrivate(const VideoPlayerCommandPrivate &other)
void PlayerFor(const VideoMetadata *item)
~VideoPlayerCommandPrivate()
std::vector< VideoPlayProc * > player_list
void PlayerFor(const QString &filename, const VideoMetadata *extraData=nullptr)
void AddPlayer(const QString &player, const QString &filename, const QString &plot, const QString &title, const QString &subtitle, const QString &director, int season, int episode, const QString &inetref, std::chrono::minutes length, const QString &year, const QString &id)
static VideoPlayerCommand AltPlayerFor(const VideoMetadata *item)
class VideoPlayerCommandPrivate * m_d
VideoPlayerCommand & operator=(const VideoPlayerCommand &rhs)
static VideoPlayerCommand PlayerFor(const VideoMetadata *item)
QString GetCommandDisplayName() const
Returns the player command suitable for display to the user.
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
MythMainWindow * GetMythMainWindow(void)
uint myth_system(const QString &command, uint flags, std::chrono::seconds timeout)
QString ExpandPlayCommand(const QString &command, const QString &filename)
QString ShellEscape(const QString &src)
virtual QString GetCommandDisplayName() const =0
VideoPlayProc & operator=(const VideoPlayProc &)
VideoPlayProc(const VideoPlayProc &)=default
virtual ~VideoPlayProc()=default
virtual VideoPlayProc * Clone() const =0
virtual bool Play() const =0