Use the same QNetworkAccessManager for everything, and make it use a disk cache
This commit is contained in:
parent
4ed73d74b0
commit
58da0a2f64
|
@ -19,6 +19,7 @@
|
|||
#include "song.h"
|
||||
#include "lastfmstationdialog.h"
|
||||
#include "lastfmconfigdialog.h"
|
||||
#include "radiomodel.h"
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
|
@ -57,7 +58,8 @@ LastFMService::LastFMService(RadioModel* parent)
|
|||
artist_list_(NULL),
|
||||
tag_list_(NULL),
|
||||
friends_list_(NULL),
|
||||
neighbours_list_(NULL)
|
||||
neighbours_list_(NULL),
|
||||
network_(parent->network())
|
||||
{
|
||||
ReloadSettings();
|
||||
|
||||
|
@ -678,7 +680,7 @@ void LastFMService::TuneFinished() {
|
|||
|
||||
void LastFMService::FetchImage(const lastfm::Track& track, const QString& image_url) {
|
||||
QUrl url(image_url);
|
||||
QNetworkReply* reply = network_.get(QNetworkRequest(url));
|
||||
QNetworkReply* reply = network_->get(QNetworkRequest(url));
|
||||
image_requests_[track] = reply;
|
||||
}
|
||||
|
||||
|
|
|
@ -36,12 +36,12 @@ uint qHash(const lastfm::Track& track);
|
|||
|
||||
#include <QMap>
|
||||
#include <QMenu>
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QQueue>
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
class QAction;
|
||||
class QNetworkAccessManager;
|
||||
|
||||
class LastFMService : public RadioService {
|
||||
Q_OBJECT
|
||||
|
@ -180,7 +180,7 @@ class LastFMService : public RadioService {
|
|||
RadioItem* friends_list_;
|
||||
RadioItem* neighbours_list_;
|
||||
|
||||
QNetworkAccessManager network_;
|
||||
QNetworkAccessManager* network_;
|
||||
QHash<lastfm::Track, QNetworkReply*> image_requests_;
|
||||
};
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ MagnatuneService::MagnatuneService(RadioModel* parent)
|
|||
library_model_(new LibraryModel(library_backend_, this)),
|
||||
library_sort_model_(new QSortFilterProxyModel(this)),
|
||||
total_song_count_(0),
|
||||
network_(new QNetworkAccessManager(this))
|
||||
network_(parent->network())
|
||||
{
|
||||
connect(library_backend_, SIGNAL(TotalSongCountUpdated(int)),
|
||||
SLOT(UpdateTotalSongCount(int)));
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include <QTranslator>
|
||||
#include <QDir>
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QNetworkDiskCache>
|
||||
|
||||
#include <glib/gutils.h>
|
||||
|
||||
|
@ -135,6 +136,10 @@ int main(int argc, char *argv[]) {
|
|||
}
|
||||
|
||||
QNetworkAccessManager network;
|
||||
QNetworkDiskCache network_cache;
|
||||
network_cache.setCacheDirectory(QString("%1/.config/%2/networkcache/")
|
||||
.arg(QDir::homePath(), QCoreApplication::organizationName()));
|
||||
network.setCache(&network_cache);
|
||||
|
||||
// MPRIS DBus interface.
|
||||
#ifdef Q_WS_X11
|
||||
|
|
|
@ -94,7 +94,7 @@ MainWindow::MainWindow(QNetworkAccessManager* network, Engine::Type engine, QWid
|
|||
multi_loading_indicator_(new MultiLoadingIndicator(this)),
|
||||
about_dialog_(new About),
|
||||
database_(new Database(this)),
|
||||
radio_model_(new RadioModel(database_, this)),
|
||||
radio_model_(new RadioModel(database_, network, this)),
|
||||
playlist_backend_(new PlaylistBackend(database_, this)),
|
||||
playlist_(new Playlist(playlist_backend_, this)),
|
||||
player_(new Player(playlist_, radio_model_->GetLastFMService(), engine, this)),
|
||||
|
|
|
@ -28,10 +28,11 @@
|
|||
|
||||
QMap<QString, RadioService*> RadioModel::sServices;
|
||||
|
||||
RadioModel::RadioModel(Database* db, QObject* parent)
|
||||
RadioModel::RadioModel(Database* db, QNetworkAccessManager* network, QObject* parent)
|
||||
: SimpleTreeModel<RadioItem>(new RadioItem(this), parent),
|
||||
db_(db),
|
||||
merged_model_(new MergedProxyModel(this))
|
||||
merged_model_(new MergedProxyModel(this)),
|
||||
network_(network)
|
||||
{
|
||||
Q_ASSERT(sServices.isEmpty());
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
#include "multiloadingindicator.h"
|
||||
#include "song.h"
|
||||
|
||||
class QNetworkAccessManager;
|
||||
|
||||
class RadioService;
|
||||
class LastFMService;
|
||||
class MergedProxyModel;
|
||||
|
@ -31,7 +33,7 @@ class RadioModel : public SimpleTreeModel<RadioItem> {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
RadioModel(Database* db, QObject* parent = 0);
|
||||
RadioModel(Database* db, QNetworkAccessManager* network, QObject* parent = 0);
|
||||
|
||||
enum {
|
||||
Role_Type = Qt::UserRole + 1,
|
||||
|
@ -57,6 +59,7 @@ class RadioModel : public SimpleTreeModel<RadioItem> {
|
|||
|
||||
Database* db() const { return db_; }
|
||||
MergedProxyModel* merged_model() const { return merged_model_; }
|
||||
QNetworkAccessManager* network() const { return network_; }
|
||||
|
||||
signals:
|
||||
void TaskStarted(MultiLoadingIndicator::TaskType);
|
||||
|
@ -80,6 +83,7 @@ class RadioModel : public SimpleTreeModel<RadioItem> {
|
|||
static QMap<QString, RadioService*> sServices;
|
||||
Database* db_;
|
||||
MergedProxyModel* merged_model_;
|
||||
QNetworkAccessManager* network_;
|
||||
};
|
||||
|
||||
#endif // RADIOMODEL_H
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
|
||||
#include "somafmservice.h"
|
||||
#include "radiomodel.h"
|
||||
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QNetworkRequest>
|
||||
|
@ -35,7 +36,7 @@ SomaFMService::SomaFMService(RadioModel* parent)
|
|||
: RadioService(kServiceName, parent),
|
||||
root_(NULL),
|
||||
context_menu_(new QMenu),
|
||||
network_(new QNetworkAccessManager(this))
|
||||
network_(parent->network())
|
||||
{
|
||||
context_menu_->addAction(QIcon(":media-playback-start.png"), tr("Add to playlist"), this, SLOT(AddToPlaylist()));
|
||||
context_menu_->addSeparator();
|
||||
|
|
Loading…
Reference in New Issue