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 {