00001 #include <qdir.h>
00002
00003 #include <mythtv/mythcontext.h>
00004 #include <mythtv/uitypes.h>
00005
00006 #include "globals.h"
00007 #include "videoutils.h"
00008 #include "metadata.h"
00009 #include "metadatalistmanager.h"
00010
00011 namespace
00012 {
00013 const int WATCHED_WATERMARK = 10000;
00014
00015
00016 const QString VIDEO_COVERFILE_DEFAULT_OLD = QObject::tr("None");
00017 }
00018
00019 void PlayVideo(const QString &filename, const MetadataListManager &video_list)
00020 {
00021 MetadataListManager::MetadataPtr item = video_list.byFilename(filename);
00022
00023 if (!item) return;
00024
00025 QTime playing_time;
00026
00027 do
00028 {
00029 playing_time.start();
00030
00031 QString internal_mrl;
00032 QString handler = Metadata::getPlayer(item.get(), internal_mrl);
00033
00034 if (!gContext->GetMainWindow()->
00035 HandleMedia(handler, internal_mrl, item->Plot(), item->Title(),
00036 item->Director(), item->Length(),
00037 QString::number(item->Year())))
00038 {
00039
00040 QString command = Metadata::getPlayCommand(item.get());
00041 if (command.length())
00042 {
00043 gContext->sendPlaybackStart();
00044 myth_system(command);
00045 gContext->sendPlaybackEnd();
00046 }
00047 }
00048
00049 if (item->ChildID() > 0)
00050 {
00051 item = video_list.byID(item->ChildID());
00052 }
00053 else
00054 {
00055 break;
00056 }
00057 }
00058 while (item && playing_time.elapsed() > WATCHED_WATERMARK);
00059 }
00060
00061 void checkedSetText(LayerSet *container, const QString &item_name,
00062 const QString &text)
00063 {
00064 if (container)
00065 {
00066 UITextType *utt = dynamic_cast<UITextType *>
00067 (container->GetType(item_name));
00068 if (utt)
00069 utt->SetText(text);
00070 }
00071 }
00072
00073 QStringList GetVideoDirs()
00074 {
00075 QStringList tmp = QStringList::split(":",
00076 gContext->GetSetting("VideoStartupDir", DEFAULT_VIDEOSTARTUP_DIR));
00077 for (QStringList::iterator p = tmp.begin(); p != tmp.end(); ++p)
00078 {
00079 *p = QDir::cleanDirPath(*p);
00080 }
00081 return tmp;
00082 }
00083
00084 QString getDisplayYear(int year)
00085 {
00086 return year == VIDEO_YEAR_DEFAULT ? "?" : QString::number(year);
00087 }
00088
00089 QString getDisplayRating(const QString &rating)
00090 {
00091 if (rating == "<NULL>")
00092 return QObject::tr("No rating available.");
00093 return rating;
00094 }
00095
00096 QString getDisplayUserRating(float userrating)
00097 {
00098 return QString::number(userrating, 'f', 1);
00099 }
00100
00101 QString getDisplayLength(int length)
00102 {
00103 return QString::number(length) + " " + QObject::tr("minutes");
00104 }
00105
00106 QString getDisplayBrowse(bool browse)
00107 {
00108 return browse ? QObject::tr("Yes") : QObject::tr("No");
00109 }
00110
00111 bool isDefaultCoverFile(const QString &coverfile)
00112 {
00113 return coverfile == VIDEO_COVERFILE_DEFAULT ||
00114 coverfile == VIDEO_COVERFILE_DEFAULT_OLD;
00115 }
00116
00117 QStringList GetCastList(const Metadata &item)
00118 {
00119 QStringList al;
00120
00121 const Metadata::cast_list &cast = item.getCast();
00122 for (Metadata::cast_list::const_iterator p = cast.begin();
00123 p != cast.end(); ++p)
00124 {
00125 al.push_back(p->second);
00126 }
00127
00128 if (!al.count())
00129 al << QObject::tr("None defined");
00130
00131 return al;
00132 }
00133
00134 QString GetCast(const Metadata &item, const QString &sep )
00135 {
00136 return GetCastList(item).join(sep);
00137 }