MythTV  0.26-pre
videoutils.cpp
Go to the documentation of this file.
00001 #include <QDir>
00002 
00003 #include "mythcontext.h"
00004 #include "mythdirs.h"
00005 #include "mythmainwindow.h"
00006 #include "mythsystem.h"
00007 #include "mythdialogbox.h"
00008 #include "mythuistatetype.h"
00009 #include "mythuiimage.h"
00010 #include "globals.h"
00011 #include "videometadatalistmanager.h"
00012 #include "videoutils.h"
00013 #include "storagegroup.h"
00014 
00015 namespace
00016 {
00017     const QString VIDEO_COVERFILE_DEFAULT_OLD = QObject::tr("None");
00018     const QString VIDEO_COVERFILE_DEFAULT_OLD2 = QObject::tr("No Cover");
00019 
00020     template <typename T>
00021     void CopySecond(const T &src, QStringList &dest)
00022     {
00023         for (typename T::const_iterator p = src.begin(); p != src.end(); ++p)
00024         {
00025             dest.push_back((*p).second);
00026         }
00027     }
00028 }
00029 
00030 template <>
00031 void CheckedSet(MythUIStateType *uiItem, const QString &state)
00032 {
00033     if (uiItem)
00034     {
00035         uiItem->Reset();
00036         uiItem->DisplayState(state);
00037     }
00038 }
00039 
00040 void CheckedSet(MythUIType *container, const QString &itemName,
00041         const QString &value)
00042 {
00043     if (container)
00044     {
00045         MythUIType *uit = container->GetChild(itemName);
00046         MythUIText *tt = dynamic_cast<MythUIText *>(uit);
00047         if (tt)
00048             CheckedSet(tt, value);
00049         else
00050         {
00051             MythUIStateType *st = dynamic_cast<MythUIStateType *>(uit);
00052             CheckedSet(st, value);
00053         }
00054     }
00055 }
00056 
00057 void CheckedSet(MythUIImage *uiItem, const QString &filename)
00058 {
00059     if (uiItem)
00060     {
00061         uiItem->Reset();
00062         uiItem->SetFilename(filename);
00063         uiItem->Load();
00064     }
00065 }
00066 
00067 QStringList GetVideoDirsByHost(QString host)
00068 {
00069     QStringList tmp;
00070 
00071     QStringList tmp2 = StorageGroup::getGroupDirs("Videos", host);
00072     for (QStringList::iterator p = tmp2.begin(); p != tmp2.end(); ++p)
00073         tmp.append(*p);
00074 
00075     if (host.isEmpty())
00076     {
00077 #ifdef _WIN32
00078         QStringList tmp3 = gCoreContext->GetSetting("VideoStartupDir",
00079                     DEFAULT_VIDEOSTARTUP_DIR).split(";", QString::SkipEmptyParts);
00080 #else
00081         QStringList tmp3 = gCoreContext->GetSetting("VideoStartupDir",
00082                     DEFAULT_VIDEOSTARTUP_DIR).split(":", QString::SkipEmptyParts);
00083 #endif
00084         for (QStringList::iterator p = tmp3.begin(); p != tmp3.end(); ++p)
00085         {
00086             bool matches = false;
00087             QString newpath = *p;
00088             if (!newpath.endsWith("/"))
00089                 newpath.append("/");
00090 
00091             for (QStringList::iterator q = tmp2.begin(); q != tmp2.end(); ++q)
00092             {
00093                 QString comp = *q;
00094 
00095                 if (comp.endsWith(newpath))
00096                 {
00097                     matches = true;
00098                     break;
00099                 }
00100             }
00101             if (!matches)
00102                 tmp.append(QDir::cleanPath(*p));
00103         }
00104     }
00105 
00106     return tmp;
00107 }
00108 
00109 QStringList GetVideoDirs()
00110 {
00111     return GetVideoDirsByHost("");
00112 }
00113 
00114 bool IsDefaultCoverFile(const QString &coverfile)
00115 {
00116     return coverfile == VIDEO_COVERFILE_DEFAULT ||
00117             coverfile == VIDEO_COVERFILE_DEFAULT_OLD ||
00118             coverfile == VIDEO_COVERFILE_DEFAULT_OLD2 ||
00119             coverfile.endsWith(VIDEO_COVERFILE_DEFAULT_OLD) ||
00120             coverfile.endsWith(VIDEO_COVERFILE_DEFAULT_OLD2);
00121 }
00122 
00123 bool IsDefaultScreenshot(const QString &screenshot)
00124 {
00125     return screenshot == VIDEO_SCREENSHOT_DEFAULT;
00126 }
00127 
00128 bool IsDefaultBanner(const QString &banner)
00129 {
00130     return banner == VIDEO_BANNER_DEFAULT;
00131 }
00132 
00133 bool IsDefaultFanart(const QString &fanart)
00134 {
00135     return fanart == VIDEO_FANART_DEFAULT;
00136 }
00137 
00138 QString GetDisplayUserRating(float userrating)
00139 {
00140     return QString::number(userrating, 'f', 1);
00141 }
00142 
00143 QString GetDisplayLength(int length)
00144 {
00145     return QString("%1 minutes").arg(length);
00146 }
00147 
00148 QString GetDisplayBrowse(bool browse)
00149 {
00150     return browse ? QObject::tr("Yes") : QObject::tr("No");
00151 }
00152 
00153 QString GetDisplayWatched(bool watched)
00154 {
00155     return watched ? QObject::tr("Yes") : QObject::tr("No");
00156 }
00157 
00158 QString GetDisplayProcessed(bool processed)
00159 {
00160     return processed ? QObject::tr("Details Downloaded") : QObject::tr("Waiting for Detail Download");
00161 }
00162 
00163 QString GetDisplayYear(int year)
00164 {
00165     return year == VIDEO_YEAR_DEFAULT ? "?" : QString::number(year);
00166 }
00167 
00168 QString GetDisplayRating(const QString &rating)
00169 {
00170     if (rating == "<NULL>")
00171         return QObject::tr("No rating available.");
00172     return rating;
00173 }
00174 
00175 QString GetDisplayGenres(const VideoMetadata &item)
00176 {
00177     QStringList ret;
00178     CopySecond(item.GetGenres(), ret);
00179     return ret.join(", ");
00180 }
00181 
00182 QString GetDisplayCountries(const VideoMetadata &item)
00183 {
00184     QStringList ret;
00185     CopySecond(item.GetCountries(), ret);
00186     return ret.join(", ");
00187 }
00188 
00189 QStringList GetDisplayCast(const VideoMetadata &item)
00190 {
00191     QStringList ret;
00192     CopySecond(item.GetCast(), ret);
00193     return ret;
00194 }
00195 
00196 QString ParentalLevelToState(const ParentalLevel &level)
00197 {
00198     QString ret;
00199     switch (level.GetLevel())
00200     {
00201          case ParentalLevel::plLowest :
00202             ret = "Lowest";
00203             break;
00204         case ParentalLevel::plLow :
00205             ret = "Low";
00206             break;
00207         case ParentalLevel::plMedium :
00208             ret = "Medium";
00209             break;
00210         case ParentalLevel::plHigh :
00211             ret = "High";
00212             break;
00213         default:
00214             ret = "None";
00215     }
00216 
00217     return ret;
00218 }
00219 
00220 QString TrailerToState(const QString &trailerFile)
00221 {
00222     QString ret;
00223     if (!trailerFile.isEmpty())
00224         ret = "hasTrailer";
00225     else
00226         ret = "None";
00227     return ret;
00228 }
00229 
00230 QString WatchedToState(bool watched)
00231 {
00232     QString ret;
00233     if (watched)
00234         ret = "yes";
00235     else
00236         ret = "no";
00237     return ret;
00238 }
00239 
00240 VideoContentType ContentTypeFromString(const QString &type)
00241 {
00242     VideoContentType ret = kContentUnknown;
00243 
00244     if (type == "MOVIE")
00245         ret = kContentMovie;
00246     else if (type == "TELEVISION")
00247         ret = kContentTelevision;
00248     else if (type == "ADULT")
00249         ret = kContentAdult;
00250     else if (type == "MUSICVIDEO")
00251         ret = kContentMusicVideo;
00252     else if (type == "HOMEVIDEO")
00253         ret = kContentHomeMovie;
00254 
00255     return ret;
00256 }
00257 
00258 QString ContentTypeToString(VideoContentType type)
00259 {
00260     QString ret = "UNKNOWN";
00261 
00262     if (type == kContentMovie)
00263         ret = "MOVIE";
00264     else if (type == kContentTelevision)
00265         ret = "TELEVISION";
00266     else if (type == kContentAdult)
00267         ret = "ADULT";
00268     else if (type == kContentMusicVideo)
00269         ret = "MUSICVIDEO";
00270     else if (type == kContentHomeMovie)
00271         ret = "HOMEVIDEO";
00272 
00273     return ret;
00274 }
00275 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends