All pastes #1537186 Raw Edit

Stuff

public diff v1 · immutable
#1537186 ·published 2009-08-21 01:52 UTC
rendered paste body
Index: videodlg.cpp===================================================================--- videodlg.cpp	(revision 21380)+++ videodlg.cpp	(working copy)@@ -94,9 +94,10 @@                          Metadata *item);       public:         static CoverDownloadProxy *Create(const QUrl &url, const QString &dest,-                                          Metadata *item)+                                          Metadata *item,+                                          const QString &db_value)         {-            return new CoverDownloadProxy(url, dest, item);+            return new CoverDownloadProxy(url, dest, item, db_value);         }        public:@@ -119,7 +120,8 @@        private:         CoverDownloadProxy(const QUrl &url, const QString &dest,-                           Metadata *item) : m_item(item), m_dest_file(dest),+                           Metadata *item, const QString &db_value)+          : m_item(item), m_dest_file(dest), m_db_value(db_value),             m_id(0), m_url(url), m_error_state(esOK)         {             connect(&m_http, SIGNAL(requestFinished(int, bool)),@@ -154,27 +156,58 @@                  if (!error)                 {-                    QFile dest_file(m_dest_file);-                    if (dest_file.exists())-                        dest_file.remove();--                    if (dest_file.open(QIODevice::WriteOnly))+                    if (m_dest_file.startsWith("myth://"))                     {-                        const QByteArray &data = m_data_buffer.data();-                        qint64 size = dest_file.write(data);-                        if (size != data.size())+                        RemoteFile *outFile = new RemoteFile(m_dest_file, true);+                        if (!outFile->isOpen())                         {-                            errorMsg = tr("Error writing data to file %1.")-                                    .arg(m_dest_file);+                            VERBOSE(VB_IMPORTANT,+                                QString("RingBuffer::RingBuffer(): Failed to open "+                                        "remote file (%1) for write.  Does Coverart "+                                        "Storage Group Exist?").arg(m_dest_file));+                            delete outFile;+                            outFile = NULL;                             m_error_state = esError;                         }+                        else+                        {+                            off_t written = outFile->Write(m_data_buffer.data(), m_data_buffer.size());+                            if (written != m_data_buffer.size())+                            {+                                errorMsg = tr("Error writing Coverart to file %1.")+                                        .arg(m_dest_file);+                                m_error_state = esError;+                            }+                        }                     }                     else                     {-                        errorMsg = tr("Error: file error '%1' for file %2").-                                arg(dest_file.errorString()).arg(m_dest_file);-                        m_error_state = esError;+                        QFile dest_file(m_dest_file);+                        if (dest_file.exists())+                            dest_file.remove();++                        if (dest_file.open(QIODevice::WriteOnly))+                        {+                            const QByteArray &data = m_data_buffer.data();+                            qint64 size = dest_file.write(data);+                            if (size != data.size())+                            {+                                errorMsg = tr("Error writing data to file %1.")+                                        .arg(m_dest_file);+                                m_error_state = esError;+                            }+                        }+                        else+                        {+                            errorMsg = tr("Error: file error '%1' for file %2").+                                    arg(dest_file.errorString()).arg(m_dest_file);+                            m_error_state = esError;+                        }                     }++                    // FIXME CTP, added this to try to only load after D/L+                    if (m_error_state != esError)+                        m_item->SetCoverFile(m_db_value);                 }                  emit SigFinished(m_error_state, errorMsg, m_item);@@ -186,6 +219,7 @@         QHttp m_http;         QBuffer m_data_buffer;         QString m_dest_file;+        QString m_db_value;         int m_id;         QTimer m_timer;         QUrl m_url;@@ -201,9 +235,10 @@                          Metadata *item);       public:         static ScreenshotDownloadProxy *Create(const QUrl &url, const QString &dest,-                                          Metadata *item)+                                               Metadata *item,+                                               const QString &db_value)         {-            return new ScreenshotDownloadProxy(url, dest, item);+            return new ScreenshotDownloadProxy(url, dest, item, db_value);         }        public:@@ -226,7 +261,8 @@            private:         ScreenshotDownloadProxy(const QUrl &url, const QString &dest,-                           Metadata *item) : m_item(item), m_dest_file(dest),+                           Metadata *item, const QString &db_value)+          : m_item(item), m_dest_file(dest), m_db_value(db_value),             m_id(0), m_url(url), m_error_state(ssesOK)         {             connect(&m_http, SIGNAL(requestFinished(int, bool)),@@ -261,27 +297,58 @@                  if (!error)                 {-                    QFile dest_file(m_dest_file);-                    if (dest_file.exists())-                        dest_file.remove();--                    if (dest_file.open(QIODevice::WriteOnly))+                    if (m_dest_file.startsWith("myth://"))                     {-                        const QByteArray &data = m_data_buffer.data();-                        qint64 size = dest_file.write(data);-                        if (size != data.size())+                        RemoteFile *outFile = new RemoteFile(m_dest_file, true);+                        if (!outFile->isOpen())                         {-                            errorMsg = tr("Error writing data to file %1.")-                                    .arg(m_dest_file);+                            VERBOSE(VB_IMPORTANT,+                                QString("RingBuffer::RingBuffer(): Failed to open "+                                        "remote file (%1) for write.  Does Screenshot "+                                        "Storage Group Exist?").arg(m_dest_file));+                            delete outFile;+                            outFile = NULL;                             m_error_state = ssesError;                         }+                        else+                        {+                            off_t written = outFile->Write(m_data_buffer.data(), m_data_buffer.size());+                            if (written != m_data_buffer.size())+                            {+                                errorMsg = tr("Error writing Screenshot to file %1.")+                                        .arg(m_dest_file);+                                m_error_state = ssesError;+                            }+                        }                     }                     else                     {-                        errorMsg = tr("Error: file error '%1' for file %2").-                                arg(dest_file.errorString()).arg(m_dest_file);-                        m_error_state = ssesError;+                        QFile dest_file(m_dest_file);+                        if (dest_file.exists())+                            dest_file.remove();++                        if (dest_file.open(QIODevice::WriteOnly))+                        {+                            const QByteArray &data = m_data_buffer.data();+                            qint64 size = dest_file.write(data);+                            if (size != data.size())+                            {+                                errorMsg = tr("Error writing data to file %1.")+                                        .arg(m_dest_file);+                                m_error_state = ssesError;+                            }+                        }+                        else+                        {+                            errorMsg = tr("Error: file error '%1' for file %2").+                                    arg(dest_file.errorString()).arg(m_dest_file);+                            m_error_state = ssesError;+                        }                     }++                    // FIXME CTP, added this to try to only load after D/L+                    if (m_error_state != ssesError)+                        m_item->SetScreenshot(m_db_value);                 }                  emit SigFinished(m_error_state, errorMsg, m_item);@@ -293,6 +360,7 @@         QHttp m_http;         QBuffer m_data_buffer;         QString m_dest_file;+        QString m_db_value;         int m_id;         QTimer m_timer;         QUrl m_url;@@ -308,9 +376,10 @@                          Metadata *item);       public:         static FanartDownloadProxy *Create(const QUrl &url, const QString &dest,-                                          Metadata *item)+                                          Metadata *item,+                                          const QString db_value)         {-            return new FanartDownloadProxy(url, dest, item);+            return new FanartDownloadProxy(url, dest, item, db_value);         }        public:@@ -333,7 +402,8 @@        private:         FanartDownloadProxy(const QUrl &url, const QString &dest,-                           Metadata *item) : m_item(item), m_dest_file(dest),+                           Metadata *item, const QString &db_value)+          : m_item(item), m_dest_file(dest), m_db_value(db_value),             m_id(0), m_url(url), m_error_state(fesOK)         {             connect(&m_http, SIGNAL(requestFinished(int, bool)),@@ -368,27 +438,58 @@                  if (!error)                 {-                    QFile dest_file(m_dest_file);-                    if (dest_file.exists())-                        dest_file.remove();--                    if (dest_file.open(QIODevice::WriteOnly))+                    if (m_dest_file.startsWith("myth://"))                     {-                        const QByteArray &data = m_data_buffer.data();-                        qint64 size = dest_file.write(data);-                        if (size != data.size())+                        RemoteFile *outFile = new RemoteFile(m_dest_file, true);+                        if (!outFile->isOpen())                         {-                            errorMsg = tr("Error writing data to file %1.")-                                    .arg(m_dest_file);+                            VERBOSE(VB_IMPORTANT,+                                QString("RingBuffer::RingBuffer(): Failed to open "+                                        "remote file (%1) for write.  Does Fanart "+                                        "Storage Group Exist?").arg(m_dest_file));+                            delete outFile; +                            outFile = NULL;                             m_error_state = fesError;                         }+                        else+                        {+                            off_t written = outFile->Write(m_data_buffer.data(), m_data_buffer.size());+                            if (written != m_data_buffer.size())+                            {+                                errorMsg = tr("Error writing Fanart to file %1.")+                                        .arg(m_dest_file);+                                m_error_state = fesError;+                            }+                        }                     }                     else                     {-                        errorMsg = tr("Error: file error '%1' for file %2").-                                arg(dest_file.errorString()).arg(m_dest_file);-                        m_error_state = fesError;+                        QFile dest_file(m_dest_file);+                        if (dest_file.exists())+                            dest_file.remove();++                        if (dest_file.open(QIODevice::WriteOnly))+                        {+                            const QByteArray &data = m_data_buffer.data();+                            qint64 size = dest_file.write(data);+                            if (size != data.size())+                            {+                                errorMsg = tr("Error writing data to file %1.")+                                        .arg(m_dest_file);+                                m_error_state = fesError;+                            }+                        }+                        else+                        {+                            errorMsg = tr("Error: file error '%1' for file %2").+                                    arg(dest_file.errorString()).arg(m_dest_file);+                            m_error_state = fesError;+                        }                     }++                    // FIXME CTP, added this to try to only load after D/L+                    if (m_error_state != fesError)+                        m_item->SetFanart(m_db_value);                 }                  emit SigFinished(m_error_state, errorMsg, m_item);@@ -400,6 +501,7 @@         QHttp m_http;         QBuffer m_data_buffer;         QString m_dest_file;+        QString m_db_value;         int m_id;         QTimer m_timer;         QUrl m_url;@@ -415,9 +517,10 @@                          Metadata *item);       public:         static BannerDownloadProxy *Create(const QUrl &url, const QString &dest,-                                          Metadata *item)+                                           Metadata *item,+                                           const QString &db_value)         {-            return new BannerDownloadProxy(url, dest, item);+            return new BannerDownloadProxy(url, dest, item, db_value);         }        public:@@ -440,7 +543,8 @@        private:         BannerDownloadProxy(const QUrl &url, const QString &dest,-                           Metadata *item) : m_item(item), m_dest_file(dest),+                           Metadata *item, const QString &db_value)+          : m_item(item), m_dest_file(dest), m_db_value(db_value),             m_id(0), m_url(url), m_error_state(besOK)         {             connect(&m_http, SIGNAL(requestFinished(int, bool)),@@ -475,27 +579,58 @@                  if (!error)                 {-                    QFile dest_file(m_dest_file);-                    if (dest_file.exists())-                        dest_file.remove();--                    if (dest_file.open(QIODevice::WriteOnly))+                    if (m_dest_file.startsWith("myth://"))                     {-                        const QByteArray &data = m_data_buffer.data();-                        qint64 size = dest_file.write(data);-                        if (size != data.size())+                        RemoteFile *outFile = new RemoteFile(m_dest_file, true);+                        if (!outFile->isOpen()) +                        { +                            VERBOSE(VB_IMPORTANT, +                                QString("RingBuffer::RingBuffer(): Failed to open " +                                        "remote file (%1) for write.  Does Banner "+                                        "Storage Group Exist?").arg(m_dest_file)); +                            delete outFile; +                            outFile = NULL;+                            m_error_state = besError;+                        } +                        else                         {-                            errorMsg = tr("Error writing data to file %1.")-                                    .arg(m_dest_file);-                            m_error_state = besError;+                            off_t written = outFile->Write(m_data_buffer.data(), m_data_buffer.size());+                            if (written != m_data_buffer.size())+                            {+                                errorMsg = tr("Error writing data to file %1.")+                                        .arg(m_dest_file);+                                m_error_state = besError;+                            }                         }                     }                     else                     {-                        errorMsg = tr("Error: file error '%1' for file %2").-                                arg(dest_file.errorString()).arg(m_dest_file);-                        m_error_state = besError;+                        QFile dest_file(m_dest_file);+                        if (dest_file.exists())+                            dest_file.remove();++                        if (dest_file.open(QIODevice::WriteOnly))+                        {+                            const QByteArray &data = m_data_buffer.data();+                            qint64 size = dest_file.write(data);+                            if (size != data.size())+                            {+                                errorMsg = tr("Error writing data to file %1.")+                                        .arg(m_dest_file);+                                m_error_state = besError;+                            }+                        }+                        else+                        {+                            errorMsg = tr("Error: file error '%1' for file %2").+                                    arg(dest_file.errorString()).arg(m_dest_file);+                            m_error_state = besError;+                        }                     }++                    // FIXME CTP, added this to try to only load after D/L+                    if (m_error_state != besError)+                        m_item->SetBanner(m_db_value);                 }                  emit SigFinished(m_error_state, errorMsg, m_item);@@ -507,6 +642,7 @@         QHttp m_http;         QBuffer m_data_buffer;         QString m_dest_file;+        QString m_db_value;         int m_id;         QTimer m_timer;         QUrl m_url;@@ -4326,6 +4462,7 @@              QString ext = QFileInfo(url.path()).suffix();             QString dest_file;+            QString db_value;              if (metadata->GetSeason() > 0 ||                  metadata->GetEpisode() > 0)@@ -4333,27 +4470,55 @@                 // Name TV downloads so that they already work with the PBB                 QString title = QString("%1 Season %2").arg(metadata->GetTitle())                         .arg(metadata->GetSeason());-                dest_file = QString("%1/%2.%3").arg(fileprefix)-                        .arg(title).arg(ext);+                if (!metadata->GetHost().isEmpty())+                {+                    QString combFileName = QString("%1.%2").arg(title).arg(ext);+                    dest_file = GenRemoteFileURL("Coverart", metadata->GetHost(),+                        combFileName);+                    db_value = combFileName;+                }+                else+                {+                    dest_file = QString("%1/%2.%3").arg(fileprefix)+                            .arg(title).arg(ext);+                    db_value = dest_file;+                }             }             else-                dest_file = QString("%1/%2.%3").arg(fileprefix)-                        .arg(metadata->GetInetRef()).arg(ext);+            {+                if (!metadata->GetHost().isEmpty())+                {+                    QString combFileName = QString("%1.%2")+                                           .arg(metadata->GetInetRef())+                                           .arg(ext);+                    dest_file = GenRemoteFileURL("Coverart", metadata->GetHost(),+                        combFileName);+                    db_value = combFileName;+                }+                else+                {+                    dest_file = QString("%1/%2.%3").arg(fileprefix)+                            .arg(metadata->GetInetRef()).arg(ext);+                    db_value = dest_file;+                }+            }              VERBOSE(VB_IMPORTANT, QString("Copying '%1' -> '%2'...")                     .arg(url.toString()).arg(dest_file)); -            CoverDownloadProxy *d =-                    CoverDownloadProxy::Create(url, dest_file, metadata);-            metadata->SetCoverFile(dest_file);+            CoverDownloadProxy *cd =+                    CoverDownloadProxy::Create(url, dest_file, metadata,+                                               db_value);+            // FIXME CTP, delay this until SigFinished+            // metadata->SetCoverFile(db_value); -            connect(d, SIGNAL(SigFinished(CoverDownloadErrorState,+            connect(cd, SIGNAL(SigFinished(CoverDownloadErrorState,                                           QString, Metadata *)),                     SLOT(OnPosterCopyFinished(CoverDownloadErrorState,                                               QString, Metadata *))); -            d->StartCopy();-            m_d->AddCoverDownload(d);+            cd->StartCopy();+            m_d->AddCoverDownload(cd);         }         else         {@@ -4433,34 +4598,63 @@              QString ext = QFileInfo(url.path()).suffix();             QString dest_file;+            QString db_value;              if (metadata->GetSeason() > 0 ||                  metadata->GetEpisode() > 0)-            { -                // Name TV downloads so that they already work with the PBB    +            {+                // Name TV downloads so that they already work with the PBB                 QString title = QString("%1 Season %2").arg(metadata->GetTitle())                         .arg(metadata->GetSeason());-                dest_file = QString("%1/%2.%3").arg(fileprefix)-                        .arg(title).arg(ext);+                if (!metadata->GetHost().isEmpty())+                {+                    QString combFileName = QString("%1.%2").arg(title).arg(ext);+                    dest_file = GenRemoteFileURL("Fanart", metadata->GetHost(),+                        combFileName);+                    db_value = combFileName;+                }+                else+                {+                    dest_file = QString("%1/%2.%3").arg(fileprefix)+                            .arg(title).arg(ext);+                    db_value = dest_file;+                }             }             else-                dest_file = QString("%1/%2.%3").arg(fileprefix)-                        .arg(metadata->GetInetRef()).arg(ext);+            {+                if (!metadata->GetHost().isEmpty())+                {+                    QString combFileName = QString("%1.%2")+                                           .arg(metadata->GetInetRef())+                                           .arg(ext);+                    dest_file = GenRemoteFileURL("Fanart", metadata->GetHost(),+                        combFileName);+                    db_value = combFileName;+                }+                else+                {+                    dest_file = QString("%1/%2.%3").arg(fileprefix)+                            .arg(metadata->GetInetRef()).arg(ext);+                    db_value = dest_file;+                }+            }              VERBOSE(VB_IMPORTANT, QString("Copying '%1' -> '%2'...")                     .arg(url.toString()).arg(dest_file)); -            FanartDownloadProxy *d =-                    FanartDownloadProxy::Create(url, dest_file, metadata);-            metadata->SetFanart(dest_file);+            FanartDownloadProxy *fd =+                    FanartDownloadProxy::Create(url, dest_file, metadata,+                                                db_value);+            // FIXME CTP, delay this until SigFinished+            //metadata->SetFanart(db_value); -            connect(d, SIGNAL(SigFinished(FanartDownloadErrorState,+            connect(fd, SIGNAL(SigFinished(FanartDownloadErrorState,                                           QString, Metadata *)),                     SLOT(OnFanartCopyFinished(FanartDownloadErrorState,                                               QString, Metadata *))); -            d->StartCopy();-            m_d->AddFanartDownload(d);+            fd->StartCopy();+            m_d->AddFanartDownload(fd);         }         else         {@@ -4539,34 +4733,63 @@              QString ext = QFileInfo(url.path()).suffix();             QString dest_file;+            QString db_value;              if (metadata->GetSeason() > 0 ||                 metadata->GetEpisode() > 0)             {                 // Name TV downloads so that they already work with the PBB-                QString title = QString("%1 Season %2x%3").arg(metadata->GetTitle())-                        .arg(metadata->GetSeason()).arg(metadata->GetEpisode());-                dest_file = QString("%1/%2.%3").arg(fileprefix)-                        .arg(title).arg(ext);+                QString title = QString("%1 Season %2").arg(metadata->GetTitle())+                        .arg(metadata->GetSeason());+                if (!metadata->GetHost().isEmpty())+                {+                    QString combFileName = QString("%1.%2").arg(title).arg(ext);+                    dest_file = GenRemoteFileURL("Screenshots", metadata->GetHost(),+                        combFileName);+                    db_value = combFileName;+                }+                else+                {+                    dest_file = QString("%1/%2.%3").arg(fileprefix)+                            .arg(title).arg(ext);+                    db_value = dest_file;+                }             }             else-                dest_file = QString("%1/%2.%3").arg(fileprefix)-                        .arg(metadata->GetInetRef()).arg(ext);+            {+                if (!metadata->GetHost().isEmpty())+                {+                    QString combFileName = QString("%1.%2")+                                           .arg(metadata->GetInetRef())+                                           .arg(ext);+                    dest_file = GenRemoteFileURL("Screenshots", metadata->GetHost(),+                        combFileName);+                    db_value = combFileName;+                }+                else+                {+                    dest_file = QString("%1/%2.%3").arg(fileprefix)+                            .arg(metadata->GetInetRef()).arg(ext);+                    db_value = dest_file;+                }+            }              VERBOSE(VB_IMPORTANT, QString("Copying '%1' -> '%2'...")                     .arg(url.toString()).arg(dest_file)); -            ScreenshotDownloadProxy *d =-                    ScreenshotDownloadProxy::Create(url, dest_file, metadata);-            metadata->SetScreenshot(dest_file);+            ScreenshotDownloadProxy *ssd =+                    ScreenshotDownloadProxy::Create(url, dest_file, metadata,+                                                   db_value);+            // FIXME CTP, delay this until SigFinished+            // metadata->SetScreenshot(db_value); -            connect(d, SIGNAL(SigFinished(ScreenshotDownloadErrorState,+            connect(ssd, SIGNAL(SigFinished(ScreenshotDownloadErrorState,                                           QString, Metadata *)),                     SLOT(OnScreenshotCopyFinished(ScreenshotDownloadErrorState,                                               QString, Metadata *))); -            d->StartCopy();-            m_d->AddScreenshotDownload(d);+            ssd->StartCopy();+            m_d->AddScreenshotDownload(ssd);         }         else         {@@ -4646,6 +4869,7 @@              QString ext = QFileInfo(url.path()).suffix();             QString dest_file;+            QString db_value;              if (metadata->GetSeason() > 0 ||                  metadata->GetEpisode() > 0)@@ -4653,27 +4877,55 @@                 // Name TV downloads so that they already work with the PBB                     QString title = QString("%1 Season %2").arg(metadata->GetTitle())                         .arg(metadata->GetSeason());-                dest_file = QString("%1/%2.%3").arg(fileprefix)-                        .arg(title).arg(ext);+                if (!metadata->GetHost().isEmpty())+                {+                    QString combFileName = QString("%1.%2").arg(title).arg(ext);+                    dest_file = GenRemoteFileURL("Banners", metadata->GetHost(),+                        combFileName);+                    db_value = combFileName;+                }+                else+                {+                    dest_file = QString("%1/%2.%3").arg(fileprefix)+                            .arg(title).arg(ext);+                    db_value = dest_file;+                }             }             else-                dest_file = QString("%1/%2.%3").arg(fileprefix)-                        .arg(metadata->GetInetRef()).arg(ext);+            {+                if (!metadata->GetHost().isEmpty())+                {+                    QString combFileName = QString("%1.%2")+                                           .arg(metadata->GetInetRef())+                                           .arg(ext);+                    dest_file = GenRemoteFileURL("Banners", metadata->GetHost(),+                        combFileName);+                    db_value = combFileName;+                }+                else+                {+                    dest_file = QString("%1/%2.%3").arg(fileprefix)+                            .arg(metadata->GetInetRef()).arg(ext);+                    db_value = dest_file;+                }+            }              VERBOSE(VB_IMPORTANT, QString("Copying '%1' -> '%2'...")                     .arg(url.toString()).arg(dest_file)); -            BannerDownloadProxy *d =-                    BannerDownloadProxy::Create(url, dest_file, metadata);-            metadata->SetBanner(dest_file);+            BannerDownloadProxy *bd =+                    BannerDownloadProxy::Create(url, dest_file, metadata,+                                                db_value);+            // FIXME CTP, delay this until SigFinished+            // metadata->SetBanner(db_value); -            connect(d, SIGNAL(SigFinished(BannerDownloadErrorState,+            connect(bd, SIGNAL(SigFinished(BannerDownloadErrorState,                                           QString, Metadata *)),                     SLOT(OnBannerCopyFinished(BannerDownloadErrorState,                                               QString, Metadata *))); -            d->StartCopy();-            m_d->AddBannerDownload(d);+            bd->StartCopy();+            m_d->AddBannerDownload(bd);         }         else         {