Save and restore Jamendo playlist items properly. Add a Jamendo context menu.

This commit is contained in:
David Sansome 2010-11-25 22:04:23 +00:00
parent e36cbcb50c
commit 927937e236
51 changed files with 556 additions and 28 deletions

View File

@ -123,6 +123,7 @@ set(SOURCES
radio/icecastfilterwidget.cpp
radio/icecastmodel.cpp
radio/icecastservice.cpp
radio/jamendoplaylistitem.cpp
radio/jamendoservice.cpp
radio/lastfmconfig.cpp
radio/lastfmservice.cpp

View File

@ -28,8 +28,10 @@
#include "library/librarybackend.h"
#include "library/librarymodel.h"
#include "library/libraryplaylistitem.h"
#include "radio/magnatuneservice.h"
#include "radio/jamendoplaylistitem.h"
#include "radio/jamendoservice.h"
#include "radio/magnatuneplaylistitem.h"
#include "radio/magnatuneservice.h"
#include "radio/radiomimedata.h"
#include "radio/radiomodel.h"
#include "radio/radioplaylistitem.h"
@ -105,6 +107,15 @@ Playlist::~Playlist() {
library_items_by_id_.clear();
}
template<typename T>
QModelIndex InsertSongItems(Playlist* playlist, const SongList& songs, int pos) {
PlaylistItemList items;
foreach (const Song& song, songs) {
items << shared_ptr<PlaylistItem>(new T(song));
}
return playlist->InsertItems(items, pos);
}
QVariant Playlist::headerData(int section, Qt::Orientation, int role) const {
if (role != Qt::DisplayRole && role != Qt::ToolTipRole)
return QVariant();
@ -576,11 +587,13 @@ bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int ro
// We want to check if these songs are from the actual local file backend,
// if they are we treat them differently.
if (song_data->backend && song_data->backend->songs_table() == Library::kSongsTable)
InsertLibraryItems(song_data->songs, row);
InsertSongItems<LibraryPlaylistItem>(this, song_data->songs, row);
else if (song_data->backend && song_data->backend->songs_table() == MagnatuneService::kSongsTable)
InsertMagnatuneItems(song_data->songs, row);
InsertSongItems<MagnatunePlaylistItem>(this, song_data->songs, row);
else if (song_data->backend && song_data->backend->songs_table() == JamendoService::kSongsTable)
InsertSongItems<JamendoPlaylistItem>(this, song_data->songs, row);
else
InsertSongs(song_data->songs, row);
InsertSongItems<SongPlaylistItem>(this, song_data->songs, row);
} else if (const RadioMimeData* radio_data = qobject_cast<const RadioMimeData*>(data)) {
// Dragged from the Radio pane
InsertRadioStations(radio_data->items, row, data->hasFormat(kPlayNowMimetype));
@ -788,27 +801,11 @@ QModelIndex Playlist::InsertItemsWithoutUndo(const PlaylistItemList& items,
}
QModelIndex Playlist::InsertLibraryItems(const SongList& songs, int pos) {
PlaylistItemList items;
foreach (const Song& song, songs) {
items << shared_ptr<PlaylistItem>(new LibraryPlaylistItem(song));
}
return InsertItems(items, pos);
}
QModelIndex Playlist::InsertMagnatuneItems(const SongList& songs, int pos) {
PlaylistItemList items;
foreach (const Song& song, songs) {
items << shared_ptr<PlaylistItem>(new MagnatunePlaylistItem(song));
}
return InsertItems(items, pos);
return InsertSongItems<LibraryPlaylistItem>(this, songs, pos);
}
QModelIndex Playlist::InsertSongs(const SongList& songs, int pos) {
PlaylistItemList items;
foreach (const Song& song, songs) {
items << shared_ptr<PlaylistItem>(new SongPlaylistItem(song));
}
return InsertItems(items, pos);
return InsertSongItems<SongPlaylistItem>(this, songs, pos);
}
QModelIndex Playlist::InsertRadioStations(const QList<RadioItem*>& items, int pos, bool play_now) {

View File

@ -150,7 +150,6 @@ class Playlist : public QAbstractListModel {
// Changing the playlist
QModelIndex InsertItems(const PlaylistItemList& items, int pos = -1);
QModelIndex InsertLibraryItems(const SongList& items, int pos = -1);
QModelIndex InsertMagnatuneItems(const SongList& items, int pos = -1);
QModelIndex InsertSongs(const SongList& items, int pos = -1);
QModelIndex InsertRadioStations(const QList<RadioItem*>& items, int pos = -1, bool play_now = false);
void InsertSmartPlaylist(smart_playlists::GeneratorPtr generator, int pos = -1, bool play_now = false);

View File

@ -90,6 +90,7 @@ QFuture<PlaylistItemPtr> PlaylistBackend::GetPlaylistItems(int playlist) {
QSqlQuery q("SELECT songs.ROWID, " + Song::JoinSpec("songs") + ","
" magnatune_songs.ROWID, " + Song::JoinSpec("magnatune_songs") + ","
" jamendo_songs.ROWID, " + Song::JoinSpec("jamendo_songs") + ","
" p.type, p.url, p.title, p.artist, p.album, p.length,"
" p.radio_service"
" FROM playlist_items AS p"
@ -97,6 +98,8 @@ QFuture<PlaylistItemPtr> PlaylistBackend::GetPlaylistItems(int playlist) {
" ON p.library_id = songs.ROWID"
" LEFT JOIN magnatune_songs"
" ON p.library_id = magnatune_songs.ROWID"
" LEFT JOIN jamendo_songs"
" ON p.library_id = jamendo_songs.ROWID"
" WHERE p.playlist = :playlist", db);
q.bindValue(":playlist", playlist);
q.exec();
@ -113,8 +116,8 @@ QFuture<PlaylistItemPtr> PlaylistBackend::GetPlaylistItems(int playlist) {
}
PlaylistItemPtr PlaylistBackend::NewSongFromQuery(const SqlRow& row) {
// The song tables gets joined first, plus one each for the song ROWIDs
const int playlist_row = (Song::kColumns.count() + 1) * 2;
// The song tables get joined first, plus one each for the song ROWIDs
const int playlist_row = (Song::kColumns.count() + 1) * 3;
PlaylistItemPtr item(
PlaylistItem::NewFromType(row.value(playlist_row).toString()));

View File

@ -18,6 +18,7 @@
#include "playlistitem.h"
#include "songplaylistitem.h"
#include "library/libraryplaylistitem.h"
#include "radio/jamendoplaylistitem.h"
#include "radio/magnatuneplaylistitem.h"
#include "radio/radioplaylistitem.h"
@ -35,6 +36,8 @@ PlaylistItem* PlaylistItem::NewFromType(const QString& type) {
return new LibraryPlaylistItem(type);
if (type == "Magnatune")
return new MagnatunePlaylistItem(type);
if (type == "Jamendo")
return new JamendoPlaylistItem(type);
if (type == "Stream" || type == "File")
return new SongPlaylistItem(type);
if (type == "Radio")

View File

@ -35,8 +35,8 @@ SongPlaylistItem::SongPlaylistItem(const Song& song)
}
bool SongPlaylistItem::InitFromQuery(const SqlRow& query) {
// The song tables gets joined first, plus one each for the song ROWIDs
const int row = (Song::kColumns.count() + 1) * 2;
// The song tables get joined first, plus one each for the song ROWIDs
const int row = (Song::kColumns.count() + 1) * 3;
QString filename(query.value(row + 1).toString());

View File

@ -0,0 +1,40 @@
/* This file is part of Clementine.
Copyright 2010, David Sansome <me@davidsansome.com>
Clementine 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 3 of the License, or
(at your option) any later version.
Clementine 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 Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "jamendoplaylistitem.h"
JamendoPlaylistItem::JamendoPlaylistItem(const QString& type)
: LibraryPlaylistItem(type)
{
}
JamendoPlaylistItem::JamendoPlaylistItem(const Song& song)
: LibraryPlaylistItem("Jamendo")
{
song_ = song;
}
bool JamendoPlaylistItem::InitFromQuery(const SqlRow& query) {
// Rows from the songs tables come first
song_.InitFromQuery(query, (Song::kColumns.count() + 1) * 2);
return song_.is_valid();
}
QUrl JamendoPlaylistItem::Url() const {
return QUrl::fromEncoded(song_.filename().toAscii());
}

View File

@ -0,0 +1,33 @@
/* This file is part of Clementine.
Copyright 2010, David Sansome <me@davidsansome.com>
Clementine 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 3 of the License, or
(at your option) any later version.
Clementine 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 Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef JAMENDOPLAYLISTITEM_H
#define JAMENDOPLAYLISTITEM_H
#include "library/libraryplaylistitem.h"
class JamendoPlaylistItem : public LibraryPlaylistItem {
public:
JamendoPlaylistItem(const QString& type);
JamendoPlaylistItem(const Song& song);
bool InitFromQuery(const SqlRow& query);
QUrl Url() const;
};
#endif // JAMENDOPLAYLISTITEM_H

View File

@ -17,7 +17,9 @@
#include "jamendoservice.h"
#include <QDesktopServices>
#include <QFutureWatcher>
#include <QMenu>
#include <QNetworkReply>
#include <QSortFilterProxyModel>
#include <QtConcurrentRun>
@ -31,6 +33,8 @@
#include "library/libraryfilterwidget.h"
#include "library/librarymodel.h"
#include "radio/radiomodel.h"
#include "radio/jamendoplaylistitem.h"
#include "ui/iconloader.h"
const char* JamendoService::kServiceName = "Jamendo";
const char* JamendoService::kDirectoryUrl =
@ -41,6 +45,7 @@ const char* JamendoService::kOggStreamUrl =
"http://api.jamendo.com/get2/stream/track/redirect/?id=%1&streamencoding=ogg2";
const char* JamendoService::kAlbumCoverUrl =
"http://api.jamendo.com/get2/image/album/redirect/?id=%1&imagesize=260";
const char* JamendoService::kHomepage = "http://www.jamendo.com/";
const char* JamendoService::kSongsTable = "jamendo_songs";
const char* JamendoService::kFtsTable = "jamendo_songs_fts";
@ -54,6 +59,7 @@ JamendoService::JamendoService(RadioModel* parent)
: RadioService(kServiceName, parent),
network_(new NetworkAccessManager(this)),
root_(NULL),
context_menu_(NULL),
library_backend_(NULL),
library_filter_(NULL),
library_model_(NULL),
@ -291,6 +297,17 @@ void JamendoService::EnsureMenuCreated() {
if (library_filter_)
return;
context_menu_ = new QMenu;
add_to_playlist_ = context_menu_->addAction(IconLoader::Load("media-playback-start"),
tr("Add to playlist"), this, SLOT(AddToPlaylist()));
album_info_ = context_menu_->addAction(IconLoader::Load("view-media-lyrics"),
tr("Album info on jamendo.com..."), this, SLOT(AlbumInfo()));
download_album_ = context_menu_->addAction(IconLoader::Load("download"),
tr("Download this album..."), this, SLOT(DownloadAlbum()));
context_menu_->addSeparator();
context_menu_->addAction(IconLoader::Load("download"), tr("Open jamendo.com in browser"), this, SLOT(Homepage()));
context_menu_->addAction(IconLoader::Load("view-refresh"), tr("Refresh catalogue"), this, SLOT(ReloadDatabase()));
library_filter_ = new LibraryFilterWidget(0);
library_filter_->SetSettingsGroup(kSettingsGroup);
library_filter_->SetLibraryModel(library_model_);
@ -298,7 +315,50 @@ void JamendoService::EnsureMenuCreated() {
library_filter_->SetAgeFilterEnabled(false);
}
void JamendoService::ShowContextMenu(RadioItem*, const QModelIndex& index,
const QPoint& global_pos) {
EnsureMenuCreated();
bool is_song = false;
if (index.model() == library_sort_model_) {
context_item_ = index;
is_song = index.data(LibraryModel::Role_Type).toInt() == LibraryItem::Type_Song;
} else {
context_item_ = QModelIndex();
}
add_to_playlist_->setEnabled(context_item_.isValid());
album_info_->setEnabled(is_song);
download_album_->setEnabled(is_song);
context_menu_->popup(global_pos);
}
QWidget* JamendoService::HeaderWidget() const {
const_cast<JamendoService*>(this)->EnsureMenuCreated();
return library_filter_;
}
void JamendoService::AddToPlaylist() {
SongList songs(library_model_->GetChildSongs(
library_sort_model_->mapToSource(context_item_)));
PlaylistItemList items;
foreach (const Song& song, songs) {
items << PlaylistItemPtr(new JamendoPlaylistItem(song));
}
emit AddItemsToPlaylist(items);
}
void JamendoService::AlbumInfo() {
// TODO
}
void JamendoService::DownloadAlbum() {
// TODO
}
void JamendoService::Homepage() {
QDesktopServices::openUrl(QUrl(kHomepage));
}

View File

@ -41,6 +41,9 @@ class JamendoService : public RadioService {
RadioItem* CreateRootItem(RadioItem* parent);
void LazyPopulate(RadioItem* item);
void ShowContextMenu(RadioItem* item, const QModelIndex& index,
const QPoint& global_pos);
QWidget* HeaderWidget() const;
static const char* kServiceName;
@ -48,6 +51,7 @@ class JamendoService : public RadioService {
static const char* kMp3StreamUrl;
static const char* kOggStreamUrl;
static const char* kAlbumCoverUrl;
static const char* kHomepage;
static const char* kSongsTable;
static const char* kFtsTable;
@ -76,10 +80,22 @@ class JamendoService : public RadioService {
void ParseDirectoryFinished();
void UpdateTotalSongCount(int count);
void AddToPlaylist();
void AlbumInfo();
void DownloadAlbum();
void Homepage();
private:
NetworkAccessManager* network_;
RadioItem* root_;
QMenu* context_menu_;
QModelIndex context_item_;
QAction* add_to_playlist_;
QAction* album_info_;
QAction* download_album_;
LibraryBackend* library_backend_;
LibraryFilterWidget* library_filter_;
LibraryModel* library_model_;

View File

@ -1,3 +1,20 @@
/* This file is part of Clementine.
Copyright 2010, David Sansome <me@davidsansome.com>
Clementine 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 3 of the License, or
(at your option) any later version.
Clementine 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 Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "magnatuneplaylistitem.h"
#include "magnatuneservice.h"
#include "radiomodel.h"

View File

@ -1,3 +1,20 @@
/* This file is part of Clementine.
Copyright 2010, David Sansome <me@davidsansome.com>
Clementine 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 3 of the License, or
(at your option) any later version.
Clementine 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 Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MAGNATUNEPLAYLISTITEM_H
#define MAGNATUNEPLAYLISTITEM_H

View File

@ -44,7 +44,7 @@ RadioPlaylistItem::RadioPlaylistItem(RadioService* service, const QUrl& url,
bool RadioPlaylistItem::InitFromQuery(const SqlRow& query) {
// The song tables gets joined first, plus one each for the song ROWIDs
const int row = (Song::kColumns.count() + 1) * 2;
const int row = (Song::kColumns.count() + 1) * 3;
url_ = query.value(row + 1).toString();
title_ = query.value(row + 2).toString();

View File

@ -240,6 +240,9 @@ msgstr ""
msgid "Album artist"
msgstr "فنان الألبوم"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "فنان الألبوم"
@ -733,6 +736,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1441,6 +1447,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -240,6 +240,9 @@ msgstr ""
msgid "Album artist"
msgstr ""
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr ""
@ -733,6 +736,9 @@ msgstr ""
msgid "Download this album"
msgstr "Сваляне на този албум"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1445,6 +1451,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Отваряне на magnatune.com в уеб браузер"

View File

@ -246,6 +246,9 @@ msgstr "Àlbum (volum ideal per a totes les pistes)"
msgid "Album artist"
msgstr "Artista de l'àlbum"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Artista de l'àlbum"
@ -751,6 +754,9 @@ msgstr "Membres de descarrega"
msgid "Download this album"
msgstr "Descarrega aquest àlbum"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1470,6 +1476,9 @@ msgstr "Obrir dispositiu"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Obre magnatune.com al navegador"

View File

@ -241,6 +241,9 @@ msgstr "Album (ideální hlasitost pro všechny stopy)"
msgid "Album artist"
msgstr "Umělec alba"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Albumumělec"
@ -734,6 +737,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1445,6 +1451,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -240,6 +240,9 @@ msgstr ""
msgid "Album artist"
msgstr ""
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr ""
@ -733,6 +736,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1441,6 +1447,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -241,6 +241,9 @@ msgstr "Album (ideel lydstyrke for alle spor)"
msgid "Album artist"
msgstr "Albummets kunstner"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Albumsartist"
@ -734,6 +737,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1446,6 +1452,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -245,6 +245,9 @@ msgstr "Album (idealer Pegel für alle Stücke)"
msgid "Album artist"
msgstr "Album-Interpret"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Albuminterpret"
@ -752,6 +755,9 @@ msgstr "Downloadmitgliedschaft"
msgid "Download this album"
msgstr "Dieses Album herunterladen"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1473,6 +1479,9 @@ msgstr "Gerät öffnen"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "magnatune.com im Browser öffnen"

View File

@ -251,6 +251,9 @@ msgstr "Άλμπουμ (ιδανική ένταση για όλα τα κομμ
msgid "Album artist"
msgstr "Καλλιτέχνης άλμπουμ"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Άλμπουμ Καλλιτέχνης"
@ -762,6 +765,9 @@ msgstr "\"Κατέβασμα\" συνδρομής"
msgid "Download this album"
msgstr "Λήψη αυτού του άλμπουμ"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1484,6 +1490,9 @@ msgstr "Άνοιγμα συσκευής"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Άνοιγμα του magnatune.com στον περιηγητή"

View File

@ -240,6 +240,9 @@ msgstr "Album (ideal loudness for all tracks)"
msgid "Album artist"
msgstr "Album artist"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Albumartist"
@ -735,6 +738,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1446,6 +1452,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Open magnatune.com in browser"

View File

@ -240,6 +240,9 @@ msgstr ""
msgid "Album artist"
msgstr "Album artist"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Albumartist"
@ -733,6 +736,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1443,6 +1449,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -240,6 +240,9 @@ msgstr ""
msgid "Album artist"
msgstr "Albumverkinto"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Albumverkinto"
@ -733,6 +736,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1441,6 +1447,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -251,6 +251,9 @@ msgstr "Álbum (volumen ideal para todas las pistas)"
msgid "Album artist"
msgstr "Artista del Álbum"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Artista del Álbum"
@ -760,6 +763,9 @@ msgstr "Membrecía para descarga"
msgid "Download this album"
msgstr "Descarga este álbum"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1484,6 +1490,9 @@ msgstr "Abrir dispositivo"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Abrir magnatune.com en el navegador"

View File

@ -240,6 +240,9 @@ msgstr "Album (kõigil radadel ideaalne valjus)"
msgid "Album artist"
msgstr "Albumi esitaja"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr ""
@ -733,6 +736,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1443,6 +1449,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -240,6 +240,9 @@ msgstr "Albumi (ihanteellinen voimakkuus kaikille kappaleille)"
msgid "Album artist"
msgstr "Albumin artisti"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr ""
@ -733,6 +736,9 @@ msgstr ""
msgid "Download this album"
msgstr "Lataa tämä levy"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1443,6 +1449,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -246,6 +246,9 @@ msgstr "Album (volume idéal pour toutes les pistes)"
msgid "Album artist"
msgstr "Artiste de l'album"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Albumartist"
@ -755,6 +758,9 @@ msgstr "Adhésion au téléchargement"
msgid "Download this album"
msgstr "Télécharger cet album"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1483,6 +1489,9 @@ msgstr "Ouvrir le périphérique"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Ouvrir magnatune.com dans le navigateur"

View File

@ -240,6 +240,9 @@ msgstr "Álbum (sonoridade ideal para todas as pistas)"
msgid "Album artist"
msgstr "Artista do álbum"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Artista do Álbum"
@ -737,6 +740,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1447,6 +1453,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -248,6 +248,9 @@ msgstr "Album (ideális hangerő minden számhoz)"
msgid "Album artist"
msgstr "Album-előadó"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Album-előadó"
@ -755,6 +758,9 @@ msgstr "Tagsági információk betöltése"
msgid "Download this album"
msgstr "Album letöltése"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1475,6 +1481,9 @@ msgstr "Eszköz megnyitása"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "A magnatune.com megnyitása böngészőben"

View File

@ -250,6 +250,9 @@ msgstr "Album (volume ideale per tutte le tracce)"
msgid "Album artist"
msgstr "Artista dell'album"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Artista dell'album"
@ -759,6 +762,9 @@ msgstr "Scaricamento"
msgid "Download this album"
msgstr "Scarica questo album"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1484,6 +1490,9 @@ msgstr "Apri dispositivo"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Apri magnatune.com nel browser"

View File

@ -246,6 +246,9 @@ msgstr "アルバム (すべてのトラックで理想の音量)"
msgid "Album artist"
msgstr "アルバム アーティスト"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "アルバムアーティスト"
@ -750,6 +753,9 @@ msgstr "メンバーシップのダウンロード"
msgid "Download this album"
msgstr "このアルバムのダウンロード"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1469,6 +1475,9 @@ msgstr "デバイスを開く"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "ブラウザで magnatune.com を開きます"

View File

@ -240,6 +240,9 @@ msgstr ""
msgid "Album artist"
msgstr ""
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr ""
@ -733,6 +736,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1443,6 +1449,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -240,6 +240,9 @@ msgstr ""
msgid "Album artist"
msgstr ""
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr ""
@ -733,6 +736,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1441,6 +1447,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -243,6 +243,9 @@ msgstr "Album (ideell lydstyrke for alle spor)"
msgid "Album artist"
msgstr "Album artist"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Albumartist"
@ -744,6 +747,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1455,6 +1461,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -244,6 +244,9 @@ msgstr "Album (ideaal volume voor alle nummers)"
msgid "Album artist"
msgstr "Albumartiest"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Albumartiest"
@ -751,6 +754,9 @@ msgstr "Download lidmaatschap"
msgid "Download this album"
msgstr "Download dit album"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1474,6 +1480,9 @@ msgstr "Apparaat openen"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Magnatune.com in webbrowser openen"

View File

@ -240,6 +240,9 @@ msgstr ""
msgid "Album artist"
msgstr ""
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr ""
@ -733,6 +736,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1441,6 +1447,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -248,6 +248,9 @@ msgstr "Według albumów (najlepsza głośność dla wszystkich ścieżek)"
msgid "Album artist"
msgstr "Wykonawca albumu"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Wykonawca albumu"
@ -752,6 +755,9 @@ msgstr "Pobierz członkwstwo"
msgid "Download this album"
msgstr "Pobierz ten album"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1471,6 +1477,9 @@ msgstr "Otwórz urządzenie"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Otwórz magnatune.com w przeglądarce"

View File

@ -249,6 +249,9 @@ msgstr "Álbum (volume ideal para todas as faixas)"
msgid "Album artist"
msgstr "Artista do álbum"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Álbum - artista"
@ -758,6 +761,9 @@ msgstr "Transferência"
msgid "Download this album"
msgstr "Transferir este álbum"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1480,6 +1486,9 @@ msgstr "Abrir dispositivo"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Abrir magnatune.com no navegador"

View File

@ -243,6 +243,9 @@ msgstr "Álbum (sonoridade ideal para todas as faixas)"
msgid "Album artist"
msgstr "Artista do álbum"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Artista do álbum"
@ -744,6 +747,9 @@ msgstr "Download de membro"
msgid "Download this album"
msgstr "Baixar este álbum"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1459,6 +1465,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Abrir magnatune.com no navegador"

View File

@ -240,6 +240,9 @@ msgstr ""
msgid "Album artist"
msgstr "Artist album"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr ""
@ -733,6 +736,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1442,6 +1448,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -243,6 +243,9 @@ msgstr "Альбом (идеальная громкость всех компо
msgid "Album artist"
msgstr "Исполнитель альбома"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Автор альбома"
@ -748,6 +751,9 @@ msgstr "\"Download\" подписка"
msgid "Download this album"
msgstr "Загрузить этот альбом"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1465,6 +1471,9 @@ msgstr "Открыть устройство"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Открыть в браузере magnatune.com"

View File

@ -248,6 +248,9 @@ msgstr "Album (ideálna hlasitosť pre všetky skladby)"
msgid "Album artist"
msgstr "Interprét albumu"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Interprét albumu"
@ -751,6 +754,9 @@ msgstr "Členstvo sťahovania"
msgid "Download this album"
msgstr "Stiahnuť tento album"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1467,6 +1473,9 @@ msgstr "Otvoriť zariadenie"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Otvoriť magnatune.com v prehliadači"

View File

@ -247,6 +247,9 @@ msgstr "Album (najboljša glasnost za vse skladbe)"
msgid "Album artist"
msgstr "Izvajalec albuma"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Izvajalec albuma"
@ -753,6 +756,9 @@ msgstr "Članstvo prejemanja"
msgid "Download this album"
msgstr "Prejmi ta album"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1470,6 +1476,9 @@ msgstr "Odpri napravo"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Odpri magnatune.com v brskalniku"

View File

@ -240,6 +240,9 @@ msgstr "Албум (идеална јачина за све песме)"
msgid "Album artist"
msgstr "Извођач албума"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Извођач албума"
@ -735,6 +738,9 @@ msgstr ""
msgid "Download this album"
msgstr "Преузми овај албум"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1446,6 +1452,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Отвори magnatune.com у прегледачу"

View File

@ -245,6 +245,9 @@ msgstr "Album (lämplig ljudstyrka för alla spår)"
msgid "Album artist"
msgstr "Albumartist"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Albumartist"
@ -752,6 +755,9 @@ msgstr "Hämta medlemskap"
msgid "Download this album"
msgstr "Hämta detta album"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1467,6 +1473,9 @@ msgstr "Öppna enhet"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Öppna magnatune.com i en webbläsare"

View File

@ -244,6 +244,9 @@ msgstr "Albüm (tüm parçalar için ideal ses yüksekliği)"
msgid "Album artist"
msgstr "Albüm sanatçısı"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Albümartist"
@ -747,6 +750,9 @@ msgstr "İndirme üyeliği"
msgid "Download this album"
msgstr "Bu albümü indir"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1467,6 +1473,9 @@ msgstr "Aygıtı aç"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "magnatune.com'u tarayıcıda aç"

View File

@ -230,6 +230,9 @@ msgstr ""
msgid "Album artist"
msgstr ""
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr ""
@ -723,6 +726,9 @@ msgstr ""
msgid "Download this album"
msgstr ""
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1431,6 +1437,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -247,6 +247,9 @@ msgstr "Альбом (ідеальна гучність для всіх комп
msgid "Album artist"
msgstr "Виконавець альбому"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "Автор альбому"
@ -752,6 +755,9 @@ msgstr "Завантажити членство"
msgid "Download this album"
msgstr "Завантажити цей альбом"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1469,6 +1475,9 @@ msgstr "Відкрити пристрій"
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "Відкрити magnatune.com в браузері"

View File

@ -240,6 +240,9 @@ msgstr "专辑 (所有音轨采用一个合适的音量)"
msgid "Album artist"
msgstr "专辑艺术家"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "专辑艺人"
@ -733,6 +736,9 @@ msgstr "下载会员"
msgid "Download this album"
msgstr "下载此专辑"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1443,6 +1449,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr ""

View File

@ -244,6 +244,9 @@ msgstr "專輯 (為所有歌曲取得理想音量)"
msgid "Album artist"
msgstr "專輯演出者"
msgid "Album info on jamendo.com..."
msgstr ""
msgid "Albumartist"
msgstr "專輯演出者"
@ -737,6 +740,9 @@ msgstr "下載會員"
msgid "Download this album"
msgstr "下載此專輯"
msgid "Download this album..."
msgstr ""
msgid "Downloading Icecast directory"
msgstr ""
@ -1446,6 +1452,9 @@ msgstr ""
msgid "Open dir.xiph.org in browser"
msgstr ""
msgid "Open jamendo.com in browser"
msgstr ""
msgid "Open magnatune.com in browser"
msgstr "在瀏覽器中打開 magnatune.com"