Add support for album covers to Ubuntu One.

This commit is contained in:
John Maguire 2012-11-28 15:26:09 +01:00
parent 4bbbf4dd9d
commit afcc8f86f3
2 changed files with 47 additions and 2 deletions

View File

@ -21,6 +21,8 @@
#include "internet/ubuntuoneauthenticator.h"
#include "internet/ubuntuoneurlhandler.h"
#include "library/librarybackend.h"
#include "playlist/playlist.h"
#include "ui/iconloader.h"
const char* UbuntuOneService::kServiceName = "Ubuntu One";
const char* UbuntuOneService::kSettingsGroup = "Ubuntu One";
@ -37,7 +39,8 @@ UbuntuOneService::UbuntuOneService(Application* app, InternetModel* parent)
: InternetService(kServiceName, app, parent, parent),
root_(nullptr),
network_(new NetworkAccessManager(this)),
library_sort_model_(new QSortFilterProxyModel(this)) {
library_sort_model_(new QSortFilterProxyModel(this)),
playlist_manager_(app->playlist_manager()) {
library_backend_ = new LibraryBackend;
library_backend_->moveToThread(app_->database()->thread());
library_backend_->Init(
@ -207,3 +210,34 @@ QUrl UbuntuOneService::GetStreamingUrlFromSongId(const QString& song_id) {
void UbuntuOneService::ShowSettingsDialog() {
app_->OpenSettingsDialogAtPage(SettingsDialog::Page_UbuntuOne);
}
void UbuntuOneService::ShowContextMenu(const QPoint& global_pos) {
if (!context_menu_) {
context_menu_.reset(new QMenu);
context_menu_->addActions(GetPlaylistActions());
context_menu_->addAction(
IconLoader::Load("download"),
tr("Cover Manager"),
this,
SLOT(ShowCoverManager()));
context_menu_->addAction(IconLoader::Load("configure"),
tr("Configure..."),
this, SLOT(ShowSettingsDialog()));
}
context_menu_->popup(global_pos);
}
void UbuntuOneService::ShowCoverManager() {
if (!cover_manager_) {
cover_manager_.reset(new AlbumCoverManager(app_, library_backend_));
cover_manager_->Init();
connect(cover_manager_.get(), SIGNAL(AddToPlaylist(QMimeData*)),
SLOT(AddToPlaylist(QMimeData*)));
}
cover_manager_->show();
}
void UbuntuOneService::AddToPlaylist(QMimeData* mime) {
playlist_manager_->current()->dropMimeData(
mime, Qt::CopyAction, -1, 0, QModelIndex());
}

View File

@ -3,11 +3,15 @@
#include "internet/internetservice.h"
#include <QMenu>
#include "core/tagreaderclient.h"
#include "ui/albumcovermanager.h"
class LibraryBackend;
class LibraryModel;
class NetworkAccessManager;
class PlaylistManager;
class QNetworkReply;
class QSortFilterProxyModel;
class UbuntuOneAuthenticator;
@ -23,6 +27,7 @@ class UbuntuOneService : public InternetService {
// InternetService
virtual QStandardItem* CreateRootItem();
virtual void LazyPopulate(QStandardItem* parent);
virtual void ShowContextMenu(const QPoint& global_pos);
QUrl GetStreamingUrlFromSongId(const QString& song_id);
@ -31,12 +36,14 @@ class UbuntuOneService : public InternetService {
void FileListRequestFinished(QNetworkReply* reply);
void ReadTagsFinished(
TagReaderClient::ReplyType* reply, const QVariantMap& file, const QUrl& url);
void ShowSettingsDialog();
void ShowCoverManager();
void AddToPlaylist(QMimeData* mime);
private:
void Connect();
void RequestFileList(const QString& path);
void MaybeAddFileToDatabase(const QVariantMap& file);
void ShowSettingsDialog();
private:
QByteArray GenerateAuthorisationHeader();
@ -52,6 +59,10 @@ class UbuntuOneService : public InternetService {
LibraryBackend* library_backend_;
LibraryModel* library_model_;
QSortFilterProxyModel* library_sort_model_;
boost::scoped_ptr<QMenu> context_menu_;
boost::scoped_ptr<AlbumCoverManager> cover_manager_;
PlaylistManager* playlist_manager_;
};
#endif // UBUNTUONESERVICE_H