MythTV  0.26-pre
metadataimagehelper.cpp
Go to the documentation of this file.
00001 #include <QUrl>
00002 
00003 #include "mythdirs.h"
00004 #include "mythdbcon.h"
00005 
00006 #include "metadataimagehelper.h"
00007 
00008 ArtworkMap GetArtwork(QString inetref,
00009                       uint season,
00010                       bool strict)
00011 {
00012     ArtworkMap map;
00013 
00014     MSqlQuery query(MSqlQuery::InitCon());
00015 
00016     QString querystring = "SELECT host, coverart, fanart, banner "
00017         "FROM recordedartwork WHERE inetref = :INETREF ";
00018 
00019     if (strict)
00020         querystring += "AND season = :SEASON;";
00021     else
00022     {
00023         if (season > 0)
00024         {
00025             querystring += "ORDER BY season = :SEASON DESC, season DESC;";
00026         }
00027         else
00028             querystring += "ORDER BY season DESC;";
00029     }
00030 
00031     query.prepare(querystring);
00032 
00033     query.bindValue(":INETREF", inetref);
00034     if (strict || season > 0)
00035         query.bindValue(":SEASON", season);
00036 
00037     if (!query.exec())
00038     {
00039         MythDB::DBError("GetArtwork SELECT", query);
00040         return map;
00041     }
00042 
00043     if (query.next())
00044     {
00045         QString host = query.value(0).toString();
00046         QString coverart = query.value(1).toString();
00047         QString fanart = query.value(2).toString();
00048         QString banner = query.value(3).toString();
00049 
00050         if (!coverart.isEmpty())
00051         {
00052             ArtworkInfo coverartinfo;
00053             coverartinfo.url = generate_myth_url("Coverart", host, coverart);
00054             map.insert(kArtworkCoverart, coverartinfo);
00055         }
00056 
00057         if (!fanart.isEmpty())
00058         {
00059             ArtworkInfo fanartinfo;
00060             fanartinfo.url = generate_myth_url("Fanart", host, fanart);
00061             map.insert(kArtworkFanart, fanartinfo);
00062         }
00063 
00064         if (!banner.isEmpty())
00065         {
00066             ArtworkInfo bannerinfo;
00067             bannerinfo.url = generate_myth_url("Banners", host, banner);
00068             map.insert(kArtworkBanner, bannerinfo);
00069         }
00070     }
00071 
00072     return map;
00073 }
00074 
00075 bool SetArtwork(const QString &inetref,
00076                        uint season,
00077                        const QString &host,
00078                        const QString &coverart,
00079                        const QString &fanart,
00080                        const QString &banner)
00081 {
00082     bool ret = false;
00083     ArtworkMap map;
00084 
00085     if (!coverart.isEmpty())
00086     {
00087         ArtworkInfo coverartinfo;
00088         coverartinfo.url = generate_myth_url("Coverart", host, coverart);
00089         map.insert(kArtworkCoverart, coverartinfo);
00090     }
00091 
00092     if (!fanart.isEmpty())
00093     {
00094         ArtworkInfo fanartinfo;
00095         fanartinfo.url = generate_myth_url("Fanart", host, fanart);
00096         map.insert(kArtworkFanart, fanartinfo);
00097     }
00098 
00099     if (!banner.isEmpty())
00100     {
00101         ArtworkInfo bannerinfo;
00102         bannerinfo.url = generate_myth_url("Banners", host, banner);
00103         map.insert(kArtworkBanner, bannerinfo);
00104     }
00105 
00106     ret = SetArtwork(inetref, season, host, map);
00107 
00108     return ret;
00109 }
00110 
00111 bool SetArtwork(const QString &inetref,
00112                        uint season,
00113                        const QString &host,
00114                        const ArtworkMap map)
00115 {
00116     if (inetref.isEmpty())
00117         return false;
00118 
00119     QString coverart, fanart, banner;
00120 
00121     QUrl coverurl(map.value(kArtworkCoverart).url);
00122     if (!coverurl.path().isEmpty())
00123     {
00124         coverart = coverurl.path();
00125         coverart = coverart.remove(0,1);
00126     }
00127 
00128     QUrl fanarturl(map.value(kArtworkFanart).url);
00129     if (!fanarturl.path().isEmpty())
00130     {
00131         fanart = fanarturl.path();
00132         fanart = fanart.remove(0,1);
00133     }
00134 
00135     QUrl bannerurl(map.value(kArtworkBanner).url);
00136     if (!bannerurl.path().isEmpty())
00137     {
00138         banner = bannerurl.path();
00139         banner = banner.remove(0,1);
00140     }
00141 
00142     // Have to delete the old row for this item
00143 
00144     MSqlQuery prequery(MSqlQuery::InitCon());
00145     prequery.prepare("DELETE FROM recordedartwork WHERE "
00146                      "inetref = :INETREF AND season = :SEASON;");
00147 
00148     prequery.bindValue(":INETREF", inetref);
00149     prequery.bindValue(":SEASON", season);
00150 
00151     if (!prequery.exec())
00152     {
00153         MythDB::DBError("SetArtwork DELETE FROM", prequery);
00154         return false;
00155     }
00156 
00157     // Now we can insert the new
00158     MSqlQuery query(MSqlQuery::InitCon());
00159     query.prepare("INSERT INTO recordedartwork(inetref,"
00160                   "season,host,coverart,fanart,banner) VALUES( "
00161                   ":INETREF, :SEASON, :HOST, :COVERART, "
00162                   ":FANART, :BANNER);");
00163 
00164     query.bindValue(":INETREF", inetref);
00165     query.bindValue(":SEASON", season);
00166     query.bindValue(":HOST", host);
00167     query.bindValue(":COVERART", coverart.isNull() ? "" : coverart);
00168     query.bindValue(":FANART", fanart.isNull() ? "" : fanart);
00169     query.bindValue(":BANNER", banner.isNull() ? "" : banner);
00170 
00171     if (!query.exec())
00172     {
00173         MythDB::DBError("SetArtwork INSERT INTO", query);
00174         return false;
00175     }
00176 
00177     return true;
00178 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends