aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2012-12-22 19:16:29 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2012-12-22 19:16:29 +0000
commitaecf8592751e7beb682fcd5bc8c5b1d38335fa84 (patch)
treecf267363944faafb7b29370d27f6ae19fbcc7647 /src/plugins
parent954146ff9b69591f0cf3895e96922bb55ad88502 (diff)
downloadqmmp-aecf8592751e7beb682fcd5bc8c5b1d38335fa84.tar.gz
qmmp-aecf8592751e7beb682fcd5bc8c5b1d38335fa84.tar.bz2
qmmp-aecf8592751e7beb682fcd5bc8c5b1d38335fa84.zip
libqmmpui: added URL dialog implementation, added PlayListDownloader
class git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3089 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/PlayListFormats/m3u/m3uplaylistformat.cpp1
-rw-r--r--src/plugins/PlayListFormats/pls/plsplaylistformat.cpp1
-rw-r--r--src/plugins/PlayListFormats/xspf/xspfplaylistformat.cpp1
-rw-r--r--src/plugins/Ui/skinned/addurldialog.cpp155
-rw-r--r--src/plugins/Ui/skinned/addurldialog.h62
-rw-r--r--src/plugins/Ui/skinned/forms/addurldialog.ui99
-rw-r--r--src/plugins/Ui/skinned/mainwindow.cpp3
-rw-r--r--src/plugins/Ui/skinned/skinned.pro7
8 files changed, 4 insertions, 325 deletions
diff --git a/src/plugins/PlayListFormats/m3u/m3uplaylistformat.cpp b/src/plugins/PlayListFormats/m3u/m3uplaylistformat.cpp
index 3f1270eec..7f916dda1 100644
--- a/src/plugins/PlayListFormats/m3u/m3uplaylistformat.cpp
+++ b/src/plugins/PlayListFormats/m3u/m3uplaylistformat.cpp
@@ -27,6 +27,7 @@ const PlayListFormatProperties M3UPlaylistFormat::properties() const
PlayListFormatProperties p;
p.filters << "*.m3u";
p.shortName = "m3u";
+ p.contentTypes << "audio/x-mpegurl";
return p;
}
diff --git a/src/plugins/PlayListFormats/pls/plsplaylistformat.cpp b/src/plugins/PlayListFormats/pls/plsplaylistformat.cpp
index 602e29199..f73d7cc87 100644
--- a/src/plugins/PlayListFormats/pls/plsplaylistformat.cpp
+++ b/src/plugins/PlayListFormats/pls/plsplaylistformat.cpp
@@ -26,6 +26,7 @@ const PlayListFormatProperties PLSPlaylistFormat::properties() const
{
PlayListFormatProperties p;
p.filters << "*.pls";
+ p.contentTypes << "audio/x-scpls";
p.shortName = "pls";
return p;
}
diff --git a/src/plugins/PlayListFormats/xspf/xspfplaylistformat.cpp b/src/plugins/PlayListFormats/xspf/xspfplaylistformat.cpp
index 4e6c2a349..9d37610de 100644
--- a/src/plugins/PlayListFormats/xspf/xspfplaylistformat.cpp
+++ b/src/plugins/PlayListFormats/xspf/xspfplaylistformat.cpp
@@ -33,6 +33,7 @@ const PlayListFormatProperties XSPFPlaylistFormat::XSPFPlaylistFormat::propertie
PlayListFormatProperties p;
p.filters << "*.xspf";
p.shortName = "xspf";
+ p.contentTypes << "application/xspf+xml";
return p;
}
diff --git a/src/plugins/Ui/skinned/addurldialog.cpp b/src/plugins/Ui/skinned/addurldialog.cpp
deleted file mode 100644
index fd10ce8ba..000000000
--- a/src/plugins/Ui/skinned/addurldialog.cpp
+++ /dev/null
@@ -1,155 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2006-2012 by Ilya Kotov *
- * forkotov02@hotmail.ru *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-
-#include <QSettings>
-#include <QDir>
-#include <QNetworkAccessManager>
-#include <QNetworkRequest>
-#include <QNetworkReply>
-#include <QNetworkProxy>
-#include <QMessageBox>
-#include <QClipboard>
-#include <qmmpui/playlistparser.h>
-#include <qmmpui/playlistformat.h>
-#include <qmmpui/playlistmodel.h>
-#include <qmmp/qmmpsettings.h>
-#include <qmmp/metadatamanager.h>
-#include <qmmp/qmmp.h>
-#include "addurldialog.h"
-
-#define HISTORY_SIZE 10
-
-AddUrlDialog::AddUrlDialog(QWidget * parent, Qt::WindowFlags f) : QDialog(parent,f)
-{
- setupUi(this);
- setAttribute(Qt::WA_DeleteOnClose);
- setAttribute(Qt::WA_QuitOnClose, false);
- QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- m_history = settings.value("URLDialog/history").toStringList();
- urlComboBox->addItems(m_history);
- if(settings.value("URLDialog/use_clipboard", false).toBool())
- {
- QUrl url(QApplication::clipboard()->text().trimmed());
- if(url.isValid() && MetaDataManager::instance()->protocols().contains(url.scheme()))
- urlComboBox->setEditText(QApplication::clipboard()->text().trimmed());
- }
- m_http = new QNetworkAccessManager(this);
- //load global proxy settings
- QmmpSettings *gs = QmmpSettings::instance();
- if (gs->isProxyEnabled())
- {
- QNetworkProxy proxy(QNetworkProxy::HttpProxy, gs->proxy().host(), gs->proxy().port());
- if(gs->useProxyAuth())
- {
- proxy.setUser(gs->proxy().userName());
- proxy.setPassword(gs->proxy().password());
- }
- m_http->setProxy(proxy);
- }
-}
-
-AddUrlDialog::~AddUrlDialog()
-{
- while (m_history.size() > HISTORY_SIZE)
- m_history.removeLast();
- QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
- settings.setValue("URLDialog/history", m_history);
-}
-
-QPointer<AddUrlDialog> AddUrlDialog::instance = 0;
-
-void AddUrlDialog::popup(QWidget* parent, PlayListModel* model)
-{
- if (!instance)
- {
- instance = new AddUrlDialog(parent);
- instance->setModel(model);
- }
- instance->show();
- instance->raise();
-}
-
-void AddUrlDialog::accept( )
-{
- if (!urlComboBox->currentText().isEmpty())
- {
- QString s = urlComboBox->currentText().trimmed();
- if (!s.startsWith("http://") && !s.contains("://"))
- s.prepend("http://");
- m_history.removeAll(s);
- m_history.prepend(s);
-
- if (s.startsWith("http://"))
- {
- //try to download playlist
- PlayListFormat* prs = PlayListParser::findByPath(s);
- if (prs)
- {
- connect(m_http, SIGNAL(finished (QNetworkReply *)), SLOT(readResponse(QNetworkReply *)));
- QNetworkRequest request;
- request.setUrl(QUrl(s));
- request.setRawHeader("User-Agent", QString("qmmp/%1").arg(Qmmp::strVersion()).toAscii());
- addButton->setEnabled(false);
- m_http->get(request);
- return;
- }
- }
- m_model->add(s);
- }
- QDialog::accept();
-}
-
-void AddUrlDialog::readResponse(QNetworkReply *reply)
-{
- 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::findByPath(s);
- if (prs)
- {
- m_model->add(prs->decode(reply->readAll()));
- QDialog::accept();
- }
- }
- addButton->setEnabled(true);
- reply->deleteLater();
-}
-
-void AddUrlDialog::setModel(PlayListModel *m)
-{
- m_model = m;
-}
diff --git a/src/plugins/Ui/skinned/addurldialog.h b/src/plugins/Ui/skinned/addurldialog.h
deleted file mode 100644
index f41300bd6..000000000
--- a/src/plugins/Ui/skinned/addurldialog.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2006-2012 by Ilya Kotov *
- * forkotov02@hotmail.ru *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-
-#ifndef ADDURLDIALOG_H
-#define ADDURLDIALOG_H
-
-#include "ui_addurldialog.h"
-#include <QDialog>
-#include <QPointer>
-#include <QUrl>
-
-class QNetworkAccessManager;
-class QNetworkReply;
-class PlayListModel;
-
-/**
- @author Vladimir Kuznetsov <vovanec@gmail.com>
- */
-
-class AddUrlDialog : public QDialog , private Ui::AddUrlDialog
-{
- Q_OBJECT
-public:
- static void popup(QWidget* parent ,PlayListModel*);
-
-protected:
- AddUrlDialog( QWidget * parent = 0, Qt::WindowFlags f = 0 );
- ~AddUrlDialog();
-
-protected slots:
- virtual void accept();
-
-private slots:
- void readResponse(QNetworkReply *reply);
-
-private:
- void setModel(PlayListModel*);
- static QPointer<AddUrlDialog> instance;
- PlayListModel* m_model;
- QStringList m_history;
- QNetworkAccessManager *m_http;
- QUrl m_redirect_url;
-
-};
-#endif //ADDURLDIALOG_H
diff --git a/src/plugins/Ui/skinned/forms/addurldialog.ui b/src/plugins/Ui/skinned/forms/addurldialog.ui
deleted file mode 100644
index 64ac928fc..000000000
--- a/src/plugins/Ui/skinned/forms/addurldialog.ui
+++ /dev/null
@@ -1,99 +0,0 @@
-<ui version="4.0" >
- <class>AddUrlDialog</class>
- <widget class="QDialog" name="AddUrlDialog" >
- <property name="geometry" >
- <rect>
- <x>0</x>
- <y>0</y>
- <width>394</width>
- <height>77</height>
- </rect>
- </property>
- <property name="windowTitle" >
- <string>Enter URL to add</string>
- </property>
- <layout class="QGridLayout" >
- <property name="leftMargin" >
- <number>5</number>
- </property>
- <property name="topMargin" >
- <number>5</number>
- </property>
- <property name="rightMargin" >
- <number>5</number>
- </property>
- <property name="bottomMargin" >
- <number>5</number>
- </property>
- <item row="0" column="0" colspan="3" >
- <widget class="QComboBox" name="urlComboBox" >
- <property name="editable" >
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0" >
- <spacer>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" >
- <size>
- <width>181</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="1" column="1" >
- <widget class="QPushButton" name="addButton" >
- <property name="text" >
- <string>&amp;Add</string>
- </property>
- </widget>
- </item>
- <item row="1" column="2" >
- <widget class="QPushButton" name="cancelButton" >
- <property name="text" >
- <string>&amp;Cancel</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections>
- <connection>
- <sender>addButton</sender>
- <signal>clicked()</signal>
- <receiver>AddUrlDialog</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel" >
- <x>248</x>
- <y>51</y>
- </hint>
- <hint type="destinationlabel" >
- <x>184</x>
- <y>72</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>cancelButton</sender>
- <signal>clicked()</signal>
- <receiver>AddUrlDialog</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel" >
- <x>343</x>
- <y>62</y>
- </hint>
- <hint type="destinationlabel" >
- <x>392</x>
- <y>60</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
diff --git a/src/plugins/Ui/skinned/mainwindow.cpp b/src/plugins/Ui/skinned/mainwindow.cpp
index 7f6bfe615..a67c7037a 100644
--- a/src/plugins/Ui/skinned/mainwindow.cpp
+++ b/src/plugins/Ui/skinned/mainwindow.cpp
@@ -44,7 +44,6 @@
#include "dock.h"
#include "eqwidget.h"
#include "mainvisual.h"
-#include "addurldialog.h"
#include "listwidget.h"
#include "visualmenu.h"
#include "windowsystem.h"
@@ -471,7 +470,7 @@ void MainWindow::jumpToTrack()
void MainWindow::addUrl()
{
- AddUrlDialog::popup(this, m_pl_manager->selectedPlayList());
+ m_uiHelper->addUrl(this);
}
MainDisplay * MainWindow::mainDisplay() const
diff --git a/src/plugins/Ui/skinned/skinned.pro b/src/plugins/Ui/skinned/skinned.pro
index 3733002e4..05714ab0a 100644
--- a/src/plugins/Ui/skinned/skinned.pro
+++ b/src/plugins/Ui/skinned/skinned.pro
@@ -1,7 +1,6 @@
include(../../plugins.pri)
FORMS += \
forms/preseteditor.ui \
- forms/addurldialog.ui \
forms/playlistbrowser.ui \
forms/popupsettings.ui \
forms/shortcutdialog.ui \
@@ -39,7 +38,6 @@ HEADERS += mainwindow.h \
preseteditor.h \
timeindicator.h \
keyboardmanager.h \
- addurldialog.h \
skinreader.h \
visualmenu.h \
titlebarcontrol.h \
@@ -89,7 +87,6 @@ SOURCES += mainwindow.cpp \
preseteditor.cpp \
timeindicator.cpp \
keyboardmanager.cpp \
- addurldialog.cpp \
skinreader.cpp \
visualmenu.cpp \
titlebarcontrol.cpp \
@@ -109,8 +106,6 @@ SOURCES += mainwindow.cpp \
skinnedsettings.cpp \
hotkeyeditor.cpp
-
-QT += network
TEMPLATE = lib
unix:QMAKE_LIBDIR += ../../../../lib
unix:LIBS += -lqmmpui -lqmmp
@@ -160,5 +155,3 @@ TRANSLATIONS = translations/skinned_plugin_ru.ts \
translations/skinned_plugin_ja.ts \
translations/skinned_plugin_es.ts \
translations/skinned_plugin_sk.ts
-
-