Refactor the loading indicator widget into a seperate TaskManager class that can handle tasks with progress

This commit is contained in:
David Sansome 2010-06-23 13:21:30 +00:00
parent ed422c3743
commit f808591ec7
52 changed files with 782 additions and 686 deletions

View File

@ -47,6 +47,7 @@ set(SOURCES
core/song.cpp
core/songloader.cpp
core/stylesheetloader.cpp
core/taskmanager.cpp
core/utilities.cpp
engines/enginebase.cpp
@ -160,6 +161,7 @@ set(HEADERS
core/networkaccessmanager.h
core/player.h
core/songloader.h
core/taskmanager.h
engines/enginebase.h

81
src/core/taskmanager.cpp Normal file
View File

@ -0,0 +1,81 @@
/* This file is part of Clementine.
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 "taskmanager.h"
#include <QtDebug>
TaskManager::TaskManager(QObject *parent)
: QObject(parent),
next_task_id_(1)
{
}
int TaskManager::StartTask(const QString& name) {
Task t;
t.name = name;
t.progress = 0;
t.progress_max = 0;
{
QMutexLocker l(&mutex_);
t.id = next_task_id_ ++;
tasks_[t.id] = t;
}
qDebug() << name << "started";
emit TasksChanged();
return t.id;
}
QList<TaskManager::Task> TaskManager::GetTasks() {
QList<TaskManager::Task> ret;
{
QMutexLocker l(&mutex_);
ret = tasks_.values();
}
return ret;
}
void TaskManager::SetTaskProgress(int id, int progress, int max) {
{
QMutexLocker l(&mutex_);
if (!tasks_.contains(id))
return;
Task& t = tasks_[id];
t.progress = progress;
if (max != -1)
t.progress_max = max;
qDebug() << t.name << "progress" << t.progress << "/" << t.progress_max;
}
emit TasksChanged();
}
void TaskManager::SetTaskFinished(int id) {
{
QMutexLocker l(&mutex_);
if (!tasks_.contains(id))
return;
qDebug() << tasks_[id].name << "finished";
tasks_.remove(id);
}
emit TasksChanged();
}

55
src/core/taskmanager.h Normal file
View File

@ -0,0 +1,55 @@
/* This file is part of Clementine.
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 TASKMANAGER_H
#define TASKMANAGER_H
#include <QMap>
#include <QMutex>
#include <QObject>
class TaskManager : public QObject {
Q_OBJECT
public:
TaskManager(QObject* parent = 0);
struct Task {
int id;
QString name;
int progress;
int progress_max;
};
// Thread-safe
int StartTask(const QString& name);
QList<Task> GetTasks();
public slots:
// Thread-safe
void SetTaskProgress(int id, int progress, int max = -1);
void SetTaskFinished(int id);
signals:
void TasksChanged();
private:
QMutex mutex_;
QMap<int, Task> tasks_;
int next_task_id_;
};
#endif // TASKMANAGER_H

View File

@ -24,8 +24,10 @@ const char* Library::kDirsTable = "directories";
const char* Library::kSubdirsTable = "subdirectories";
const char* Library::kFtsTable = "songs_fts";
Library::Library(BackgroundThread<Database>* db_thread, QObject *parent)
Library::Library(BackgroundThread<Database>* db_thread, TaskManager* task_manager,
QObject *parent)
: QObject(parent),
task_manager_(task_manager),
backend_(NULL),
model_(NULL),
watcher_factory_(new BackgroundThreadFactoryImplementation<LibraryWatcher, LibraryWatcher>),
@ -58,10 +60,9 @@ void Library::StartThreads() {
void Library::WatcherInitialised() {
LibraryWatcher* watcher = watcher_->Worker().get();
connect(watcher, SIGNAL(ScanStarted()), SIGNAL(ScanStarted()));
connect(watcher, SIGNAL(ScanFinished()), SIGNAL(ScanFinished()));
watcher->SetBackend(backend_);
watcher->SetTaskManager(task_manager_);
connect(backend_, SIGNAL(DirectoryDiscovered(Directory,SubdirectoryList)),
watcher, SLOT(AddDirectory(Directory,SubdirectoryList)));

View File

@ -27,12 +27,14 @@ class Database;
class LibraryBackend;
class LibraryModel;
class LibraryWatcher;
class TaskManager;
class Library : public QObject {
Q_OBJECT
public:
Library(BackgroundThread<Database>* db_thread, QObject* parent);
Library(BackgroundThread<Database>* db_thread, TaskManager* task_manager_,
QObject* parent);
static const char* kSongsTable;
static const char* kDirsTable;
@ -53,15 +55,12 @@ class Library : public QObject {
void WatcherInitialised();
private:
TaskManager* task_manager_;
LibraryBackend* backend_;
LibraryModel* model_;
boost::scoped_ptr<BackgroundThreadFactory<LibraryWatcher> > watcher_factory_;
BackgroundThread<LibraryWatcher>* watcher_;
signals:
void ScanStarted();
void ScanFinished();
};
#endif

View File

@ -16,6 +16,7 @@
#include "librarywatcher.h"
#include "librarybackend.h"
#include "core/taskmanager.h"
#include <QFileSystemWatcher>
#include <QDirIterator>
@ -35,6 +36,8 @@ const char* LibraryWatcher::kSettingsGroup = "LibraryWatcher";
LibraryWatcher::LibraryWatcher(QObject* parent)
: QObject(parent),
backend_(NULL),
task_manager_(NULL),
stop_requested_(false),
scan_on_startup_(true),
rescan_timer_(new QTimer(this)),
@ -61,7 +64,7 @@ LibraryWatcher::ScanTransaction::ScanTransaction(LibraryWatcher* watcher,
cached_songs_dirty_(true),
known_subdirs_dirty_(true)
{
emit watcher_->ScanStarted();
task_id_ = watcher_->task_manager_->StartTask(tr("Updating library"));
}
LibraryWatcher::ScanTransaction::~ScanTransaction() {
@ -83,7 +86,7 @@ LibraryWatcher::ScanTransaction::~ScanTransaction() {
if (!touched_subdirs.isEmpty())
emit watcher_->SubdirsMTimeUpdated(touched_subdirs);
emit watcher_->ScanFinished();
watcher_->task_manager_->SetTaskFinished(task_id_);
// Watch the new subdirectories
foreach (const Subdirectory& subdir, new_subdirs) {

View File

@ -28,6 +28,7 @@ class QFileSystemWatcher;
class QTimer;
class LibraryBackend;
class TaskManager;
class LibraryWatcher : public QObject {
Q_OBJECT
@ -38,6 +39,7 @@ class LibraryWatcher : public QObject {
static const char* kSettingsGroup;
void SetBackend(LibraryBackend* backend) { backend_ = backend; }
void SetTaskManager(TaskManager* task_manager) { task_manager_ = task_manager; }
void IncrementalScanAsync();
void Stop() { stop_requested_ = true; }
@ -50,9 +52,6 @@ class LibraryWatcher : public QObject {
void SubdirsMTimeUpdated(const SubdirectoryList& subdirs);
void CompilationsNeedUpdating();
void ScanStarted();
void ScanFinished();
public slots:
void ReloadSettings();
void AddDirectory(const Directory& dir, const SubdirectoryList& subdirs);
@ -92,6 +91,8 @@ class LibraryWatcher : public QObject {
ScanTransaction(const ScanTransaction&) {}
ScanTransaction& operator =(const ScanTransaction&) { return *this; }
int task_id_;
int dir_;
bool incremental_;
LibraryWatcher* watcher_;
@ -126,6 +127,7 @@ class LibraryWatcher : public QObject {
};
LibraryBackend* backend_;
TaskManager* task_manager_;
bool stop_requested_;
bool scan_on_startup_;

View File

@ -49,10 +49,12 @@ using boost::shared_ptr;
const char* Playlist::kRowsMimetype = "application/x-clementine-playlist-rows";
const char* Playlist::kPlayNowMimetype = "application/x-clementine-play-now";
Playlist::Playlist(PlaylistBackend* backend, int id, QObject *parent)
Playlist::Playlist(PlaylistBackend* backend, TaskManager* task_manager,
int id, QObject *parent)
: QAbstractListModel(parent),
proxy_(new PlaylistFilter(this)),
backend_(backend),
task_manager_(task_manager),
id_(id),
current_is_paused_(false),
current_virtual_index_(-1),
@ -484,9 +486,7 @@ bool Playlist::dropMimeData(const QMimeData* data, Qt::DropAction action, int ro
}
void Playlist::InsertUrls(const QList<QUrl> &urls, bool play_now, int pos) {
SongLoaderInserter* inserter = new SongLoaderInserter(this);
connect(inserter, SIGNAL(AsyncLoadStarted()), SIGNAL(LoadTracksStarted()));
connect(inserter, SIGNAL(AsyncLoadFinished()), SIGNAL(LoadTracksFinished()));
SongLoaderInserter* inserter = new SongLoaderInserter(task_manager_, this);
connect(inserter, SIGNAL(Error(QString)), SIGNAL(LoadTracksError(QString)));
connect(inserter, SIGNAL(PlayRequested(QModelIndex)), SIGNAL(PlayRequested(QModelIndex)));

View File

@ -30,6 +30,7 @@
class RadioService;
class PlaylistBackend;
class PlaylistFilter;
class TaskManager;
class QSortFilterProxyModel;
class QUndoStack;
@ -48,7 +49,8 @@ class Playlist : public QAbstractListModel {
friend class PlaylistUndoCommands::MoveItems;
public:
Playlist(PlaylistBackend* backend, int id, QObject* parent = 0);
Playlist(PlaylistBackend* backend, TaskManager* task_manager, int id,
QObject* parent = 0);
~Playlist();
enum Column {
@ -175,8 +177,6 @@ class Playlist : public QAbstractListModel {
void PlaylistChanged();
void LoadTracksStarted();
void LoadTracksFinished();
void LoadTracksError(const QString& message);
private:
@ -198,6 +198,7 @@ class Playlist : public QAbstractListModel {
PlaylistFilter* proxy_;
PlaylistBackend* backend_;
TaskManager* task_manager_;
int id_;
PlaylistItemList items_;

View File

@ -25,8 +25,9 @@
#include <QFileInfo>
#include <QtDebug>
PlaylistManager::PlaylistManager(QObject *parent)
PlaylistManager::PlaylistManager(TaskManager* task_manager, QObject *parent)
: QObject(parent),
task_manager_(task_manager),
playlist_backend_(NULL),
library_backend_(NULL),
sequence_(NULL),
@ -61,15 +62,13 @@ void PlaylistManager::Init(LibraryBackend* library_backend,
}
Playlist* PlaylistManager::AddPlaylist(int id, const QString& name) {
Playlist* ret = new Playlist(playlist_backend_, id);
Playlist* ret = new Playlist(playlist_backend_, task_manager_, id);
ret->set_sequence(sequence_);
connect(ret, SIGNAL(CurrentSongChanged(Song)), SIGNAL(CurrentSongChanged(Song)));
connect(ret, SIGNAL(PlaylistChanged()), SIGNAL(PlaylistChanged()));
connect(ret, SIGNAL(PlaylistChanged()), SLOT(UpdateSummaryText()));
connect(ret, SIGNAL(EditingFinished(QModelIndex)), SIGNAL(EditingFinished(QModelIndex)));
connect(ret, SIGNAL(LoadTracksStarted()), SIGNAL(LoadTracksStarted()));
connect(ret, SIGNAL(LoadTracksFinished()), SIGNAL(LoadTracksFinished()));
connect(ret, SIGNAL(LoadTracksError(QString)), SIGNAL(Error(QString)));
connect(ret, SIGNAL(PlayRequested(QModelIndex)), SIGNAL(PlayRequested(QModelIndex)));

View File

@ -28,6 +28,7 @@ class Playlist;
class PlaylistBackend;
class PlaylistParser;
class PlaylistSequence;
class TaskManager;
class QModelIndex;
class QUrl;
@ -36,7 +37,7 @@ class PlaylistManager : public QObject {
Q_OBJECT
public:
PlaylistManager(QObject *parent = 0);
PlaylistManager(TaskManager* task_manager, QObject *parent = 0);
~PlaylistManager();
int current_id() const { return current_; }
@ -51,6 +52,7 @@ public:
void Init(LibraryBackend* library_backend, PlaylistBackend* playlist_backend,
PlaylistSequence* sequence);
TaskManager* task_manager() const { return task_manager_; }
LibraryBackend* library_backend() const { return library_backend_; }
PlaylistBackend* playlist_backend() const { return playlist_backend_; }
PlaylistSequence* sequence() const { return sequence_; }
@ -93,8 +95,6 @@ signals:
void PlaylistChanged();
void EditingFinished(const QModelIndex& index);
void PlayRequested(const QModelIndex& index);
void LoadTracksStarted();
void LoadTracksFinished();
private slots:
void UpdateSummaryText();
@ -110,6 +110,7 @@ private:
QString name;
};
TaskManager* task_manager_;
PlaylistBackend* playlist_backend_;
LibraryBackend* library_backend_;
PlaylistSequence* sequence_;

View File

@ -17,12 +17,16 @@
#include "playlist.h"
#include "songloaderinserter.h"
#include "core/songloader.h"
#include "core/taskmanager.h"
SongLoaderInserter::SongLoaderInserter(QObject *parent)
SongLoaderInserter::SongLoaderInserter(TaskManager* task_manager, QObject *parent)
: QObject(parent),
task_manager_(task_manager),
destination_(NULL),
row_(-1),
play_now_(true)
play_now_(true),
async_load_id_(0),
async_progress_(0)
{
}
@ -55,8 +59,11 @@ void SongLoaderInserter::Load(Playlist *destination, int row, bool play_now,
if (pending_.isEmpty())
Finished();
else
emit AsyncLoadStarted();
else {
async_progress_ = 0;
async_load_id_ = task_manager_->StartTask(tr("Loading tracks"));
task_manager_->SetTaskProgress(async_load_id_, async_progress_, pending_.count());
}
}
void SongLoaderInserter::PendingLoadFinished(bool success) {
@ -72,8 +79,9 @@ void SongLoaderInserter::PendingLoadFinished(bool success) {
loader->deleteLater();
task_manager_->SetTaskProgress(async_load_id_, ++async_progress_);
if (pending_.isEmpty()) {
emit AsyncLoadFinished();
task_manager_->SetTaskFinished(async_load_id_);
Finished();
}
}

View File

@ -25,21 +25,20 @@
class Playlist;
class SongLoader;
class TaskManager;
class QModelIndex;
class SongLoaderInserter : public QObject {
Q_OBJECT
public:
SongLoaderInserter(QObject* parent = 0);
SongLoaderInserter(TaskManager* task_manager, QObject* parent = 0);
~SongLoaderInserter();
void Load(Playlist* destination, int row, bool play_now, const QList<QUrl>& urls);
signals:
void Error(const QString& message);
void AsyncLoadStarted();
void AsyncLoadFinished();
void PlayRequested(const QModelIndex& index);
private slots:
@ -49,6 +48,8 @@ private:
void Finished();
private:
TaskManager* task_manager_;
Playlist* destination_;
int row_;
bool play_now_;
@ -56,6 +57,8 @@ private:
SongList songs_;
QSet<SongLoader*> pending_;
int async_load_id_;
int async_progress_;
};
#endif // SONGLOADERINSERTER_H

View File

@ -20,6 +20,7 @@
#include "radiomodel.h"
#include "core/networkaccessmanager.h"
#include "core/song.h"
#include "core/taskmanager.h"
#include "ui/iconloader.h"
#include "ui/settingsdialog.h"
@ -55,6 +56,7 @@ LastFMService::LastFMService(RadioModel* parent)
station_dialog_(new LastFMStationDialog),
context_menu_(new QMenu),
initial_tune_(false),
tune_task_id_(0),
scrobbling_enabled_(false),
artist_list_(NULL),
tag_list_(NULL),
@ -287,7 +289,8 @@ PlaylistItem::SpecialLoadResult LastFMService::StartLoading(const QUrl& url) {
if (!IsAuthenticated())
return PlaylistItem::SpecialLoadResult();
emit TaskStarted(MultiLoadingIndicator::LoadingLastFM);
if (!tune_task_id_)
tune_task_id_ = model()->task_manager()->StartTask(tr("Loading Last.fm radio"));
last_url_ = url;
initial_tune_ = true;
@ -332,7 +335,8 @@ void LastFMService::TunerError(lastfm::ws::Error error) {
if (!initial_tune_)
return;
emit TaskFinished(MultiLoadingIndicator::LoadingLastFM);
model()->task_manager()->SetTaskFinished(tune_task_id_);
tune_task_id_ = 0;
if (error == lastfm::ws::NotEnoughContent) {
emit AsyncLoadFinished(PlaylistItem::SpecialLoadResult(
@ -616,7 +620,8 @@ void LastFMService::FetchMoreTracksFinished() {
return;
}
reply->deleteLater();
emit TaskFinished(MultiLoadingIndicator::LoadingLastFM);
model()->task_manager()->SetTaskFinished(tune_task_id_);
tune_task_id_ = 0;
try {
const XmlQuery& query = lastfm::ws::parse(reply);

View File

@ -167,6 +167,7 @@ class LastFMService : public RadioService {
QUrl last_url_;
bool initial_tune_;
int tune_task_id_;
bool scrobbling_enabled_;
bool buttons_visible_;

View File

@ -21,6 +21,7 @@
#include "core/mergedproxymodel.h"
#include "core/networkaccessmanager.h"
#include "core/song.h"
#include "core/taskmanager.h"
#include "library/librarymodel.h"
#include "library/librarybackend.h"
#include "library/libraryfilterwidget.h"
@ -63,6 +64,7 @@ MagnatuneService::MagnatuneService(RadioModel* parent)
library_model_(NULL),
library_filter_(NULL),
library_sort_model_(new QSortFilterProxyModel(this)),
load_database_task_id_(0),
membership_(Membership_None),
format_(Format_Ogg),
total_song_count_(0),
@ -151,13 +153,17 @@ void MagnatuneService::ReloadDatabase() {
QNetworkReply* reply = network_->get(request);
connect(reply, SIGNAL(finished()), SLOT(ReloadDatabaseFinished()));
emit TaskStarted(MultiLoadingIndicator::LoadingMagnatune);
if (!load_database_task_id_)
load_database_task_id_ = model()->task_manager()->StartTask(
tr("Downloading Magnatune catalogue"));
}
void MagnatuneService::ReloadDatabaseFinished() {
QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
emit TaskFinished(MultiLoadingIndicator::LoadingMagnatune);
model()->task_manager()->SetTaskFinished(load_database_task_id_);
load_database_task_id_ = 0;
root_->lazy_loaded = true;
if (reply->error() != QNetworkReply::NoError) {

View File

@ -112,6 +112,7 @@ class MagnatuneService : public RadioService {
LibraryModel* library_model_;
LibraryFilterWidget* library_filter_;
QSortFilterProxyModel* library_sort_model_;
int load_database_task_id_;
MembershipType membership_;
QString username_;

View File

@ -29,11 +29,13 @@
QMap<QString, RadioService*> RadioModel::sServices;
RadioModel::RadioModel(BackgroundThread<Database>* db_thread,
NetworkAccessManager* network, QObject* parent)
NetworkAccessManager* network, TaskManager* task_manager,
QObject* parent)
: SimpleTreeModel<RadioItem>(new RadioItem(this), parent),
db_thread_(db_thread),
merged_model_(new MergedProxyModel(this)),
network_(network),
task_manager_(task_manager),
settings_dialog_(NULL)
{
Q_ASSERT(sServices.isEmpty());
@ -51,8 +53,6 @@ void RadioModel::AddService(RadioService *service) {
sServices[service->name()] = service;
service->CreateRootItem(root_);
connect(service, SIGNAL(TaskStarted(MultiLoadingIndicator::TaskType)), SIGNAL(TaskStarted(MultiLoadingIndicator::TaskType)));
connect(service, SIGNAL(TaskFinished(MultiLoadingIndicator::TaskType)), SIGNAL(TaskFinished(MultiLoadingIndicator::TaskType)));
connect(service, SIGNAL(AsyncLoadFinished(PlaylistItem::SpecialLoadResult)), SIGNAL(AsyncLoadFinished(PlaylistItem::SpecialLoadResult)));
connect(service, SIGNAL(StreamError(QString)), SIGNAL(StreamError(QString)));
connect(service, SIGNAL(StreamMetadataFound(QUrl,Song)), SIGNAL(StreamMetadataFound(QUrl,Song)));

View File

@ -24,19 +24,21 @@
#include "playlist/playlistitem.h"
#include "widgets/multiloadingindicator.h"
class NetworkAccessManager;
class RadioService;
class Database;
class LastFMService;
class MergedProxyModel;
class Database;
class NetworkAccessManager;
class RadioService;
class SettingsDialog;
class TaskManager;
class RadioModel : public SimpleTreeModel<RadioItem> {
Q_OBJECT
public:
RadioModel(BackgroundThread<Database>* db_thread,
NetworkAccessManager* network, QObject* parent = 0);
NetworkAccessManager* network, TaskManager* task_manager,
QObject* parent = 0);
enum {
Role_Type = Qt::UserRole + 1,
@ -74,11 +76,10 @@ class RadioModel : public SimpleTreeModel<RadioItem> {
BackgroundThread<Database>* db_thread() const { return db_thread_; }
MergedProxyModel* merged_model() const { return merged_model_; }
NetworkAccessManager* network() const { return network_; }
TaskManager* task_manager() const { return task_manager_; }
SettingsDialog* settings_dialog() const { return settings_dialog_; }
signals:
void TaskStarted(MultiLoadingIndicator::TaskType);
void TaskFinished(MultiLoadingIndicator::TaskType);
void AsyncLoadFinished(const PlaylistItem::SpecialLoadResult& result);
void StreamError(const QString& message);
void StreamMetadataFound(const QUrl& original_url, const Song& song);
@ -98,6 +99,7 @@ class RadioModel : public SimpleTreeModel<RadioItem> {
BackgroundThread<Database>* db_thread_;
MergedProxyModel* merged_model_;
NetworkAccessManager* network_;
TaskManager* task_manager_;
SettingsDialog* settings_dialog_;
};

View File

@ -62,9 +62,6 @@ class RadioService : public QObject {
virtual QString Icon() { return QString(); }
signals:
void TaskStarted(MultiLoadingIndicator::TaskType);
void TaskFinished(MultiLoadingIndicator::TaskType);
void AsyncLoadFinished(const PlaylistItem::SpecialLoadResult& result);
void StreamError(const QString& message);
void StreamMetadataFound(const QUrl& original_url, const Song& song);

View File

@ -17,6 +17,7 @@
#include "somafmservice.h"
#include "radiomodel.h"
#include "core/networkaccessmanager.h"
#include "core/taskmanager.h"
#include "ui/iconloader.h"
#include <QNetworkAccessManager>
@ -38,6 +39,8 @@ SomaFMService::SomaFMService(RadioModel* parent)
: RadioService(kServiceName, parent),
root_(NULL),
context_menu_(new QMenu),
get_channels_task_id_(0),
get_stream_task_id_(0),
network_(parent->network()->network())
{
context_menu_->addAction(IconLoader::Load("media-playback-start"), tr("Add to playlist"), this, SLOT(AddToPlaylist()));
@ -84,7 +87,8 @@ PlaylistItem::SpecialLoadResult SomaFMService::StartLoading(const QUrl& url) {
QNetworkReply* reply = network_->get(request);
connect(reply, SIGNAL(finished()), SLOT(LoadPlaylistFinished()));
emit TaskStarted(MultiLoadingIndicator::LoadingStream);
if (!get_stream_task_id_)
get_stream_task_id_ = model()->task_manager()->StartTask(tr("Loading stream"));
return PlaylistItem::SpecialLoadResult(
PlaylistItem::SpecialLoadResult::WillLoadAsynchronously, url);
@ -92,7 +96,8 @@ PlaylistItem::SpecialLoadResult SomaFMService::StartLoading(const QUrl& url) {
void SomaFMService::LoadPlaylistFinished() {
QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
emit TaskFinished(MultiLoadingIndicator::LoadingStream);
model()->task_manager()->SetTaskFinished(get_stream_task_id_);
get_stream_task_id_ = 0;
QUrl original_url(reply->url());
@ -126,12 +131,14 @@ void SomaFMService::RefreshChannels() {
QNetworkReply* reply = network_->get(request);
connect(reply, SIGNAL(finished()), SLOT(RefreshChannelsFinished()));
emit TaskStarted(MultiLoadingIndicator::GettingChannels);
if (!get_channels_task_id_)
get_channels_task_id_ = model()->task_manager()->StartTask(tr("Getting channels"));
}
void SomaFMService::RefreshChannelsFinished() {
QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
emit TaskFinished(MultiLoadingIndicator::GettingChannels);
model()->task_manager()->SetTaskFinished(get_channels_task_id_);
get_channels_task_id_ = 0;
if (reply->error() != QNetworkReply::NoError) {
// TODO: Error handling

View File

@ -66,6 +66,9 @@ class SomaFMService : public RadioService {
QMenu* context_menu_;
RadioItem* context_item_;
int get_channels_task_id_;
int get_stream_task_id_;
QNetworkAccessManager* network_;
};

View File

@ -181,6 +181,9 @@ msgstr "مكتبتك فارغة!"
msgid "Click here to add some music"
msgstr "اضغط هنا لإضافة بعض الموسيقى"
msgid "Updating library"
msgstr ""
msgid "Title"
msgstr "العنوان"
@ -351,6 +354,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -429,6 +435,9 @@ msgstr ""
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Invalid service"
msgstr "خدمة غير متاحة"
@ -539,6 +548,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr ""
@ -557,6 +569,12 @@ msgstr ""
msgid "Refresh channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Start transcoding"
msgstr ""
@ -770,27 +788,6 @@ msgstr ""
msgid "Drag to reposition"
msgstr ""
msgid "Loading audio engine"
msgstr ""
msgid "Updating library"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""

View File

@ -182,6 +182,9 @@ msgstr "Vaše knihovna je prázdná!"
msgid "Click here to add some music"
msgstr "Zde klikněte pro řidání hudby"
msgid "Updating library"
msgstr "Aktualizuji knihovnu"
msgid "Title"
msgstr "Titulek"
@ -352,6 +355,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -430,6 +436,9 @@ msgstr ""
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr "Načítám rádio Last.fm"
msgid "Invalid service"
msgstr "Neplatná služba"
@ -540,6 +549,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr "Služba rádia nemohla být načtena :-("
@ -558,6 +570,12 @@ msgstr "Otevřít soma.fm v prohlížeči"
msgid "Refresh channels"
msgstr "Obnovit kanály"
msgid "Loading stream"
msgstr "Načítám kanál"
msgid "Getting channels"
msgstr "Získávám kanály"
msgid "Start transcoding"
msgstr ""
@ -772,27 +790,6 @@ msgstr "OSD náhled"
msgid "Drag to reposition"
msgstr "Přemístit přetažením"
msgid "Loading audio engine"
msgstr "Načítá se podpora audia"
msgid "Updating library"
msgstr "Aktualizuji knihovnu"
msgid "Getting channels"
msgstr "Získávám kanály"
msgid "Loading stream"
msgstr "Načítám kanál"
msgid "Loading Last.fm radio"
msgstr "Načítám rádio Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1533,6 +1530,9 @@ msgstr ""
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Načítá se podpora audia"
#~ msgid "Show section"
#~ msgstr "Zobrazit skeci"

View File

@ -184,6 +184,9 @@ msgstr "Dit bibliotek er tomt!"
msgid "Click here to add some music"
msgstr "Klik her for at tilføje musik"
msgid "Updating library"
msgstr "Opdaterer bibliotek"
msgid "Title"
msgstr "Titel"
@ -354,6 +357,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -432,6 +438,9 @@ msgstr "Last.fm kunstnere der minder om %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Last.fm mærkeradio: %1"
msgid "Loading Last.fm radio"
msgstr "Indlæser Last.fm-radio"
msgid "Invalid service"
msgstr "Ugyldig tjeneste"
@ -542,6 +551,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr "Radiotjeneste kunne ikke indlæses :-("
@ -560,6 +572,12 @@ msgstr "Åbn somafm.com i webbrowser"
msgid "Refresh channels"
msgstr "Genopfrisk kanaler"
msgid "Loading stream"
msgstr "Indlæser stream"
msgid "Getting channels"
msgstr "Henter kanaler"
msgid "Start transcoding"
msgstr ""
@ -775,27 +793,6 @@ msgstr "Forhåndsvisning af OSD"
msgid "Drag to reposition"
msgstr "Træk for at skifte position"
msgid "Loading audio engine"
msgstr "Indlæser lydmotor"
msgid "Updating library"
msgstr "Opdaterer bibliotek"
msgid "Getting channels"
msgstr "Henter kanaler"
msgid "Loading stream"
msgstr "Indlæser stream"
msgid "Loading Last.fm radio"
msgstr "Indlæser Last.fm-radio"
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1536,6 +1533,9 @@ msgstr ""
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Indlæser lydmotor"
#~ msgid "Copy to library..."
#~ msgstr "Kopiér til bibliotek..."

View File

@ -181,6 +181,9 @@ msgstr "Ihre Musiksammlung ist leer!"
msgid "Click here to add some music"
msgstr "Klicken Sie hier um das zu ändern"
msgid "Updating library"
msgstr "Aktualisiere Musiksammlung"
msgid "Title"
msgstr "Titel"
@ -352,6 +355,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr "%1 Wiedergabelisten (%2)"
@ -430,6 +436,9 @@ msgstr "Last.fm Ähnliche Künstler wie %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Last.fm Tag Radio: %1"
msgid "Loading Last.fm radio"
msgstr "Last.fm Radio wird geladen"
msgid "Invalid service"
msgstr "Ungültiger Service"
@ -540,6 +549,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr "Magnatune durchsuchen"
msgid "Downloading Magnatune catalogue"
msgstr "Magnatune Katalog wird geladen"
msgid "Radio service couldn't be loaded :-("
msgstr "Radioservice konnte nicht geladen werden"
@ -558,6 +570,12 @@ msgstr "somafm.com im Browser öffnen"
msgid "Refresh channels"
msgstr "Channels neu laden"
msgid "Loading stream"
msgstr "Lade Stream"
msgid "Getting channels"
msgstr "Lade Channels"
msgid "Start transcoding"
msgstr "Konvertieren"
@ -774,27 +792,6 @@ msgstr "OSD Vorschau"
msgid "Drag to reposition"
msgstr "Klicken und ziehen um die Position zu ändern"
msgid "Loading audio engine"
msgstr "Audio Engine wird geladen"
msgid "Updating library"
msgstr "Aktualisiere Musiksammlung"
msgid "Getting channels"
msgstr "Lade Channels"
msgid "Loading stream"
msgstr "Lade Stream"
msgid "Loading Last.fm radio"
msgstr "Last.fm Radio wird geladen"
msgid "Downloading Magnatune catalogue"
msgstr "Magnatune Katalog wird geladen"
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1537,6 +1534,9 @@ msgstr "Von der Liste wählen"
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Audio Engine wird geladen"
#~ msgid "Show section"
#~ msgstr "Spalten"

View File

@ -183,6 +183,9 @@ msgstr "Η βιβλιοθήκη σας είναι άδεια!"
msgid "Click here to add some music"
msgstr "Κλικ εδώ για να προσθέσετε μουσική"
msgid "Updating library"
msgstr "Ενημέρωση λίστας"
msgid "Title"
msgstr "Τίτλος"
@ -355,6 +358,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr "%1 λίστες αναπαραγωγής (%2)"
@ -433,6 +439,9 @@ msgstr "Καλλιτέχνες του Last.fm όμοιοι με %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Εττικέτες ραδιοφώνου του Last.fm: %1"
msgid "Loading Last.fm radio"
msgstr "Φόρτωμα Last.fm"
msgid "Invalid service"
msgstr "Εσφαλμένη υπηρεσία"
@ -543,6 +552,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr "Εύρεση στο Magnatune"
msgid "Downloading Magnatune catalogue"
msgstr "Μεταφόρτωση καταλόγου του Magnatune"
msgid "Radio service couldn't be loaded :-("
msgstr "Η υπηρεσίες ραδιοφώνου απέτυχαν να φορτωθούν :-("
@ -561,6 +573,12 @@ msgstr "Άνοιγμα του somafm.com στον περιηγητή"
msgid "Refresh channels"
msgstr "Ανανέωση καναλιών"
msgid "Loading stream"
msgstr "Φόρτωμα ροής (stream)"
msgid "Getting channels"
msgstr "Λήψη καναλιών"
msgid "Start transcoding"
msgstr "Εκκίνηση επανακωδικοποίησης"
@ -777,27 +795,6 @@ msgstr "Προ-επισκόπηση OSD"
msgid "Drag to reposition"
msgstr "Σύρετε για μετακίνηση"
msgid "Loading audio engine"
msgstr "Φόρτωμα της μηχανής ήχου"
msgid "Updating library"
msgstr "Ενημέρωση λίστας"
msgid "Getting channels"
msgstr "Λήψη καναλιών"
msgid "Loading stream"
msgstr "Φόρτωμα ροής (stream)"
msgid "Loading Last.fm radio"
msgstr "Φόρτωμα Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr "Μεταφόρτωση καταλόγου του Magnatune"
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1539,6 +1536,9 @@ msgstr "Επιλογή από τη λίστα"
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Φόρτωμα της μηχανής ήχου"
#~ msgid "Show section"
#~ msgstr "Εμφάνιση τμήματος"

View File

@ -181,6 +181,9 @@ msgstr "Your library is empty!"
msgid "Click here to add some music"
msgstr "Click here to add some music"
msgid "Updating library"
msgstr "Updating library"
msgid "Title"
msgstr "Title"
@ -352,6 +355,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr "%1 playlists (%2)"
@ -430,6 +436,9 @@ msgstr "Last.fm Similar Artists to %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Last.fm Tag Radio: %1"
msgid "Loading Last.fm radio"
msgstr "Loading Last.fm radio"
msgid "Invalid service"
msgstr "Invalid service"
@ -540,6 +549,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr "Search Magnatune"
msgid "Downloading Magnatune catalogue"
msgstr "Downloading Magnatune catalogue"
msgid "Radio service couldn't be loaded :-("
msgstr "Radio service couldn't be loaded :-("
@ -558,6 +570,12 @@ msgstr "Open somafm.com in browser"
msgid "Refresh channels"
msgstr "Refresh channels"
msgid "Loading stream"
msgstr "Loading stream"
msgid "Getting channels"
msgstr "Getting channels"
msgid "Start transcoding"
msgstr "Start transcoding"
@ -774,27 +792,6 @@ msgstr "OSD Preview"
msgid "Drag to reposition"
msgstr "Drag to reposition"
msgid "Loading audio engine"
msgstr "Loading audio engine"
msgid "Updating library"
msgstr "Updating library"
msgid "Getting channels"
msgstr "Getting channels"
msgid "Loading stream"
msgstr "Loading stream"
msgid "Loading Last.fm radio"
msgstr "Loading Last.fm radio"
msgid "Downloading Magnatune catalogue"
msgstr "Downloading Magnatune catalogue"
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1534,6 +1531,9 @@ msgstr ""
msgid "Delay between visualizations"
msgstr "Delay between visualisations"
#~ msgid "Loading audio engine"
#~ msgstr "Loading audio engine"
#~ msgid "Show section"
#~ msgstr "Show section"

View File

@ -181,6 +181,9 @@ msgstr "Your library is empty!"
msgid "Click here to add some music"
msgstr "Click here to add some music"
msgid "Updating library"
msgstr "Updating library"
msgid "Title"
msgstr "Title"
@ -351,6 +354,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -429,6 +435,9 @@ msgstr "Last.fm Similar Artists to %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Last.fm Tag Radio: %1"
msgid "Loading Last.fm radio"
msgstr "Loading Last.fm radio"
msgid "Invalid service"
msgstr "Invalid service"
@ -539,6 +548,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr "Radio service couldn't be loaded :-("
@ -557,6 +569,12 @@ msgstr "Open somafm.com in browser"
msgid "Refresh channels"
msgstr "Refresh channels"
msgid "Loading stream"
msgstr "Loading stream"
msgid "Getting channels"
msgstr "Getting channels"
msgid "Start transcoding"
msgstr ""
@ -771,27 +789,6 @@ msgstr "OSD Preview"
msgid "Drag to reposition"
msgstr "Drag to reposition"
msgid "Loading audio engine"
msgstr "Loading audio engine"
msgid "Updating library"
msgstr "Updating library"
msgid "Getting channels"
msgstr "Getting channels"
msgid "Loading stream"
msgstr "Loading stream"
msgid "Loading Last.fm radio"
msgstr "Loading Last.fm radio"
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1531,6 +1528,9 @@ msgstr ""
msgid "Delay between visualizations"
msgstr "Delay between visualisations"
#~ msgid "Loading audio engine"
#~ msgstr "Loading audio engine"
#~ msgid "Show section"
#~ msgstr "Show section"

View File

@ -182,6 +182,9 @@ msgstr "¡Tu colleción está vacia!"
msgid "Click here to add some music"
msgstr "Haz clic aquí para añadir música"
msgid "Updating library"
msgstr "Actualizando colección"
msgid "Title"
msgstr "Título"
@ -354,6 +357,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr "%1 listas de reproducción (%2)"
@ -432,6 +438,9 @@ msgstr "Artistas Similares en Last.fm a %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Radio en Last.fm de la Etiqueta %1"
msgid "Loading Last.fm radio"
msgstr "Cargando radio de Last.fm"
msgid "Invalid service"
msgstr "Servicio inválido"
@ -542,6 +551,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr "Buscar en Magnatune"
msgid "Downloading Magnatune catalogue"
msgstr "Descargando el catálogo de Magnatune"
msgid "Radio service couldn't be loaded :-("
msgstr "Servicio de radio no pudo ser cargado :-("
@ -560,6 +572,12 @@ msgstr "Abrir somafm.com en el navegador"
msgid "Refresh channels"
msgstr "Actualizar canales"
msgid "Loading stream"
msgstr "Cargando flujo"
msgid "Getting channels"
msgstr "Obteniendo canales"
msgid "Start transcoding"
msgstr "Comenzar conversión"
@ -777,27 +795,6 @@ msgstr "Previsualización del OSD"
msgid "Drag to reposition"
msgstr "Arrastrar para reposicionar"
msgid "Loading audio engine"
msgstr "Cargando motor de sonido"
msgid "Updating library"
msgstr "Actualizando colección"
msgid "Getting channels"
msgstr "Obteniendo canales"
msgid "Loading stream"
msgstr "Cargando flujo"
msgid "Loading Last.fm radio"
msgstr "Cargando radio de Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr "Descargando el catálogo de Magnatune"
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1545,6 +1542,9 @@ msgstr "Elegir de la lista"
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Cargando motor de sonido"
#~ msgid "Show section"
#~ msgstr "Mostrar columna"

View File

@ -181,6 +181,9 @@ msgstr "Kirjasto on tyhjä!"
msgid "Click here to add some music"
msgstr "Paina tästä lisätäksesi musiikkia"
msgid "Updating library"
msgstr ""
msgid "Title"
msgstr "Kappale"
@ -351,6 +354,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -429,6 +435,9 @@ msgstr ""
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Invalid service"
msgstr ""
@ -539,6 +548,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr ""
@ -557,6 +569,12 @@ msgstr ""
msgid "Refresh channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Start transcoding"
msgstr ""
@ -770,27 +788,6 @@ msgstr ""
msgid "Drag to reposition"
msgstr ""
msgid "Loading audio engine"
msgstr ""
msgid "Updating library"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""

View File

@ -182,6 +182,9 @@ msgstr "Votre bibliothèque est vide !"
msgid "Click here to add some music"
msgstr "Cliquez ici pour créer votre bibliothèque musicale"
msgid "Updating library"
msgstr "Mise à jour de la bibliothèque"
msgid "Title"
msgstr "Titre"
@ -352,6 +355,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -430,6 +436,9 @@ msgstr "Artistes Last.fm similaires à %1"
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr "Chargement de la radio Last.fm"
msgid "Invalid service"
msgstr "Service invalide"
@ -542,6 +551,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr "Le service radio n'a pas pu être chargé :-("
@ -560,6 +572,12 @@ msgstr "Ouvrir somafm.com dans le navigateur"
msgid "Refresh channels"
msgstr "Mettre à jour les canaux"
msgid "Loading stream"
msgstr "Chargement du flux"
msgid "Getting channels"
msgstr "Récupération des canaux"
msgid "Start transcoding"
msgstr ""
@ -774,27 +792,6 @@ msgstr "Prévisualisation de l'affichage à l'écran (OSD)"
msgid "Drag to reposition"
msgstr "Déplacer pour repositionner"
msgid "Loading audio engine"
msgstr "Chargement du moteur audio"
msgid "Updating library"
msgstr "Mise à jour de la bibliothèque"
msgid "Getting channels"
msgstr "Récupération des canaux"
msgid "Loading stream"
msgstr "Chargement du flux"
msgid "Loading Last.fm radio"
msgstr "Chargement de la radio Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1541,6 +1538,9 @@ msgstr ""
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Chargement du moteur audio"
#~ msgid "Options"
#~ msgstr "Options"

View File

@ -181,6 +181,9 @@ msgstr "A biblioteca encontra-se vacia!"
msgid "Click here to add some music"
msgstr "Clique aqui para adicionar música"
msgid "Updating library"
msgstr "A actualizar a biblioteca"
msgid "Title"
msgstr "Título"
@ -351,6 +354,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -429,6 +435,9 @@ msgstr "Artistas da Last.fm similares com %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Tag do rádio da Last.fm: %1"
msgid "Loading Last.fm radio"
msgstr "Carregando a rádio da Last.fm"
msgid "Invalid service"
msgstr "Servizo Inválido"
@ -540,6 +549,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr "Servizo de rádio non pudo ser carregado :-("
@ -558,6 +570,12 @@ msgstr "Abrir soma.fm no navegador da internet"
msgid "Refresh channels"
msgstr "Actualizar os canais"
msgid "Loading stream"
msgstr "A carregar a stream"
msgid "Getting channels"
msgstr "Obter canais"
msgid "Start transcoding"
msgstr ""
@ -772,27 +790,6 @@ msgstr "Pré-visualizar no OSD"
msgid "Drag to reposition"
msgstr "Arraste para posicionar"
msgid "Loading audio engine"
msgstr "Carregando o sistema de áudio"
msgid "Updating library"
msgstr "A actualizar a biblioteca"
msgid "Getting channels"
msgstr "Obter canais"
msgid "Loading stream"
msgstr "A carregar a stream"
msgid "Loading Last.fm radio"
msgstr "Carregando a rádio da Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1531,6 +1528,9 @@ msgstr ""
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Carregando o sistema de áudio"
#~ msgid "Copy to library..."
#~ msgstr "Copiar para a biblioteca"

View File

@ -182,6 +182,9 @@ msgstr "La raccolta è vuota!"
msgid "Click here to add some music"
msgstr "Fai clic qui per aggiungere della musica"
msgid "Updating library"
msgstr "Aggiornamento raccolta"
msgid "Title"
msgstr "Titolo"
@ -354,6 +357,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr "%1 scalette (%2)"
@ -432,6 +438,9 @@ msgstr "Artisti simili a %1 di Last.fm"
msgid "Last.fm Tag Radio: %1"
msgstr "Radio del tag di Last.fm: %1"
msgid "Loading Last.fm radio"
msgstr "Caricamento radio Last.fm"
msgid "Invalid service"
msgstr "Servizio non valido"
@ -542,6 +551,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr "Cerca in Magnatune"
msgid "Downloading Magnatune catalogue"
msgstr "Scaricamento catalogo Magnatune"
msgid "Radio service couldn't be loaded :-("
msgstr "Il servizio radio non può essere caricato :-("
@ -560,6 +572,12 @@ msgstr "Apri somafm.com nel browser"
msgid "Refresh channels"
msgstr "Aggiorna i canali"
msgid "Loading stream"
msgstr "Caricamento flusso"
msgid "Getting channels"
msgstr "Recupero dei canali"
msgid "Start transcoding"
msgstr "Avvia transcodifica"
@ -777,27 +795,6 @@ msgstr "Anteprima OSD"
msgid "Drag to reposition"
msgstr "Trascina per riposizionare"
msgid "Loading audio engine"
msgstr "Caricamento motore audio"
msgid "Updating library"
msgstr "Aggiornamento raccolta"
msgid "Getting channels"
msgstr "Recupero dei canali"
msgid "Loading stream"
msgstr "Caricamento flusso"
msgid "Loading Last.fm radio"
msgstr "Caricamento radio Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr "Scaricamento catalogo Magnatune"
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1542,6 +1539,9 @@ msgstr "Scegli dall'elenco"
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Caricamento motore audio"
#~ msgid "Show section"
#~ msgstr "Mostra sezione"

View File

@ -181,6 +181,9 @@ msgstr ""
msgid "Click here to add some music"
msgstr ""
msgid "Updating library"
msgstr ""
msgid "Title"
msgstr "Аталуы"
@ -351,6 +354,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -429,6 +435,9 @@ msgstr ""
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Invalid service"
msgstr ""
@ -539,6 +548,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr ""
@ -557,6 +569,12 @@ msgstr ""
msgid "Refresh channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Start transcoding"
msgstr ""
@ -772,27 +790,6 @@ msgstr ""
msgid "Drag to reposition"
msgstr ""
msgid "Loading audio engine"
msgstr ""
msgid "Updating library"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""

View File

@ -181,6 +181,9 @@ msgstr "Ditt bibliotek er tomt!"
msgid "Click here to add some music"
msgstr "Klikk her for å legge til litt musikk"
msgid "Updating library"
msgstr "Oppdaterer bibliotek"
msgid "Title"
msgstr "Tittel"
@ -351,6 +354,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -429,6 +435,9 @@ msgstr ""
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr "Laster inn Last.fm radio"
msgid "Invalid service"
msgstr "Ukjent tjeneste"
@ -539,6 +548,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr "Kunne ikke laste inn radiotjeneste :-("
@ -557,6 +569,12 @@ msgstr "Hent somafm.com i en nettleser"
msgid "Refresh channels"
msgstr "Hent kanaler på ny"
msgid "Loading stream"
msgstr "Lader lydstrøm"
msgid "Getting channels"
msgstr "Henter kanaler"
msgid "Start transcoding"
msgstr ""
@ -772,27 +790,6 @@ msgstr "Forhåndsvisning av notifikasjon"
msgid "Drag to reposition"
msgstr "Dra for å endre posisjon"
msgid "Loading audio engine"
msgstr "Laster lydmotor"
msgid "Updating library"
msgstr "Oppdaterer bibliotek"
msgid "Getting channels"
msgstr "Henter kanaler"
msgid "Loading stream"
msgstr "Lader lydstrøm"
msgid "Loading Last.fm radio"
msgstr "Laster inn Last.fm radio"
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1533,6 +1530,9 @@ msgstr ""
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Laster lydmotor"
#~ msgid "Copy to library..."
#~ msgstr "Kopier til bibliotek..."

View File

@ -181,6 +181,9 @@ msgstr ""
msgid "Click here to add some music"
msgstr ""
msgid "Updating library"
msgstr ""
msgid "Title"
msgstr "Títol"
@ -351,6 +354,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -429,6 +435,9 @@ msgstr ""
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr "Cargament de la ràdio Last.fm"
msgid "Invalid service"
msgstr ""
@ -539,6 +548,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr ""
@ -557,6 +569,12 @@ msgstr ""
msgid "Refresh channels"
msgstr ""
msgid "Loading stream"
msgstr "Cargament del flux"
msgid "Getting channels"
msgstr ""
msgid "Start transcoding"
msgstr ""
@ -770,27 +788,6 @@ msgstr ""
msgid "Drag to reposition"
msgstr ""
msgid "Loading audio engine"
msgstr ""
msgid "Updating library"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Loading stream"
msgstr "Cargament del flux"
msgid "Loading Last.fm radio"
msgstr "Cargament de la ràdio Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""

View File

@ -182,6 +182,9 @@ msgstr "Biblioteka jest pusta!"
msgid "Click here to add some music"
msgstr "Kliknij aby dodać jakąś muzykę"
msgid "Updating library"
msgstr "Aktualizowanie biblioteki"
msgid "Title"
msgstr "Nazwa"
@ -352,6 +355,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -430,6 +436,9 @@ msgstr ""
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr "Ładowanie radia Last.fm"
msgid "Invalid service"
msgstr "Błędna usługa"
@ -540,6 +549,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr "Usługa radio nie może być załadowana :-("
@ -558,6 +570,12 @@ msgstr "Otwórz somafm.com w przeglądarce"
msgid "Refresh channels"
msgstr "Odśwież kanały"
msgid "Loading stream"
msgstr "Ładowanie strumienia"
msgid "Getting channels"
msgstr "Pobieranie kanałów"
msgid "Start transcoding"
msgstr ""
@ -772,27 +790,6 @@ msgstr "Podgląd OSD"
msgid "Drag to reposition"
msgstr "Przeciągnij aby zmienić pozycję"
msgid "Loading audio engine"
msgstr "Ładowanie silnika dźwięku"
msgid "Updating library"
msgstr "Aktualizowanie biblioteki"
msgid "Getting channels"
msgstr "Pobieranie kanałów"
msgid "Loading stream"
msgstr "Ładowanie strumienia"
msgid "Loading Last.fm radio"
msgstr "Ładowanie radia Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1531,6 +1528,9 @@ msgstr ""
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Ładowanie silnika dźwięku"
#~ msgid "Copy to library..."
#~ msgstr "Skopiuj do biblioteki..."

View File

@ -181,6 +181,9 @@ msgstr "A biblioteca está vazia!"
msgid "Click here to add some music"
msgstr "Clique aqui para adicionar música"
msgid "Updating library"
msgstr "A actualizar a biblioteca"
msgid "Title"
msgstr "Título"
@ -353,6 +356,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr "%1 listas de reprodução (%2)"
@ -431,6 +437,9 @@ msgstr "Artistas Similares a %1 na Last.fm"
msgid "Last.fm Tag Radio: %1"
msgstr "Tag da Rádio Last.fm: %1"
msgid "Loading Last.fm radio"
msgstr "Carregando a rádio Last.fm"
msgid "Invalid service"
msgstr "Serviço inválido"
@ -541,6 +550,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr "Procurar na Magnatune"
msgid "Downloading Magnatune catalogue"
msgstr "Transferindo Catálogo Magnatune"
msgid "Radio service couldn't be loaded :-("
msgstr "Serviço de rádio não pode ser carregado :-("
@ -559,6 +571,12 @@ msgstr "Abrir soma.fm no navegador"
msgid "Refresh channels"
msgstr "Actualizar os canais"
msgid "Loading stream"
msgstr "A carregar emissão"
msgid "Getting channels"
msgstr "A obter canais"
msgid "Start transcoding"
msgstr "Iniciar conversão"
@ -775,27 +793,6 @@ msgstr "Antevisão OSD"
msgid "Drag to reposition"
msgstr "Arraste para posicionar"
msgid "Loading audio engine"
msgstr "Carregando o sistema de áudio"
msgid "Updating library"
msgstr "A actualizar a biblioteca"
msgid "Getting channels"
msgstr "A obter canais"
msgid "Loading stream"
msgstr "A carregar emissão"
msgid "Loading Last.fm radio"
msgstr "Carregando a rádio Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr "Transferindo Catálogo Magnatune"
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1536,6 +1533,9 @@ msgstr "Escolher da lista"
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Carregando o sistema de áudio"
#~ msgid "Show section"
#~ msgstr "Mostrar secção"

View File

@ -181,6 +181,9 @@ msgstr "A biblioteca está vazia!"
msgid "Click here to add some music"
msgstr "Clique aqui para adicionar algumas músicas"
msgid "Updating library"
msgstr "Atualizando biblioteca"
msgid "Title"
msgstr "Tí­tulo"
@ -353,6 +356,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr "%1 listas de reprodução (%2)"
@ -431,6 +437,9 @@ msgstr "Artistas Last.fm Similares a %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Rádio de Marcação Last.fm: %1"
msgid "Loading Last.fm radio"
msgstr "Carregando rádio Last.fm"
msgid "Invalid service"
msgstr "Serviço inválido"
@ -543,6 +552,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr "Procurar Magnatune"
msgid "Downloading Magnatune catalogue"
msgstr "Baixando catálogo da Magnatune"
msgid "Radio service couldn't be loaded :-("
msgstr "O serviço de rádio não pôde ser carregado :-("
@ -561,6 +573,12 @@ msgstr "Abrir somafm.com no navegador"
msgid "Refresh channels"
msgstr "Atualizar canais"
msgid "Loading stream"
msgstr "Carregando transmissão"
msgid "Getting channels"
msgstr "Adquirindo canais"
msgid "Start transcoding"
msgstr "Começar transcodificação"
@ -777,27 +795,6 @@ msgstr "Pré-visualização de informações na tela"
msgid "Drag to reposition"
msgstr "Arraste para reposicionar"
msgid "Loading audio engine"
msgstr "Carregando mecanismo de áudio"
msgid "Updating library"
msgstr "Atualizando biblioteca"
msgid "Getting channels"
msgstr "Adquirindo canais"
msgid "Loading stream"
msgstr "Carregando transmissão"
msgid "Loading Last.fm radio"
msgstr "Carregando rádio Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr "Baixando catálogo da Magnatune"
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1539,6 +1536,9 @@ msgstr "Escolher da lista"
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Carregando mecanismo de áudio"
#~ msgid "Show section"
#~ msgstr "Mostrar sessão"

View File

@ -181,6 +181,9 @@ msgstr "Biblioteca este goală!"
msgid "Click here to add some music"
msgstr "Clic aici pentru a adăuga muzică"
msgid "Updating library"
msgstr "Se actualizează biblioteca"
msgid "Title"
msgstr "Titlu"
@ -351,6 +354,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -429,6 +435,9 @@ msgstr "Artiști Last.fm similari cu %1"
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr "Se încarcă radio Last.fm"
msgid "Invalid service"
msgstr "Serviciu invalid"
@ -539,6 +548,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr "Serviciul de radio nu a putut fi încărcat :-("
@ -557,6 +569,12 @@ msgstr "Deschide somafm.com în browser"
msgid "Refresh channels"
msgstr "Reîncarcă canalele"
msgid "Loading stream"
msgstr "Se încarcă fluxul"
msgid "Getting channels"
msgstr "Se preiau canalele"
msgid "Start transcoding"
msgstr ""
@ -771,27 +789,6 @@ msgstr "Previzualizare OSD"
msgid "Drag to reposition"
msgstr "Trage pentru a repoziționa"
msgid "Loading audio engine"
msgstr "Se încarcă motorul audio"
msgid "Updating library"
msgstr "Se actualizează biblioteca"
msgid "Getting channels"
msgstr "Se preiau canalele"
msgid "Loading stream"
msgstr "Se încarcă fluxul"
msgid "Loading Last.fm radio"
msgstr "Se încarcă radio Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1530,6 +1527,9 @@ msgstr ""
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Se încarcă motorul audio"
#~ msgid "Copy to library..."
#~ msgstr "Copiază în bibliotecă..."

View File

@ -180,6 +180,9 @@ msgstr "Ваша коллекция пуста!"
msgid "Click here to add some music"
msgstr "Щелкните здесь, чтобы добавить музыку"
msgid "Updating library"
msgstr "Обновление библиотеки"
msgid "Title"
msgstr "Название"
@ -352,6 +355,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr "%1 списков воспроизведения (%2)"
@ -430,6 +436,9 @@ msgstr "Похожие исполнители Last.fm на %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Радио тегов Last.fm: %1"
msgid "Loading Last.fm radio"
msgstr "Загрузка радио Last.fm"
msgid "Invalid service"
msgstr "Неправильная служба"
@ -540,6 +549,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr "Искать на Magnatune"
msgid "Downloading Magnatune catalogue"
msgstr "Скачать каталог Magnatune"
msgid "Radio service couldn't be loaded :-("
msgstr "Сервис радио не запустился =("
@ -558,6 +570,12 @@ msgstr "Открыть somafm.com в браузере"
msgid "Refresh channels"
msgstr "Обновить каналы"
msgid "Loading stream"
msgstr "Загрузка потока"
msgid "Getting channels"
msgstr "Получение каналов"
msgid "Start transcoding"
msgstr "Начать перекодирование"
@ -775,27 +793,6 @@ msgstr "Предпросмотр OSD"
msgid "Drag to reposition"
msgstr "Тащите для перемещения"
msgid "Loading audio engine"
msgstr "Загрузка движка аудио"
msgid "Updating library"
msgstr "Обновление библиотеки"
msgid "Getting channels"
msgstr "Получение каналов"
msgid "Loading stream"
msgstr "Загрузка потока"
msgid "Loading Last.fm radio"
msgstr "Загрузка радио Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr "Скачать каталог Magnatune"
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1536,6 +1533,9 @@ msgstr "Выбор из списка"
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Загрузка движка аудио"
#~ msgid "Show section"
#~ msgstr "Показать секцию"

View File

@ -182,6 +182,9 @@ msgstr "Vaša zbierka je prázdna!"
msgid "Click here to add some music"
msgstr "Kliknite sem aby ste pridali nejakú hudbu"
msgid "Updating library"
msgstr "Aktualizovanie zbierky"
msgid "Title"
msgstr "Názov"
@ -353,6 +356,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr "%1 playlisty (%2)"
@ -431,6 +437,9 @@ msgstr "Podobný interprét ako %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Rádio tagu: %1"
msgid "Loading Last.fm radio"
msgstr "Načítava sa Last.fm rádio"
msgid "Invalid service"
msgstr "Nefunkčná služba"
@ -541,6 +550,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr "Hľadať v Magnatune"
msgid "Downloading Magnatune catalogue"
msgstr "Sťahovanie Magnatune katalógu"
msgid "Radio service couldn't be loaded :-("
msgstr "Služba rádia sa nedá načítať :-("
@ -559,6 +571,12 @@ msgstr "Otvoriť somafm.com v prehliadači"
msgid "Refresh channels"
msgstr "Obnoviť kanály"
msgid "Loading stream"
msgstr "Načítava sa stream"
msgid "Getting channels"
msgstr "Preberanie kanálov"
msgid "Start transcoding"
msgstr "Začať transkódovanie"
@ -775,27 +793,6 @@ msgstr "OSD náhľad"
msgid "Drag to reposition"
msgstr "Pretiahnite na iné miesto"
msgid "Loading audio engine"
msgstr "Načítava sa zvukový engine"
msgid "Updating library"
msgstr "Aktualizovanie zbierky"
msgid "Getting channels"
msgstr "Preberanie kanálov"
msgid "Loading stream"
msgstr "Načítava sa stream"
msgid "Loading Last.fm radio"
msgstr "Načítava sa Last.fm rádio"
msgid "Downloading Magnatune catalogue"
msgstr "Sťahovanie Magnatune katalógu"
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1536,6 +1533,9 @@ msgstr "Vybrať zo zoznamu"
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Načítava sa zvukový engine"
#~ msgid "Show section"
#~ msgstr "Zobraziť stĺpec"

View File

@ -181,6 +181,9 @@ msgstr "Ditt bibliotek är tomt!"
msgid "Click here to add some music"
msgstr "Klicka här för att lägga till musik"
msgid "Updating library"
msgstr "Uppdaterar bibliotek"
msgid "Title"
msgstr "Titel"
@ -351,6 +354,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr "%1 spellistor (%2)"
@ -429,6 +435,9 @@ msgstr "Last.fm Artister som liknar %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Last.fm Taggradio: %1"
msgid "Loading Last.fm radio"
msgstr "Laddar Last.fm radio"
msgid "Invalid service"
msgstr "Ogiltig tjänst"
@ -539,6 +548,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr "Sök Magnatune"
msgid "Downloading Magnatune catalogue"
msgstr "Hämtar katalog från Magnatune"
msgid "Radio service couldn't be loaded :-("
msgstr "Radiotjänsten kunde inte laddas :-("
@ -557,6 +569,12 @@ msgstr "Öppna somafm.com i en webbläsare"
msgid "Refresh channels"
msgstr "Uppdatera kanaler"
msgid "Loading stream"
msgstr "Laddar ström"
msgid "Getting channels"
msgstr "Hämtar kanaler"
msgid "Start transcoding"
msgstr "Starta omkondning"
@ -773,27 +791,6 @@ msgstr "OSD förhandsgranskning"
msgid "Drag to reposition"
msgstr "Dra för att ändra position"
msgid "Loading audio engine"
msgstr "Laddar audiomotor"
msgid "Updating library"
msgstr "Uppdaterar bibliotek"
msgid "Getting channels"
msgstr "Hämtar kanaler"
msgid "Loading stream"
msgstr "Laddar ström"
msgid "Loading Last.fm radio"
msgstr "Laddar Last.fm radio"
msgid "Downloading Magnatune catalogue"
msgstr "Hämtar katalog från Magnatune"
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1537,6 +1534,9 @@ msgstr "Välj från listan"
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Laddar audiomotor"
#~ msgid "Show section"
#~ msgstr "Visa kolumn"

View File

@ -181,6 +181,9 @@ msgstr "Kütüphane boş!"
msgid "Click here to add some music"
msgstr "Parça eklemek için buraya tıkla"
msgid "Updating library"
msgstr ""
msgid "Title"
msgstr "Başlık"
@ -353,6 +356,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -431,6 +437,9 @@ msgstr ""
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Invalid service"
msgstr "Geçersiz servis"
@ -541,6 +550,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr ""
@ -559,6 +571,12 @@ msgstr ""
msgid "Refresh channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Start transcoding"
msgstr ""
@ -772,27 +790,6 @@ msgstr ""
msgid "Drag to reposition"
msgstr ""
msgid "Loading audio engine"
msgstr ""
msgid "Updating library"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""

View File

@ -181,6 +181,9 @@ msgstr "Ваша фонотека порожня!"
msgid "Click here to add some music"
msgstr "Клацніть тут, щоб додати музику"
msgid "Updating library"
msgstr "Оновлення фонотеки"
msgid "Title"
msgstr "Назва"
@ -353,6 +356,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr "%1 списків відтворення (%2)"
@ -431,6 +437,9 @@ msgstr "Подібні виконавці Last.fm на %1"
msgid "Last.fm Tag Radio: %1"
msgstr "Радіо позначок Last.fm: %1"
msgid "Loading Last.fm radio"
msgstr "Завантаження радіо Last.fm"
msgid "Invalid service"
msgstr "Нечинна служба"
@ -541,6 +550,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr "Пошук на Magnatune"
msgid "Downloading Magnatune catalogue"
msgstr "Завантаження каталогу Magnatune"
msgid "Radio service couldn't be loaded :-("
msgstr "Не вдалось завантажити радіо службу :-("
@ -559,6 +571,12 @@ msgstr "Відкрити somafm.com в браузері"
msgid "Refresh channels"
msgstr "Оновити канали"
msgid "Loading stream"
msgstr "Завнтаження потоку"
msgid "Getting channels"
msgstr "Отримання каналів"
msgid "Start transcoding"
msgstr "Почати перекодування"
@ -776,27 +794,6 @@ msgstr "Повідомлення OSD"
msgid "Drag to reposition"
msgstr "Перетягніть, щоб змінити розташування"
msgid "Loading audio engine"
msgstr "Завантаження аудіо-рушія"
msgid "Updating library"
msgstr "Оновлення фонотеки"
msgid "Getting channels"
msgstr "Отримання каналів"
msgid "Loading stream"
msgstr "Завнтаження потоку"
msgid "Loading Last.fm radio"
msgstr "Завантаження радіо Last.fm"
msgid "Downloading Magnatune catalogue"
msgstr "Завантаження каталогу Magnatune"
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""
@ -1536,6 +1533,9 @@ msgstr "Вибрати зі списку"
msgid "Delay between visualizations"
msgstr ""
#~ msgid "Loading audio engine"
#~ msgstr "Завантаження аудіо-рушія"
#~ msgid "Show section"
#~ msgstr "Показати секцію"

View File

@ -181,6 +181,9 @@ msgstr ""
msgid "Click here to add some music"
msgstr ""
msgid "Updating library"
msgstr ""
msgid "Title"
msgstr "标题"
@ -351,6 +354,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -429,6 +435,9 @@ msgstr ""
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Invalid service"
msgstr ""
@ -539,6 +548,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr ""
@ -557,6 +569,12 @@ msgstr ""
msgid "Refresh channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Start transcoding"
msgstr ""
@ -770,27 +788,6 @@ msgstr ""
msgid "Drag to reposition"
msgstr ""
msgid "Loading audio engine"
msgstr ""
msgid "Updating library"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""

View File

@ -181,6 +181,9 @@ msgstr ""
msgid "Click here to add some music"
msgstr ""
msgid "Updating library"
msgstr ""
msgid "Title"
msgstr ""
@ -351,6 +354,9 @@ msgstr ""
msgid "Error loading %1"
msgstr ""
msgid "Loading tracks"
msgstr ""
#, qt-format
msgid "%1 playlists (%2)"
msgstr ""
@ -429,6 +435,9 @@ msgstr ""
msgid "Last.fm Tag Radio: %1"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Invalid service"
msgstr ""
@ -539,6 +548,9 @@ msgstr ""
msgid "Search Magnatune"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Radio service couldn't be loaded :-("
msgstr ""
@ -557,6 +569,12 @@ msgstr ""
msgid "Refresh channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Start transcoding"
msgstr ""
@ -770,27 +788,6 @@ msgstr ""
msgid "Drag to reposition"
msgstr ""
msgid "Loading audio engine"
msgstr ""
msgid "Updating library"
msgstr ""
msgid "Getting channels"
msgstr ""
msgid "Loading stream"
msgstr ""
msgid "Loading Last.fm radio"
msgstr ""
msgid "Downloading Magnatune catalogue"
msgstr ""
msgid "Loading tracks"
msgstr ""
msgid "Small album cover"
msgstr ""

View File

@ -24,6 +24,7 @@
#include "core/player.h"
#include "core/songloader.h"
#include "core/stylesheetloader.h"
#include "core/taskmanager.h"
#include "engines/enginebase.h"
#include "library/groupbydialog.h"
#include "library/libraryconfig.h"
@ -105,11 +106,12 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
tray_icon_(SystemTrayIcon::CreateSystemTrayIcon(this)),
osd_(new OSD(tray_icon_, network, this)),
edit_tag_dialog_(new EditTagDialog),
task_manager_(new TaskManager(this)),
about_dialog_(new About),
database_(new BackgroundThreadImplementation<Database, Database>(this)),
radio_model_(NULL),
playlist_backend_(NULL),
playlists_(new PlaylistManager(this)),
playlists_(new PlaylistManager(task_manager_, this)),
playlist_parser_(new PlaylistParser(this)),
player_(NULL),
library_(NULL),
@ -137,16 +139,16 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
playlist_backend_->SetDatabase(database_->Worker());
// Create stuff that needs the database
radio_model_ = new RadioModel(database_, network, this);
radio_model_ = new RadioModel(database_, network, task_manager_, this);
player_ = new Player(playlists_, radio_model_->GetLastFMService(), engine, this);
library_ = new Library(database_, this);
library_ = new Library(database_, task_manager_, this);
cover_manager_.reset(new AlbumCoverManager(network, library_->backend()));
settings_dialog_.reset(new SettingsDialog); // Needs RadioModel
radio_model_->SetSettingsDialog(settings_dialog_.get());
// Initialise the UI
ui_->setupUi(this);
ui_->multi_loading_indicator->SetTaskManager(task_manager_);
ui_->volume->setValue(player_->GetVolume());
track_position_timer_->setInterval(1000);
@ -318,8 +320,6 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
connect(playlists_, SIGNAL(EditingFinished(QModelIndex)), SLOT(PlaylistEditFinished(QModelIndex)));
connect(playlists_, SIGNAL(Error(QString)), error_dialog_.get(), SLOT(ShowMessage(QString)));
connect(playlists_, SIGNAL(SummaryTextChanged(QString)), ui_->playlist_summary, SLOT(setText(QString)));
connect(playlists_, SIGNAL(LoadTracksStarted()), SLOT(LoadTracksStarted()));
connect(playlists_, SIGNAL(LoadTracksFinished()), SLOT(LoadTracksFinished()));
connect(playlists_, SIGNAL(PlayRequested(QModelIndex)), SLOT(PlayIndex(QModelIndex)));
connect(ui_->playlist->view(), SIGNAL(doubleClicked(QModelIndex)), SLOT(PlayIndex(QModelIndex)));
@ -337,8 +337,6 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
connect(ui_->library_view, SIGNAL(AddToPlaylist(QModelIndexList)), SLOT(AddLibraryItemToPlaylist(QModelIndexList)));
connect(ui_->library_view, SIGNAL(ShowConfigDialog()), SLOT(ShowLibraryConfig()));
connect(library_->model(), SIGNAL(TotalSongCountUpdated(int)), ui_->library_view, SLOT(TotalSongCountUpdated(int)));
connect(library_, SIGNAL(ScanStarted()), SLOT(LibraryScanStarted()));
connect(library_, SIGNAL(ScanFinished()), SLOT(LibraryScanFinished()));
// Library filter widget
QAction* library_config_action = new QAction(
@ -367,8 +365,6 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
SLOT(PlaylistUndoRedoChanged(QAction*,QAction*)));
// Radio connections
connect(radio_model_, SIGNAL(TaskStarted(MultiLoadingIndicator::TaskType)), ui_->multi_loading_indicator, SLOT(TaskStarted(MultiLoadingIndicator::TaskType)));
connect(radio_model_, SIGNAL(TaskFinished(MultiLoadingIndicator::TaskType)), ui_->multi_loading_indicator, SLOT(TaskFinished(MultiLoadingIndicator::TaskType)));
connect(radio_model_, SIGNAL(StreamError(QString)), error_dialog_.get(), SLOT(ShowMessage(QString)));
connect(radio_model_, SIGNAL(AsyncLoadFinished(PlaylistItem::SpecialLoadResult)), player_, SLOT(HandleSpecialLoad(PlaylistItem::SpecialLoadResult)));
connect(radio_model_, SIGNAL(StreamMetadataFound(QUrl,Song)), playlists_, SLOT(SetActiveStreamMetadata(QUrl,Song)));
@ -564,23 +560,13 @@ void MainWindow::AddFilesToPlaylist(bool clear_first, const QList<QUrl>& urls) {
}
void MainWindow::AddUrls(bool play_now, const QList<QUrl> &urls) {
SongLoaderInserter* inserter = new SongLoaderInserter(this);
connect(inserter, SIGNAL(AsyncLoadStarted()), SLOT(LoadTracksStarted()));
connect(inserter, SIGNAL(AsyncLoadFinished()), SLOT(LoadTracksFinished()));
SongLoaderInserter* inserter = new SongLoaderInserter(task_manager_, this);
connect(inserter, SIGNAL(Error(QString)), error_dialog_.get(), SLOT(ShowMessage(QString)));
connect(inserter, SIGNAL(PlayRequested(QModelIndex)), SLOT(PlayIndex(QModelIndex)));
inserter->Load(playlists_->current(), -1, play_now, urls);
}
void MainWindow::LoadTracksStarted() {
ui_->multi_loading_indicator->TaskStarted(MultiLoadingIndicator::LoadingTracks);
}
void MainWindow::LoadTracksFinished() {
ui_->multi_loading_indicator->TaskFinished(MultiLoadingIndicator::LoadingTracks);
}
void MainWindow::AddLibrarySongsToPlaylist(const SongList &songs) {
AddLibrarySongsToPlaylist(false, songs);
}
@ -1036,14 +1022,6 @@ void MainWindow::EditValue() {
ui_->playlist->view()->edit(playlist_menu_index_);
}
void MainWindow::LibraryScanStarted() {
ui_->multi_loading_indicator->TaskStarted(MultiLoadingIndicator::UpdatingLibrary);
}
void MainWindow::LibraryScanFinished() {
ui_->multi_loading_indicator->TaskFinished(MultiLoadingIndicator::UpdatingLibrary);
}
void MainWindow::AddFile() {
// Last used directory
QString directory = settings_.value("add_media_path", QDir::currentPath()).toString();

View File

@ -53,6 +53,7 @@ class RadioModel;
class SettingsDialog;
class Song;
class SystemTrayIcon;
class TaskManager;
class TranscodeDialog;
class VisualisationContainer;
class Ui_MainWindow;
@ -134,10 +135,6 @@ class MainWindow : public QMainWindow, public PlatformInterface {
void LastFMButtonVisibilityChanged(bool value);
void Love();
void LibraryScanStarted();
void LibraryScanFinished();
void LoadTracksStarted();
void LoadTracksFinished();
void TaskCountChanged(int count);
void ShowLibraryConfig();
@ -167,7 +164,7 @@ class MainWindow : public QMainWindow, public PlatformInterface {
SystemTrayIcon* tray_icon_;
OSD* osd_;
boost::scoped_ptr<EditTagDialog> edit_tag_dialog_;
MultiLoadingIndicator* multi_loading_indicator_;
TaskManager* task_manager_;
boost::scoped_ptr<About> about_dialog_;
BackgroundThread<Database>* database_;

View File

@ -16,6 +16,7 @@
#include "multiloadingindicator.h"
#include "ui_multiloadingindicator.h"
#include "core/taskmanager.h"
MultiLoadingIndicator::MultiLoadingIndicator(QWidget *parent)
: QWidget(parent),
@ -28,29 +29,19 @@ MultiLoadingIndicator::~MultiLoadingIndicator() {
delete ui_;
}
void MultiLoadingIndicator::TaskStarted(TaskType type) {
if (tasks_.contains(type))
return;
tasks_ << type;
UpdateText();
emit TaskCountChange(tasks_.count());
}
void MultiLoadingIndicator::TaskFinished(TaskType type) {
tasks_.removeAll(type);
UpdateText();
emit TaskCountChange(tasks_.count());
void MultiLoadingIndicator::SetTaskManager(TaskManager* task_manager) {
task_manager_ = task_manager;
connect(task_manager_, SIGNAL(TasksChanged()), SLOT(UpdateText()));
}
void MultiLoadingIndicator::UpdateText() {
QList<TaskManager::Task> tasks = task_manager_->GetTasks();
QStringList strings;
foreach (TaskType type, tasks_) {
QString task(TaskTypeToString(type));
task[0] = task[0].toLower();
strings << task;
foreach (const TaskManager::Task& task, tasks) {
QString name(task.name);
name[0] = name[0].toLower();
strings << name;
}
QString text(strings.join(", "));
@ -59,18 +50,5 @@ void MultiLoadingIndicator::UpdateText() {
}
ui_->text->setText(text + "...");
}
QString MultiLoadingIndicator::TaskTypeToString(TaskType type) {
switch (type) {
case LoadingAudioEngine: return tr("Loading audio engine");
case UpdatingLibrary: return tr("Updating library");
case GettingChannels: return tr("Getting channels");
case LoadingStream: return tr("Loading stream");
case LoadingLastFM: return tr("Loading Last.fm radio");
case LoadingMagnatune: return tr("Downloading Magnatune catalogue");
case LoadingTracks: return tr("Loading tracks");
default: return QString::null;
}
emit TaskCountChange(tasks.count());
}

View File

@ -19,6 +19,7 @@
#include <QWidget>
class TaskManager;
class Ui_MultiLoadingIndicator;
class MultiLoadingIndicator : public QWidget {
@ -28,31 +29,17 @@ class MultiLoadingIndicator : public QWidget {
MultiLoadingIndicator(QWidget* parent = 0);
~MultiLoadingIndicator();
enum TaskType {
LoadingAudioEngine,
UpdatingLibrary,
GettingChannels,
LoadingStream,
LoadingLastFM,
LoadingMagnatune,
LoadingTracks,
};
void SetTaskManager(TaskManager* task_manager);
signals:
void TaskCountChange(int tasks);
public slots:
void TaskStarted(MultiLoadingIndicator::TaskType type);
void TaskFinished(MultiLoadingIndicator::TaskType type);
private:
private slots:
void UpdateText();
static QString TaskTypeToString(TaskType type);
private:
Ui_MultiLoadingIndicator* ui_;
QList<TaskType> tasks_;
TaskManager* task_manager_;
};
#endif // MULTILOADINGINDICATOR_H