|
MythTV
0.26-pre
|
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
1.7.6.1