diff options
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Ui/skinned/addurldialog.cpp | 17 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/addurldialog.h | 2 |
2 files changed, 17 insertions, 2 deletions
diff --git a/src/plugins/Ui/skinned/addurldialog.cpp b/src/plugins/Ui/skinned/addurldialog.cpp index 2c353b135..1ad37b36a 100644 --- a/src/plugins/Ui/skinned/addurldialog.cpp +++ b/src/plugins/Ui/skinned/addurldialog.cpp @@ -24,7 +24,6 @@ #include <QNetworkRequest> #include <QNetworkReply> #include <QNetworkProxy> -#include <QUrl> #include <QMessageBox> #include <QClipboard> #include <qmmpui/playlistparser.h> @@ -119,12 +118,25 @@ void AddUrlDialog::accept( ) void AddUrlDialog::readResponse(QNetworkReply *reply) { - addButton->setEnabled(true); disconnect(m_http, SIGNAL(finished (QNetworkReply *)), 0, 0); if (reply->error() != QNetworkReply::NoError) QMessageBox::critical (this, tr("Error"), reply->errorString ()); else if (!urlComboBox->currentText().isEmpty()) { + QUrl url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); + + if(!url.isEmpty() && url != m_redirect_url) + { + m_redirect_url = url; + connect(m_http, SIGNAL(finished (QNetworkReply *)), SLOT(readResponse(QNetworkReply *))); + QNetworkRequest request(url); + request.setRawHeader("User-Agent", QString("qmmp/%1").arg(Qmmp::strVersion()).toAscii()); + m_http->get(request); + reply->deleteLater(); + return; + } + m_redirect_url.clear(); + QString s = urlComboBox->currentText(); PlaylistFormat* prs = PlaylistParser::instance()->findByPath(s); if (prs) @@ -133,6 +145,7 @@ void AddUrlDialog::readResponse(QNetworkReply *reply) QDialog::accept(); } } + addButton->setEnabled(true); reply->deleteLater(); } diff --git a/src/plugins/Ui/skinned/addurldialog.h b/src/plugins/Ui/skinned/addurldialog.h index 6121c0eb5..f41300bd6 100644 --- a/src/plugins/Ui/skinned/addurldialog.h +++ b/src/plugins/Ui/skinned/addurldialog.h @@ -24,6 +24,7 @@ #include "ui_addurldialog.h" #include <QDialog> #include <QPointer> +#include <QUrl> class QNetworkAccessManager; class QNetworkReply; @@ -55,6 +56,7 @@ private: PlayListModel* m_model; QStringList m_history; QNetworkAccessManager *m_http; + QUrl m_redirect_url; }; #endif //ADDURLDIALOG_H |
